"use client" import { ChevronRight, type LucideIcon } from "lucide-react" import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible" import { SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, } from "@/components/ui/sidebar" import { PageId } from "@/contexts/navigation-context" export function NavMain({ items, onNavigate, }: { items: { title: string url: string icon?: LucideIcon isActive?: boolean pageId?: PageId items?: { title: string url: string pageId?: PageId isActive?: boolean }[] }[] onNavigate?: (pageId: PageId) => void }) { const handleClick = (e: React.MouseEvent, pageId?: PageId) => { if (pageId && onNavigate) { e.preventDefault() onNavigate(pageId) } } return ( Platform {items.map((item) => { // If item has no sub-items, render as a simple button if (!item.items || item.items.length === 0) { return ( handleClick(e, item.pageId)} className="cursor-pointer" > {item.icon && } {item.title} ) } return ( {item.icon && } {item.title} {item.items?.map((subItem) => { return ( handleClick(e, subItem.pageId)} className="flex items-center justify-between w-full" > {subItem.title} ) })} ) })} ) }