import { ReactNode } from 'react' import { Link, useLocation } from '@tanstack/react-router' import { ChevronRight } from 'lucide-react' import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible' import { SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, } from '@/components/ui/sidebar' import { Badge } from '../ui/badge' import { NavItem, type NavGroup } from './types' export function NavGroup({ title, items }: NavGroup) { const { setOpenMobile } = useSidebar() const href = useLocation({ select: (location) => location.href }) return ( {title} {items.map((item) => { if (!item.items) { return ( setOpenMobile(false)}> {item.icon && } {item.title} {item.badge && {item.badge}} ) } return ( {item.icon && } {item.title} {item.badge && {item.badge}} {item.items.map((subItem) => ( setOpenMobile(false)} > {subItem.icon && } {subItem.title} {subItem.badge && ( {subItem.badge} )} ))} ) })} ) } const NavBadge = ({ children }: { children: ReactNode }) => ( {children} ) function checkIsActive(href: string, item: NavItem, mainNav = false) { return ( href === item.url || // /endpint?search=param href.split('?')[0] === item.url || // endpoint !!item?.items?.filter((i) => i.url === href).length || // if child nav is active (mainNav && href.split('/')[1] !== '' && href.split('/')[1] === item?.url?.split('/')[1]) ) }