{"version":3,"sources":["../layouts/sidebar1/nav-menus.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../components/ui/collapsible';\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from '../../components/ui/sidebar';\nimport { useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface IMenuSubItem {\n  title: string;\n  url?: string;\n  icon?: React.ElementType;\n  isActive?: boolean;\n  onClick?: (title: string) => void;\n}\n\nexport interface IMenuItem extends IMenuSubItem {\n  subItems?: IMenuSubItem[];\n}\n\nexport interface INavMenu {\n  title: string;\n  items: IMenuItem[];\n  hideTitle?: boolean;\n  className?: string;\n}\n\nfunction SidebarMenuLink({ item, as: LinkComponent }: { item: IMenuSubItem; as: React.ElementType }) {\n  const { setOpenMobile } = useSidebar();\n  const Comp = LinkComponent && item.url ? LinkComponent : 'button';\n\n  return (\n    <SidebarMenuItem>\n      <SidebarMenuButton asChild isActive={item.isActive} tooltip={item.title} onClick={() => setOpenMobile(false)}>\n        <Comp to={item.url} href={item.url} onClick={() => item.onClick?.(item.title)}>\n          {item.icon && <item.icon />}\n          <span>{item.title}</span>\n        </Comp>\n      </SidebarMenuButton>\n    </SidebarMenuItem>\n  );\n}\n\nfunction SidebarMenuCollapsible({ item, as: LinkComponent }: { item: IMenuItem; as: React.ElementType }) {\n  const { setOpenMobile } = useSidebar();\n  if (!item.subItems) return null;\n\n  return (\n    <Collapsible key={item.title} asChild defaultOpen={item.isActive} className=\"group/collapsible\">\n      <SidebarMenuItem>\n        <CollapsibleTrigger asChild>\n          <SidebarMenuButton tooltip={item.title}>\n            {item.icon && <item.icon />}\n            <span>{item.title}</span>\n\n            <ChevronRight className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n          </SidebarMenuButton>\n        </CollapsibleTrigger>\n\n        <CollapsibleContent>\n          <SidebarMenuSub>\n            {item.subItems.map((subItem) => {\n              const Comp = LinkComponent && subItem.url ? LinkComponent : 'button';\n\n              return (\n                <SidebarMenuSubItem key={subItem.title}>\n                  <SidebarMenuSubButton asChild isActive={subItem.isActive} onClick={() => setOpenMobile(false)}>\n                    <Comp\n                      to={subItem.url}\n                      href={subItem.url}\n                      onClick={() => item.onClick?.(subItem.title)}\n                      className=\"block w-full\"\n                    >\n                      {subItem.icon && <subItem.icon />}\n                      <span>{subItem.title}</span>\n                    </Comp>\n                  </SidebarMenuSubButton>\n                </SidebarMenuSubItem>\n              );\n            })}\n          </SidebarMenuSub>\n        </CollapsibleContent>\n      </SidebarMenuItem>\n    </Collapsible>\n  );\n}\n\nexport function NavMenus({ menus, aslink }: { menus: INavMenu[]; aslink: React.ElementType }) {\n  return menus.map((menu) => {\n    return (\n      <SidebarGroup key={menu.title} className={cn(menu.className)}>\n        {!menu.hideTitle && <SidebarGroupLabel>{menu.title}</SidebarGroupLabel>}\n\n        <SidebarMenu>\n          {menu.items.map((item) =>\n            item.subItems && item.subItems.length > 0 ? (\n              <SidebarMenuCollapsible key={item.title} item={item} as={aslink} />\n            ) : (\n              <SidebarMenuLink key={item.title} item={item} as={aslink} />\n            ),\n          )}\n        </SidebarMenu>\n      </SidebarGroup>\n    );\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,oBAAoB;AAkC7B,SAAS,gBAAgB,EAAE,MAAM,IAAI,cAAc,GAAkD;AACnG,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,QAAM,OAAO,iBAAiB,KAAK,MAAM,gBAAgB;AAEzD,SACE,oCAAC,uBACC,oCAAC,qBAAkB,SAAO,MAAC,UAAU,KAAK,UAAU,SAAS,KAAK,OAAO,SAAS,MAAM,cAAc,KAAK,KACzG,oCAAC,QAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,SAAS,MAAG;AA3CxD;AA2C2D,sBAAK,YAAL,8BAAe,KAAK;AAAA,OACpE,KAAK,QAAQ,oCAAC,KAAK,MAAL,IAAU,GACzB,oCAAC,cAAM,KAAK,KAAM,CACpB,CACF,CACF;AAEJ;AAEA,SAAS,uBAAuB,EAAE,MAAM,IAAI,cAAc,GAA+C;AACvG,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,MAAI,CAAC,KAAK,SAAU,QAAO;AAE3B,SACE,oCAAC,eAAY,KAAK,KAAK,OAAO,SAAO,MAAC,aAAa,KAAK,UAAU,WAAU,uBAC1E,oCAAC,uBACC,oCAAC,sBAAmB,SAAO,QACzB,oCAAC,qBAAkB,SAAS,KAAK,SAC9B,KAAK,QAAQ,oCAAC,KAAK,MAAL,IAAU,GACzB,oCAAC,cAAM,KAAK,KAAM,GAElB,oCAAC,gBAAa,WAAU,2FAA0F,CACpH,CACF,GAEA,oCAAC,0BACC,oCAAC,sBACE,KAAK,SAAS,IAAI,CAAC,YAAY;AAC9B,UAAM,OAAO,iBAAiB,QAAQ,MAAM,gBAAgB;AAE5D,WACE,oCAAC,sBAAmB,KAAK,QAAQ,SAC/B,oCAAC,wBAAqB,SAAO,MAAC,UAAU,QAAQ,UAAU,SAAS,MAAM,cAAc,KAAK,KAC1F;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,QAAQ;AAAA,QACZ,MAAM,QAAQ;AAAA,QACd,SAAS,MAAG;AA/ElC;AA+EqC,4BAAK,YAAL,8BAAe,QAAQ;AAAA;AAAA,QACtC,WAAU;AAAA;AAAA,MAET,QAAQ,QAAQ,oCAAC,QAAQ,MAAR,IAAa;AAAA,MAC/B,oCAAC,cAAM,QAAQ,KAAM;AAAA,IACvB,CACF,CACF;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CACF;AAEJ;AAEO,SAAS,SAAS,EAAE,OAAO,OAAO,GAAqD;AAC5F,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,WACE,oCAAC,gBAAa,KAAK,KAAK,OAAO,WAAW,GAAG,KAAK,SAAS,KACxD,CAAC,KAAK,aAAa,oCAAC,yBAAmB,KAAK,KAAM,GAEnD,oCAAC,mBACE,KAAK,MAAM;AAAA,MAAI,CAAC,SACf,KAAK,YAAY,KAAK,SAAS,SAAS,IACtC,oCAAC,0BAAuB,KAAK,KAAK,OAAO,MAAY,IAAI,QAAQ,IAEjE,oCAAC,mBAAgB,KAAK,KAAK,OAAO,MAAY,IAAI,QAAQ;AAAA,IAE9D,CACF,CACF;AAAA,EAEJ,CAAC;AACH;","names":[]}