@databricks/appkit-ui 0.11.2 → 0.12.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 (282) hide show
  1. package/CLAUDE.md +4 -0
  2. package/NOTICE.md +1 -0
  3. package/dist/react/charts/area/index.d.ts +2 -2
  4. package/dist/react/charts/bar/index.d.ts +2 -2
  5. package/dist/react/charts/base.d.ts +2 -2
  6. package/dist/react/charts/base.js.map +1 -1
  7. package/dist/react/charts/chart-error-boundary.js.map +1 -1
  8. package/dist/react/charts/create-chart.d.ts +2 -2
  9. package/dist/react/charts/create-chart.js.map +1 -1
  10. package/dist/react/charts/empty.js.map +1 -1
  11. package/dist/react/charts/error.js.map +1 -1
  12. package/dist/react/charts/heatmap/index.d.ts +2 -2
  13. package/dist/react/charts/line/index.d.ts +2 -2
  14. package/dist/react/charts/loading.js.map +1 -1
  15. package/dist/react/charts/pie/index.d.ts +3 -3
  16. package/dist/react/charts/radar/index.d.ts +2 -2
  17. package/dist/react/charts/scatter/index.d.ts +2 -2
  18. package/dist/react/charts/wrapper.d.ts +2 -2
  19. package/dist/react/charts/wrapper.js.map +1 -1
  20. package/dist/react/genie/genie-chat-input.d.ts +23 -0
  21. package/dist/react/genie/genie-chat-input.d.ts.map +1 -0
  22. package/dist/react/genie/genie-chat-input.js +58 -0
  23. package/dist/react/genie/genie-chat-input.js.map +1 -0
  24. package/dist/react/genie/genie-chat-message-list.d.ts +21 -0
  25. package/dist/react/genie/genie-chat-message-list.d.ts.map +1 -0
  26. package/dist/react/genie/genie-chat-message-list.js +64 -0
  27. package/dist/react/genie/genie-chat-message-list.js.map +1 -0
  28. package/dist/react/genie/genie-chat-message.d.ts +18 -0
  29. package/dist/react/genie/genie-chat-message.d.ts.map +1 -0
  30. package/dist/react/genie/genie-chat-message.js +71 -0
  31. package/dist/react/genie/genie-chat-message.js.map +1 -0
  32. package/dist/react/genie/genie-chat.d.ts +14 -0
  33. package/dist/react/genie/genie-chat.d.ts.map +1 -0
  34. package/dist/react/genie/genie-chat.js +47 -0
  35. package/dist/react/genie/genie-chat.js.map +1 -0
  36. package/dist/react/genie/index.js +5 -0
  37. package/dist/react/genie/types.d.ts +44 -0
  38. package/dist/react/genie/types.d.ts.map +1 -0
  39. package/dist/react/genie/use-genie-chat.d.ts +17 -0
  40. package/dist/react/genie/use-genie-chat.d.ts.map +1 -0
  41. package/dist/react/genie/use-genie-chat.js +254 -0
  42. package/dist/react/genie/use-genie-chat.js.map +1 -0
  43. package/dist/react/index.d.ts +8 -1
  44. package/dist/react/index.js +14 -8
  45. package/dist/react/portal-container-context.js.map +1 -1
  46. package/dist/react/table/data-table.d.ts +2 -2
  47. package/dist/react/table/data-table.js +2 -2
  48. package/dist/react/table/data-table.js.map +1 -1
  49. package/dist/react/table/empty.js.map +1 -1
  50. package/dist/react/table/error.js.map +1 -1
  51. package/dist/react/table/loading.js.map +1 -1
  52. package/dist/react/table/table-wrapper.js +2 -2
  53. package/dist/react/table/table-wrapper.js.map +1 -1
  54. package/dist/react/ui/accordion.js.map +1 -1
  55. package/dist/react/ui/alert-dialog.js +1 -1
  56. package/dist/react/ui/alert-dialog.js.map +1 -1
  57. package/dist/react/ui/alert.js.map +1 -1
  58. package/dist/react/ui/aspect-ratio.js.map +1 -1
  59. package/dist/react/ui/avatar.js.map +1 -1
  60. package/dist/react/ui/badge.js.map +1 -1
  61. package/dist/react/ui/breadcrumb.js +1 -1
  62. package/dist/react/ui/breadcrumb.js.map +1 -1
  63. package/dist/react/ui/button-group.js.map +1 -1
  64. package/dist/react/ui/button.js.map +1 -1
  65. package/dist/react/ui/calendar.js.map +1 -1
  66. package/dist/react/ui/card.js.map +1 -1
  67. package/dist/react/ui/carousel.js.map +1 -1
  68. package/dist/react/ui/chart.js.map +1 -1
  69. package/dist/react/ui/checkbox.js.map +1 -1
  70. package/dist/react/ui/collapsible.js.map +1 -1
  71. package/dist/react/ui/command.js.map +1 -1
  72. package/dist/react/ui/context-menu.js.map +1 -1
  73. package/dist/react/ui/dialog.js.map +1 -1
  74. package/dist/react/ui/drawer.js.map +1 -1
  75. package/dist/react/ui/dropdown-menu.js.map +1 -1
  76. package/dist/react/ui/empty.js.map +1 -1
  77. package/dist/react/ui/field.js.map +1 -1
  78. package/dist/react/ui/form.js.map +1 -1
  79. package/dist/react/ui/hover-card.js.map +1 -1
  80. package/dist/react/ui/index.js +5 -5
  81. package/dist/react/ui/input-group.js.map +1 -1
  82. package/dist/react/ui/input-otp.d.ts +5 -5
  83. package/dist/react/ui/input-otp.js.map +1 -1
  84. package/dist/react/ui/input.js.map +1 -1
  85. package/dist/react/ui/item.d.ts +11 -11
  86. package/dist/react/ui/item.js.map +1 -1
  87. package/dist/react/ui/kbd.d.ts +3 -3
  88. package/dist/react/ui/kbd.js.map +1 -1
  89. package/dist/react/ui/label.d.ts +2 -2
  90. package/dist/react/ui/label.js.map +1 -1
  91. package/dist/react/ui/menubar.d.ts +17 -17
  92. package/dist/react/ui/menubar.js.map +1 -1
  93. package/dist/react/ui/navigation-menu.d.ts +9 -9
  94. package/dist/react/ui/navigation-menu.js +1 -1
  95. package/dist/react/ui/navigation-menu.js.map +1 -1
  96. package/dist/react/ui/pagination.d.ts +8 -8
  97. package/dist/react/ui/pagination.js.map +1 -1
  98. package/dist/react/ui/popover.d.ts +5 -5
  99. package/dist/react/ui/popover.js.map +1 -1
  100. package/dist/react/ui/progress.d.ts +2 -2
  101. package/dist/react/ui/progress.js.map +1 -1
  102. package/dist/react/ui/radio-group.d.ts +3 -3
  103. package/dist/react/ui/radio-group.js.map +1 -1
  104. package/dist/react/ui/resizable.d.ts +4 -4
  105. package/dist/react/ui/resizable.js.map +1 -1
  106. package/dist/react/ui/scroll-area.d.ts +3 -3
  107. package/dist/react/ui/scroll-area.js.map +1 -1
  108. package/dist/react/ui/select.d.ts +11 -11
  109. package/dist/react/ui/select.js.map +1 -1
  110. package/dist/react/ui/separator.d.ts +2 -2
  111. package/dist/react/ui/separator.js.map +1 -1
  112. package/dist/react/ui/sheet.d.ts +9 -9
  113. package/dist/react/ui/sheet.js.map +1 -1
  114. package/dist/react/ui/sidebar.d.ts +24 -24
  115. package/dist/react/ui/sidebar.js +2 -2
  116. package/dist/react/ui/sidebar.js.map +1 -1
  117. package/dist/react/ui/skeleton.d.ts +2 -2
  118. package/dist/react/ui/skeleton.js.map +1 -1
  119. package/dist/react/ui/slider.d.ts +2 -2
  120. package/dist/react/ui/slider.js.map +1 -1
  121. package/dist/react/ui/sonner.d.ts +2 -2
  122. package/dist/react/ui/sonner.js.map +1 -1
  123. package/dist/react/ui/spinner.d.ts +2 -2
  124. package/dist/react/ui/spinner.js.map +1 -1
  125. package/dist/react/ui/switch.d.ts +2 -2
  126. package/dist/react/ui/switch.js.map +1 -1
  127. package/dist/react/ui/table.d.ts +9 -9
  128. package/dist/react/ui/table.js.map +1 -1
  129. package/dist/react/ui/tabs.d.ts +5 -5
  130. package/dist/react/ui/tabs.js.map +1 -1
  131. package/dist/react/ui/textarea.d.ts +2 -2
  132. package/dist/react/ui/textarea.js.map +1 -1
  133. package/dist/react/ui/toggle-group.d.ts +3 -3
  134. package/dist/react/ui/toggle-group.js.map +1 -1
  135. package/dist/react/ui/toggle.d.ts +2 -2
  136. package/dist/react/ui/toggle.js.map +1 -1
  137. package/dist/react/ui/tooltip.js.map +1 -1
  138. package/dist/shared/src/genie.d.ts +48 -0
  139. package/dist/shared/src/genie.d.ts.map +1 -0
  140. package/docs/docs/api/appkit/Class.AppKitError/index.html +2 -2
  141. package/docs/docs/api/appkit/Class.AuthenticationError/index.html +2 -2
  142. package/docs/docs/api/appkit/Class.ConfigurationError/index.html +2 -2
  143. package/docs/docs/api/appkit/Class.ConnectionError/index.html +2 -2
  144. package/docs/docs/api/appkit/Class.ExecutionError/index.html +2 -2
  145. package/docs/docs/api/appkit/Class.InitializationError/index.html +2 -2
  146. package/docs/docs/api/appkit/Class.Plugin/index.html +2 -2
  147. package/docs/docs/api/appkit/Class.ResourceRegistry/index.html +2 -2
  148. package/docs/docs/api/appkit/Class.ServerError/index.html +2 -2
  149. package/docs/docs/api/appkit/Class.TunnelError/index.html +2 -2
  150. package/docs/docs/api/appkit/Class.ValidationError/index.html +2 -2
  151. package/docs/docs/api/appkit/Enumeration.RequestedClaimsPermissionSet/index.html +2 -2
  152. package/docs/docs/api/appkit/Enumeration.ResourceType/index.html +2 -2
  153. package/docs/docs/api/appkit/Function.appKitTypesPlugin/index.html +2 -2
  154. package/docs/docs/api/appkit/Function.createApp/index.html +2 -2
  155. package/docs/docs/api/appkit/Function.createLakebasePool/index.html +2 -2
  156. package/docs/docs/api/appkit/Function.generateDatabaseCredential/index.html +2 -2
  157. package/docs/docs/api/appkit/Function.getExecutionContext/index.html +2 -2
  158. package/docs/docs/api/appkit/Function.getLakebaseOrmConfig/index.html +2 -2
  159. package/docs/docs/api/appkit/Function.getLakebasePgConfig/index.html +2 -2
  160. package/docs/docs/api/appkit/Function.getPluginManifest/index.html +2 -2
  161. package/docs/docs/api/appkit/Function.getResourceRequirements/index.html +2 -2
  162. package/docs/docs/api/appkit/Function.getUsernameWithApiLookup/index.html +2 -2
  163. package/docs/docs/api/appkit/Function.getWorkspaceClient/index.html +2 -2
  164. package/docs/docs/api/appkit/Function.isSQLTypeMarker/index.html +2 -2
  165. package/docs/docs/api/appkit/Interface.BasePluginConfig/index.html +2 -2
  166. package/docs/docs/api/appkit/Interface.CacheConfig/index.html +2 -2
  167. package/docs/docs/api/appkit/Interface.DatabaseCredential/index.html +2 -2
  168. package/docs/docs/api/appkit/Interface.GenerateDatabaseCredentialRequest/index.html +2 -2
  169. package/docs/docs/api/appkit/Interface.ITelemetry/index.html +2 -2
  170. package/docs/docs/api/appkit/Interface.LakebasePoolConfig/index.html +2 -2
  171. package/docs/docs/api/appkit/Interface.PluginManifest/index.html +2 -2
  172. package/docs/docs/api/appkit/Interface.RequestedClaims/index.html +2 -2
  173. package/docs/docs/api/appkit/Interface.RequestedResource/index.html +2 -2
  174. package/docs/docs/api/appkit/Interface.ResourceEntry/index.html +2 -2
  175. package/docs/docs/api/appkit/Interface.ResourceFieldEntry/index.html +2 -2
  176. package/docs/docs/api/appkit/Interface.ResourceRequirement/index.html +2 -2
  177. package/docs/docs/api/appkit/Interface.StreamExecutionSettings/index.html +2 -2
  178. package/docs/docs/api/appkit/Interface.TelemetryConfig/index.html +2 -2
  179. package/docs/docs/api/appkit/Interface.ValidationResult/index.html +2 -2
  180. package/docs/docs/api/appkit/TypeAlias.ConfigSchema/index.html +2 -2
  181. package/docs/docs/api/appkit/TypeAlias.IAppRouter/index.html +2 -2
  182. package/docs/docs/api/appkit/TypeAlias.ResourcePermission/index.html +2 -2
  183. package/docs/docs/api/appkit/TypeAlias.ToPlugin/index.html +2 -2
  184. package/docs/docs/api/appkit/Variable.sql/index.html +2 -2
  185. package/docs/docs/api/appkit/index.html +2 -2
  186. package/docs/docs/api/appkit-ui/data/AreaChart/index.html +3 -3
  187. package/docs/docs/api/appkit-ui/data/BarChart/index.html +3 -3
  188. package/docs/docs/api/appkit-ui/data/DataTable/index.html +3 -3
  189. package/docs/docs/api/appkit-ui/data/DonutChart/index.html +3 -3
  190. package/docs/docs/api/appkit-ui/data/HeatmapChart/index.html +3 -3
  191. package/docs/docs/api/appkit-ui/data/LineChart/index.html +3 -3
  192. package/docs/docs/api/appkit-ui/data/PieChart/index.html +3 -3
  193. package/docs/docs/api/appkit-ui/data/RadarChart/index.html +3 -3
  194. package/docs/docs/api/appkit-ui/data/ScatterChart/index.html +4 -4
  195. package/docs/docs/api/appkit-ui/genie/GenieChat/index.html +26 -0
  196. package/docs/docs/api/appkit-ui/genie/GenieChat.md +43 -0
  197. package/docs/docs/api/appkit-ui/genie/GenieChatInput/index.html +24 -0
  198. package/docs/docs/api/appkit-ui/genie/GenieChatInput.md +27 -0
  199. package/docs/docs/api/appkit-ui/genie/GenieChatMessage/index.html +24 -0
  200. package/docs/docs/api/appkit-ui/genie/GenieChatMessage.md +25 -0
  201. package/docs/docs/api/appkit-ui/genie/GenieChatMessageList/index.html +24 -0
  202. package/docs/docs/api/appkit-ui/genie/GenieChatMessageList.md +26 -0
  203. package/docs/docs/api/appkit-ui/index.html +3 -3
  204. package/docs/docs/api/appkit-ui/styling/index.html +4 -4
  205. package/docs/docs/api/appkit-ui/ui/Accordion/index.html +3 -3
  206. package/docs/docs/api/appkit-ui/ui/Alert/index.html +3 -3
  207. package/docs/docs/api/appkit-ui/ui/AlertDialog/index.html +3 -3
  208. package/docs/docs/api/appkit-ui/ui/AspectRatio/index.html +3 -3
  209. package/docs/docs/api/appkit-ui/ui/Avatar/index.html +3 -3
  210. package/docs/docs/api/appkit-ui/ui/Badge/index.html +3 -3
  211. package/docs/docs/api/appkit-ui/ui/Breadcrumb/index.html +3 -3
  212. package/docs/docs/api/appkit-ui/ui/Button/index.html +3 -3
  213. package/docs/docs/api/appkit-ui/ui/ButtonGroup/index.html +3 -3
  214. package/docs/docs/api/appkit-ui/ui/Calendar/index.html +3 -3
  215. package/docs/docs/api/appkit-ui/ui/Card/index.html +3 -3
  216. package/docs/docs/api/appkit-ui/ui/Carousel/index.html +3 -3
  217. package/docs/docs/api/appkit-ui/ui/ChartContainer/index.html +3 -3
  218. package/docs/docs/api/appkit-ui/ui/Checkbox/index.html +3 -3
  219. package/docs/docs/api/appkit-ui/ui/Collapsible/index.html +3 -3
  220. package/docs/docs/api/appkit-ui/ui/Command/index.html +3 -3
  221. package/docs/docs/api/appkit-ui/ui/ContextMenu/index.html +3 -3
  222. package/docs/docs/api/appkit-ui/ui/Dialog/index.html +3 -3
  223. package/docs/docs/api/appkit-ui/ui/Drawer/index.html +3 -3
  224. package/docs/docs/api/appkit-ui/ui/DropdownMenu/index.html +3 -3
  225. package/docs/docs/api/appkit-ui/ui/Empty/index.html +3 -3
  226. package/docs/docs/api/appkit-ui/ui/Field/index.html +3 -3
  227. package/docs/docs/api/appkit-ui/ui/FormControl/index.html +3 -3
  228. package/docs/docs/api/appkit-ui/ui/HoverCard/index.html +3 -3
  229. package/docs/docs/api/appkit-ui/ui/Input/index.html +3 -3
  230. package/docs/docs/api/appkit-ui/ui/InputGroup/index.html +3 -3
  231. package/docs/docs/api/appkit-ui/ui/InputOTP/index.html +3 -3
  232. package/docs/docs/api/appkit-ui/ui/Item/index.html +3 -3
  233. package/docs/docs/api/appkit-ui/ui/Kbd/index.html +3 -3
  234. package/docs/docs/api/appkit-ui/ui/Label/index.html +3 -3
  235. package/docs/docs/api/appkit-ui/ui/Menubar/index.html +3 -3
  236. package/docs/docs/api/appkit-ui/ui/NavigationMenu/index.html +3 -3
  237. package/docs/docs/api/appkit-ui/ui/Pagination/index.html +3 -3
  238. package/docs/docs/api/appkit-ui/ui/Popover/index.html +3 -3
  239. package/docs/docs/api/appkit-ui/ui/Progress/index.html +3 -3
  240. package/docs/docs/api/appkit-ui/ui/RadioGroup/index.html +3 -3
  241. package/docs/docs/api/appkit-ui/ui/ResizableHandle/index.html +3 -3
  242. package/docs/docs/api/appkit-ui/ui/ScrollArea/index.html +3 -3
  243. package/docs/docs/api/appkit-ui/ui/Select/index.html +3 -3
  244. package/docs/docs/api/appkit-ui/ui/Separator/index.html +3 -3
  245. package/docs/docs/api/appkit-ui/ui/Sheet/index.html +3 -3
  246. package/docs/docs/api/appkit-ui/ui/Sidebar/index.html +3 -3
  247. package/docs/docs/api/appkit-ui/ui/Skeleton/index.html +3 -3
  248. package/docs/docs/api/appkit-ui/ui/Slider/index.html +3 -3
  249. package/docs/docs/api/appkit-ui/ui/Spinner/index.html +3 -3
  250. package/docs/docs/api/appkit-ui/ui/Switch/index.html +3 -3
  251. package/docs/docs/api/appkit-ui/ui/Table/index.html +3 -3
  252. package/docs/docs/api/appkit-ui/ui/Tabs/index.html +3 -3
  253. package/docs/docs/api/appkit-ui/ui/Textarea/index.html +3 -3
  254. package/docs/docs/api/appkit-ui/ui/Toaster/index.html +3 -3
  255. package/docs/docs/api/appkit-ui/ui/Toggle/index.html +3 -3
  256. package/docs/docs/api/appkit-ui/ui/ToggleGroup/index.html +3 -3
  257. package/docs/docs/api/appkit-ui/ui/Tooltip/index.html +3 -3
  258. package/docs/docs/api/index.html +2 -2
  259. package/docs/docs/app-management/index.html +2 -2
  260. package/docs/docs/architecture/index.html +2 -2
  261. package/docs/docs/category/development/index.html +2 -2
  262. package/docs/docs/configuration/index.html +2 -2
  263. package/docs/docs/core-principles/index.html +2 -2
  264. package/docs/docs/development/ai-assisted-development/index.html +2 -2
  265. package/docs/docs/development/index.html +2 -2
  266. package/docs/docs/development/llm-guide/index.html +2 -2
  267. package/docs/docs/development/local-development/index.html +2 -2
  268. package/docs/docs/development/project-setup/index.html +2 -2
  269. package/docs/docs/development/remote-bridge/index.html +2 -2
  270. package/docs/docs/development/type-generation/index.html +2 -2
  271. package/docs/docs/index.html +2 -2
  272. package/docs/docs/plugins/analytics/index.html +2 -2
  273. package/docs/docs/plugins/caching/index.html +2 -2
  274. package/docs/docs/plugins/custom-plugins/index.html +2 -2
  275. package/docs/docs/plugins/execution-context/index.html +2 -2
  276. package/docs/docs/plugins/index.html +2 -2
  277. package/docs/docs/plugins/lakebase/index.html +4 -4
  278. package/docs/docs/plugins/lakebase.md +25 -24
  279. package/docs/docs/plugins/plugin-management/index.html +2 -2
  280. package/docs/docs/plugins/server/index.html +2 -2
  281. package/llms.txt +4 -0
  282. package/package.json +2 -1
@@ -3,7 +3,7 @@ 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_runtime230 from "react/jsx-runtime";
6
+ import * as react_jsx_runtime231 from "react/jsx-runtime";
7
7
  import { VariantProps } from "class-variance-authority";
8
8
  import * as class_variance_authority_types10 from "class-variance-authority/types";
9
9
 
@@ -31,7 +31,7 @@ declare function SidebarProvider({
31
31
  defaultOpen?: boolean;
32
32
  open?: boolean;
33
33
  onOpenChange?: (open: boolean) => void;
34
- }): react_jsx_runtime230.JSX.Element;
34
+ }): react_jsx_runtime231.JSX.Element;
35
35
  /** Collapsible navigation sidebar with mobile support */
36
36
  declare function Sidebar({
37
37
  side,
@@ -44,53 +44,53 @@ declare function Sidebar({
44
44
  side?: "left" | "right";
45
45
  variant?: "sidebar" | "floating" | "inset";
46
46
  collapsible?: "offcanvas" | "icon" | "none";
47
- }): react_jsx_runtime230.JSX.Element;
47
+ }): react_jsx_runtime231.JSX.Element;
48
48
  /** Button that toggles the sidebar open and closed */
49
49
  declare function SidebarTrigger({
50
50
  className,
51
51
  onClick,
52
52
  ...props
53
- }: React$1.ComponentProps<typeof Button>): react_jsx_runtime230.JSX.Element;
53
+ }: React$1.ComponentProps<typeof Button>): react_jsx_runtime231.JSX.Element;
54
54
  /** Clickable rail element for toggling sidebar visibility */
55
55
  declare function SidebarRail({
56
56
  className,
57
57
  ...props
58
- }: React$1.ComponentProps<"button">): react_jsx_runtime230.JSX.Element;
58
+ }: React$1.ComponentProps<"button">): react_jsx_runtime231.JSX.Element;
59
59
  /** Main content area that adapts to sidebar state */
60
60
  declare function SidebarInset({
61
61
  className,
62
62
  ...props
63
- }: React$1.ComponentProps<"main">): react_jsx_runtime230.JSX.Element;
63
+ }: React$1.ComponentProps<"main">): react_jsx_runtime231.JSX.Element;
64
64
  /** Input field styled for use within the sidebar */
65
65
  declare function SidebarInput({
66
66
  className,
67
67
  ...props
68
- }: React$1.ComponentProps<typeof Input>): react_jsx_runtime230.JSX.Element;
68
+ }: React$1.ComponentProps<typeof Input>): react_jsx_runtime231.JSX.Element;
69
69
  /** Header section at the top of the sidebar */
70
70
  declare function SidebarHeader({
71
71
  className,
72
72
  ...props
73
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
73
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
74
74
  /** Footer section at the bottom of the sidebar */
75
75
  declare function SidebarFooter({
76
76
  className,
77
77
  ...props
78
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
78
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
79
79
  /** Visual separator between sidebar sections */
80
80
  declare function SidebarSeparator({
81
81
  className,
82
82
  ...props
83
- }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime230.JSX.Element;
83
+ }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime231.JSX.Element;
84
84
  /** Scrollable content area within the sidebar */
85
85
  declare function SidebarContent({
86
86
  className,
87
87
  ...props
88
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
88
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
89
89
  /** Container for grouping related sidebar items */
90
90
  declare function SidebarGroup({
91
91
  className,
92
92
  ...props
93
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
93
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
94
94
  /** Label heading for a sidebar group */
95
95
  declare function SidebarGroupLabel({
96
96
  className,
@@ -98,7 +98,7 @@ declare function SidebarGroupLabel({
98
98
  ...props
99
99
  }: React$1.ComponentProps<"div"> & {
100
100
  asChild?: boolean;
101
- }): react_jsx_runtime230.JSX.Element;
101
+ }): react_jsx_runtime231.JSX.Element;
102
102
  /** Action button displayed next to a sidebar group label */
103
103
  declare function SidebarGroupAction({
104
104
  className,
@@ -106,22 +106,22 @@ declare function SidebarGroupAction({
106
106
  ...props
107
107
  }: React$1.ComponentProps<"button"> & {
108
108
  asChild?: boolean;
109
- }): react_jsx_runtime230.JSX.Element;
109
+ }): react_jsx_runtime231.JSX.Element;
110
110
  /** Content container for sidebar group items */
111
111
  declare function SidebarGroupContent({
112
112
  className,
113
113
  ...props
114
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
114
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
115
115
  /** Navigation menu list within the sidebar */
116
116
  declare function SidebarMenu({
117
117
  className,
118
118
  ...props
119
- }: React$1.ComponentProps<"ul">): react_jsx_runtime230.JSX.Element;
119
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime231.JSX.Element;
120
120
  /** Individual menu item within the sidebar */
121
121
  declare function SidebarMenuItem({
122
122
  className,
123
123
  ...props
124
- }: React$1.ComponentProps<"li">): react_jsx_runtime230.JSX.Element;
124
+ }: React$1.ComponentProps<"li">): react_jsx_runtime231.JSX.Element;
125
125
  declare const sidebarMenuButtonVariants: (props?: ({
126
126
  variant?: "default" | "outline" | null | undefined;
127
127
  size?: "default" | "sm" | "lg" | null | undefined;
@@ -138,7 +138,7 @@ declare function SidebarMenuButton({
138
138
  asChild?: boolean;
139
139
  isActive?: boolean;
140
140
  tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
141
- } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime230.JSX.Element;
141
+ } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime231.JSX.Element;
142
142
  /** Action button displayed alongside a menu item */
143
143
  declare function SidebarMenuAction({
144
144
  className,
@@ -148,12 +148,12 @@ declare function SidebarMenuAction({
148
148
  }: React$1.ComponentProps<"button"> & {
149
149
  asChild?: boolean;
150
150
  showOnHover?: boolean;
151
- }): react_jsx_runtime230.JSX.Element;
151
+ }): react_jsx_runtime231.JSX.Element;
152
152
  /** Badge for displaying counts or status on menu items */
153
153
  declare function SidebarMenuBadge({
154
154
  className,
155
155
  ...props
156
- }: React$1.ComponentProps<"div">): react_jsx_runtime230.JSX.Element;
156
+ }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
157
157
  /** Loading skeleton placeholder for menu items */
158
158
  declare function SidebarMenuSkeleton({
159
159
  className,
@@ -161,17 +161,17 @@ declare function SidebarMenuSkeleton({
161
161
  ...props
162
162
  }: React$1.ComponentProps<"div"> & {
163
163
  showIcon?: boolean;
164
- }): react_jsx_runtime230.JSX.Element;
164
+ }): react_jsx_runtime231.JSX.Element;
165
165
  /** Submenu list for nested navigation items */
166
166
  declare function SidebarMenuSub({
167
167
  className,
168
168
  ...props
169
- }: React$1.ComponentProps<"ul">): react_jsx_runtime230.JSX.Element;
169
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime231.JSX.Element;
170
170
  /** Individual item within a sidebar submenu */
171
171
  declare function SidebarMenuSubItem({
172
172
  className,
173
173
  ...props
174
- }: React$1.ComponentProps<"li">): react_jsx_runtime230.JSX.Element;
174
+ }: React$1.ComponentProps<"li">): react_jsx_runtime231.JSX.Element;
175
175
  /** Button for submenu items */
176
176
  declare function SidebarMenuSubButton({
177
177
  asChild,
@@ -183,7 +183,7 @@ declare function SidebarMenuSubButton({
183
183
  asChild?: boolean;
184
184
  size?: "sm" | "md";
185
185
  isActive?: boolean;
186
- }): react_jsx_runtime230.JSX.Element;
186
+ }): react_jsx_runtime231.JSX.Element;
187
187
  //#endregion
188
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 };
189
189
  //# sourceMappingURL=sidebar.d.ts.map
@@ -2,17 +2,17 @@
2
2
 
3
3
  import { cn } from "../lib/utils.js";
4
4
  import { Button } from "./button.js";
5
+ import { Skeleton } from "./skeleton.js";
5
6
  import { Input } from "./input.js";
6
7
  import { Separator } from "./separator.js";
7
8
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.js";
8
9
  import { useIsMobile } from "../hooks/use-mobile.js";
9
- import { Skeleton } from "./skeleton.js";
10
10
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
11
11
  import * as React$1 from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
- import { PanelLeftIcon } from "lucide-react";
14
13
  import { Slot } from "@radix-ui/react-slot";
15
14
  import { cva } from "class-variance-authority";
15
+ import { PanelLeftIcon } from "lucide-react";
16
16
 
17
17
  //#region src/react/ui/sidebar.tsx
18
18
  const SIDEBAR_COOKIE_NAME = "sidebar_state";
@@ -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 defaultOpen?: boolean;\n open?: boolean;\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 side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\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\"> & { asChild?: boolean }) {\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\"> & { asChild?: boolean }) {\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 asChild?: boolean;\n isActive?: boolean;\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 asChild?: boolean;\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 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 asChild?: boolean;\n size?: \"sm\" | \"md\";\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":";;;;;;;;;;;;;;;;;AA2BA,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB,OAAU,KAAK;AAC9C,MAAM,gBAAgB;AACtB,MAAM,uBAAuB;AAC7B,MAAM,qBAAqB;AAC3B,MAAM,4BAA4B;AAYlC,MAAM,iBAAiBA,QAAM,cAA0C,KAAK;;AAG5E,SAAS,aAAa;CACpB,MAAM,UAAUA,QAAM,WAAW,eAAe;AAChD,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,QAAO;;AAGT,SAAS,gBAAgB,EACvB,cAAc,MACd,MAAM,UACN,cAAc,aACd,WACA,OACA,UACA,GAAG,SAKF;CACD,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,YAAY,iBAAiBA,QAAM,SAAS,MAAM;CAIzD,MAAM,CAAC,OAAO,YAAYA,QAAM,SAAS,YAAY;CACrD,MAAM,OAAO,YAAY;CACzB,MAAM,UAAUA,QAAM,aACnB,UAAmD;EAClD,MAAM,YAAY,OAAO,UAAU,aAAa,MAAM,KAAK,GAAG;AAC9D,MAAI,YACF,aAAY,UAAU;MAEtB,UAAS,UAAU;AAIrB,WAAS,SAAS,GAAG,oBAAoB,GAAG,UAAU,oBAAoB;IAE5E,CAAC,aAAa,KAAK,CACpB;CAGD,MAAM,gBAAgBA,QAAM,kBAAkB;AAC5C,SAAO,WAAW,eAAe,SAAS,CAAC,KAAK,GAAG,SAAS,SAAS,CAAC,KAAK;IAC1E;EAAC;EAAU;EAAS;EAAc,CAAC;AAGtC,SAAM,gBAAgB;EACpB,MAAM,iBAAiB,UAAyB;AAC9C,OACE,MAAM,QAAQ,8BACb,MAAM,WAAW,MAAM,UACxB;AACA,UAAM,gBAAgB;AACtB,mBAAe;;;AAInB,SAAO,iBAAiB,WAAW,cAAc;AACjD,eAAa,OAAO,oBAAoB,WAAW,cAAc;IAChE,CAAC,cAAc,CAAC;CAInB,MAAM,QAAQ,OAAO,aAAa;CAElC,MAAM,eAAeA,QAAM,eAClB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAO;EAAM;EAAS;EAAU;EAAY;EAAe;EAAc,CAC3E;AAED,QACE,oBAAC,eAAe;EAAS,OAAO;YAC9B,oBAAC;GAAgB,eAAe;aAC9B,oBAAC;IACC,aAAU;IACV,OACE;KACE,mBAAmB;KACnB,wBAAwB;KACxB,GAAG;KACJ;IAEH,WAAW,GACT,mFACA,UACD;IACD,GAAI;IAEH;KACG;IACU;GACM;;;AAK9B,SAAS,QAAQ,EACf,OAAO,QACP,UAAU,WACV,cAAc,aACd,WACA,UACA,GAAG,SAKF;CACD,MAAM,EAAE,UAAU,OAAO,YAAY,kBAAkB,YAAY;AAEnE,KAAI,gBAAgB,OAClB,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,+EACA,UACD;EACD,GAAI;EAEH;GACG;AAIV,KAAI,SACF,QACE,oBAAC;EAAM,MAAM;EAAY,cAAc;EAAe,GAAI;YACxD,qBAAC;GACC,gBAAa;GACb,aAAU;GACV,eAAY;GACZ,WAAU;GACV,OACE,EACE,mBAAmB,sBACpB;GAEG;cAEN,qBAAC;IAAY,WAAU;eACrB,oBAAC,wBAAW,YAAoB,EAChC,oBAAC,8BAAiB,iCAA+C;KACrD,EACd,oBAAC;IAAI,WAAU;IAA+B;KAAe;IAChD;GACT;AAIZ,QACE,qBAAC;EACC,WAAU;EACV,cAAY;EACZ,oBAAkB,UAAU,cAAc,cAAc;EACxD,gBAAc;EACd,aAAW;EACX,aAAU;aAGV,oBAAC;GACC,aAAU;GACV,WAAW,GACT,2FACA,0CACA,sCACA,YAAY,cAAc,YAAY,UAClC,qFACA,yDACL;IACD,EACF,oBAAC;GACC,aAAU;GACV,WAAW,GACT,wHACA,SAAS,SACL,mFACA,oFAEJ,YAAY,cAAc,YAAY,UAClC,6FACA,2HACJ,UACD;GACD,GAAI;aAEJ,oBAAC;IACC,gBAAa;IACb,aAAU;IACV,WAAU;IAET;KACG;IACF;GACF;;;AAKV,SAAS,eAAe,EACtB,WACA,SACA,GAAG,SACmC;CACtC,MAAM,EAAE,kBAAkB,YAAY;AAEtC,QACE,qBAAC;EACC,gBAAa;EACb,aAAU;EACV,SAAQ;EACR,MAAK;EACL,WAAW,GAAG,UAAU,UAAU;EAClC,UAAU,UAAU;AAClB,aAAU,MAAM;AAChB,kBAAe;;EAEjB,GAAI;aAEJ,oBAAC,kBAAgB,EACjB,oBAAC;GAAK,WAAU;aAAU;IAAqB;GACxC;;;AAKb,SAAS,YAAY,EAAE,WAAW,GAAG,SAAyC;CAC5E,MAAM,EAAE,kBAAkB,YAAY;AAEtC,QACE,oBAAC;EACC,gBAAa;EACb,aAAU;EACV,cAAW;EACX,UAAU;EACV,SAAS;EACT,OAAM;EACN,WAAW,GACT,mPACA,4EACA,0HACA,2JACA,6DACA,6DACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAuC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,sDACA,mNACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EACpB,WACA,GAAG,SACkC;AACrC,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,wCAAwC,UAAU;EAChE,GAAI;GACJ;;;AAKN,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,2BAA2B,UAAU;EACnD,GAAI;GACJ;;;AAKN,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,2BAA2B,UAAU;EACnD,GAAI;GACJ;;;AAKN,SAAS,iBAAiB,EACxB,WACA,GAAG,SACsC;AACzC,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;;;AAKN,SAAS,eAAe,EAAE,WAAW,GAAG,SAAsC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GACT,kGACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,6CAA6C,UAAU;EACrE,GAAI;GACJ;;;AAKN,SAAS,kBAAkB,EACzB,WACA,UAAU,OACV,GAAG,SACmD;AAGtD,QACE,oBAHW,UAAU,OAAO;EAI1B,aAAU;EACV,gBAAa;EACb,WAAW,GACT,4OACA,+EACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,mBAAmB,EAC1B,WACA,UAAU,OACV,GAAG,SACsD;AAGzD,QACE,oBAHW,UAAU,OAAO;EAI1B,aAAU;EACV,gBAAa;EACb,WAAW,GACT,8RAEA,iDACA,wCACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,oBAAoB,EAC3B,WACA,GAAG,SAC2B;AAC9B,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,kBAAkB,UAAU;EAC1C,GAAI;GACJ;;;AAKN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAqC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ;;;AAKN,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAqC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,4BAA4B,UAAU;EACpD,GAAI;GACJ;;AAIN,MAAM,4BAA4B,IAChC,qzBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SACE;GACH;EACD,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,SAAS,kBAAkB,EACzB,UAAU,OACV,WAAW,OACX,UAAU,WACV,OAAO,WACP,SACA,WACA,GAAG,SAK+C;CAClD,MAAM,OAAO,UAAU,OAAO;CAC9B,MAAM,EAAE,UAAU,UAAU,YAAY;CAExC,MAAM,SACJ,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,aAAW;EACX,eAAa;EACb,WAAW,GAAG,0BAA0B;GAAE;GAAS;GAAM,CAAC,EAAE,UAAU;EACtE,GAAI;GACJ;AAGJ,KAAI,CAAC,QACH,QAAO;AAGT,KAAI,OAAO,YAAY,SACrB,WAAU,EACR,UAAU,SACX;AAGH,QACE,qBAAC,sBACC,oBAAC;EAAe;YAAS;GAAwB,EACjD,oBAAC;EACC,MAAK;EACL,OAAM;EACN,QAAQ,UAAU,eAAe;EACjC,GAAI;GACJ,IACM;;;AAKd,SAAS,kBAAkB,EACzB,WACA,UAAU,OACV,cAAc,OACd,GAAG,SAIF;AAGD,QACE,oBAHW,UAAU,OAAO;EAI1B,aAAU;EACV,gBAAa;EACb,WAAW,GACT,oVAEA,iDACA,yCACA,gDACA,2CACA,wCACA,eACE,4LACF,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,iBAAiB,EACxB,WACA,GAAG,SAC2B;AAC9B,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GACT,0KACA,4HACA,yCACA,gDACA,2CACA,wCACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,oBAAoB,EAC3B,WACA,WAAW,OACX,GAAG,SAGF;CAED,MAAM,QAAQA,QAAM,cAAc;AAChC,SAAO,GAAG,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG;IAC7C,EAAE,CAAC;AAEN,QACE,qBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,+CAA+C,UAAU;EACvE,GAAI;aAEH,YACC,oBAAC;GACC,WAAU;GACV,gBAAa;IACb,EAEJ,oBAAC;GACC,WAAU;GACV,gBAAa;GACb,OACE,EACE,oBAAoB,OACrB;IAEH;GACE;;;AAKV,SAAS,eAAe,EAAE,WAAW,GAAG,SAAqC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GACT,kGACA,wCACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,mBAAmB,EAC1B,WACA,GAAG,SAC0B;AAC7B,QACE,oBAAC;EACC,aAAU;EACV,gBAAa;EACb,WAAW,GAAG,gCAAgC,UAAU;EACxD,GAAI;GACJ;;;AAKN,SAAS,qBAAqB,EAC5B,UAAU,OACV,OAAO,MACP,WAAW,OACX,WACA,GAAG,SAKF;AAGD,QACE,oBAHW,UAAU,OAAO;EAI1B,aAAU;EACV,gBAAa;EACb,aAAW;EACX,eAAa;EACb,WAAW,GACT,ifACA,0FACA,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,wCACA,UACD;EACD,GAAI;GACJ"}
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 defaultOpen?: boolean;\n open?: boolean;\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 side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\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\"> & { asChild?: boolean }) {\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\"> & { asChild?: boolean }) {\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 asChild?: boolean;\n isActive?: boolean;\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 asChild?: boolean;\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 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 asChild?: boolean;\n size?: \"sm\" | \"md\";\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,11 +1,11 @@
1
- import * as react_jsx_runtime253 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime254 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/skeleton.d.ts
4
4
  /** Loading placeholder with pulsing animation */
5
5
  declare function Skeleton({
6
6
  className,
7
7
  ...props
8
- }: React.ComponentProps<"div">): react_jsx_runtime253.JSX.Element;
8
+ }: React.ComponentProps<"div">): react_jsx_runtime254.JSX.Element;
9
9
  //#endregion
10
10
  export { Skeleton };
11
11
  //# sourceMappingURL=skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","names":[],"sources":["../../../src/react/ui/skeleton.tsx"],"sourcesContent":["import { cn } from \"../lib/utils\";\n\n/** Loading placeholder with pulsing animation */\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"],"mappings":";;;;;AAGA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ"}
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../../../src/react/ui/skeleton.tsx"],"sourcesContent":["import { cn } from \"../lib/utils\";\n\n/** Loading placeholder with pulsing animation */\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"],"mappings":";;;;;AAGA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;AACtE,QACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;EACJ"}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime254 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime255 from "react/jsx-runtime";
3
3
  import * as SliderPrimitive from "@radix-ui/react-slider";
4
4
 
5
5
  //#region src/react/ui/slider.d.ts
@@ -11,7 +11,7 @@ declare function Slider({
11
11
  min,
12
12
  max,
13
13
  ...props
14
- }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime254.JSX.Element;
14
+ }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime255.JSX.Element;
15
15
  //#endregion
16
16
  export { Slider };
17
17
  //# sourceMappingURL=slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":["React"],"sources":["../../../src/react/ui/slider.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Draggable input for selecting numeric values within a range */\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n"],"mappings":";;;;;;;;;AAQA,SAAS,OAAO,EACd,WACA,cACA,OACA,MAAM,GACN,MAAM,KACN,GAAG,SACiD;CACpD,MAAM,UAAUA,QAAM,cAElB,MAAM,QAAQ,MAAM,GAChB,QACA,MAAM,QAAQ,aAAa,GACzB,eACA,CAAC,KAAK,IAAI,EAClB;EAAC;EAAO;EAAc;EAAK;EAAI,CAChC;AAED,QACE,qBAAC,gBAAgB;EACf,aAAU;EACI;EACP;EACF;EACA;EACL,WAAW,GACT,uOACA,UACD;EACD,GAAI;aAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT,oMACD;aAED,oBAAC,gBAAgB;IACf,aAAU;IACV,WAAW,GACT,8FACD;KACD;IACoB,EACvB,MAAM,KAAK,EAAE,QAAQ,QAAQ,QAAQ,GAAG,GAAG,UAC1C,oBAAC,gBAAgB;GACf,aAAU;GAEV,WAAU;KADL,MAEL,CACF;GACmB"}
1
+ {"version":3,"file":"slider.js","names":["React"],"sources":["../../../src/react/ui/slider.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Draggable input for selecting numeric values within a range */\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n"],"mappings":";;;;;;;;;AAQA,SAAS,OAAO,EACd,WACA,cACA,OACA,MAAM,GACN,MAAM,KACN,GAAG,SACiD;CACpD,MAAM,UAAUA,QAAM,cAElB,MAAM,QAAQ,MAAM,GAChB,QACA,MAAM,QAAQ,aAAa,GACzB,eACA,CAAC,KAAK,IAAI,EAClB;EAAC;EAAO;EAAc;EAAK;EAAI,CAChC;AAED,QACE,qBAAC,gBAAgB,MAAjB;EACE,aAAU;EACI;EACP;EACF;EACA;EACL,WAAW,GACT,uOACA,UACD;EACD,GAAI;YAVN,CAYE,oBAAC,gBAAgB,OAAjB;GACE,aAAU;GACV,WAAW,GACT,oMACD;aAED,oBAAC,gBAAgB,OAAjB;IACE,aAAU;IACV,WAAW,GACT,8FACD;IACD;GACoB,GACvB,MAAM,KAAK,EAAE,QAAQ,QAAQ,QAAQ,GAAG,GAAG,UAC1C,oBAAC,gBAAgB,OAAjB;GACE,aAAU;GAEV,WAAU;GACV,EAFK,MAEL,CACF,CACmB"}
@@ -1,11 +1,11 @@
1
- import * as react_jsx_runtime255 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime256 from "react/jsx-runtime";
2
2
  import { ToasterProps } from "sonner";
3
3
 
4
4
  //#region src/react/ui/sonner.d.ts
5
5
  /** Toast notification system for displaying temporary messages */
6
6
  declare const Toaster$1: ({
7
7
  ...props
8
- }: ToasterProps) => react_jsx_runtime255.JSX.Element;
8
+ }: ToasterProps) => react_jsx_runtime256.JSX.Element;
9
9
  //#endregion
10
10
  export { Toaster$1 as Toaster };
11
11
  //# sourceMappingURL=sonner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sonner.js","names":["Toaster","Sonner"],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":["// @ts-nocheck\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\n/** Toast notification system for displaying temporary messages */\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;;;;AAYA,MAAMA,aAAW,EAAE,GAAG,YAA0B;CAC9C,MAAM,EAAE,QAAQ,aAAa,UAAU;AAEvC,QACE,oBAACC;EACQ;EACP,WAAU;EACV,OAAO;GACL,SAAS,oBAAC,mBAAgB,WAAU,WAAW;GAC/C,MAAM,oBAAC,YAAS,WAAU,WAAW;GACrC,SAAS,oBAAC,qBAAkB,WAAU,WAAW;GACjD,OAAO,oBAAC,gBAAa,WAAU,WAAW;GAC1C,SAAS,oBAAC,eAAY,WAAU,wBAAwB;GACzD;EACD,OACE;GACE,eAAe;GACf,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACpB;EAEH,GAAI;GACJ"}
1
+ {"version":3,"file":"sonner.js","names":["Toaster","Sonner"],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":["// @ts-nocheck\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\n/** Toast notification system for displaying temporary messages */\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;;;;AAYA,MAAMA,aAAW,EAAE,GAAG,YAA0B;CAC9C,MAAM,EAAE,QAAQ,aAAa,UAAU;AAEvC,QACE,oBAACC,SAAD;EACS;EACP,WAAU;EACV,OAAO;GACL,SAAS,oBAAC,iBAAD,EAAiB,WAAU,UAAW;GAC/C,MAAM,oBAAC,UAAD,EAAU,WAAU,UAAW;GACrC,SAAS,oBAAC,mBAAD,EAAmB,WAAU,UAAW;GACjD,OAAO,oBAAC,cAAD,EAAc,WAAU,UAAW;GAC1C,SAAS,oBAAC,aAAD,EAAa,WAAU,uBAAwB;GACzD;EACD,OACE;GACE,eAAe;GACf,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACpB;EAEH,GAAI;EACJ"}
@@ -1,11 +1,11 @@
1
- import * as react_jsx_runtime256 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime257 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/spinner.d.ts
4
4
  /** Animated loading indicator */
5
5
  declare function Spinner({
6
6
  className,
7
7
  ...props
8
- }: React.ComponentProps<"svg">): react_jsx_runtime256.JSX.Element;
8
+ }: React.ComponentProps<"svg">): react_jsx_runtime257.JSX.Element;
9
9
  //#endregion
10
10
  export { Spinner };
11
11
  //# sourceMappingURL=spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":["// @ts-nocheck\nimport { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Animated loading indicator */\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;;AAMA,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAsC;AACrE,QACE,oBAAC;EACC,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":["// @ts-nocheck\nimport { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Animated loading indicator */\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;;AAMA,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAsC;AACrE,QACE,oBAAC,aAAD;EACE,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;EACJ"}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime257 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime258 from "react/jsx-runtime";
3
3
  import * as SwitchPrimitive from "@radix-ui/react-switch";
4
4
 
5
5
  //#region src/react/ui/switch.d.ts
@@ -7,7 +7,7 @@ import * as SwitchPrimitive from "@radix-ui/react-switch";
7
7
  declare function Switch({
8
8
  className,
9
9
  ...props
10
- }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime257.JSX.Element;
10
+ }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime258.JSX.Element;
11
11
  //#endregion
12
12
  export { Switch };
13
13
  //# sourceMappingURL=switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Toggle control for switching between on and off states */\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;AAQA,SAAS,OAAO,EACd,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,6WACA,UACD;EACD,GAAI;YAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT,2QACD;IACD;GACmB"}
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Toggle control for switching between on and off states */\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;AAQA,SAAS,OAAO,EACd,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,gBAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT,6WACA,UACD;EACD,GAAI;YAEJ,oBAAC,gBAAgB,OAAjB;GACE,aAAU;GACV,WAAW,GACT,2QACD;GACD;EACmB"}
@@ -1,40 +1,40 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime258 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime259 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/table.d.ts
5
5
  /** Structured data display with rows and columns */
6
6
  declare function Table({
7
7
  className,
8
8
  ...props
9
- }: React$1.ComponentProps<"table">): react_jsx_runtime258.JSX.Element;
9
+ }: React$1.ComponentProps<"table">): react_jsx_runtime259.JSX.Element;
10
10
  declare function TableHeader({
11
11
  className,
12
12
  ...props
13
- }: React$1.ComponentProps<"thead">): react_jsx_runtime258.JSX.Element;
13
+ }: React$1.ComponentProps<"thead">): react_jsx_runtime259.JSX.Element;
14
14
  declare function TableBody({
15
15
  className,
16
16
  ...props
17
- }: React$1.ComponentProps<"tbody">): react_jsx_runtime258.JSX.Element;
17
+ }: React$1.ComponentProps<"tbody">): react_jsx_runtime259.JSX.Element;
18
18
  declare function TableFooter({
19
19
  className,
20
20
  ...props
21
- }: React$1.ComponentProps<"tfoot">): react_jsx_runtime258.JSX.Element;
21
+ }: React$1.ComponentProps<"tfoot">): react_jsx_runtime259.JSX.Element;
22
22
  declare function TableRow({
23
23
  className,
24
24
  ...props
25
- }: React$1.ComponentProps<"tr">): react_jsx_runtime258.JSX.Element;
25
+ }: React$1.ComponentProps<"tr">): react_jsx_runtime259.JSX.Element;
26
26
  declare function TableHead({
27
27
  className,
28
28
  ...props
29
- }: React$1.ComponentProps<"th">): react_jsx_runtime258.JSX.Element;
29
+ }: React$1.ComponentProps<"th">): react_jsx_runtime259.JSX.Element;
30
30
  declare function TableCell({
31
31
  className,
32
32
  ...props
33
- }: React$1.ComponentProps<"td">): react_jsx_runtime258.JSX.Element;
33
+ }: React$1.ComponentProps<"td">): react_jsx_runtime259.JSX.Element;
34
34
  declare function TableCaption({
35
35
  className,
36
36
  ...props
37
- }: React$1.ComponentProps<"caption">): react_jsx_runtime258.JSX.Element;
37
+ }: React$1.ComponentProps<"caption">): react_jsx_runtime259.JSX.Element;
38
38
  //#endregion
39
39
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
40
40
  //# sourceMappingURL=table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Structured data display with rows and columns */\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] text-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"mappings":";;;;;AAKA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAwC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAU;YAEV,oBAAC;GACC,aAAU;GACV,WAAW,GAAG,iCAAiC,UAAU;GACzD,GAAI;IACJ;GACE;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,mBAAmB,UAAU;EAC3C,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAwC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,8BAA8B,UAAU;EACtD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,SAAS,EAAE,WAAW,GAAG,SAAqC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,6FACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,sJACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0HACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SAC+B;AAClC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ"}
1
+ {"version":3,"file":"table.js","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Structured data display with rows and columns */\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] text-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"mappings":";;;;;AAKA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAwC;AACrE,QACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAU;YAEV,oBAAC,SAAD;GACE,aAAU;GACV,WAAW,GAAG,iCAAiC,UAAU;GACzD,GAAI;GACJ;EACE;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAAG,mBAAmB,UAAU;EAC3C,GAAI;EACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAwC;AACzE,QACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAAG,8BAA8B,UAAU;EACtD,GAAI;EACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GACT,2DACA,UACD;EACD,GAAI;EACJ;;AAIN,SAAS,SAAS,EAAE,WAAW,GAAG,SAAqC;AACrE,QACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,6FACA,UACD;EACD,GAAI;EACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,sJACA,UACD;EACD,GAAI;EACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,0HACA,UACD;EACD,GAAI;EACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SAC+B;AAClC,QACE,oBAAC,WAAD;EACE,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;EACJ"}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime266 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime267 from "react/jsx-runtime";
3
3
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4
4
 
5
5
  //#region src/react/ui/tabs.d.ts
@@ -7,22 +7,22 @@ import * as TabsPrimitive from "@radix-ui/react-tabs";
7
7
  declare function Tabs({
8
8
  className,
9
9
  ...props
10
- }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime266.JSX.Element;
10
+ }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime267.JSX.Element;
11
11
  /** Container for tab trigger buttons */
12
12
  declare function TabsList({
13
13
  className,
14
14
  ...props
15
- }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime266.JSX.Element;
15
+ }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime267.JSX.Element;
16
16
  /** Button that activates a tab panel */
17
17
  declare function TabsTrigger({
18
18
  className,
19
19
  ...props
20
- }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime266.JSX.Element;
20
+ }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime267.JSX.Element;
21
21
  /** Content panel associated with a tab */
22
22
  declare function TabsContent({
23
23
  className,
24
24
  ...props
25
- }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime266.JSX.Element;
25
+ }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime267.JSX.Element;
26
26
  //#endregion
27
27
  export { Tabs, TabsContent, TabsList, TabsTrigger };
28
28
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Tabbed interface for organizing content into separate panels */\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Container for tab trigger buttons */\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Button that activates a tab panel */\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Content panel associated with a tab */\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;;AAQA,SAAS,KAAK,EACZ,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ;;;AAKN,SAAS,SAAS,EAChB,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,uGACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,mqBACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Tabbed interface for organizing content into separate panels */\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Container for tab trigger buttons */\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Button that activates a tab panel */\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Content panel associated with a tab */\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;;AAQA,SAAS,KAAK,EACZ,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc,MAAf;EACE,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;EACJ;;;AAKN,SAAS,SAAS,EAChB,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc,MAAf;EACE,aAAU;EACV,WAAW,GACT,uGACA,UACD;EACD,GAAI;EACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc,SAAf;EACE,aAAU;EACV,WAAW,GACT,mqBACA,UACD;EACD,GAAI;EACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc,SAAf;EACE,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;EACJ"}