Files
CourseWork_MyUpravdom_Desktop/src/renderer/src/components/AppSidebar.tsx
DavidMakarov bcf26db8b0 Add routes placeholders, some of them implemented
- add Login, LoginCompany, Profile, RegisterCompany pages
- add Zustand for handling current user state and token
- add components
- add company, user models
2025-06-09 13:40:09 +04:00

112 lines
5.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Link, useLocation } from "react-router-dom";
import { Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarRail } from "@renderer/components/ui/sidebar";
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@renderer/components/ui/collapsible";
import { ChevronRight } from "lucide-react";
import { useUserStore } from "@renderer/hooks/userStore";
import NavUser from "./NavUser";
const AppSidebar = ({ ...props }: React.ComponentProps<typeof Sidebar>) => {
const loc = useLocation();
const userData = useUserStore((s) => s.userData);
if (userData === null)
return null;
return (
<Sidebar {...props}>
<SidebarHeader>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton size="lg" asChild>
<Link to="/">
<div className="flex flex-col gap-0.5 leading-none">
<span className="text-2xl font-semibold">Мой Управдом</span>
</div>
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarHeader>
<SidebarContent>
<Collapsible defaultOpen className="group/collapsible">
<SidebarGroup>
<SidebarGroupLabel
asChild
className="group/label text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground text-sm"
>
<CollapsibleTrigger>
Главное
<ChevronRight className="ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90" />
</CollapsibleTrigger>
</SidebarGroupLabel>
<CollapsibleContent>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild isActive={loc.pathname === "/addresses"}>
<Link to="/addresses">Адреса</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild isActive={loc.pathname === "/chats"}>
<Link to="/chats">Чаты</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild isActive={loc.pathname === "/notifications"}>
<Link to="/notifications">Уведомления</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</CollapsibleContent>
</SidebarGroup>
</Collapsible>
<Collapsible defaultOpen className="group/collapsible">
<SidebarGroup>
<SidebarGroupLabel
asChild
className="group/label text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground text-sm"
>
<CollapsibleTrigger>
Работа с пользователями
<ChevronRight className="ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90" />
</CollapsibleTrigger>
</SidebarGroupLabel>
<CollapsibleContent>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild isActive={loc.pathname === "/requests"}>
<Link to="/requests">Заявки на присоединения</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</CollapsibleContent>
</SidebarGroup>
</Collapsible>
</SidebarContent>
<SidebarFooter>
<NavUser user={userData}/>
</SidebarFooter>
<SidebarRail />
</Sidebar>
)
};
export default AppSidebar;