@databricks/appkit-ui 0.15.0 → 0.17.0

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 (274) hide show
  1. package/dist/cli/commands/plugin/add-resource/add-resource.js +10 -4
  2. package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
  3. package/dist/cli/commands/plugin/create/scaffold.js +10 -16
  4. package/dist/cli/commands/plugin/create/scaffold.js.map +1 -1
  5. package/dist/cli/commands/plugin/list/list.js +44 -26
  6. package/dist/cli/commands/plugin/list/list.js.map +1 -1
  7. package/dist/cli/commands/plugin/manifest-resolve.js +57 -0
  8. package/dist/cli/commands/plugin/manifest-resolve.js.map +1 -0
  9. package/dist/cli/commands/plugin/sync/sync.js +121 -71
  10. package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
  11. package/dist/cli/commands/plugin/trusted-js-manifest.js +28 -0
  12. package/dist/cli/commands/plugin/trusted-js-manifest.js.map +1 -0
  13. package/dist/cli/commands/plugin/validate/validate.js +32 -14
  14. package/dist/cli/commands/plugin/validate/validate.js.map +1 -1
  15. package/dist/js/arrow/arrow-client.d.ts.map +1 -1
  16. package/dist/js/arrow/index.d.ts +3 -0
  17. package/dist/js/arrow/lazy-arrow.d.ts +0 -1
  18. package/dist/js/arrow/lazy-arrow.d.ts.map +1 -1
  19. package/dist/js/constants.d.ts.map +1 -1
  20. package/dist/js/index.d.ts +2 -0
  21. package/dist/js/sse/connect-sse.d.ts +0 -1
  22. package/dist/js/sse/connect-sse.d.ts.map +1 -1
  23. package/dist/js/sse/types.d.ts +1 -3
  24. package/dist/js/sse/types.d.ts.map +1 -1
  25. package/dist/react/charts/area/index.d.ts +2 -3
  26. package/dist/react/charts/area/index.d.ts.map +1 -1
  27. package/dist/react/charts/bar/index.d.ts +2 -3
  28. package/dist/react/charts/bar/index.d.ts.map +1 -1
  29. package/dist/react/charts/base.d.ts +2 -2
  30. package/dist/react/charts/base.d.ts.map +1 -1
  31. package/dist/react/charts/base.js.map +1 -1
  32. package/dist/react/charts/chart-error-boundary.js.map +1 -1
  33. package/dist/react/charts/constants.d.ts.map +1 -1
  34. package/dist/react/charts/create-chart.d.ts +2 -3
  35. package/dist/react/charts/create-chart.d.ts.map +1 -1
  36. package/dist/react/charts/create-chart.js.map +1 -1
  37. package/dist/react/charts/empty.js.map +1 -1
  38. package/dist/react/charts/error.js.map +1 -1
  39. package/dist/react/charts/heatmap/index.d.ts +2 -3
  40. package/dist/react/charts/heatmap/index.d.ts.map +1 -1
  41. package/dist/react/charts/index.d.ts +18 -0
  42. package/dist/react/charts/line/index.d.ts +2 -3
  43. package/dist/react/charts/line/index.d.ts.map +1 -1
  44. package/dist/react/charts/loading.js.map +1 -1
  45. package/dist/react/charts/normalize.d.ts +0 -1
  46. package/dist/react/charts/normalize.d.ts.map +1 -1
  47. package/dist/react/charts/options.d.ts.map +1 -1
  48. package/dist/react/charts/pie/index.d.ts +3 -4
  49. package/dist/react/charts/pie/index.d.ts.map +1 -1
  50. package/dist/react/charts/radar/index.d.ts +2 -3
  51. package/dist/react/charts/radar/index.d.ts.map +1 -1
  52. package/dist/react/charts/scatter/index.d.ts +2 -3
  53. package/dist/react/charts/scatter/index.d.ts.map +1 -1
  54. package/dist/react/charts/theme.d.ts +0 -1
  55. package/dist/react/charts/theme.d.ts.map +1 -1
  56. package/dist/react/charts/types.d.ts.map +1 -1
  57. package/dist/react/charts/utils.d.ts.map +1 -1
  58. package/dist/react/charts/wrapper.d.ts +2 -2
  59. package/dist/react/charts/wrapper.d.ts.map +1 -1
  60. package/dist/react/charts/wrapper.js.map +1 -1
  61. package/dist/react/genie/genie-chat-input.d.ts +2 -2
  62. package/dist/react/genie/genie-chat-input.d.ts.map +1 -1
  63. package/dist/react/genie/genie-chat-input.js.map +1 -1
  64. package/dist/react/genie/genie-chat-message-list.d.ts +9 -3
  65. package/dist/react/genie/genie-chat-message-list.d.ts.map +1 -1
  66. package/dist/react/genie/genie-chat-message-list.js +92 -17
  67. package/dist/react/genie/genie-chat-message-list.js.map +1 -1
  68. package/dist/react/genie/genie-chat-message.d.ts +2 -2
  69. package/dist/react/genie/genie-chat-message.d.ts.map +1 -1
  70. package/dist/react/genie/genie-chat-message.js.map +1 -1
  71. package/dist/react/genie/genie-chat.d.ts +2 -2
  72. package/dist/react/genie/genie-chat.d.ts.map +1 -1
  73. package/dist/react/genie/genie-chat.js +4 -2
  74. package/dist/react/genie/genie-chat.js.map +1 -1
  75. package/dist/react/genie/index.d.ts +7 -0
  76. package/dist/react/genie/types.d.ts +8 -1
  77. package/dist/react/genie/types.d.ts.map +1 -1
  78. package/dist/react/genie/use-genie-chat.d.ts +0 -1
  79. package/dist/react/genie/use-genie-chat.d.ts.map +1 -1
  80. package/dist/react/genie/use-genie-chat.js +119 -41
  81. package/dist/react/genie/use-genie-chat.js.map +1 -1
  82. package/dist/react/hooks/index.d.ts +3 -0
  83. package/dist/react/hooks/types.d.ts.map +1 -1
  84. package/dist/react/hooks/use-analytics-query.d.ts +0 -1
  85. package/dist/react/hooks/use-analytics-query.d.ts.map +1 -1
  86. package/dist/react/hooks/use-chart-data.d.ts.map +1 -1
  87. package/dist/react/index.d.ts +5 -0
  88. package/dist/react/lib/utils.d.ts.map +1 -1
  89. package/dist/react/portal-container-context.d.ts +0 -1
  90. package/dist/react/portal-container-context.d.ts.map +1 -1
  91. package/dist/react/portal-container-context.js.map +1 -1
  92. package/dist/react/table/data-table.d.ts +2 -3
  93. package/dist/react/table/data-table.d.ts.map +1 -1
  94. package/dist/react/table/data-table.js.map +1 -1
  95. package/dist/react/table/empty.js.map +1 -1
  96. package/dist/react/table/error.js.map +1 -1
  97. package/dist/react/table/index.d.ts +1 -0
  98. package/dist/react/table/loading.js.map +1 -1
  99. package/dist/react/table/table-wrapper.js.map +1 -1
  100. package/dist/react/table/types.d.ts +0 -1
  101. package/dist/react/table/types.d.ts.map +1 -1
  102. package/dist/react/ui/accordion.d.ts.map +1 -1
  103. package/dist/react/ui/accordion.js.map +1 -1
  104. package/dist/react/ui/alert-dialog.d.ts +12 -12
  105. package/dist/react/ui/alert-dialog.d.ts.map +1 -1
  106. package/dist/react/ui/alert-dialog.js.map +1 -1
  107. package/dist/react/ui/alert.d.ts +4 -4
  108. package/dist/react/ui/alert.d.ts.map +1 -1
  109. package/dist/react/ui/alert.js.map +1 -1
  110. package/dist/react/ui/aspect-ratio.d.ts +2 -2
  111. package/dist/react/ui/aspect-ratio.d.ts.map +1 -1
  112. package/dist/react/ui/aspect-ratio.js.map +1 -1
  113. package/dist/react/ui/avatar.d.ts +4 -4
  114. package/dist/react/ui/avatar.d.ts.map +1 -1
  115. package/dist/react/ui/avatar.js.map +1 -1
  116. package/dist/react/ui/badge.d.ts +2 -2
  117. package/dist/react/ui/badge.d.ts.map +1 -1
  118. package/dist/react/ui/badge.js.map +1 -1
  119. package/dist/react/ui/breadcrumb.d.ts +8 -8
  120. package/dist/react/ui/breadcrumb.d.ts.map +1 -1
  121. package/dist/react/ui/breadcrumb.js.map +1 -1
  122. package/dist/react/ui/button-group.d.ts +6 -6
  123. package/dist/react/ui/button-group.d.ts.map +1 -1
  124. package/dist/react/ui/button-group.js.map +1 -1
  125. package/dist/react/ui/button.d.ts +4 -4
  126. package/dist/react/ui/button.d.ts.map +1 -1
  127. package/dist/react/ui/button.js.map +1 -1
  128. package/dist/react/ui/calendar.d.ts +3 -3
  129. package/dist/react/ui/calendar.d.ts.map +1 -1
  130. package/dist/react/ui/calendar.js.map +1 -1
  131. package/dist/react/ui/card.d.ts +8 -8
  132. package/dist/react/ui/card.d.ts.map +1 -1
  133. package/dist/react/ui/card.js.map +1 -1
  134. package/dist/react/ui/carousel.d.ts +6 -6
  135. package/dist/react/ui/carousel.d.ts.map +1 -1
  136. package/dist/react/ui/carousel.js.map +1 -1
  137. package/dist/react/ui/chart.d.ts +19 -19
  138. package/dist/react/ui/chart.d.ts.map +1 -1
  139. package/dist/react/ui/chart.js.map +1 -1
  140. package/dist/react/ui/checkbox.d.ts +2 -2
  141. package/dist/react/ui/checkbox.d.ts.map +1 -1
  142. package/dist/react/ui/checkbox.js.map +1 -1
  143. package/dist/react/ui/collapsible.d.ts +4 -4
  144. package/dist/react/ui/collapsible.d.ts.map +1 -1
  145. package/dist/react/ui/collapsible.js.map +1 -1
  146. package/dist/react/ui/command.d.ts +10 -10
  147. package/dist/react/ui/command.d.ts.map +1 -1
  148. package/dist/react/ui/command.js.map +1 -1
  149. package/dist/react/ui/context-menu.d.ts +16 -16
  150. package/dist/react/ui/context-menu.d.ts.map +1 -1
  151. package/dist/react/ui/context-menu.js.map +1 -1
  152. package/dist/react/ui/dialog.d.ts +11 -11
  153. package/dist/react/ui/dialog.d.ts.map +1 -1
  154. package/dist/react/ui/dialog.js.map +1 -1
  155. package/dist/react/ui/drawer.d.ts +11 -11
  156. package/dist/react/ui/drawer.d.ts.map +1 -1
  157. package/dist/react/ui/drawer.js.map +1 -1
  158. package/dist/react/ui/dropdown-menu.d.ts +16 -16
  159. package/dist/react/ui/dropdown-menu.d.ts.map +1 -1
  160. package/dist/react/ui/dropdown-menu.js.map +1 -1
  161. package/dist/react/ui/empty.d.ts +9 -9
  162. package/dist/react/ui/empty.d.ts.map +1 -1
  163. package/dist/react/ui/empty.js.map +1 -1
  164. package/dist/react/ui/field.d.ts +13 -13
  165. package/dist/react/ui/field.d.ts.map +1 -1
  166. package/dist/react/ui/field.js.map +1 -1
  167. package/dist/react/ui/form.d.ts +9 -9
  168. package/dist/react/ui/form.d.ts.map +1 -1
  169. package/dist/react/ui/form.js.map +1 -1
  170. package/dist/react/ui/hover-card.d.ts +4 -4
  171. package/dist/react/ui/hover-card.d.ts.map +1 -1
  172. package/dist/react/ui/hover-card.js.map +1 -1
  173. package/dist/react/ui/index.d.ts +53 -0
  174. package/dist/react/ui/input-group.d.ts +10 -10
  175. package/dist/react/ui/input-group.d.ts.map +1 -1
  176. package/dist/react/ui/input-group.js.map +1 -1
  177. package/dist/react/ui/input-otp.d.ts +5 -5
  178. package/dist/react/ui/input-otp.d.ts.map +1 -1
  179. package/dist/react/ui/input-otp.js.map +1 -1
  180. package/dist/react/ui/input.d.ts +2 -2
  181. package/dist/react/ui/input.d.ts.map +1 -1
  182. package/dist/react/ui/input.js.map +1 -1
  183. package/dist/react/ui/item.d.ts +14 -14
  184. package/dist/react/ui/item.d.ts.map +1 -1
  185. package/dist/react/ui/item.js.map +1 -1
  186. package/dist/react/ui/kbd.d.ts +3 -3
  187. package/dist/react/ui/kbd.d.ts.map +1 -1
  188. package/dist/react/ui/kbd.js.map +1 -1
  189. package/dist/react/ui/label.d.ts +2 -2
  190. package/dist/react/ui/label.d.ts.map +1 -1
  191. package/dist/react/ui/label.js.map +1 -1
  192. package/dist/react/ui/menubar.d.ts +17 -17
  193. package/dist/react/ui/menubar.d.ts.map +1 -1
  194. package/dist/react/ui/menubar.js.map +1 -1
  195. package/dist/react/ui/navigation-menu.d.ts +11 -11
  196. package/dist/react/ui/navigation-menu.d.ts.map +1 -1
  197. package/dist/react/ui/navigation-menu.js.map +1 -1
  198. package/dist/react/ui/pagination.d.ts +8 -8
  199. package/dist/react/ui/pagination.d.ts.map +1 -1
  200. package/dist/react/ui/pagination.js.map +1 -1
  201. package/dist/react/ui/popover.d.ts +5 -5
  202. package/dist/react/ui/popover.d.ts.map +1 -1
  203. package/dist/react/ui/popover.js.map +1 -1
  204. package/dist/react/ui/progress.d.ts +2 -2
  205. package/dist/react/ui/progress.d.ts.map +1 -1
  206. package/dist/react/ui/progress.js.map +1 -1
  207. package/dist/react/ui/radio-group.d.ts +3 -3
  208. package/dist/react/ui/radio-group.d.ts.map +1 -1
  209. package/dist/react/ui/radio-group.js.map +1 -1
  210. package/dist/react/ui/resizable.d.ts +4 -4
  211. package/dist/react/ui/resizable.d.ts.map +1 -1
  212. package/dist/react/ui/resizable.js.map +1 -1
  213. package/dist/react/ui/scroll-area.d.ts +3 -3
  214. package/dist/react/ui/scroll-area.d.ts.map +1 -1
  215. package/dist/react/ui/scroll-area.js.map +1 -1
  216. package/dist/react/ui/select.d.ts +11 -11
  217. package/dist/react/ui/select.d.ts.map +1 -1
  218. package/dist/react/ui/select.js.map +1 -1
  219. package/dist/react/ui/separator.d.ts +2 -2
  220. package/dist/react/ui/separator.d.ts.map +1 -1
  221. package/dist/react/ui/separator.js.map +1 -1
  222. package/dist/react/ui/sheet.d.ts +9 -9
  223. package/dist/react/ui/sheet.d.ts.map +1 -1
  224. package/dist/react/ui/sheet.js.map +1 -1
  225. package/dist/react/ui/sidebar.d.ts +38 -55
  226. package/dist/react/ui/sidebar.d.ts.map +1 -1
  227. package/dist/react/ui/sidebar.js.map +1 -1
  228. package/dist/react/ui/skeleton.d.ts +2 -2
  229. package/dist/react/ui/skeleton.d.ts.map +1 -1
  230. package/dist/react/ui/skeleton.js.map +1 -1
  231. package/dist/react/ui/slider.d.ts +2 -2
  232. package/dist/react/ui/slider.d.ts.map +1 -1
  233. package/dist/react/ui/slider.js.map +1 -1
  234. package/dist/react/ui/sonner.d.ts +2 -2
  235. package/dist/react/ui/sonner.d.ts.map +1 -1
  236. package/dist/react/ui/sonner.js.map +1 -1
  237. package/dist/react/ui/spinner.d.ts +2 -2
  238. package/dist/react/ui/spinner.d.ts.map +1 -1
  239. package/dist/react/ui/spinner.js.map +1 -1
  240. package/dist/react/ui/switch.d.ts +2 -2
  241. package/dist/react/ui/switch.d.ts.map +1 -1
  242. package/dist/react/ui/switch.js.map +1 -1
  243. package/dist/react/ui/table.d.ts +9 -9
  244. package/dist/react/ui/table.d.ts.map +1 -1
  245. package/dist/react/ui/table.js.map +1 -1
  246. package/dist/react/ui/tabs.d.ts +5 -5
  247. package/dist/react/ui/tabs.d.ts.map +1 -1
  248. package/dist/react/ui/tabs.js.map +1 -1
  249. package/dist/react/ui/textarea.d.ts +2 -2
  250. package/dist/react/ui/textarea.d.ts.map +1 -1
  251. package/dist/react/ui/textarea.js.map +1 -1
  252. package/dist/react/ui/toggle-group.d.ts +3 -3
  253. package/dist/react/ui/toggle-group.d.ts.map +1 -1
  254. package/dist/react/ui/toggle-group.js.map +1 -1
  255. package/dist/react/ui/toggle.d.ts +4 -4
  256. package/dist/react/ui/toggle.d.ts.map +1 -1
  257. package/dist/react/ui/toggle.js.map +1 -1
  258. package/dist/react/ui/tooltip.d.ts +5 -5
  259. package/dist/react/ui/tooltip.d.ts.map +1 -1
  260. package/dist/react/ui/tooltip.js.map +1 -1
  261. package/dist/shared/src/cache.d.ts +1 -0
  262. package/dist/shared/src/execute.d.ts +1 -0
  263. package/dist/shared/src/genie.d.ts +6 -0
  264. package/dist/shared/src/genie.d.ts.map +1 -1
  265. package/dist/shared/src/index.d.ts +7 -0
  266. package/dist/shared/src/plugin.d.ts +2 -0
  267. package/dist/shared/src/sql/helpers.d.ts +0 -1
  268. package/dist/shared/src/sql/helpers.d.ts.map +1 -1
  269. package/dist/shared/src/sql/types.d.ts.map +1 -1
  270. package/dist/shared/src/tunnel.d.ts +1 -0
  271. package/docs/api/appkit-ui/genie/GenieChatMessageList.md +7 -5
  272. package/docs/development/project-setup.md +1 -1
  273. package/docs/plugins/plugin-management.md +16 -2
  274. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":[],"sources":["../../../src/react/ui/select.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\n/** Dropdown control for selecting a value from a list */\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal container={useResolvedPortalContainer()}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Select item component for individual options in a dropdown.\n * \n * @warning SelectItem cannot have value=\"\". Use a sentinel value like \"all\" or \"none\" instead due to Radix UI constraint.\n * \n * @example\n * ```tsx\n * <SelectItem value=\"option1\">Option 1</SelectItem>\n * <SelectItem value=\"all\">All Items</SelectItem> // Use \"all\" instead of \"\"\n * ```\n */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,OAAO,EACd,GAAG,SACiD;AACpD,QAAO,oBAAC,gBAAgB,MAAjB;EAAsB,aAAU;EAAS,GAAI;EAAS;;AAG/D,SAAS,YAAY,EACnB,GAAG,SACkD;AACrD,QAAO,oBAAC,gBAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;EAAS;;AAGtE,SAAS,YAAY,EACnB,GAAG,SACkD;AACrD,QAAO,oBAAC,gBAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;EAAS;;AAGtE,SAAS,cAAc,EACrB,WACA,OAAO,WACP,UACA,GAAG,SAGF;AACD,QACE,qBAAC,gBAAgB,SAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,gzBACA,UACD;EACD,GAAI;YAPN,CASG,UACD,oBAAC,gBAAgB,MAAjB;GAAsB;aACpB,oBAAC,iBAAD,EAAiB,WAAU,qBAAsB;GAC5B,EACC;;;AAI9B,SAAS,cAAc,EACrB,WACA,UACA,WAAW,UACX,QAAQ,UACR,GAAG,SACoD;AACvD,QACE,oBAAC,gBAAgB,QAAjB;EAAwB,WAAW,4BAA4B;YAC7D,qBAAC,gBAAgB,SAAjB;GACE,aAAU;GACV,WAAW,GACT,ijBACA,aAAa,YACX,mIACF,UACD;GACS;GACH;GACP,GAAI;aAVN;IAYE,oBAAC,sBAAD,EAAwB;IACxB,oBAAC,gBAAgB,UAAjB;KACE,WAAW,GACT,OACA,aAAa,YACX,sGACH;KAEA;KACwB;IAC3B,oBAAC,wBAAD,EAA0B;IACF;;EACH;;AAI7B,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,gBAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,6CAA6C,UAAU;EACrE,GAAI;EACJ;;;;;;;;;;;;;AAeN,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SACiD;AACpD,QACE,qBAAC,gBAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT,6aACA,UACD;EACD,GAAI;YANN,CAQE,oBAAC,QAAD;GAAM,WAAU;aACd,oBAAC,gBAAgB,eAAjB,YACE,oBAAC,WAAD,EAAW,WAAU,UAAW,GACF;GAC3B,GACP,oBAAC,gBAAgB,UAAjB,EAA2B,UAAoC,EAC1C;;;AAI3B,SAAS,gBAAgB,EACvB,WACA,GAAG,SACsD;AACzD,QACE,oBAAC,gBAAgB,WAAjB;EACE,aAAU;EACV,WAAW,GAAG,iDAAiD,UAAU;EACzE,GAAI;EACJ;;AAIN,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC2D;AAC9D,QACE,oBAAC,gBAAgB,gBAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,UACD;EACD,GAAI;YAEJ,oBAAC,eAAD,EAAe,WAAU,UAAW;EACL;;AAIrC,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;AAChE,QACE,oBAAC,gBAAgB,kBAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,UACD;EACD,GAAI;YAEJ,oBAAC,iBAAD,EAAiB,WAAU,UAAW;EACL"}
1
+ {"version":3,"file":"select.js","names":[],"sources":["../../../src/react/ui/select.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\n/** Dropdown control for selecting a value from a list */\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal container={useResolvedPortalContainer()}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Select item component for individual options in a dropdown.\n * \n * @warning SelectItem cannot have value=\"\". Use a sentinel value like \"all\" or \"none\" instead due to Radix UI constraint.\n * \n * @example\n * ```tsx\n * <SelectItem value=\"option1\">Option 1</SelectItem>\n * <SelectItem value=\"all\">All Items</SelectItem> // Use \"all\" instead of \"\"\n * ```\n */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,OAAO,EACd,GAAG,SACiD;AACpD,QAAO,oBAAC,gBAAgB;EAAK,aAAU;EAAS,GAAI;GAAS;;AAG/D,SAAS,YAAY,EACnB,GAAG,SACkD;AACrD,QAAO,oBAAC,gBAAgB;EAAM,aAAU;EAAe,GAAI;GAAS;;AAGtE,SAAS,YAAY,EACnB,GAAG,SACkD;AACrD,QAAO,oBAAC,gBAAgB;EAAM,aAAU;EAAe,GAAI;GAAS;;AAGtE,SAAS,cAAc,EACrB,WACA,OAAO,WACP,UACA,GAAG,SAGF;AACD,QACE,qBAAC,gBAAgB;EACf,aAAU;EACV,aAAW;EACX,WAAW,GACT,gzBACA,UACD;EACD,GAAI;aAEH,UACD,oBAAC,gBAAgB;GAAK;aACpB,oBAAC,mBAAgB,WAAU,sBAAsB;IAC5B;GACC;;AAI9B,SAAS,cAAc,EACrB,WACA,UACA,WAAW,UACX,QAAQ,UACR,GAAG,SACoD;AACvD,QACE,oBAAC,gBAAgB;EAAO,WAAW,4BAA4B;YAC7D,qBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT,ijBACA,aAAa,YACX,mIACF,UACD;GACS;GACH;GACP,GAAI;;IAEJ,oBAAC,yBAAuB;IACxB,oBAAC,gBAAgB;KACf,WAAW,GACT,OACA,aAAa,YACX,sGACH;KAEA;MACwB;IAC3B,oBAAC,2BAAyB;;IACF;GACH;;AAI7B,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GAAG,6CAA6C,UAAU;EACrE,GAAI;GACJ;;;;;;;;;;;;;AAeN,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SACiD;AACpD,QACE,qBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,6aACA,UACD;EACD,GAAI;aAEJ,oBAAC;GAAK,WAAU;aACd,oBAAC,gBAAgB,2BACf,oBAAC,aAAU,WAAU,WAAW,GACF;IAC3B,EACP,oBAAC,gBAAgB,YAAU,WAAoC;GAC1C;;AAI3B,SAAS,gBAAgB,EACvB,WACA,GAAG,SACsD;AACzD,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GAAG,iDAAiD,UAAU;EACzE,GAAI;GACJ;;AAIN,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC2D;AAC9D,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,wDACA,UACD;EACD,GAAI;YAEJ,oBAAC,iBAAc,WAAU,WAAW;GACL;;AAIrC,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;AAChE,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,wDACA,UACD;EACD,GAAI;YAEJ,oBAAC,mBAAgB,WAAU,WAAW;GACL"}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime217 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
4
4
 
5
5
  //#region src/react/ui/separator.d.ts
@@ -9,7 +9,7 @@ declare function Separator({
9
9
  orientation,
10
10
  decorative,
11
11
  ...props
12
- }: React$1.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime217.JSX.Element;
12
+ }: React$1.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime0.JSX.Element;
13
13
  //#endregion
14
14
  export { Separator };
15
15
  //# sourceMappingURL=separator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator.d.ts","names":[],"sources":["../../../src/react/ui/separator.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,SAAA;;;;;GAKN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,QAAK,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"separator.d.ts","names":[],"sources":["../../../src/react/ui/separator.tsx"],"mappings":";;;;;;iBAQS,SAAA,CAAA;EACP,SAAA;EACA,WAAA;EACA,UAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,kBAAA,CAAmB,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"separator.js","names":[],"sources":["../../../src/react/ui/separator.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Visual divider line between content sections */\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,EACjB,WACA,cAAc,cACd,aAAa,MACb,GAAG,SACoD;AACvD,QACE,oBAAC,mBAAmB,MAApB;EACE,aAAU;EACE;EACC;EACb,WAAW,GACT,kKACA,UACD;EACD,GAAI;EACJ"}
1
+ {"version":3,"file":"separator.js","names":[],"sources":["../../../src/react/ui/separator.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Visual divider line between content sections */\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,EACjB,WACA,cAAc,cACd,aAAa,MACb,GAAG,SACoD;AACvD,QACE,oBAAC,mBAAmB;EAClB,aAAU;EACE;EACC;EACb,WAAW,GACT,kKACA,UACD;EACD,GAAI;GACJ"}
@@ -1,20 +1,20 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime218 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import * as SheetPrimitive from "@radix-ui/react-dialog";
4
4
 
5
5
  //#region src/react/ui/sheet.d.ts
6
6
  /** Sliding panel that overlays content from screen edges */
7
7
  declare function Sheet({
8
8
  ...props
9
- }: React$1.ComponentProps<typeof SheetPrimitive.Root>): react_jsx_runtime218.JSX.Element;
9
+ }: React$1.ComponentProps<typeof SheetPrimitive.Root>): react_jsx_runtime0.JSX.Element;
10
10
  /** Button that opens the sheet */
11
11
  declare function SheetTrigger({
12
12
  ...props
13
- }: React$1.ComponentProps<typeof SheetPrimitive.Trigger>): react_jsx_runtime218.JSX.Element;
13
+ }: React$1.ComponentProps<typeof SheetPrimitive.Trigger>): react_jsx_runtime0.JSX.Element;
14
14
  /** Button that closes the sheet */
15
15
  declare function SheetClose({
16
16
  ...props
17
- }: React$1.ComponentProps<typeof SheetPrimitive.Close>): react_jsx_runtime218.JSX.Element;
17
+ }: React$1.ComponentProps<typeof SheetPrimitive.Close>): react_jsx_runtime0.JSX.Element;
18
18
  /** Main content area of the sheet */
19
19
  declare function SheetContent({
20
20
  className,
@@ -23,27 +23,27 @@ declare function SheetContent({
23
23
  ...props
24
24
  }: React$1.ComponentProps<typeof SheetPrimitive.Content> & {
25
25
  side?: "top" | "right" | "bottom" | "left";
26
- }): react_jsx_runtime218.JSX.Element;
26
+ }): react_jsx_runtime0.JSX.Element;
27
27
  /** Header section of the sheet */
28
28
  declare function SheetHeader({
29
29
  className,
30
30
  ...props
31
- }: React$1.ComponentProps<"div">): react_jsx_runtime218.JSX.Element;
31
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
32
32
  /** Footer section of the sheet */
33
33
  declare function SheetFooter({
34
34
  className,
35
35
  ...props
36
- }: React$1.ComponentProps<"div">): react_jsx_runtime218.JSX.Element;
36
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
37
37
  /** Title text for the sheet */
38
38
  declare function SheetTitle({
39
39
  className,
40
40
  ...props
41
- }: React$1.ComponentProps<typeof SheetPrimitive.Title>): react_jsx_runtime218.JSX.Element;
41
+ }: React$1.ComponentProps<typeof SheetPrimitive.Title>): react_jsx_runtime0.JSX.Element;
42
42
  /** Description text for the sheet */
43
43
  declare function SheetDescription({
44
44
  className,
45
45
  ...props
46
- }: React$1.ComponentProps<typeof SheetPrimitive.Description>): react_jsx_runtime218.JSX.Element;
46
+ }: React$1.ComponentProps<typeof SheetPrimitive.Description>): react_jsx_runtime0.JSX.Element;
47
47
  //#endregion
48
48
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };
49
49
  //# sourceMappingURL=sheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.d.ts","names":[],"sources":["../../../src/react/ui/sheet.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,KAAA;;GAAoB,OAAA,CAAM,sBAAsB,cAAA,CAAe,QAAK,oBAAA,CAAA,GAAA,CAAA;;AAPpB,iBAYhD,YAAA,CALK;EAAA,GAAA;AAAA,CAAA,EAOX,OAAA,CAAM,cAPK,CAAA,OAOiB,cAAA,CAAe,OAPhC,CAAA,CAAA,EAOwC,oBAAA,CAAA,GAAA,CAAA,OAPxC;;iBAYL,UAAA,CAZ+D;EAAA,GAAA;AAAA,CAAA,EAcrE,OAAA,CAAM,cAd+D,CAAA,OAczC,cAAA,CAAe,KAd0B,CAAA,CAAA,EAcpB,oBAAA,CAAA,GAAA,CAAA,OAdoB;;iBAkD/D,YAAA,CAlDoE;EAAA,SAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAuD1E,OAAA,CAAM,cAvDoE,CAAA,OAuD9C,cAAA,CAAe,OAvD+B,CAAA,GAAA;EAAA,IAAA,CAAA,EAAA,KAAA,GAAA,OAAA,GAAA,QAAA,GAAA,MAAA;AAAA,CAAA,CAAA,EAyD5E,oBAAA,CAAA,GAAA,CAAA,OApDoB;;iBAmFZ,WAAA,CAjFqC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiFA,OAAA,CAAM,cAjFN,CAAA,KAAA,CAAA,CAAA,EAiF2B,oBAAA,CAAA,GAAA,CAAA,OAjF3B;;iBA4FrC,WAAA,CA5F6C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4FR,OAAA,CAAM,cA5FE,CAAA,KAAA,CAAA,CAAA,EA4FmB,oBAAA,CAAA,GAAA,CAAA,OA5FnB;;AAAA,iBAuG7C,UAAA,CAlGU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAqGhB,OAAA,CAAM,cArGU,CAAA,OAqGY,cAAA,CAAe,KArG3B,CAAA,CAAA,EAqGiC,oBAAA,CAAA,GAAA,CAAA,OArGjC;;iBAgHV,gBAAA,CA9GqC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiH3C,OAAA,CAAM,cAjHqC,CAAA,OAiHf,cAAA,CAAe,WAjHA,CAAA,CAAA,EAiHY,oBAAA,CAAA,GAAA,CAAA,OAjHZ"}
1
+ {"version":3,"file":"sheet.d.ts","names":[],"sources":["../../../src/react/ui/sheet.tsx"],"mappings":";;;;;;iBAQS,KAAA,CAAA;EAAA,GAAW;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAKpE,YAAA,CAAA;EAAA,GACJ;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,OAAA,IAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAK7C,UAAA,CAAA;EAAA,GACJ;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAoC3C,YAAA,CAAA;EACP,SAAA;EACA,QAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,OAAA;EAC5C,IAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBA+BQ,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAWhE,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAWhE,UAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAW3C,gBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,cAAA,CAAe,WAAA,IAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","names":[],"sources":["../../../src/react/ui/sheet.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\n/** Sliding panel that overlays content from screen edges */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Button that opens the sheet */\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Button that closes the sheet */\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portal container for sheet content */\nfunction SheetPortal({\n container,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return (\n <SheetPrimitive.Portal\n data-slot=\"sheet-portal\"\n container={useResolvedPortalContainer(container)}\n {...props}\n />\n );\n}\n\n/** Dimmed overlay behind the sheet */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Main content area of the sheet */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Header section of the sheet */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\n/** Footer section of the sheet */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\n/** Title text for the sheet */\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/** Description text for the sheet */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,MAAM,EAAE,GAAG,SAA2D;AAC7E,QAAO,oBAAC,eAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;EAAS;;;AAI7D,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QAAO,oBAAC,eAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;EAAS;;;AAIxE,SAAS,WAAW,EAClB,GAAG,SACiD;AACpD,QAAO,oBAAC,eAAe,OAAhB;EAAsB,aAAU;EAAc,GAAI;EAAS;;;AAIpE,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,eAAe,QAAhB;EACE,aAAU;EACV,WAAW,2BAA2B,UAAU;EAChD,GAAI;EACJ;;;AAKN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,oBAAC,eAAe,SAAhB;EACE,aAAU;EACV,WAAW,GACT,0JACA,UACD;EACD,GAAI;EACJ;;;AAKN,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,GAAG,SAGF;AACD,QACE,qBAAC,aAAD,aACE,oBAAC,cAAD,EAAgB,GAChB,qBAAC,eAAe,SAAhB;EACE,aAAU;EACV,WAAW,GACT,8MACA,SAAS,WACP,oIACF,SAAS,UACP,iIACF,SAAS,SACP,4GACF,SAAS,YACP,qHACF,UACD;EACD,GAAI;YAdN,CAgBG,UACD,qBAAC,eAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,oBAAC,OAAD,EAAO,WAAU,UAAW,GAC5B,oBAAC,QAAD;IAAM,WAAU;cAAU;IAAY,EACjB;KACA;IACb;;;AAKlB,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,6BAA6B,UAAU;EACrD,GAAI;EACJ;;;AAKN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,mCAAmC,UAAU;EAC3D,GAAI;EACJ;;;AAKN,SAAS,WAAW,EAClB,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,eAAe,OAAhB;EACE,aAAU;EACV,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;EACJ;;;AAKN,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;AAC1D,QACE,oBAAC,eAAe,aAAhB;EACE,aAAU;EACV,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;EACJ"}
1
+ {"version":3,"file":"sheet.js","names":[],"sources":["../../../src/react/ui/sheet.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\n/** Sliding panel that overlays content from screen edges */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Button that opens the sheet */\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Button that closes the sheet */\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portal container for sheet content */\nfunction SheetPortal({\n container,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return (\n <SheetPrimitive.Portal\n data-slot=\"sheet-portal\"\n container={useResolvedPortalContainer(container)}\n {...props}\n />\n );\n}\n\n/** Dimmed overlay behind the sheet */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Main content area of the sheet */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Header section of the sheet */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\n/** Footer section of the sheet */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\n/** Title text for the sheet */\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/** Description text for the sheet */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,MAAM,EAAE,GAAG,SAA2D;AAC7E,QAAO,oBAAC,eAAe;EAAK,aAAU;EAAQ,GAAI;GAAS;;;AAI7D,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QAAO,oBAAC,eAAe;EAAQ,aAAU;EAAgB,GAAI;GAAS;;;AAIxE,SAAS,WAAW,EAClB,GAAG,SACiD;AACpD,QAAO,oBAAC,eAAe;EAAM,aAAU;EAAc,GAAI;GAAS;;;AAIpE,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,eAAe;EACd,aAAU;EACV,WAAW,2BAA2B,UAAU;EAChD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,oBAAC,eAAe;EACd,aAAU;EACV,WAAW,GACT,0JACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,GAAG,SAGF;AACD,QACE,qBAAC,0BACC,oBAAC,iBAAe,EAChB,qBAAC,eAAe;EACd,aAAU;EACV,WAAW,GACT,8MACA,SAAS,WACP,oIACF,SAAS,UACP,iIACF,SAAS,SACP,4GACF,SAAS,YACP,qHACF,UACD;EACD,GAAI;aAEH,UACD,qBAAC,eAAe;GAAM,WAAU;cAC9B,oBAAC,SAAM,WAAU,WAAW,EAC5B,oBAAC;IAAK,WAAU;cAAU;KAAY;IACjB;GACA,IACb;;;AAKlB,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,6BAA6B,UAAU;EACrD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,mCAAmC,UAAU;EAC3D,GAAI;GACJ;;;AAKN,SAAS,WAAW,EAClB,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,eAAe;EACd,aAAU;EACV,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;;;AAKN,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;AAC1D,QACE,oBAAC,eAAe;EACd,aAAU;EACV,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ"}
@@ -3,9 +3,9 @@ import { Separator } from "./separator.js";
3
3
  import { Input } from "./input.js";
4
4
  import { TooltipContent } from "./tooltip.js";
5
5
  import * as React$1 from "react";
6
- import * as react_jsx_runtime226 from "react/jsx-runtime";
6
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
7
7
  import { VariantProps } from "class-variance-authority";
8
- import * as class_variance_authority_types10 from "class-variance-authority/types";
8
+ import * as class_variance_authority_types0 from "class-variance-authority/types";
9
9
 
10
10
  //#region src/react/ui/sidebar.d.ts
11
11
  type SidebarContextProps = {
@@ -28,13 +28,10 @@ declare function SidebarProvider({
28
28
  children,
29
29
  ...props
30
30
  }: React$1.ComponentProps<"div"> & {
31
- /** Initial open state for uncontrolled usage */
32
- defaultOpen?: boolean;
33
- /** Controlled open state */
34
- open?: boolean;
35
- /** Callback when open state changes */
31
+ /** Initial open state for uncontrolled usage */defaultOpen?: boolean; /** Controlled open state */
32
+ open?: boolean; /** Callback when open state changes */
36
33
  onOpenChange?: (open: boolean) => void;
37
- }): react_jsx_runtime226.JSX.Element;
34
+ }): react_jsx_runtime0.JSX.Element;
38
35
  /** Collapsible navigation sidebar with mobile support */
39
36
  declare function Sidebar({
40
37
  side,
@@ -44,96 +41,91 @@ declare function Sidebar({
44
41
  children,
45
42
  ...props
46
43
  }: React$1.ComponentProps<"div"> & {
47
- /** Which side of the viewport the sidebar appears on */
48
- side?: "left" | "right";
49
- /** Visual style: `"sidebar"` (standard with border), `"floating"` (rounded with shadow), or `"inset"` (content area gets rounded margin) */
50
- variant?: "sidebar" | "floating" | "inset";
51
- /** Collapse behavior: `"offcanvas"` (slides off-screen), `"icon"` (collapses to icon width), or `"none"` (always expanded) */
44
+ /** Which side of the viewport the sidebar appears on */side?: "left" | "right"; /** Visual style: `"sidebar"` (standard with border), `"floating"` (rounded with shadow), or `"inset"` (content area gets rounded margin) */
45
+ variant?: "sidebar" | "floating" | "inset"; /** Collapse behavior: `"offcanvas"` (slides off-screen), `"icon"` (collapses to icon width), or `"none"` (always expanded) */
52
46
  collapsible?: "offcanvas" | "icon" | "none";
53
- }): react_jsx_runtime226.JSX.Element;
47
+ }): react_jsx_runtime0.JSX.Element;
54
48
  /** Button that toggles the sidebar open and closed */
55
49
  declare function SidebarTrigger({
56
50
  className,
57
51
  onClick,
58
52
  ...props
59
- }: React$1.ComponentProps<typeof Button>): react_jsx_runtime226.JSX.Element;
53
+ }: React$1.ComponentProps<typeof Button>): react_jsx_runtime0.JSX.Element;
60
54
  /** Clickable rail element for toggling sidebar visibility */
61
55
  declare function SidebarRail({
62
56
  className,
63
57
  ...props
64
- }: React$1.ComponentProps<"button">): react_jsx_runtime226.JSX.Element;
58
+ }: React$1.ComponentProps<"button">): react_jsx_runtime0.JSX.Element;
65
59
  /** Main content area that adapts to sidebar state */
66
60
  declare function SidebarInset({
67
61
  className,
68
62
  ...props
69
- }: React$1.ComponentProps<"main">): react_jsx_runtime226.JSX.Element;
63
+ }: React$1.ComponentProps<"main">): react_jsx_runtime0.JSX.Element;
70
64
  /** Input field styled for use within the sidebar */
71
65
  declare function SidebarInput({
72
66
  className,
73
67
  ...props
74
- }: React$1.ComponentProps<typeof Input>): react_jsx_runtime226.JSX.Element;
68
+ }: React$1.ComponentProps<typeof Input>): react_jsx_runtime0.JSX.Element;
75
69
  /** Header section at the top of the sidebar */
76
70
  declare function SidebarHeader({
77
71
  className,
78
72
  ...props
79
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
73
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
80
74
  /** Footer section at the bottom of the sidebar */
81
75
  declare function SidebarFooter({
82
76
  className,
83
77
  ...props
84
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
78
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
85
79
  /** Visual separator between sidebar sections */
86
80
  declare function SidebarSeparator({
87
81
  className,
88
82
  ...props
89
- }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime226.JSX.Element;
83
+ }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime0.JSX.Element;
90
84
  /** Scrollable content area within the sidebar */
91
85
  declare function SidebarContent({
92
86
  className,
93
87
  ...props
94
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
88
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
95
89
  /** Container for grouping related sidebar items */
96
90
  declare function SidebarGroup({
97
91
  className,
98
92
  ...props
99
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
93
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
100
94
  /** Label heading for a sidebar group */
101
95
  declare function SidebarGroupLabel({
102
96
  className,
103
97
  asChild,
104
98
  ...props
105
99
  }: React$1.ComponentProps<"div"> & {
106
- /** Render as child element instead of default tag */
107
- asChild?: boolean;
108
- }): react_jsx_runtime226.JSX.Element;
100
+ /** Render as child element instead of default tag */asChild?: boolean;
101
+ }): react_jsx_runtime0.JSX.Element;
109
102
  /** Action button displayed next to a sidebar group label */
110
103
  declare function SidebarGroupAction({
111
104
  className,
112
105
  asChild,
113
106
  ...props
114
107
  }: React$1.ComponentProps<"button"> & {
115
- /** Render as child element instead of default tag */
116
- asChild?: boolean;
117
- }): react_jsx_runtime226.JSX.Element;
108
+ /** Render as child element instead of default tag */asChild?: boolean;
109
+ }): react_jsx_runtime0.JSX.Element;
118
110
  /** Content container for sidebar group items */
119
111
  declare function SidebarGroupContent({
120
112
  className,
121
113
  ...props
122
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
114
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
123
115
  /** Navigation menu list within the sidebar */
124
116
  declare function SidebarMenu({
125
117
  className,
126
118
  ...props
127
- }: React$1.ComponentProps<"ul">): react_jsx_runtime226.JSX.Element;
119
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime0.JSX.Element;
128
120
  /** Individual menu item within the sidebar */
129
121
  declare function SidebarMenuItem({
130
122
  className,
131
123
  ...props
132
- }: React$1.ComponentProps<"li">): react_jsx_runtime226.JSX.Element;
124
+ }: React$1.ComponentProps<"li">): react_jsx_runtime0.JSX.Element;
133
125
  declare const sidebarMenuButtonVariants: (props?: ({
134
126
  variant?: "default" | "outline" | null | undefined;
135
127
  size?: "default" | "sm" | "lg" | null | undefined;
136
- } & class_variance_authority_types10.ClassProp) | undefined) => string;
128
+ } & class_variance_authority_types0.ClassProp) | undefined) => string;
137
129
  declare function SidebarMenuButton({
138
130
  asChild,
139
131
  isActive,
@@ -143,13 +135,10 @@ declare function SidebarMenuButton({
143
135
  className,
144
136
  ...props
145
137
  }: React$1.ComponentProps<"button"> & {
146
- /** Render as child element instead of default tag */
147
- asChild?: boolean;
148
- /** Whether this item is currently active/selected */
149
- isActive?: boolean;
150
- /** Tooltip shown when sidebar is collapsed to icon mode */
138
+ /** Render as child element instead of default tag */asChild?: boolean; /** Whether this item is currently active/selected */
139
+ isActive?: boolean; /** Tooltip shown when sidebar is collapsed to icon mode */
151
140
  tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
152
- } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime226.JSX.Element;
141
+ } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime0.JSX.Element;
153
142
  /** Action button displayed alongside a menu item */
154
143
  declare function SidebarMenuAction({
155
144
  className,
@@ -157,35 +146,32 @@ declare function SidebarMenuAction({
157
146
  showOnHover,
158
147
  ...props
159
148
  }: React$1.ComponentProps<"button"> & {
160
- /** Render as child element instead of default tag */
161
- asChild?: boolean;
162
- /** Only show when parent menu item is hovered */
149
+ /** Render as child element instead of default tag */asChild?: boolean; /** Only show when parent menu item is hovered */
163
150
  showOnHover?: boolean;
164
- }): react_jsx_runtime226.JSX.Element;
151
+ }): react_jsx_runtime0.JSX.Element;
165
152
  /** Badge for displaying counts or status on menu items */
166
153
  declare function SidebarMenuBadge({
167
154
  className,
168
155
  ...props
169
- }: React$1.ComponentProps<"div">): react_jsx_runtime226.JSX.Element;
156
+ }: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
170
157
  /** Loading skeleton placeholder for menu items */
171
158
  declare function SidebarMenuSkeleton({
172
159
  className,
173
160
  showIcon,
174
161
  ...props
175
162
  }: React$1.ComponentProps<"div"> & {
176
- /** Show a circular icon placeholder alongside the text skeleton */
177
- showIcon?: boolean;
178
- }): react_jsx_runtime226.JSX.Element;
163
+ /** Show a circular icon placeholder alongside the text skeleton */showIcon?: boolean;
164
+ }): react_jsx_runtime0.JSX.Element;
179
165
  /** Submenu list for nested navigation items */
180
166
  declare function SidebarMenuSub({
181
167
  className,
182
168
  ...props
183
- }: React$1.ComponentProps<"ul">): react_jsx_runtime226.JSX.Element;
169
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime0.JSX.Element;
184
170
  /** Individual item within a sidebar submenu */
185
171
  declare function SidebarMenuSubItem({
186
172
  className,
187
173
  ...props
188
- }: React$1.ComponentProps<"li">): react_jsx_runtime226.JSX.Element;
174
+ }: React$1.ComponentProps<"li">): react_jsx_runtime0.JSX.Element;
189
175
  /** Button for submenu items */
190
176
  declare function SidebarMenuSubButton({
191
177
  asChild,
@@ -194,13 +180,10 @@ declare function SidebarMenuSubButton({
194
180
  className,
195
181
  ...props
196
182
  }: React$1.ComponentProps<"a"> & {
197
- /** Render as child element instead of default tag */
198
- asChild?: boolean;
199
- /** Text size of the submenu button */
200
- size?: "sm" | "md";
201
- /** Whether this submenu item is currently active/selected */
183
+ /** Render as child element instead of default tag */asChild?: boolean; /** Text size of the submenu button */
184
+ size?: "sm" | "md"; /** Whether this submenu item is currently active/selected */
202
185
  isActive?: boolean;
203
- }): react_jsx_runtime226.JSX.Element;
186
+ }): react_jsx_runtime0.JSX.Element;
204
187
  //#endregion
205
188
  export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
206
189
  //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/react/ui/sidebar.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/react/ui/sidebar.tsx"],"mappings":";;;;;;;;;;KAkCK,mBAAA;EACH,KAAA;EACA,IAAA;EACA,OAAA,GAAU,IAAA;EACV,UAAA;EACA,aAAA,GAAgB,IAAA;EAChB,QAAA;EACA,aAAA;AAAA;;iBAMO,UAAA,CAAA,GAAU,mBAAA;AAAA,iBASV,eAAA,CAAA;EACP,WAAA;EACA,IAAA,EAAM,QAAA;EACN,YAAA,EAAc,WAAA;EACd,SAAA;EACA,KAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EA1BP,gDA4BA,WAAA,YA3BgB;EA6BhB,IAAA,YA3BA;EA6BA,YAAA,IAAgB,IAAA;AAAA,IACjB,kBAAA,CAAA,GAAA,CAAA,OAAA;AA9Bc;AAAA,iBAqHN,OAAA,CAAA;EACP,IAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;0DAEP,IAAA,qBAxHiB;EA0HjB,OAAA,qCAjHsB;EAmHtB,WAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBA4FQ,cAAA,CAAA;EACP,SAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,MAAA,IAAO,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAuB7B,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBA0BnE,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,WAAsB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAelE,YAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAY5B,aAAA,CAAA;EAAgB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAYlE,aAAA,CAAA;EAAgB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAYlE,gBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,SAAA,IAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAYhC,cAAA,CAAA;EAAiB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAenE,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAYjE,iBAAA,CAAA;EACP,SAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EAnWP,qDAqWA,OAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAkBQ,kBAAA,CAAA;EACP,SAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EAtXP,qDAwXA,OAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAoBQ,mBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAYrB,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,SAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAzZvE;AAAA,iBAqaQ,eAAA,CAAA;EAAkB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,SAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAWtE,yBAAA,GAAyB,KAAA;;;IAoB9B,+BAAA,CAAA,SAAA;AAAA,iBAEQ,iBAAA,CAAA;EACP,OAAA;EACA,QAAA;EACA,OAAA;EACA,IAAA;EACA,OAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EAlXP,qDAoXA,OAAA,YA3WD;EA6WC,QAAA,YA7WD;EA+WC,OAAA,YAAmB,OAAA,CAAM,cAAA,QAAsB,cAAA;AAAA,IAC7C,YAAA,QAAoB,yBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAuCzC,iBAAA,CAAA;EACP,SAAA;EACA,OAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EAvaP,qDAyaA,OAAA,YAxaA;EA0aA,WAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAyBQ,gBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAoBrB,mBAAA,CAAA;EACP,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;EA1dP,mEA4dA,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAiCQ,cAAA,CAAA;EAAiB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,SAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;;iBAgBlE,kBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,SAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AA5gB5B;AAAA,iBAwhBQ,oBAAA,CAAA;EACP,OAAA;EACA,IAAA;EACA,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA;uDAEP,OAAA,YAlcA;EAocA,IAAA,gBAlcC;EAocD,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":["React"],"sources":["../../../src/react/ui/sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"../hooks/use-mobile\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\n/** Hook to access sidebar state and controls */\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\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 /** Initial open state for uncontrolled usage */\n defaultOpen?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.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\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/** Collapsible navigation sidebar with mobile support */\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Which side of the viewport the sidebar appears on */\n side?: \"left\" | \"right\";\n /** Visual style: `\"sidebar\"` (standard with border), `\"floating\"` (rounded with shadow), or `\"inset\"` (content area gets rounded margin) */\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n /** Collapse behavior: `\"offcanvas\"` (slides off-screen), `\"icon\"` (collapses to icon width), or `\"none\"` (always expanded) */\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\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=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\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 text-sidebar-foreground hidden 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 {/* This is what handles the sidebar gap on desktop */}\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 \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) 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 the 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) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/** Button that toggles the sidebar open and closed */\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: 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 size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/** Clickable rail element for toggling sidebar visibility */\nfunction SidebarRail({ 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 \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\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 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\n/** Main content area that adapts to sidebar state */\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"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\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Input field styled for use within the sidebar */\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\n/** Header section at the top of the sidebar */\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Footer section at the bottom of the sidebar */\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Visual separator between sidebar sections */\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\n/** Scrollable content area within the sidebar */\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Container for grouping related sidebar items */\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Label heading for a sidebar group */\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>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\n/** Action button displayed next to a sidebar group label */\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>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\n/** Content container for sidebar group items */\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\n/** Navigation menu list within the sidebar */\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** Individual menu item within the sidebar */\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 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-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent 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 SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Whether this item is currently active/selected */\n isActive?: boolean;\n /** Tooltip shown when sidebar is collapsed to icon mode */\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, 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) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\n/** Action button displayed alongside a menu item */\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Only show when parent menu item is hovered */\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>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 &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Badge for displaying counts or status on menu items */\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\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\n/** Loading skeleton placeholder for menu items */\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Show a circular icon placeholder alongside the text skeleton */\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\n/** Submenu list for nested navigation items */\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Individual item within a sidebar submenu */\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\n/** Button for submenu items */\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Text size of the submenu button */\n size?: \"sm\" | \"md\";\n /** Whether this submenu item is currently active/selected */\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\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 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.js","names":["React"],"sources":["../../../src/react/ui/sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"../hooks/use-mobile\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\n/** Hook to access sidebar state and controls */\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\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 /** Initial open state for uncontrolled usage */\n defaultOpen?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.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\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/** Collapsible navigation sidebar with mobile support */\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Which side of the viewport the sidebar appears on */\n side?: \"left\" | \"right\";\n /** Visual style: `\"sidebar\"` (standard with border), `\"floating\"` (rounded with shadow), or `\"inset\"` (content area gets rounded margin) */\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n /** Collapse behavior: `\"offcanvas\"` (slides off-screen), `\"icon\"` (collapses to icon width), or `\"none\"` (always expanded) */\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\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=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\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 text-sidebar-foreground hidden 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 {/* This is what handles the sidebar gap on desktop */}\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 \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) 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 the 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) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/** Button that toggles the sidebar open and closed */\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: 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 size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/** Clickable rail element for toggling sidebar visibility */\nfunction SidebarRail({ 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 \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\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 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\n/** Main content area that adapts to sidebar state */\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"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\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Input field styled for use within the sidebar */\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\n/** Header section at the top of the sidebar */\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Footer section at the bottom of the sidebar */\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Visual separator between sidebar sections */\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\n/** Scrollable content area within the sidebar */\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Container for grouping related sidebar items */\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\n/** Label heading for a sidebar group */\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>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\n/** Action button displayed next to a sidebar group label */\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>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\n/** Content container for sidebar group items */\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\n/** Navigation menu list within the sidebar */\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** Individual menu item within the sidebar */\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 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-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent 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 SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Whether this item is currently active/selected */\n isActive?: boolean;\n /** Tooltip shown when sidebar is collapsed to icon mode */\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, 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) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\n/** Action button displayed alongside a menu item */\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Only show when parent menu item is hovered */\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>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 &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Badge for displaying counts or status on menu items */\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\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\n/** Loading skeleton placeholder for menu items */\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Show a circular icon placeholder alongside the text skeleton */\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\n/** Submenu list for nested navigation items */\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Individual item within a sidebar submenu */\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\n/** Button for submenu items */\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n /** Render as child element instead of default tag */\n asChild?: boolean;\n /** Text size of the submenu button */\n size?: \"sm\" | \"md\";\n /** Whether this submenu item is currently active/selected */\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\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 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}