@customafk/lunas-ui 0.2.9 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/{alert-D3OOxNtK.d.mts → alert-C1YY0oUh.d.mts} +5 -5
  2. package/dist/{alert-W_Q1Gsld.d.cts → alert-CI3ANQHC.d.cts} +7 -7
  3. package/dist/{badge-YFen8D8o.d.mts → badge-DXeJVvRU.d.mts} +6 -6
  4. package/dist/{badge-Dm1IEgtT.d.cts → badge-PKOZAtox.d.cts} +6 -6
  5. package/dist/{button-Ckjev2AT.d.cts → button-BuQ09ya9.d.mts} +5 -5
  6. package/dist/{button-BnbtzQAN.d.mts → button-BwvdZSJE.d.cts} +5 -5
  7. package/dist/data-display/statistic.d.cts +2 -2
  8. package/dist/data-display/statistic.d.mts +4 -4
  9. package/dist/{dialog-DW1Axqio.d.cts → dialog-CRVNgVZU.d.cts} +12 -12
  10. package/dist/{dialog-DTtlGouy.d.mts → dialog-CiCeXhAu.d.mts} +12 -12
  11. package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
  12. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +24 -24
  13. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +26 -26
  14. package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
  15. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  16. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  17. package/dist/dialogs/detail-dialog/index.mjs +1 -1
  18. package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
  19. package/dist/features/descriptions/index.cjs +1 -1
  20. package/dist/features/descriptions/index.cjs.map +1 -1
  21. package/dist/features/descriptions/index.d.cts +34 -2
  22. package/dist/features/descriptions/index.d.mts +40 -8
  23. package/dist/features/descriptions/index.mjs +1 -1
  24. package/dist/features/descriptions/index.mjs.map +1 -1
  25. package/dist/features/search-modal/index.d.cts +2 -2
  26. package/dist/features/search-modal/index.d.mts +2 -2
  27. package/dist/features/tables/index.cjs +1 -1
  28. package/dist/features/tables/index.d.cts +45 -28
  29. package/dist/features/tables/index.d.mts +45 -28
  30. package/dist/features/tables/index.mjs +1 -1
  31. package/dist/features/tanstack-form/index.d.cts +1 -1
  32. package/dist/features/tanstack-form/index.d.mts +1 -1
  33. package/dist/{index-BIT9bkka.d.mts → index-C3SKVvaI.d.cts} +22 -22
  34. package/dist/{index-CO4_ENw7.d.cts → index-Dm0lp7bT.d.mts} +258 -258
  35. package/dist/index.cjs +1 -1
  36. package/dist/index.d.cts +8 -8
  37. package/dist/index.d.mts +8 -8
  38. package/dist/index.mjs +1 -1
  39. package/dist/{input-CigimPoX.d.cts → input-BpZ_mAuD.d.cts} +2 -2
  40. package/dist/{input-BrM6EExy.d.mts → input-CoHHwUwI.d.mts} +4 -4
  41. package/dist/layouts/flex.d.cts +4 -4
  42. package/dist/layouts/flex.d.mts +2 -2
  43. package/dist/pages/FeatureDeveloping.d.cts +2 -2
  44. package/dist/pages/FeatureDeveloping.d.mts +2 -2
  45. package/dist/pages/FeatureFixing.d.cts +2 -2
  46. package/dist/pages/FeatureFixing.d.mts +2 -2
  47. package/dist/pages/NotAuthorized.d.cts +2 -2
  48. package/dist/pages/NotAuthorized.d.mts +2 -2
  49. package/dist/pages/NotFound.d.cts +2 -2
  50. package/dist/pages/NotFound.d.mts +2 -2
  51. package/dist/{sidebar-C27_pwLR.cjs → sidebar-CcJCnqLb.cjs} +2 -2
  52. package/dist/{sidebar-C27_pwLR.cjs.map → sidebar-CcJCnqLb.cjs.map} +1 -1
  53. package/dist/{sidebar-meLttL0V.mjs → sidebar-QmCQFs8h.mjs} +2 -2
  54. package/dist/{sidebar-meLttL0V.mjs.map → sidebar-QmCQFs8h.mjs.map} +1 -1
  55. package/dist/tables-Chn2pQSc.cjs +4 -0
  56. package/dist/tables-Chn2pQSc.cjs.map +1 -0
  57. package/dist/tables-eLIhswqW.mjs +4 -0
  58. package/dist/tables-eLIhswqW.mjs.map +1 -0
  59. package/dist/typography/paragraph.d.cts +4 -4
  60. package/dist/typography/paragraph.d.mts +4 -4
  61. package/dist/typography/title.d.cts +2 -2
  62. package/dist/typography/title.d.mts +2 -2
  63. package/dist/ui/alert-dialog.d.cts +12 -12
  64. package/dist/ui/alert-dialog.d.mts +12 -12
  65. package/dist/ui/alert.d.cts +1 -1
  66. package/dist/ui/alert.d.mts +1 -1
  67. package/dist/ui/aspect-ratio.d.cts +2 -2
  68. package/dist/ui/aspect-ratio.d.mts +2 -2
  69. package/dist/ui/avatar.d.cts +4 -4
  70. package/dist/ui/avatar.d.mts +4 -4
  71. package/dist/ui/badge.d.cts +1 -1
  72. package/dist/ui/badge.d.mts +1 -1
  73. package/dist/ui/breadcrumb.d.cts +8 -8
  74. package/dist/ui/breadcrumb.d.mts +8 -8
  75. package/dist/ui/button-group.d.cts +6 -6
  76. package/dist/ui/button-group.d.mts +6 -6
  77. package/dist/ui/button.d.cts +1 -1
  78. package/dist/ui/button.d.mts +1 -1
  79. package/dist/ui/calendar.d.cts +4 -4
  80. package/dist/ui/calendar.d.mts +4 -4
  81. package/dist/ui/card.d.cts +8 -8
  82. package/dist/ui/card.d.mts +8 -8
  83. package/dist/ui/carousel.d.cts +7 -7
  84. package/dist/ui/carousel.d.mts +7 -7
  85. package/dist/ui/checkbox.d.cts +2 -2
  86. package/dist/ui/checkbox.d.mts +2 -2
  87. package/dist/ui/collapsible.d.cts +4 -4
  88. package/dist/ui/collapsible.d.mts +4 -4
  89. package/dist/ui/command.d.cts +11 -11
  90. package/dist/ui/command.d.mts +11 -11
  91. package/dist/ui/context-menu.d.cts +16 -16
  92. package/dist/ui/context-menu.d.mts +16 -16
  93. package/dist/ui/dialog.d.cts +1 -1
  94. package/dist/ui/dialog.d.mts +1 -1
  95. package/dist/ui/drawer.d.cts +11 -11
  96. package/dist/ui/drawer.d.mts +11 -11
  97. package/dist/ui/dropdown-menu.d.cts +16 -16
  98. package/dist/ui/dropdown-menu.d.mts +16 -16
  99. package/dist/ui/empty.d.cts +9 -9
  100. package/dist/ui/empty.d.mts +9 -9
  101. package/dist/ui/field.d.cts +24 -24
  102. package/dist/ui/field.d.mts +24 -24
  103. package/dist/ui/file-uploader.d.cts +2 -2
  104. package/dist/ui/file-uploader.d.mts +2 -2
  105. package/dist/ui/form.d.cts +11 -11
  106. package/dist/ui/form.d.mts +11 -11
  107. package/dist/ui/hover-card.d.cts +4 -4
  108. package/dist/ui/hover-card.d.mts +4 -4
  109. package/dist/ui/input-otp.d.cts +5 -5
  110. package/dist/ui/input-otp.d.mts +5 -5
  111. package/dist/ui/input.d.cts +1 -1
  112. package/dist/ui/input.d.mts +1 -1
  113. package/dist/ui/inputs/search-input.d.cts +3 -3
  114. package/dist/ui/inputs/search-input.d.mts +3 -3
  115. package/dist/ui/item.d.mts +14 -14
  116. package/dist/ui/label.d.cts +2 -2
  117. package/dist/ui/menubar.d.cts +17 -17
  118. package/dist/ui/menubar.d.mts +17 -17
  119. package/dist/ui/multi-select.d.cts +2 -2
  120. package/dist/ui/multi-select.d.mts +3 -3
  121. package/dist/ui/navigation-menu.d.cts +11 -11
  122. package/dist/ui/navigation-menu.d.mts +9 -9
  123. package/dist/ui/pagination.d.cts +9 -9
  124. package/dist/ui/pagination.d.mts +9 -9
  125. package/dist/ui/popover.d.cts +6 -6
  126. package/dist/ui/popover.d.mts +6 -6
  127. package/dist/ui/progress.d.cts +2 -2
  128. package/dist/ui/progress.d.mts +2 -2
  129. package/dist/ui/radio-group.d.cts +3 -3
  130. package/dist/ui/radio-group.d.mts +3 -3
  131. package/dist/ui/resizable.d.cts +9 -9
  132. package/dist/ui/resizable.d.mts +9 -9
  133. package/dist/ui/scroll-area.d.cts +6 -6
  134. package/dist/ui/scroll-area.d.mts +6 -6
  135. package/dist/ui/select.d.cts +9 -9
  136. package/dist/ui/select.d.mts +9 -9
  137. package/dist/ui/separator.d.cts +2 -2
  138. package/dist/ui/separator.d.mts +2 -2
  139. package/dist/ui/sheet.d.cts +9 -9
  140. package/dist/ui/sheet.d.mts +9 -9
  141. package/dist/ui/sidebar.d.cts +26 -26
  142. package/dist/ui/sidebar.d.mts +26 -26
  143. package/dist/ui/skeleton.d.cts +2 -2
  144. package/dist/ui/skeleton.d.mts +2 -2
  145. package/dist/ui/slider.d.cts +2 -2
  146. package/dist/ui/slider.d.mts +2 -2
  147. package/dist/ui/sonner.d.cts +2 -2
  148. package/dist/ui/sonner.d.mts +2 -2
  149. package/dist/ui/spinner.d.cts +2 -2
  150. package/dist/ui/spinner.d.mts +2 -2
  151. package/dist/ui/switch.d.cts +2 -2
  152. package/dist/ui/switch.d.mts +2 -2
  153. package/dist/ui/table.d.cts +18 -18
  154. package/dist/ui/table.d.mts +18 -18
  155. package/dist/ui/tabs.d.cts +5 -5
  156. package/dist/ui/tabs.d.mts +5 -5
  157. package/dist/ui/textarea.d.cts +2 -2
  158. package/dist/ui/textarea.d.mts +2 -2
  159. package/dist/ui/toggle-group.d.cts +3 -3
  160. package/dist/ui/toggle-group.d.mts +3 -3
  161. package/dist/ui/toggle.d.cts +2 -2
  162. package/dist/ui/toggle.d.mts +4 -4
  163. package/dist/ui/tooltip.d.cts +5 -5
  164. package/dist/ui/tooltip.d.mts +5 -5
  165. package/package.json +1 -1
  166. package/dist/tables-D1JyNmcV.cjs +0 -2
  167. package/dist/tables-D1JyNmcV.cjs.map +0 -1
  168. package/dist/tables-DTazQIyy.mjs +0 -2
  169. package/dist/tables-DTazQIyy.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./button-CwDT3m4m.cjs`),n=require(`./skeleton-BfMCjXYM.cjs`),r=require(`./tooltip-itUmYz9k.cjs`),i=require(`./separator-BwZb12bh.cjs`),a=require(`./sheet-CaDXTx7n.cjs`);let o=require(`lucide-react`),s=require(`react`),c=require(`react/jsx-runtime`),l=require(`@customafk/react-toolkit/utils`),u=require(`class-variance-authority`),d=require(`radix-ui`),f=require(`@customafk/react-toolkit/hooks/useMobile`);const p=`detail_dialog_sidebar_state`,m=3600*24*7,h=`20rem`,g=`18rem`,_=`3rem`,v=`p`,y=(0,s.createContext)(null);function b(){let e=(0,s.use)(y);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function x({defaultOpen:e=!0,open:t,onOpenChange:n,className:i,style:a,children:o,...u}){let d=(0,f.useIsMobile)(),[p,m]=(0,s.useState)(!1),[h,g]=(0,s.useState)(e),_=t??h,v=(0,s.useCallback)(e=>{let t=typeof e==`function`?e(_):e;n?n(t):g(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,_]),b=(0,s.useCallback)(()=>d?m(e=>!e):v(e=>!e),[d,v]);(0,s.useEffect)(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let x=_?`expanded`:`collapsed`,S=(0,s.useMemo)(()=>({state:x,isMobile:d,toggleSidebar:b,open:_,setOpen:v,openMobile:p,setOpenMobile:m}),[x,d,_,v,p,b]);return(0,c.jsx)(y.Provider,{value:S,children:(0,c.jsx)(r.r,{delayDuration:0,children:(0,c.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`20rem`,"--sidebar-width-icon":`3rem`,...a},className:(0,l.cn)(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,i),...u,children:o})})})}function S({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...o}){let{state:s,isMobile:u,openMobile:d,setOpenMobile:f}=b();return n===`none`?(0,c.jsx)(`div`,{"data-slot":`sidebar`,className:(0,l.cn)(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...o,children:i}):u?(0,c.jsx)(a.t,{open:d,onOpenChange:f,...o,children:(0,c.jsxs)(a.r,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[(0,c.jsxs)(a.o,{className:`sr-only`,children:[(0,c.jsx)(a.s,{children:`Sidebar`}),(0,c.jsx)(a.i,{children:`Displays the mobile sidebar.`})]}),(0,c.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):(0,c.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":s,"data-collapsible":s===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[(0,c.jsx)(`div`,{"data-slot":`sidebar-gap`,className:(0,l.cn)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,c.jsx)(`div`,{"data-slot":`sidebar-container`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...o,children:(0,c.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:(0,l.cn)(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function C({className:e,onClick:n,...r}){let{toggleSidebar:i}=b();return(0,c.jsxs)(t.t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:(0,l.cn)(`size-10 rounded-full [&_svg]:size-6!`,e),onClick:e=>{n?.(e),i()},...r,children:[(0,c.jsx)(o.MenuIcon,{}),(0,c.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function w({className:e,...t}){let{toggleSidebar:n}=b();return(0,c.jsx)(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function T({className:e,...t}){return(0,c.jsx)(`main`,{"data-slot":`sidebar-inset`,className:(0,l.cn)(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...t})}function D({className:e,children:t,...n}){let{open:r}=b();return(0,c.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...n,children:(0,c.jsxs)(P,{children:[r&&(0,c.jsx)(F,{children:t}),(0,c.jsx)(F,{children:(0,c.jsxs)(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function O({className:e,...t}){return(0,c.jsx)(i.t,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:(0,l.cn)(`mx-2 w-auto bg-sidebar-border`,e),...t})}function k({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:(0,l.cn)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function A({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:(0,l.cn)(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function j({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:(0,l.cn)(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function M({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:(0,l.cn)(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function N({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:(0,l.cn)(`w-full text-sm`,e),...t})}function P({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:(0,l.cn)(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function F({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:(0,l.cn)(`group/menu-item relative`,e),...t})}const I=(0,u.cva)([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function L({asChild:e=!1,isActive:t=!1,variant:n=`default`,size:i=`default`,tooltip:a,className:o,...s}){let u=e?d.Slot.Slot:`button`,{state:f}=b(),p=(0,c.jsx)(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":i,"data-active":t,className:(0,l.cn)(I({variant:n,size:i}),o),...s});return a?(typeof a==`string`&&(a={children:a}),(0,c.jsxs)(r.t,{children:[(0,c.jsx)(r.i,{asChild:!0,children:p}),(0,c.jsx)(r.n,{side:`right`,align:`center`,hidden:f!==`collapsed`,...a})]})):p}function R({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:(0,l.cn)(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function z({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:(0,l.cn)(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function B({className:e,showIcon:t=!1,...r}){let i=(0,s.useMemo)(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return(0,c.jsxs)(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:(0,l.cn)(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[t&&(0,c.jsx)(n.t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),(0,c.jsx)(n.t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function V({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:(0,l.cn)(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function H({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:(0,l.cn)(`group/menu-sub-item relative`,e),...t})}function U({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return(0,c.jsx)(e?d.Slot.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:(0,l.cn)(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return C}});
2
- //# sourceMappingURL=sidebar-C27_pwLR.cjs.map
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./button-CwDT3m4m.cjs`),n=require(`./skeleton-BfMCjXYM.cjs`),r=require(`./tooltip-itUmYz9k.cjs`),i=require(`./separator-BwZb12bh.cjs`),a=require(`./sheet-CaDXTx7n.cjs`);let o=require(`lucide-react`),s=require(`react`),c=require(`react/jsx-runtime`),l=require(`@customafk/react-toolkit/utils`),u=require(`class-variance-authority`),d=require(`radix-ui`),f=require(`@customafk/react-toolkit/hooks/useMobile`);const p=`detail_dialog_sidebar_state`,m=3600*24*7,h=`18rem`,g=`18rem`,_=`3rem`,v=`p`,y=(0,s.createContext)(null);function b(){let e=(0,s.use)(y);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function x({defaultOpen:e=!0,open:t,onOpenChange:n,className:i,style:a,children:o,...u}){let d=(0,f.useIsMobile)(),[p,m]=(0,s.useState)(!1),[h,g]=(0,s.useState)(e),_=t??h,v=(0,s.useCallback)(e=>{let t=typeof e==`function`?e(_):e;n?n(t):g(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,_]),b=(0,s.useCallback)(()=>d?m(e=>!e):v(e=>!e),[d,v]);(0,s.useEffect)(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let x=_?`expanded`:`collapsed`,S=(0,s.useMemo)(()=>({state:x,isMobile:d,toggleSidebar:b,open:_,setOpen:v,openMobile:p,setOpenMobile:m}),[x,d,_,v,p,b]);return(0,c.jsx)(y.Provider,{value:S,children:(0,c.jsx)(r.r,{delayDuration:0,children:(0,c.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`18rem`,"--sidebar-width-icon":`3rem`,...a},className:(0,l.cn)(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,i),...u,children:o})})})}function S({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...o}){let{state:s,isMobile:u,openMobile:d,setOpenMobile:f}=b();return n===`none`?(0,c.jsx)(`div`,{"data-slot":`sidebar`,className:(0,l.cn)(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...o,children:i}):u?(0,c.jsx)(a.t,{open:d,onOpenChange:f,...o,children:(0,c.jsxs)(a.r,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[(0,c.jsxs)(a.o,{className:`sr-only`,children:[(0,c.jsx)(a.s,{children:`Sidebar`}),(0,c.jsx)(a.i,{children:`Displays the mobile sidebar.`})]}),(0,c.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):(0,c.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":s,"data-collapsible":s===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[(0,c.jsx)(`div`,{"data-slot":`sidebar-gap`,className:(0,l.cn)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,c.jsx)(`div`,{"data-slot":`sidebar-container`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...o,children:(0,c.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:(0,l.cn)(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function C({className:e,onClick:n,...r}){let{toggleSidebar:i}=b();return(0,c.jsxs)(t.t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:(0,l.cn)(`size-10 rounded-full [&_svg]:size-6!`,e),onClick:e=>{n?.(e),i()},...r,children:[(0,c.jsx)(o.MenuIcon,{}),(0,c.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function w({className:e,...t}){let{toggleSidebar:n}=b();return(0,c.jsx)(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function T({className:e,...t}){return(0,c.jsx)(`main`,{"data-slot":`sidebar-inset`,className:(0,l.cn)(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...t})}function D({className:e,children:t,...n}){let{open:r}=b();return(0,c.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...n,children:(0,c.jsxs)(P,{children:[r&&(0,c.jsx)(F,{children:t}),(0,c.jsx)(F,{children:(0,c.jsxs)(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function O({className:e,...t}){return(0,c.jsx)(i.t,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:(0,l.cn)(`mx-2 w-auto bg-sidebar-border`,e),...t})}function k({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:(0,l.cn)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function A({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:(0,l.cn)(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function j({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:(0,l.cn)(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function M({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:(0,l.cn)(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function N({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:(0,l.cn)(`w-full text-sm`,e),...t})}function P({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:(0,l.cn)(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function F({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:(0,l.cn)(`group/menu-item relative`,e),...t})}const I=(0,u.cva)([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function L({asChild:e=!1,isActive:t=!1,variant:n=`default`,size:i=`default`,tooltip:a,className:o,...s}){let u=e?d.Slot.Slot:`button`,{state:f}=b(),p=(0,c.jsx)(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":i,"data-active":t,className:(0,l.cn)(I({variant:n,size:i}),o),...s});return a?(typeof a==`string`&&(a={children:a}),(0,c.jsxs)(r.t,{children:[(0,c.jsx)(r.i,{asChild:!0,children:p}),(0,c.jsx)(r.n,{side:`right`,align:`center`,hidden:f!==`collapsed`,...a})]})):p}function R({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:(0,l.cn)(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function z({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:(0,l.cn)(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function B({className:e,showIcon:t=!1,...r}){let i=(0,s.useMemo)(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return(0,c.jsxs)(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:(0,l.cn)(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[t&&(0,c.jsx)(n.t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),(0,c.jsx)(n.t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function V({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:(0,l.cn)(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function H({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:(0,l.cn)(`group/menu-sub-item relative`,e),...t})}function U({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return(0,c.jsx)(e?d.Slot.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:(0,l.cn)(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return C}});
2
+ //# sourceMappingURL=sidebar-CcJCnqLb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-C27_pwLR.cjs","names":["open","TooltipProvider","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","Button","MenuIcon","Separator","SlotPrimitive","Tooltip","TooltipTrigger","TooltipContent","Skeleton"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '20rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-CcJCnqLb.cjs","names":["open","TooltipProvider","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","Button","MenuIcon","Separator","SlotPrimitive","Tooltip","TooltipTrigger","TooltipContent","Skeleton"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '18rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./button-C6ybzxxj.mjs";import{t}from"./skeleton-BPxcW2yu.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-Bj0iOG4s.mjs";import{t as o}from"./separator-BMsbHAVt.mjs";import{i as s,o as c,r as l,s as u,t as d}from"./sheet-DMIqn1iv.mjs";import{MenuIcon as f}from"lucide-react";import{createContext as p,use as m,useCallback as h,useEffect as g,useMemo as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{cn as x}from"@customafk/react-toolkit/utils";import{cva as S}from"class-variance-authority";import{Slot as C}from"radix-ui";import{useIsMobile as w}from"@customafk/react-toolkit/hooks/useMobile";const T=p(null);function E(){let e=m(T);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function D({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=w(),[l,u]=v(!1),[d,f]=v(e),p=t??d,m=h(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,p]),b=h(()=>c?u(e=>!e):m(e=>!e),[c,m]);g(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let S=p?`expanded`:`collapsed`,C=_(()=>({state:S,isMobile:c,toggleSidebar:b,open:p,setOpen:m,openMobile:l,setOpenMobile:u}),[S,c,p,m,l,b]);return y(T.Provider,{value:C,children:y(i,{delayDuration:0,children:y(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`20rem`,"--sidebar-width-icon":`3rem`,...a},className:x(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,r),...s,children:o})})})}function O({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...a}){let{state:o,isMobile:f,openMobile:p,setOpenMobile:m}=E();return n===`none`?y(`div`,{"data-slot":`sidebar`,className:x(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...a,children:i}):f?y(d,{open:p,onOpenChange:m,...a,children:b(l,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[b(c,{className:`sr-only`,children:[y(u,{children:`Sidebar`}),y(s,{children:`Displays the mobile sidebar.`})]}),y(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):b(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":o,"data-collapsible":o===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[y(`div`,{"data-slot":`sidebar-gap`,className:x(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),y(`div`,{"data-slot":`sidebar-container`,className:x(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...a,children:y(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:x(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function k({className:t,onClick:n,...r}){let{toggleSidebar:i}=E();return b(e,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:x(`size-10 rounded-full [&_svg]:size-6!`,t),onClick:e=>{n?.(e),i()},...r,children:[y(f,{}),y(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function A({className:e,...t}){let{toggleSidebar:n}=E();return y(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:x(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function j({className:e,...t}){return y(`main`,{"data-slot":`sidebar-inset`,className:x(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function M({className:e,...t}){return y(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:x(`flex flex-col gap-2 p-2`,e),...t})}function N({className:e,children:t,...n}){let{open:r}=E();return y(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:x(`flex flex-col gap-2 p-2`,e),...n,children:b(B,{children:[r&&y(V,{children:t}),y(V,{children:b(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function P({className:e,...t}){return y(o,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:x(`mx-2 w-auto bg-sidebar-border`,e),...t})}function F({className:e,...t}){return y(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:x(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function I({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:x(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function L({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:x(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function R({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:x(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function z({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:x(`w-full text-sm`,e),...t})}function B({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:x(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function V({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:x(`group/menu-item relative`,e),...t})}const H=S([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function U({asChild:e=!1,isActive:t=!1,variant:i=`default`,size:o=`default`,tooltip:s,className:c,...l}){let u=e?C.Slot:`button`,{state:d}=E(),f=y(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":o,"data-active":t,className:x(H({variant:i,size:o}),c),...l});return s?(typeof s==`string`&&(s={children:s}),b(a,{children:[y(n,{asChild:!0,children:f}),y(r,{side:`right`,align:`center`,hidden:d!==`collapsed`,...s})]})):f}function W({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:x(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function G({className:e,...t}){return y(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:x(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function K({className:e,showIcon:n=!1,...r}){let i=_(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return b(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:x(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[n&&y(t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),y(t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function q({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:x(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function J({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:x(`group/menu-sub-item relative`,e),...t})}function Y({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return y(e?C.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:x(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}export{E as C,D as S,A as _,z as a,O as b,B as c,U as d,V as f,J as g,Y as h,R as i,W as l,q as m,N as n,L as o,K as p,I as r,M as s,F as t,G as u,P as v,j as x,k as y};
2
- //# sourceMappingURL=sidebar-meLttL0V.mjs.map
1
+ import{t as e}from"./button-C6ybzxxj.mjs";import{t}from"./skeleton-BPxcW2yu.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-Bj0iOG4s.mjs";import{t as o}from"./separator-BMsbHAVt.mjs";import{i as s,o as c,r as l,s as u,t as d}from"./sheet-DMIqn1iv.mjs";import{MenuIcon as f}from"lucide-react";import{createContext as p,use as m,useCallback as h,useEffect as g,useMemo as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{cn as x}from"@customafk/react-toolkit/utils";import{cva as S}from"class-variance-authority";import{Slot as C}from"radix-ui";import{useIsMobile as w}from"@customafk/react-toolkit/hooks/useMobile";const T=p(null);function E(){let e=m(T);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function D({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=w(),[l,u]=v(!1),[d,f]=v(e),p=t??d,m=h(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,p]),b=h(()=>c?u(e=>!e):m(e=>!e),[c,m]);g(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let S=p?`expanded`:`collapsed`,C=_(()=>({state:S,isMobile:c,toggleSidebar:b,open:p,setOpen:m,openMobile:l,setOpenMobile:u}),[S,c,p,m,l,b]);return y(T.Provider,{value:C,children:y(i,{delayDuration:0,children:y(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`18rem`,"--sidebar-width-icon":`3rem`,...a},className:x(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,r),...s,children:o})})})}function O({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...a}){let{state:o,isMobile:f,openMobile:p,setOpenMobile:m}=E();return n===`none`?y(`div`,{"data-slot":`sidebar`,className:x(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...a,children:i}):f?y(d,{open:p,onOpenChange:m,...a,children:b(l,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[b(c,{className:`sr-only`,children:[y(u,{children:`Sidebar`}),y(s,{children:`Displays the mobile sidebar.`})]}),y(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):b(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":o,"data-collapsible":o===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[y(`div`,{"data-slot":`sidebar-gap`,className:x(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),y(`div`,{"data-slot":`sidebar-container`,className:x(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...a,children:y(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:x(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function k({className:t,onClick:n,...r}){let{toggleSidebar:i}=E();return b(e,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:x(`size-10 rounded-full [&_svg]:size-6!`,t),onClick:e=>{n?.(e),i()},...r,children:[y(f,{}),y(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function A({className:e,...t}){let{toggleSidebar:n}=E();return y(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:x(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function j({className:e,...t}){return y(`main`,{"data-slot":`sidebar-inset`,className:x(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function M({className:e,...t}){return y(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:x(`flex flex-col gap-2 p-2`,e),...t})}function N({className:e,children:t,...n}){let{open:r}=E();return y(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:x(`flex flex-col gap-2 p-2`,e),...n,children:b(B,{children:[r&&y(V,{children:t}),y(V,{children:b(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function P({className:e,...t}){return y(o,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:x(`mx-2 w-auto bg-sidebar-border`,e),...t})}function F({className:e,...t}){return y(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:x(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function I({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:x(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function L({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:x(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function R({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:x(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function z({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:x(`w-full text-sm`,e),...t})}function B({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:x(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function V({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:x(`group/menu-item relative`,e),...t})}const H=S([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function U({asChild:e=!1,isActive:t=!1,variant:i=`default`,size:o=`default`,tooltip:s,className:c,...l}){let u=e?C.Slot:`button`,{state:d}=E(),f=y(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":o,"data-active":t,className:x(H({variant:i,size:o}),c),...l});return s?(typeof s==`string`&&(s={children:s}),b(a,{children:[y(n,{asChild:!0,children:f}),y(r,{side:`right`,align:`center`,hidden:d!==`collapsed`,...s})]})):f}function W({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:x(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function G({className:e,...t}){return y(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:x(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function K({className:e,showIcon:n=!1,...r}){let i=_(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return b(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:x(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[n&&y(t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),y(t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function q({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:x(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function J({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:x(`group/menu-sub-item relative`,e),...t})}function Y({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return y(e?C.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:x(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}export{E as C,D as S,A as _,z as a,O as b,B as c,U as d,V as f,J as g,Y as h,R as i,W as l,q as m,N as n,L as o,K as p,I as r,M as s,F as t,G as u,P as v,j as x,k as y};
2
+ //# sourceMappingURL=sidebar-QmCQFs8h.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-meLttL0V.mjs","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '20rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-QmCQFs8h.mjs","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '18rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./button-CwDT3m4m.cjs`),n=require(`./paragraph-DN85Huc4.cjs`),r=require(`./flex-BbbogTsZ.cjs`),i=require(`./date-a3RI5Pwo.cjs`),a=require(`./badge-uQ0pIZbQ.cjs`),o=require(`./tooltip-itUmYz9k.cjs`),s=require(`./avatar-CTS9-raY.cjs`),c=require(`./separator-BwZb12bh.cjs`),l=require(`./dropdown-menu-Ct9BLGfa.cjs`),u=require(`./progress-DE1FdQ1J.cjs`),d=require(`./checkbox-Di7ACavC.cjs`),f=require(`./spinner-rA8pMY6v.cjs`),p=require(`./resizable-DDPMwd28.cjs`),m=require(`./input-BMOYFJYM.cjs`);let h=require(`lucide-react`),g=require(`react`),_=require(`react/jsx-runtime`),v=require(`@customafk/react-toolkit/utils`),y=require(`@customafk/react-toolkit/color-hash`),b=require(`@tanstack/react-table`),x=require(`@tanstack/react-virtual`),ee=require(`@customafk/react-toolkit/hooks/useDebounceCallback`);const S=()=>(0,_.jsxs)(`div`,{className:`flex gap-0 text-text-positive-weak`,children:[(0,_.jsx)(h.MinusIcon,{size:16}),(0,_.jsx)(h.MinusIcon,{size:16})]}),te=({label:e,onClick:t,onRemove:n})=>e?n?(0,_.jsxs)(`div`,{className:`flex w-fit gap-x-0.5 rounded-full border border-border py-1 pr-2 pl-3 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:[e,(0,_.jsx)(`button`,{className:`cursor-pointer text-text-positive-weak hover:text-text-positive-strong`,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,_.jsx)(h.XIcon,{size:12})})]}):(0,_.jsx)(`button`,{className:`w-fit rounded-full border border-border px-3 py-1 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:e}):(0,_.jsx)(S,{}),ne=({value:e})=>e==null?(0,_.jsx)(S,{}):e===!1?(0,_.jsx)(`div`,{className:`text-danger-strong`,children:(0,_.jsx)(h.XIcon,{})}):(0,_.jsx)(`div`,{className:`text-success-strong`,children:(0,_.jsx)(h.CheckIcon,{})}),C=(0,g.memo)(({value:e,currency:t=`USD`,locale:n=`en-US`,display:r=`symbol`,size:i=`md`,colorize:a=!1})=>{let o=(0,g.useMemo)(()=>{let i=typeof e==`string`?Number(e.trim()):e;return i==null||Number.isNaN(i)||!Number.isFinite(i)?null:new Intl.NumberFormat(n,{style:`currency`,currency:t,currencyDisplay:r,minimumFractionDigits:2,maximumFractionDigits:2}).format(i)},[e,t,n,r]),s=(0,g.useMemo)(()=>{let t=typeof e==`string`?Number(e.trim()):e;return typeof t==`number`&&t<0},[e]);return o?(0,_.jsx)(`p`,{className:(0,v.cn)(`font-number tabular-nums`,i===`xs`&&`text-xs`,i===`sm`&&`text-sm`,i===`md`&&`text-base`,i===`lg`&&`text-lg`,i===`xl`&&`text-xl`,!a&&`text-text-positive`,a&&s&&`text-danger-strong`,a&&!s&&`text-success-strong`),children:o}):(0,_.jsx)(S,{})});C.displayName=`UITableCurrencyDisplay`;const re=({date:e})=>e==null?(0,_.jsx)(S,{}):(0,_.jsx)(o.r,{children:(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{asChild:!0,children:(0,_.jsx)(a.t,{className:`h-fit`,children:(0,_.jsx)(i.t,{date:e,format:`medium`,className:`font-normal text-white`})})}),(0,_.jsx)(o.n,{className:`rounded px-2`,children:(0,_.jsx)(i.t,{date:e,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})}),ie=({content:e})=>e==null?(0,_.jsx)(S,{}):(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{children:(0,_.jsx)(n.t,{variant:`sm`,className:`line-clamp-2 whitespace-pre-line break-all`,children:e})}),(0,_.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,_.jsx)(n.t,{variant:`xs`,className:`whitespace-pre-line text-wrap break-keep text-text-negative-weak`,children:e}),(0,_.jsxs)(`p`,{className:`w-full text-end`,children:[e.toString().length,` chars`]})]})})]}),w=({email:e,linkable:t=!0})=>{let[n,r]=(0,g.useState)(!1);return e?(0,_.jsx)(o.r,{children:(0,_.jsxs)(`div`,{className:`group flex items-center gap-x-1.5`,children:[(0,_.jsx)(h.MailIcon,{size:13,className:`shrink-0 text-text-positive-weak`}),t?(0,_.jsx)(`a`,{href:`mailto:${e}`,className:`truncate text-primary text-sm underline-offset-2 hover:underline`,onClick:e=>e.stopPropagation(),children:e}):(0,_.jsx)(`span`,{className:`truncate text-text-positive text-sm`,children:e}),(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{asChild:!0,children:(0,_.jsx)(`button`,{onClick:t=>{t.stopPropagation(),t.preventDefault(),navigator.clipboard.writeText(e).then(()=>{r(!0),setTimeout(()=>r(!1),1500)})},className:`shrink-0 cursor-pointer text-text-positive-weak opacity-0 transition-opacity group-hover:opacity-100 hover:text-text-positive`,children:n?(0,_.jsx)(h.CheckIcon,{size:13,className:`text-success-strong`}):(0,_.jsx)(h.CopyIcon,{size:13})})}),(0,_.jsx)(o.n,{children:n?`Copied!`:`Copy email`})]})]})}):(0,_.jsx)(S,{})},T=({items:e,maxVisible:t=3})=>{if(!e||e.length===0)return(0,_.jsx)(S,{});let n=e.slice(0,t),r=e.slice(t);return(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[n.map((e,t)=>(0,_.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs`,children:e},t)),r.length>0&&(0,_.jsx)(o.r,{children:(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{asChild:!0,children:(0,_.jsxs)(`span`,{className:`inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs`,children:[`+`,r.length,` more`]})}),(0,_.jsx)(o.n,{align:`start`,className:`flex max-w-64 flex-wrap gap-1 p-2`,children:r.map((e,t)=>(0,_.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs`,children:e},t))})]})})]})},E=({items:e=[]})=>(0,_.jsxs)(l.t,{children:[(0,_.jsx)(l.h,{asChild:!0,children:(0,_.jsx)(t.t,{size:`sm`,variant:`ghost`,color:`secondary`,className:`size-9 rounded-full`,children:(0,_.jsx)(h.MoreVerticalIcon,{})})}),(0,_.jsx)(l.r,{children:(0,_.jsx)(l.i,{children:e.map(e=>(0,_.jsx)(l.a,{className:`px-3`,onSelect:t=>{e.onClick(e.id),t.stopPropagation()},children:e.label},e.id))})})]}),ae=({name:e})=>e?(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{children:(0,_.jsx)(n.t,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:e})}),(0,_.jsx)(o.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,_.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,_.jsxs)(`p`,{className:`w-full text-end`,children:[e.length,` chars`]})]})})]}):(0,_.jsx)(S,{}),D=({href:e,label:t})=>(0,_.jsxs)(`a`,{href:e,target:`_blank`,className:`inline-flex items-center gap-1 truncate text-primary text-sm underline`,rel:`noopener noreferrer`,children:[(0,_.jsx)(`span`,{children:t||e}),(0,_.jsx)(h.ExternalLinkIcon,{size:14})]}),O=({value:e})=>(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{asChild:!0,children:(0,_.jsx)(`p`,{className:`font-number text-secondary-foreground text-sm tabular-nums`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),(0,_.jsx)(o.n,{align:`start`,children:(0,_.jsx)(`p`,{className:`tabular-nums`,children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),k=(0,g.memo)(({value:e,showLabel:t=!0,successThreshold:n=70,warningThreshold:r=40})=>{if(e==null)return(0,_.jsx)(S,{});let i=Math.min(100,Math.max(0,e));return(0,_.jsxs)(`div`,{className:`flex w-full min-w-24 items-center gap-x-2`,children:[(0,_.jsx)(u.t,{value:i,className:(0,v.cn)(`flex-1`,i>=n?`[&>[data-slot=progress-indicator]]:bg-success`:i>=r?`[&>[data-slot=progress-indicator]]:bg-warning`:`[&>[data-slot=progress-indicator]]:bg-danger`)}),t&&(0,_.jsxs)(`span`,{className:`w-9 shrink-0 text-right font-number text-text-positive-weak text-xs tabular-nums`,children:[i,`%`]})]})});k.displayName=`UITableProgressDisplay`;const A=({title:e,onClick:n})=>(0,_.jsxs)(o.t,{children:[(0,_.jsx)(o.i,{children:(0,_.jsx)(t.t,{type:`button`,variant:`ghost`,color:`danger`,size:`icon`,onClick:(0,g.useCallback)(async e=>{e.preventDefault(),e.stopPropagation(),await n?.()},[n]),children:(0,_.jsx)(h.Trash2Icon,{})})}),(0,_.jsx)(o.n,{children:(0,_.jsx)(`p`,{children:e||`Remove item from list table`})})]}),j=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},M=(0,g.memo)(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:n,suffix:i,precision:a,roundingMode:o=`round`,showTrailingZeros:s=!1,size:c=`lg`,value:l=0})=>{let u=(0,g.useMemo)(()=>{let e={};return typeof a==`number`&&a>=0&&s&&(e.minimumFractionDigits=a),e.maximumFractionDigits=a,e},[a,s]),d=(0,g.useCallback)(e=>{let t=e;return typeof a==`number`&&a>=0&&(t=j(e,a,o)),t.toLocaleString(`en-US`,u)},[o,u,a]),f=(0,g.useMemo)(()=>{if(typeof l==`number`)return Number.isNaN(l)||!Number.isFinite(l)?`N/A`:d(l);if(typeof l==`string`){let e=l.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:d(t)}return`N/A`},[l,d]),p=(0,g.useMemo)(()=>e===`.`&&t===`,`?f:f.replace(/,/g,t).replace(/\./g,e),[f,e,t]);return p===`0`||p===`N/A`||!p?(0,_.jsx)(S,{}):(0,_.jsxs)(r.t,{padding:`none`,className:(0,v.cn)(`font-number text-lg text-text-positive tabular-nums`,c===`xs`&&`text-xs`,c===`sm`&&`text-sm`,c===`md`&&`text-base`,c===`lg`&&`text-lg`,c===`xl`&&`text-xl`),children:[n,(0,_.jsx)(`p`,{children:p}),i]})});M.displayName=`UITableStatisticDisplay`;const oe=({value:e,colorMap:t,defaultColor:n=`muted`,variant:r=`soft`})=>e==null||e===``?(0,_.jsx)(S,{}):(0,_.jsx)(a.t,{variant:r,color:(t&&t[e])??n,className:`min-w-16 justify-center capitalize`,children:e.charAt(0).toUpperCase()+e.slice(1).replace(/_/g,` `)}),se=({uuid:e,username:t,email:i})=>(0,_.jsxs)(r.t,{wrap:!1,gap:`sm`,padding:`none`,children:[!e&&(0,_.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,_.jsx)(s.n,{className:`bg-muted-weak`,children:(0,_.jsx)(h.UserRoundIcon,{size:28,className:`text-text-negative`})})}),e&&(0,_.jsx)(s.t,{className:`size-10 shadow-card`,children:(0,_.jsx)(s.n,{style:{backgroundColor:y.colorHashLight.hex(e)},children:(0,_.jsx)(h.UserRoundIcon,{size:28,className:`text-white`})})}),(0,_.jsxs)(r.t,{vertical:!0,padding:`none`,gap:`none`,align:`start`,children:[(0,_.jsx)(n.t,{className:`font-medium text-sm text-text-positive-weak`,children:t??`Unknown User`}),(0,_.jsx)(n.t,{variant:`sm`,className:`mt-0! text-text-positive-weak text-xs`,children:i})]})]}),ce=60,le=60,ue=20,de=20,fe=(0,g.createContext)(null),pe=()=>{let e=(0,g.use)(fe);if(!e)throw Error(`useTableInnerWrapperContext must be used within a TableInnerWrapperProvider`);return e},me=(0,g.createContext)(null),N=()=>{let e=(0,g.use)(me);if(!e)throw Error(`useTableInnerTableContext must be used within a TableInnerTableProvider`);return e},he=(0,g.createContext)(null),ge=()=>{let e=(0,g.use)(he);if(!e)throw Error(`useTableHeaderRowContext must be used within a TableHeaderRowProvider`);return e},P=(0,g.createContext)(null),F=()=>{let e=(0,g.use)(P);if(!e)throw Error(`useTableBodyContext must be used within a TableBodyProvider`);return e},I=(0,g.createContext)(null),_e=()=>{let e=(0,g.use)(I);if(!e)throw Error(`useTableRowContext must be used within a TableRowProvider`);return e},L=(0,g.createContext)(null),R=()=>{let e=(0,g.use)(L);if(!e)throw Error(`useTableContext must be used within a TableProvider`);return e},z=(0,g.memo)(({isPinned:e,onLeftPin:t,onRightPin:n,onUnpin:r,className:i})=>{let a=(0,g.useCallback)(()=>{t?.(`left`)},[t]),o=(0,g.useCallback)(()=>{n?.(`right`)},[n]),s=(0,g.useCallback)(()=>{r?.(!1)},[r]);return(0,_.jsxs)(l.t,{children:[(0,_.jsx)(l.h,{asChild:!0,children:(0,_.jsx)(`button`,{type:`button`,className:(0,v.cn)(`absolute right-2 z-10 p-0.5 opacity-0 bg-card`,`cursor-pointer rounded-full transition-all`,`text-text-positive-weak`,`[&>svg]:size-4`,`group-hover:opacity-100`,`hover:bg-muted-muted hover:text-text-positive`,i),children:(0,_.jsx)(h.EllipsisVerticalIcon,{})})}),(0,_.jsx)(l.r,{align:`end`,className:`w-64 p-4`,children:(0,_.jsxs)(l.i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:[(0,_.jsx)(g.Activity,{mode:e?`visible`:`hidden`,children:(0,_.jsxs)(l.a,{onClick:s,children:[!!e&&`Unpin`,(0,_.jsx)(l.d,{children:(0,_.jsx)(h.PinOffIcon,{className:`size-4`})})]})}),(0,_.jsxs)(g.Activity,{mode:e?`hidden`:`visible`,children:[(0,_.jsxs)(l.a,{onClick:a,children:[e?`Unpin`:`Pin to Left`,(0,_.jsx)(l.d,{children:(0,_.jsx)(h.MoveLeftIcon,{className:`size-4`})})]}),(0,_.jsxs)(l.a,{onClick:o,children:[e?`Unpin`:`Pin to Right`,(0,_.jsx)(l.d,{children:(0,_.jsx)(h.MoveRightIcon,{className:`size-4`})})]})]})]})})]})});z.displayName=`UITableHeadCellOption`;const B=(0,g.memo)(({isPinned:e,isAllRowsSelected:t,style:n,onToggleAllRowsSelected:r,...i})=>{let a=(0,g.useCallback)(e=>{r?.(!!e)},[r]);return(0,_.jsx)(`th`,{slot:`table-header-cell`,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:(0,v.cn)(e?`sticky`:`relative`),...i,children:(0,_.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:(0,_.jsx)(d.t,{"aria-label":`Select All Rows`,checked:t,onCheckedChange:a})})})});B.displayName=`UITableHeadCellSelect`;const V=(0,g.memo)(({isEmpty:e,isFetching:t})=>!e&&!t?null:(0,_.jsxs)(`div`,{className:`sticky left-0 flex min-h-96 flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100`,children:[t&&(0,_.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,_.jsx)(f.t,{className:`size-12`}),(0,_.jsx)(`p`,{children:`Loading data...`})]}),e&&!t&&(0,_.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,_.jsx)(h.BoxIcon,{strokeWidth:1,size:48}),(0,_.jsx)(`p`,{children:`No data available`})]})]}));V.displayName=`UITableEmptyDisplay`;const ve=(0,g.memo)(({className:e,children:t,...n})=>(0,_.jsx)(`div`,{slot:`table-wrapper`,className:(0,v.cn)(`relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2`,e),...n,children:t}));ve.displayName=`UITableWrapper`;const H=(0,g.memo)(({children:e,...t})=>{let{innerWrapperId:n}=pe();return(0,_.jsx)(`div`,{id:n,slot:`table-inner-wrapper`,className:`relative size-full overflow-auto border-b border-b-border border-l border-l-border bg-card`,...t,children:e})});H.displayName=`UITableInnerWrapper`;const U=(0,g.memo)(({children:e,...t})=>{let{table:n,innerTableId:r,totalSize:i}=N(),a=(0,g.useRef)(null);return(0,g.useEffect)(()=>{if(!a.current)return;let e=n.getFlatHeaders(),t,r=new ResizeObserver(r=>{t!==void 0&&cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let t=r[0];if(!t)return;let i=t.target;if(!(i instanceof HTMLTableElement))return;let a=t.contentRect.width,{left:o=[],right:s=[]}=n.getState().columnPinning,c=0,l=0,u=0,d=e.map(e=>{let{id:t}=e,n=t===`select`||t===`actions`,r=o.includes(t)||s.includes(t),i=e.getSize(),a=e.column.columnDef.maxSize;return n?(c+=60,{id:t,isFlex:!1,width:60}):r?(c+=i,{id:t,isFlex:!1,width:i}):e.column.columnDef.size||i!==150?(u+=i,{id:t,isFlex:!1,width:i}):(l++,{id:t,isFlex:!0,maxSize:a})}),f=a-c-u,p=l>0?Math.max(0,Math.floor(f/l)):0;d.forEach(e=>{if(e.isFlex){let t=e.maxSize?Math.min(p,e.maxSize):p;i.style.setProperty(`--header-${e.id}-size`,`${t}`),i.style.setProperty(`--col-${e.id}-size`,`${t}`),e.maxSize&&i.style.setProperty(`--col-${e.id}-maxSize`,`${e.maxSize}`)}else i.style.setProperty(`--header-${e.id}-size`,`${e.width}`),i.style.setProperty(`--col-${e.id}-size`,`${e.width}`)})})});return r.observe(a.current),()=>{t!==void 0&&cancelAnimationFrame(t),r.disconnect()}},[n.getState().columnSizingInfo,n.getState().columnSizing,n.getState().columnPinning]),(0,_.jsx)(`table`,{id:r,ref:a,slot:`table-inner-table`,className:`grid w-full table-fixed caption-bottom border-collapse border-spacing-0 flex-col content-start [&_tfoot_td]:border-t`,style:{minWidth:i},...t,children:e})});U.displayName=`UITableInnerTable`;const W=(0,g.memo)(({className:e,children:t,...n})=>(0,_.jsx)(`thead`,{slot:`table-head`,className:(0,v.cn)(`sticky top-0 z-20 h-9 w-full`,`grid select-none bg-muted-bg-subtle`,`border-b border-b-border shadow`,`font-medium text-[13px] text-text-positive-weak`,`[&_tr:not(:last-child)_td]:border-b`,`[&_th]:inline-flex`,`[&_th]:items-center`,`[&_th]:transition-all`,`[&_th]:duration-300`,`[&_th]:whitespace-nowrap`,`[&_th]:border-border`,`[&_th]:border-r`,`[&_th]:last:border-r-0`,`[&_th]:first:border-l-0`,`[&_tr_th:not([data-pinned=false])]:bg-muted-bg-subtle`,e),...n,children:t}));W.displayName=`UITableHead`;const G=(0,g.memo)(({headerGroup:e,className:t,...n})=>{let{isAllRowsSelected:r,columnPinningState:i,leftPinnedHeaders:a,rightPinnedHeaders:o,onToggleAllRowsSelected:s}=ge(),c=o[0]?.id,l=a[a.length-1]?.id;return(0,_.jsx)(`tr`,{slot:`table-head-row`,className:(0,v.cn)(`flex`,t),...n,children:e.headers.map((e,t)=>{let n=e.column.getIsVisible(),a=i.left?.includes(e.id)?`left`:i.right?.includes(e.id)?`right`:!1;return e.id===`select`?(0,_.jsx)(B,{isPinned:a,isAllRowsSelected:r,onToggleAllRowsSelected:s},e.id):(0,_.jsx)(K,{isVisible:n,isPinned:a,isFirstCell:e.id===c,isLastCell:e.id===l,isOptionsVisible:![`select`,`actions`].includes(e.id),headerId:e.id,headerColumn:e.column,colSpan:e.colSpan,onColumnPin:e.column.pin,onToggleVisibility:e.column.toggleVisibility,children:(0,b.flexRender)(e.column.columnDef.header,e.getContext())},`${e.id}-${t}`)})})});G.displayName=`UITableHeadRow`;const K=(0,g.memo)(({isVisible:e=!0,isPinned:t=!1,isFirstCell:n=!1,isLastCell:r=!1,isOptionsVisible:i=!0,headerId:a,headerColumn:o,className:s,children:c,onColumnPin:l,onToggleVisibility:u,...d})=>{let f=(0,g.useMemo)(()=>t?20:void 0,[t]),p=(0,g.useMemo)(()=>{let e=o?.getStart?.(`left`);return t===`left`&&typeof e==`number`?`${e}px`:void 0},[t,o]),m=(0,g.useMemo)(()=>{let e=o?.getAfter?.(`right`);return t===`right`&&typeof e==`number`?`${e}px`:void 0},[t,o]),h=(0,g.useMemo)(()=>`calc(var(--header-${a}-size) * 1px)`,[a]),y=(0,g.useMemo)(()=>o?.columnDef.minSize?`calc(var(--col-${a}-minSize) * 1px)`:void 0,[a,o]),b=(0,g.useMemo)(()=>o?.columnDef.maxSize?`calc(var(--col-${a}-maxSize) * 1px)`:void 0,[a,o]);return(0,_.jsxs)(`th`,{slot:`table-head-cell`,"data-pinned":t,"data-header":a,style:{zIndex:f,left:p,right:m,width:h,minWidth:y,maxWidth:b},className:(0,v.cn)(`group flex`,a===`actions`&&`border-r-0!`,t?`sticky`:`relative`,t===`left`&&r&&`border-r border-r-border`,t===`right`&&n&&`border-l border-l-border`,o?.columnDef.meta?.position===`center`&&`justify-center`,o?.columnDef.meta?.position===`end`&&`justify-end`,o?.columnDef.meta?.position===`start`&&`justify-start`,s),...d,children:[(0,_.jsx)(`div`,{className:`truncate px-4`,children:c}),i&&(0,_.jsx)(z,{isPinned:t,isVisible:e,onLeftPin:l,onRightPin:l,onUnpin:l})]})});K.displayName=`UITableHeadCell`;const q=(0,g.memo)(({height:e,className:t,children:n,...r})=>{let{isFetching:i,isEmpty:a}=F();return a||i?null:(0,_.jsx)(`tbody`,{slot:`table-body`,style:{height:e},className:(0,v.cn)(`relative w-full`,`grid`,`[&_tr]:absolute`,`[&_tr]:flex`,`[&_tr]:flex-none`,`[&_tr]:w-full`,`[&_tr]:cursor-pointer [&_tr]:focus:outline-none`,`[&_tr]:border-b [&_tr]:border-b-border`,`[&_td]:z-10`,`[&_td]:transition-all`,`[&_td]:duration-300`,`[&_td]:flex`,`[&_td]:flex-none`,`[&_td]:overflow-hidden`,`[&_td]:whitespace-nowrap`,`[&_td]:px-4`,`[&_td]:py-2.5`,`[&_td]:align-middle`,`[&_td]:border-border`,`[&_td]:data-[selected=true]:bg-muted-muted!`,`[&_td]:data-[selected=true]:hover:bg-muted-muted!`,`[&_td>div]:inline-flex`,`[&_td>div]:items-center`,`[&_td>div]:w-full`,`[&_td:not([data-pinned=false])]:z-20`,`[&_td:not([data-pinned=false])]:sticky`,`[&_td:not([data-pinned=false])]:bg-card`,t),...r,children:n})});q.displayName=`UITableBody`;const J=(0,g.memo)(({row:e,isSelected:t,virtualRowIndex:n,virtualRowStart:r,children:i,...a})=>{let{keyOfClickRow:o,isAllRowsSelected:s,columnPinningState:c,leftPinnedHeaders:l,rightPinnedHeaders:u,onClickRow:d}=_e(),f=(0,g.useMemo)(()=>c.left??[],[c]),p=(0,g.useMemo)(()=>c.right??[],[c]),m=(0,g.useMemo)(()=>u?.[0]?.id,[u]),h=(0,g.useMemo)(()=>l?.[l.length-1]?.id,[l]),v=(0,g.useCallback)(t=>{let r=o?e.original?.[o]:void 0;d?.(n,typeof r==`string`||typeof r==`number`?r:void 0),t.preventDefault(),t.stopPropagation()},[o,d,e,n]);return(0,_.jsx)(`tr`,{slot:`table-row`,"data-index":n,style:{transform:`translateY(${r}px)`},className:`group [&_td]:border-r [&_td]:border-r-border [&_td]:last:border-r-0`,onClick:v,...a,children:e.getVisibleCells().map((e,r)=>{let i=f.includes(e.column.id),a=p.includes(e.column.id),o=i?`left`:a?`right`:!1;return e.column.id===`actions`?(0,_.jsx)(X,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,virtualRowIndex:n,column:e.column,getContext:e.getContext},`${e.id}-${r}`):e.column.id===`select`?(0,_.jsx)(Y,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:o,isSelected:s||t,onToggleRowSelected:e.row.toggleSelected},`${e.id}-${r}`):(0,_.jsx)(Z,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:o,isFirstCell:e.column.id===m,isLastCell:e.column.id===h,colId:e.column.id,position:e.column.columnDef.meta?.position??`start`,column:e.column,getContext:e.getContext},`${e.id}-${r}`)})})});J.displayName=`UITableRow`;const Y=(0,g.memo)(({isPinned:e,isSelected:t=!1,className:n,onToggleRowSelected:r,...i})=>{let a=(0,g.useCallback)(e=>{r?.(!!e)},[r]);return(0,_.jsx)(`td`,{slot:`table-body-cell`,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:(0,v.cn)(`group-hover:bg-muted-bg-subtle!`,e?`sticky`:`relative`,n),...i,children:(0,_.jsx)(`div`,{"data-slot":`table-cell-inner`,className:`flex! w-full! items-center justify-center bg-transparent text-center align-middle`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:(0,_.jsx)(d.t,{"aria-label":`Select Row`,checked:t,onCheckedChange:a})})})});Y.displayName=`UITableCellSelect`;const X=(0,g.memo)(({virtualRowIndex:e,column:t,getContext:n,className:r,...i})=>{let a=(0,g.useMemo)(()=>(0,b.flexRender)(t?.columnDef.cell,n()),[t,n]);return(0,_.jsx)(`td`,{"data-col":`actions`,"data-cell":e,className:`sticky border-r-0! inset-y-0 right-0 z-50 flex items-center pr-4 group-hover:bg-muted-bg-subtle!`,...i,children:a})});X.displayName=`UITableCellActions`;const Z=(0,g.memo)(({isPinned:e=!1,isFirstCell:t=!1,isLastCell:n=!1,colId:r,position:i=`start`,column:a,getContext:o,...s})=>{let{innerTableId:c,table:l}=N(),u=(0,g.useRef)(null),d=(0,g.useRef)(null),f=(0,g.useMemo)(()=>{let t=a?.getStart(`left`);return e===`left`&&typeof t==`number`?`${t}px`:void 0},[e,a]),p=(0,g.useMemo)(()=>{let t=a?.getAfter(`right`);return e===`right`&&typeof t==`number`?`${t}px`:void 0},[e,a]),m=(0,g.useMemo)(()=>`calc(var(--col-${r}-size) * 1px)`,[r]),h=(0,g.useMemo)(()=>a?.columnDef.minSize?`calc(var(--col-${r}-minSize) * 1px)`:void 0,[r,a]),y=(0,g.useMemo)(()=>a?.columnDef.maxSize?`calc(var(--col-${r}-maxSize) * 1px)`:void 0,[r,a]),x=(0,g.useMemo)(()=>(0,b.flexRender)(a?.columnDef.cell,o()),[a,o]);return(0,g.useEffect)(()=>{u.current=document.querySelector(`table[id="${c}"]`)},[c]),(0,g.useEffect)(()=>{if(!d.current)return;let e=d.current.scrollWidth,t=a?.getSize();t!=null&&e>t&&u.current instanceof HTMLTableElement&&typeof r==`string`&&a?.columnDef.meta?.fitContent&&l.setColumnSizing(t=>({...t,[r]:e+32}))},[r,a,l]),(0,_.jsx)(`td`,{slot:`table-body-cell`,"data-pinned":e,"data-lastcell":n||void 0,"data-firstcell":t||void 0,style:{left:f,right:p,width:m,minWidth:h,maxWidth:y},className:(0,v.cn)(`group-hover:bg-muted-bg-subtle!`,e===`left`&&n&&`border-r border-r-border`,e===`right`&&t&&`border-l border-l-border`),...s,children:(0,_.jsx)(`div`,{ref:d,slot:`table-body-cell-inner`,className:(0,v.cn)(`overflow-x-hidden`,i===`start`&&`justify-start`,i===`center`&&`justify-center`,i===`end`&&`justify-end`),children:x})})});Z.displayName=`UITableCell`;const ye=(0,g.memo)(({className:e,children:t,...n})=>(0,_.jsx)(`tfoot`,{slot:`table-footer`,className:(0,v.cn)(`flex w-full justify-center border-border-weak border-t py-2 font-medium [&>tr]:last:border-b-0`,e),...n,children:t}));ye.displayName=`UITableFooter`;const Q=(0,g.memo)(({virtualRowIndex:e,virtualRowStart:t,fetchMoreData:n})=>{let{innerWrapperId:r}=pe(),i=(0,g.useRef)(null),a=(0,g.useRef)(null),[o,s]=(0,g.useState)(`idle`),[c,l]=(0,g.useState)(0),u=(0,g.useCallback)(async()=>{try{s(`fetching`),await n?.(),s(`idle`)}catch(e){console.error(`Error fetching more data:`,e),s(`error`)}},[n]);return(0,g.useEffect)(()=>{if(i.current=document.querySelector(`div[id="${r}"]`),!i.current)return;let e=new ResizeObserver(e=>{l(e[0].contentRect.width)});return e.observe(i.current),()=>e.disconnect()},[r]),n?(0,_.jsx)(`tr`,{ref:a,"data-index":e,style:{transform:`translateY(${t}px)`,width:c},className:`sticky! left-0 h-10`,children:(0,_.jsx)(`td`,{className:`absolute left-0 flex w-full items-center justify-center text-xs`,children:(0,_.jsxs)(`button`,{type:`button`,disabled:o===`fetching`,className:(0,v.cn)(`flex cursor-pointer gap-x-0.5`,o===`fetching`&&`cursor-not-allowed`,o===`idle`&&`text-text-positive-weak hover:text-text-positive`,o===`error`&&`text-danger hover:text-danger-strong`),onClick:u,children:[o===`idle`&&(0,_.jsx)(h.ChevronDown,{className:`size-4`}),o===`fetching`&&(0,_.jsx)(f.t,{className:`size-4 animate-spin`}),o===`error`&&(0,_.jsx)(h.AlertTriangle,{className:`size-4 text-danger`}),o===`idle`&&`Load More`,o===`fetching`&&`Loading...`,o===`error`&&`Error! Retry?`]})})}):null});Q.displayName=`UITableLoadMore`;const be=({children:e})=>{let{table:t,isEmpty:n,isFetching:r,fetchMoreData:i}=R(),{rowSelectionState:a}=F(),o=(0,g.useRef)(null),{rows:s}=t.getRowModel(),c=(0,x.useVirtualizer)({count:s.length+(i?1:0),estimateSize:()=>40,getScrollElement:()=>o.current,measureElement:typeof window<`u`&&navigator.userAgent.indexOf(`Firefox`)===-1?e=>e?.getBoundingClientRect().height:void 0,overscan:2}),l=(0,g.useMemo)(()=>{let e=c.getTotalSize(),t=o.current?.clientHeight??0;return`${Math.max(e,t)}px`},[c.getTotalSize()]);return(0,_.jsxs)(p.r,{direction:`horizontal`,style:{direction:t.options.columnResizeDirection},className:`relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border border-r border-r-border bg-slate-50 p-0 text-sm`,children:[(0,_.jsx)(p.n,{className:`relative`,children:(0,_.jsxs)(H,{ref:o,children:[(0,_.jsxs)(U,{children:[(0,_.jsx)(W,{children:t.getHeaderGroups().map(e=>(0,_.jsx)(G,{headerGroup:e},e.id))}),(0,_.jsx)(q,{height:l,children:c.getVirtualItems().map(e=>{let t=s[e.index];if(!t&&i)return(0,_.jsx)(Q,{virtualRowIndex:e.index,virtualRowStart:e.start,fetchMoreData:i},e.key);let n=a[t.id]===!0;return(0,_.jsx)(J,{ref:c.measureElement,row:t,isSelected:n,virtualRowIndex:e.index,virtualRowStart:e.start},e.key)})})]}),(0,_.jsx)(V,{isEmpty:n,isFetching:r})]})}),e&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(p.t,{withHandle:!0}),e]})]})},xe=({checked:e,title:t,onCheckedChange:n})=>(0,_.jsxs)(`div`,{className:`flex h-fit items-center gap-2`,children:[(0,_.jsx)(d.t,{checked:e,onCheckedChange:n}),(0,_.jsx)(`p`,{className:`text-sm`,children:t})]}),Se=()=>{let{table:e}=R(),[n,r]=(0,g.useState)(null);return(0,_.jsx)(p.n,{defaultSize:25,className:(0,v.cn)(`bg-card`,n===null?`max-w-8!`:`min-w-64`),children:(0,_.jsxs)(`div`,{className:`relative z-20 flex size-full bg-muted-bg-subtle`,children:[(0,_.jsxs)(`div`,{className:`flex-1`,children:[(0,_.jsx)(g.Activity,{mode:n===`columns`?`visible`:`hidden`,children:(0,_.jsxs)(`div`,{className:`flex size-full flex-col gap-2 p-4`,children:[(0,_.jsx)(`p`,{className:`px-2 font-medium`,children:`Columns Visibility`}),(0,_.jsx)(c.t,{}),(0,_.jsx)(`div`,{className:`flex flex-col gap-4 pt-4`,children:e.getAllColumns().map(e=>[`select`,`actions`].includes(e.id)?null:(0,_.jsx)(xe,{checked:e.getIsVisible(),title:String(e.columnDef.header),onCheckedChange:t=>e.toggleVisibility(!!t)},e.id))})]})}),(0,_.jsx)(g.Activity,{mode:n===`filters`?`visible`:`hidden`,children:(0,_.jsx)(`div`,{className:`flex size-full flex-col p-2`,children:(0,_.jsxs)(t.t,{variant:`outline`,color:`muted`,children:[(0,_.jsx)(h.ListFilterPlus,{}),`Add Filter`]})})})]}),(0,_.jsxs)(`div`,{className:`flex h-full flex-col border-border border-l bg-muted-bg-subtle text-sm`,children:[(0,_.jsxs)(`button`,{className:(0,v.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`columns`&&`bg-card`),onClick:()=>r(n===`columns`?null:`columns`),children:[(0,_.jsx)(h.Columns4Icon,{size:18}),(0,_.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Columns`})]}),(0,_.jsx)(c.t,{}),(0,_.jsxs)(`button`,{className:(0,v.cn)(`flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,n===`filters`&&`bg-card`),onClick:()=>r(n===`filters`?null:`filters`),children:[(0,_.jsx)(h.ListFilterIcon,{size:18}),(0,_.jsx)(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Filters`})]}),(0,_.jsx)(c.t,{})]})]})})},Ce=(0,g.memo)(({innerWrapperId:e,children:t})=>{let n=(0,g.useMemo)(()=>({innerWrapperId:e}),[e]);return(0,_.jsx)(fe.Provider,{value:n,children:t})});Ce.displayName=`UITableInnerWrapperProvider`;const we=(0,g.memo)(({table:e,innerTableId:t,totalSize:n,children:r})=>{let i=(0,g.useMemo)(()=>({table:e,innerTableId:t,totalSize:n}),[e,t,n]);return(0,_.jsx)(me.Provider,{value:i,children:r})});we.displayName=`UITableInnerTableProvider`;const Te=(0,g.memo)(({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i,children:a})=>{let o=(0,g.useMemo)(()=>({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i}),[e,t,n,r,i]);return(0,_.jsx)(he.Provider,{value:o,children:a})});Te.displayName=`UITableHeadRowProvider`;const Ee=(0,g.memo)(({isFetching:e,isEmpty:t,rowSelectionState:n,children:r})=>{let i=(0,g.useMemo)(()=>({isFetching:e,isEmpty:t,rowSelectionState:n}),[e,t,n]);return(0,_.jsx)(P.Provider,{value:i,children:r})});Ee.displayName=`UITableBodyProvider`;const De=(0,g.memo)(({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a,children:o})=>{let s=(0,g.useMemo)(()=>({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a}),[e,t,n,r,i,a]);return(0,_.jsx)(I.Provider,{value:s,children:o})});De.displayName=`UITableRowProvider`;const Oe=({title:e,isFetching:t=!1,isRefetching:n=!1,data:r,columns:i,totalRows:a,leftPinnedColumns:o=[],rightPinnedColumns:s=[],keyOfClickRow:c,onClickRow:l,onRowSelection:u,onColumnPinning:d,fetchMoreData:f,csvData:p,csvFileName:m,children:h})=>{let v=(0,g.useId)(),y=(0,g.useId)(),[x,ee]=(0,g.useState)({}),[S,te]=(0,g.useState)({right:s,left:[`select`,...o]}),[ne,C]=(0,g.useState)({}),re=(0,g.useCallback)(e=>(ee(e),u?.(e instanceof Function?e(x):e),e),[x,u]),ie=(0,g.useCallback)(e=>{te(e),d?.(e instanceof Function?e(S):e)},[S,d]),w=(0,b.useReactTable)({data:r,columns:i,state:{rowSelection:x,columnPinning:S,expanded:ne},defaultColumn:{enableResizing:!1,size:void 0,minSize:void 0,maxSize:void 0},columnResizeMode:`onChange`,columnResizeDirection:`ltr`,enableColumnPinning:!0,enableRowSelection:!0,enableColumnResizing:!0,enableMultiRowSelection:!0,autoResetAll:!1,autoResetExpanded:!1,autoResetPageIndex:!1,getSubRows:e=>e.subRows,getCoreRowModel:(0,b.getCoreRowModel)(),getGroupedRowModel:(0,b.getGroupedRowModel)(),getExpandedRowModel:(0,b.getExpandedRowModel)(),onRowSelectionChange:re,onColumnPinningChange:ie,onExpandedChange:C}),T=(0,g.useMemo)(()=>{let{rows:e}=w.getRowModel();return e},[w.getRowModel().rows,w.getState().columnPinning]),E=(0,g.useMemo)(()=>!t&&T.length===0,[T,t]),ae=(0,g.useMemo)(()=>({title:e,table:w,isEmpty:E,isFetching:t,isRefetching:n,totalRows:a,fetchMoreData:f,csvData:p,csvFileName:m}),[e,w,E,n,t,a,f,w.getState().columnPinning,w.getState().expanded,p,m]),D=(0,g.useMemo)(()=>w.getState(),[w.getState()]),O=(0,g.useMemo)(()=>w.getIsAllRowsSelected(),[w.getIsAllRowsSelected()]),k=(0,g.useMemo)(()=>D.rowSelection,[D.rowSelection]),A=(0,g.useMemo)(()=>D.columnPinning,[D.columnPinning]),j=(0,g.useMemo)(()=>w.getLeftHeaderGroups()[0]?.headers||[],[w.getState().columnPinning]),M=(0,g.useMemo)(()=>w.getRightHeaderGroups()[0]?.headers||[],[w.getState().columnPinning]),oe=(0,g.useMemo)(()=>w.getTotalSize(),[w.getTotalSize()]);return(0,_.jsx)(L.Provider,{value:ae,children:(0,_.jsx)(Ce,{innerWrapperId:v,children:(0,_.jsx)(we,{table:w,innerTableId:y,totalSize:oe,children:(0,_.jsx)(Te,{isAllRowsSelected:O,columnPinningState:A,leftPinnedHeaders:j,rightPinnedHeaders:M,onToggleAllRowsSelected:w.toggleAllRowsSelected,children:(0,_.jsx)(Ee,{isFetching:t,isEmpty:E,rowSelectionState:k,children:(0,_.jsx)(De,{keyOfClickRow:c,isAllRowsSelected:O,columnPinningState:A,leftPinnedHeaders:j,rightPinnedHeaders:M,onClickRow:l,children:h})})})})})})};function ke(e){if(e==null)return``;if(typeof e==`number`)return String(e);if(typeof e==`boolean`)return e?`true`:`false`;let t=String(e);return t.includes(`,`)||t.includes(`"`)||t.includes(`
2
+ `)||t.includes(`\r`)?`"${t.replace(/"/g,`""`)}"`:t}function Ae(e){if(e.length===0)return``;let t=e[0].map(e=>ke(e.label)),n=e.map(e=>e.map(e=>ke(e.value)).join(`,`));return[t.join(`,`),...n].join(`
3
+ `)}function je(e,t){let n=Ae(e);if(!n)return;let r=new Blob([n],{type:`text/csv;charset=utf-8;`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${t}.csv`,a.click(),URL.revokeObjectURL(i)}const Me=({onSearch:e,onChange:t,...n})=>{let r=(0,ee.useDebounceCallback)(t=>{e?.(t)},500);return(0,_.jsxs)(`div`,{className:`relative w-full max-w-80 flex-1`,children:[(0,_.jsx)(m.t,{...n,size:`lg`,type:`search`,placeholder:`Search records...`,className:`flex-1 ps-9 pe-9`,onChange:e=>{t?.(e),r(e.target.value??``)}}),(0,_.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 inset-s-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:(0,_.jsx)(h.SearchIcon,{size:16})}),(0,_.jsx)(`button`,{className:`absolute inset-y-0 inset-e-0 flex h-full w-9 items-center justify-center rounded-e-md text-text-positive-weak outline-none transition-[color,box-shadow] hover:text-text-positive focus:z-10 focus-visible:border focus-visible:border-primary-strong focus-visible:ring-[3px] focus-visible:ring-primary-weak disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":`Submit search`,type:`submit`,children:(0,_.jsx)(h.ArrowRightIcon,{size:16,"aria-hidden":`true`})})]})},$=({children:e,disabled:t,onClick:n})=>(0,_.jsx)(`button`,{type:`button`,disabled:t,className:`flex cursor-pointer items-center gap-x-1 rounded-sm border border-border bg-background p-2.5 text-sm text-text-positive-weak outline-none transition-all hover:shadow-card focus:border-border-emphasis focus:bg-muted-muted active:border-border-emphasis active:bg-muted-muted active:text-text-positive disabled:pointer-events-none disabled:cursor-default disabled:opacity-60 [&_svg]:size-3.5`,onClick:n,children:e}),Ne=({onCreate:e,onDownload:t,onRefresh:n})=>{let{table:r,csvData:i,csvFileName:a,title:o}=R(),s=(0,g.useCallback)(()=>{if(t){t();return}if(!i||i.length===0)return;let e=r.getSelectedRowModel().flatRows;je(e.length>0?e.map(e=>i[e.index]).filter(Boolean):i,a||o)},[t,i,a,r,o]),c=!!(t||i&&i.length>0);return(0,_.jsxs)(`div`,{className:`flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none`,children:[(0,_.jsx)($,{disabled:!e,onClick:t=>{e?.(),t.stopPropagation(),t.preventDefault()},children:(0,_.jsx)(h.CirclePlus,{})}),(0,_.jsx)($,{disabled:!n,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:(0,_.jsx)(h.RefreshCwIcon,{})}),(0,_.jsx)($,{disabled:!c,onClick:e=>{s(),e.stopPropagation(),e.preventDefault()},children:(0,_.jsx)(h.DownloadIcon,{})})]})},Pe=({children:e})=>{let{title:t}=R();return(0,_.jsxs)(`div`,{"data-slot":`table-tooltip`,className:`relative m-0 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 p-0 px-2 text-sm`,children:[(0,_.jsx)(`h3`,{className:`font-semibold text-base text-text-positive`,children:t}),(0,_.jsx)(`div`,{className:`flex w-full flex-1 justify-between gap-x-2`,children:e})]})};Pe.displayName=`TableTooltip`,Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return H}});
4
+ //# sourceMappingURL=tables-Chn2pQSc.cjs.map