Uecko_ERP/packages/rdx-ui/src/components/layout/nav-main.tsx

67 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-05-17 19:12:01 +00:00
import { type LucideIcon, MailIcon, PlusCircleIcon } from "lucide-react";
import {
2025-09-16 17:59:58 +00:00
Button,
2025-05-17 19:12:01 +00:00
SidebarGroup,
SidebarGroupContent,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
2025-09-16 17:59:58 +00:00
} from "@repo/shadcn-ui/components";
import { useNavigate } from "react-router";
2025-05-17 19:12:01 +00:00
export function NavMain({
items,
}: {
items: {
title: string;
url: string;
icon?: LucideIcon;
}[];
}) {
2025-09-16 17:59:58 +00:00
const navigate = useNavigate();
console.log(window.location.href);
2025-05-17 19:12:01 +00:00
return (
<SidebarGroup>
<SidebarGroupContent className='flex flex-col gap-2'>
<SidebarMenu>
<SidebarMenuItem className='flex items-center gap-2'>
<SidebarMenuButton
tooltip='Quick Create'
className='min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground'
>
<PlusCircleIcon />
<span>Quick Create</span>
</SidebarMenuButton>
<Button
size='icon'
className='h-9 w-9 shrink-0 group-data-[collapsible=icon]:opacity-0'
variant='outline'
>
<MailIcon />
<span className='sr-only'>Inbox</span>
</Button>
</SidebarMenuItem>
</SidebarMenu>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
2025-09-16 17:59:58 +00:00
<SidebarMenuButton
isActive={String(window.location.href).includes(item.url)}
tooltip={item.title}
onClick={() => navigate(item.url)}
className='data-[active=true]:bg-accent data-[active=true]:text-accent-foreground cursor-pointer'
>
2025-05-17 19:12:01 +00:00
{item.icon && <item.icon />}
<span>{item.title}</span>
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
);
}