{"version":3,"sources":["../../../layouts/sidebar1/index.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { proxy, ref, useSnapshot } from 'valtio';\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from '../../components/ui/breadcrumb';\nimport { Separator } from '../../components/ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../../components/ui/sidebar';\nimport { AppSidebar, ISidebarData } from './app-sidebar';\nimport { INavUser } from './nav-user';\nimport { cn } from '../../utils/ui';\nimport { ThemeProvider } from 'next-themes';\nexport type { ISidebarData };\nexport type { INavUser };\n\nexport default function SidebarLayout({\n  children,\n  aslink,\n  data,\n  classNames,\n}: Readonly<{\n  children: React.ReactNode;\n  aslink: React.ElementType;\n  data: ISidebarData;\n  classNames?: {\n    sidebar?: string;\n    inset?: string;\n    header?: string;\n    main?: string;\n  };\n}>) {\n  const activeItems: string[] = [];\n\n  data.menus.forEach((menu) => {\n    menu.items.forEach((item) => {\n      if (item.subItems) {\n        item.subItems.forEach((subItem) => {\n          if (subItem.isActive) {\n            activeItems.push(item.title, subItem.title);\n          }\n        });\n      } else if (item.isActive) {\n        activeItems.push(item.title);\n      }\n    });\n  });\n\n  return (\n    <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n      <SidebarProvider>\n        <AppSidebar aslink={aslink} data={data} className={cn(classNames?.sidebar)} />\n        <SidebarInset className={cn(classNames?.inset)}>\n          <header\n            className={cn(\n              'flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12',\n              classNames?.header,\n            )}\n          >\n            <div className=\"flex items-center gap-2 px-4\">\n              <SidebarTrigger className=\"-ml-1\" />\n              <Separator orientation=\"vertical\" className=\"\" />\n              <LayoutHeader items={activeItems} />\n            </div>\n          </header>\n          <main className={cn('px-4 pb-2 overflow-auto', classNames?.main)}>{children}</main>\n        </SidebarInset>\n      </SidebarProvider>\n    </ThemeProvider>\n  );\n}\n\ninterface HeaderState {\n  content: React.ReactNode | ReturnType<typeof ref<object>>;\n}\n\nexport const headerStore = proxy<HeaderState>({\n  content: null,\n});\n\nexport const setLayoutHeader = (node: React.ReactNode) => {\n  if (node !== null && typeof node === 'object') {\n    // We cast to any here to satisfy the internal Valtio ref assignment\n    // or use a utility type\n    headerStore.content = ref(node as object);\n  } else {\n    headerStore.content = node;\n  }\n};\n\nfunction LayoutHeader({ items }: { items: string[] }) {\n  const snap = useSnapshot(headerStore);\n  if (snap.content) {\n    return <>{snap.content}</>;\n  }\n\n  return (\n    <Breadcrumb>\n      <BreadcrumbList className=\"text-dark\">\n        {items.map((bread, index) => {\n          return (\n            <React.Fragment key={bread}>\n              {index > 0 && <BreadcrumbSeparator />}\n              <BreadcrumbItem>\n                <BreadcrumbPage className=\"\">{bread}</BreadcrumbPage>\n              </BreadcrumbItem>\n            </React.Fragment>\n          );\n        })}\n      </BreadcrumbList>\n    </Breadcrumb>\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,OAAO,KAAK,mBAAmB;AAcxC,SAAS,qBAAqB;AAIf,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAUI;AACF,QAAM,cAAwB,CAAC;AAE/B,OAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,SAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,UAAI,KAAK,UAAU;AACjB,aAAK,SAAS,QAAQ,CAAC,YAAY;AACjC,cAAI,QAAQ,UAAU;AACpB,wBAAY,KAAK,KAAK,OAAO,QAAQ,KAAK;AAAA,UAC5C;AAAA,QACF,CAAC;AAAA,MACH,WAAW,KAAK,UAAU;AACxB,oBAAY,KAAK,KAAK,KAAK;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SACE,oCAAC,iBAAc,WAAU,SAAQ,cAAa,UAAS,cAAY,QACjE,oCAAC,uBACC,oCAAC,cAAW,QAAgB,MAAY,WAAW,GAAG,yCAAY,OAAO,GAAG,GAC5E,oCAAC,gBAAa,WAAW,GAAG,yCAAY,KAAK,KAC3C;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,yCAAY;AAAA,MACd;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,kCACb,oCAAC,kBAAe,WAAU,SAAQ,GAClC,oCAAC,aAAU,aAAY,YAAW,WAAU,IAAG,GAC/C,oCAAC,gBAAa,OAAO,aAAa,CACpC;AAAA,EACF,GACA,oCAAC,UAAK,WAAW,GAAG,2BAA2B,yCAAY,IAAI,KAAI,QAAS,CAC9E,CACF,CACF;AAEJ;AAMO,IAAM,cAAc,MAAmB;AAAA,EAC5C,SAAS;AACX,CAAC;AAEM,IAAM,kBAAkB,CAAC,SAA0B;AACxD,MAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAG7C,gBAAY,UAAU,IAAI,IAAc;AAAA,EAC1C,OAAO;AACL,gBAAY,UAAU;AAAA,EACxB;AACF;AAEA,SAAS,aAAa,EAAE,MAAM,GAAwB;AACpD,QAAM,OAAO,YAAY,WAAW;AACpC,MAAI,KAAK,SAAS;AAChB,WAAO,0DAAG,KAAK,OAAQ;AAAA,EACzB;AAEA,SACE,oCAAC,kBACC,oCAAC,kBAAe,WAAU,eACvB,MAAM,IAAI,CAAC,OAAO,UAAU;AAC3B,WACE,oCAAO,gBAAN,EAAe,KAAK,SAClB,QAAQ,KAAK,oCAAC,yBAAoB,GACnC,oCAAC,sBACC,oCAAC,kBAAe,WAAU,MAAI,KAAM,CACtC,CACF;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ;","names":[]}