NavMain.tsx 1.2 KB

1234567891011121314151617181920212223242526272829
  1. import { Link, usePage } from '@inertiajs/react';
  2. import { type NavItem } from '@/common/types';
  3. import { SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/shadcn/sidebar';
  4. export function NavMain({ items = [] }: { items: NavItem[] }) {
  5. const page = usePage();
  6. return (
  7. <SidebarGroup className="px-2 py-0">
  8. <SidebarGroupLabel>Platform</SidebarGroupLabel>
  9. <SidebarMenu>
  10. {items.map((item) => (
  11. <SidebarMenuItem key={item.title}>
  12. <SidebarMenuButton
  13. asChild
  14. isActive={page.url.startsWith(typeof item.href === 'string' ? item.href : item.href.url)}
  15. tooltip={{ children: item.title }}
  16. >
  17. <Link href={item.href} prefetch>
  18. {item.icon && <item.icon />}
  19. <span>{item.title}</span>
  20. </Link>
  21. </SidebarMenuButton>
  22. </SidebarMenuItem>
  23. ))}
  24. </SidebarMenu>
  25. </SidebarGroup>
  26. );
  27. }