43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { Link } from '@inertiajs/react';
|
|
import {
|
|
SidebarGroup,
|
|
SidebarGroupLabel,
|
|
SidebarMenu,
|
|
SidebarMenuButton,
|
|
SidebarMenuItem,
|
|
} from '@/components/ui/sidebar';
|
|
import { useCurrentUrl } from '@/hooks/use-current-url';
|
|
import type { NavItem } from '@/types';
|
|
|
|
export function NavMain({
|
|
items = [],
|
|
label,
|
|
}: {
|
|
items: NavItem[];
|
|
label?: string;
|
|
}) {
|
|
const { isCurrentOrParentUrl } = useCurrentUrl();
|
|
|
|
return (
|
|
<SidebarGroup className="px-2 py-1">
|
|
<SidebarGroupLabel>{label}</SidebarGroupLabel>
|
|
<SidebarMenu>
|
|
{items.map((item) => (
|
|
<SidebarMenuItem key={item.title}>
|
|
<SidebarMenuButton
|
|
asChild
|
|
isActive={item.isActive || isCurrentOrParentUrl(item.href)}
|
|
tooltip={{ children: item.title }}
|
|
>
|
|
<Link href={item.href} prefetch>
|
|
{item.icon && <item.icon />}
|
|
<span>{item.title}</span>
|
|
</Link>
|
|
</SidebarMenuButton>
|
|
</SidebarMenuItem>
|
|
))}
|
|
</SidebarMenu>
|
|
</SidebarGroup>
|
|
);
|
|
}
|