@databricks/appkit-ui 0.3.0 → 0.4.1

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 (478) hide show
  1. package/CLAUDE.md +121 -1231
  2. package/NOTICE.md +1 -1
  3. package/bin/appkit.js +3 -0
  4. package/dist/cli/commands/docs.js +47 -0
  5. package/dist/cli/commands/docs.js.map +1 -0
  6. package/dist/cli/commands/generate-types.js +38 -0
  7. package/dist/cli/commands/generate-types.js.map +1 -0
  8. package/dist/cli/commands/lint.js +104 -0
  9. package/dist/cli/commands/lint.js.map +1 -0
  10. package/dist/cli/commands/setup.js +121 -0
  11. package/dist/cli/commands/setup.js.map +1 -0
  12. package/dist/cli/index.d.ts +1 -0
  13. package/dist/cli/index.js +24 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/js/arrow/arrow-client.d.ts +48 -0
  16. package/dist/js/arrow/arrow-client.d.ts.map +1 -1
  17. package/dist/js/arrow/arrow-client.js +51 -3
  18. package/dist/js/arrow/arrow-client.js.map +1 -1
  19. package/dist/react/charts/area/index.d.ts +8 -19
  20. package/dist/react/charts/area/index.d.ts.map +1 -1
  21. package/dist/react/charts/area/index.js +5 -17
  22. package/dist/react/charts/area/index.js.map +1 -1
  23. package/dist/react/charts/bar/index.d.ts +7 -28
  24. package/dist/react/charts/bar/index.d.ts.map +1 -1
  25. package/dist/react/charts/bar/index.js +4 -26
  26. package/dist/react/charts/bar/index.js.map +1 -1
  27. package/dist/react/charts/base.d.ts +2 -2
  28. package/dist/react/charts/base.d.ts.map +1 -1
  29. package/dist/react/charts/create-chart.d.ts +2 -2
  30. package/dist/react/charts/create-chart.d.ts.map +1 -1
  31. package/dist/react/charts/heatmap/index.d.ts +9 -24
  32. package/dist/react/charts/heatmap/index.d.ts.map +1 -1
  33. package/dist/react/charts/heatmap/index.js +6 -22
  34. package/dist/react/charts/heatmap/index.js.map +1 -1
  35. package/dist/react/charts/line/index.d.ts +8 -20
  36. package/dist/react/charts/line/index.d.ts.map +1 -1
  37. package/dist/react/charts/line/index.js +5 -18
  38. package/dist/react/charts/line/index.js.map +1 -1
  39. package/dist/react/charts/normalize.js +16 -16
  40. package/dist/react/charts/normalize.js.map +1 -1
  41. package/dist/react/charts/options.d.ts.map +1 -1
  42. package/dist/react/charts/pie/index.d.ts +13 -35
  43. package/dist/react/charts/pie/index.d.ts.map +1 -1
  44. package/dist/react/charts/pie/index.js +9 -32
  45. package/dist/react/charts/pie/index.js.map +1 -1
  46. package/dist/react/charts/radar/index.d.ts +8 -18
  47. package/dist/react/charts/radar/index.d.ts.map +1 -1
  48. package/dist/react/charts/radar/index.js +5 -16
  49. package/dist/react/charts/radar/index.js.map +1 -1
  50. package/dist/react/charts/scatter/index.d.ts +8 -18
  51. package/dist/react/charts/scatter/index.d.ts.map +1 -1
  52. package/dist/react/charts/scatter/index.js +5 -16
  53. package/dist/react/charts/scatter/index.js.map +1 -1
  54. package/dist/react/charts/wrapper.d.ts +2 -2
  55. package/dist/react/charts/wrapper.d.ts.map +1 -1
  56. package/dist/react/hooks/use-analytics-query.js +12 -12
  57. package/dist/react/hooks/use-analytics-query.js.map +1 -1
  58. package/dist/react/table/data-table.d.ts +6 -3
  59. package/dist/react/table/data-table.d.ts.map +1 -1
  60. package/dist/react/table/data-table.js +4 -1
  61. package/dist/react/table/data-table.js.map +1 -1
  62. package/dist/react/table/table-wrapper.js +3 -3
  63. package/dist/react/table/table-wrapper.js.map +1 -1
  64. package/dist/react/ui/accordion.d.ts +9 -5
  65. package/dist/react/ui/accordion.d.ts.map +1 -1
  66. package/dist/react/ui/accordion.js +4 -0
  67. package/dist/react/ui/accordion.js.map +1 -1
  68. package/dist/react/ui/alert-dialog.d.ts +23 -12
  69. package/dist/react/ui/alert-dialog.d.ts.map +1 -1
  70. package/dist/react/ui/alert-dialog.js +11 -0
  71. package/dist/react/ui/alert-dialog.js.map +1 -1
  72. package/dist/react/ui/alert.d.ts +7 -4
  73. package/dist/react/ui/alert.d.ts.map +1 -1
  74. package/dist/react/ui/alert.js +3 -0
  75. package/dist/react/ui/alert.js.map +1 -1
  76. package/dist/react/ui/aspect-ratio.d.ts +3 -2
  77. package/dist/react/ui/aspect-ratio.d.ts.map +1 -1
  78. package/dist/react/ui/aspect-ratio.js +1 -0
  79. package/dist/react/ui/aspect-ratio.js.map +1 -1
  80. package/dist/react/ui/avatar.d.ts +7 -4
  81. package/dist/react/ui/avatar.d.ts.map +1 -1
  82. package/dist/react/ui/avatar.js +3 -0
  83. package/dist/react/ui/avatar.js.map +1 -1
  84. package/dist/react/ui/badge.d.ts +3 -2
  85. package/dist/react/ui/badge.d.ts.map +1 -1
  86. package/dist/react/ui/badge.js +1 -0
  87. package/dist/react/ui/badge.js.map +1 -1
  88. package/dist/react/ui/breadcrumb.d.ts +15 -8
  89. package/dist/react/ui/breadcrumb.d.ts.map +1 -1
  90. package/dist/react/ui/breadcrumb.js +7 -0
  91. package/dist/react/ui/breadcrumb.js.map +1 -1
  92. package/dist/react/ui/button-group.d.ts +7 -4
  93. package/dist/react/ui/button-group.d.ts.map +1 -1
  94. package/dist/react/ui/button-group.js +3 -0
  95. package/dist/react/ui/button-group.js.map +1 -1
  96. package/dist/react/ui/button.d.ts +3 -2
  97. package/dist/react/ui/button.d.ts.map +1 -1
  98. package/dist/react/ui/button.js +1 -0
  99. package/dist/react/ui/button.js.map +1 -1
  100. package/dist/react/ui/calendar.d.ts +5 -3
  101. package/dist/react/ui/calendar.d.ts.map +1 -1
  102. package/dist/react/ui/calendar.js +14 -12
  103. package/dist/react/ui/calendar.js.map +1 -1
  104. package/dist/react/ui/card.d.ts +15 -8
  105. package/dist/react/ui/card.d.ts.map +1 -1
  106. package/dist/react/ui/card.js +7 -0
  107. package/dist/react/ui/card.js.map +1 -1
  108. package/dist/react/ui/carousel.d.ts +11 -6
  109. package/dist/react/ui/carousel.d.ts.map +1 -1
  110. package/dist/react/ui/carousel.js +9 -4
  111. package/dist/react/ui/carousel.js.map +1 -1
  112. package/dist/react/ui/chart.d.ts +6 -5
  113. package/dist/react/ui/chart.d.ts.map +1 -1
  114. package/dist/react/ui/chart.js +2 -1
  115. package/dist/react/ui/chart.js.map +1 -1
  116. package/dist/react/ui/checkbox.d.ts +3 -2
  117. package/dist/react/ui/checkbox.d.ts.map +1 -1
  118. package/dist/react/ui/checkbox.js +1 -0
  119. package/dist/react/ui/checkbox.js.map +1 -1
  120. package/dist/react/ui/collapsible.d.ts +7 -4
  121. package/dist/react/ui/collapsible.d.ts.map +1 -1
  122. package/dist/react/ui/collapsible.js +3 -0
  123. package/dist/react/ui/collapsible.js.map +1 -1
  124. package/dist/react/ui/command.d.ts +19 -10
  125. package/dist/react/ui/command.d.ts.map +1 -1
  126. package/dist/react/ui/command.js +9 -0
  127. package/dist/react/ui/command.js.map +1 -1
  128. package/dist/react/ui/context-menu.d.ts +17 -16
  129. package/dist/react/ui/context-menu.d.ts.map +1 -1
  130. package/dist/react/ui/context-menu.js +1 -0
  131. package/dist/react/ui/context-menu.js.map +1 -1
  132. package/dist/react/ui/dialog.d.ts +21 -11
  133. package/dist/react/ui/dialog.d.ts.map +1 -1
  134. package/dist/react/ui/dialog.js +10 -0
  135. package/dist/react/ui/dialog.js.map +1 -1
  136. package/dist/react/ui/drawer.d.ts +21 -11
  137. package/dist/react/ui/drawer.d.ts.map +1 -1
  138. package/dist/react/ui/drawer.js +10 -0
  139. package/dist/react/ui/drawer.js.map +1 -1
  140. package/dist/react/ui/dropdown-menu.d.ts +17 -16
  141. package/dist/react/ui/dropdown-menu.d.ts.map +1 -1
  142. package/dist/react/ui/dropdown-menu.js +1 -0
  143. package/dist/react/ui/dropdown-menu.js.map +1 -1
  144. package/dist/react/ui/empty.d.ts +8 -7
  145. package/dist/react/ui/empty.d.ts.map +1 -1
  146. package/dist/react/ui/empty.js +1 -0
  147. package/dist/react/ui/empty.js.map +1 -1
  148. package/dist/react/ui/field.d.ts +21 -11
  149. package/dist/react/ui/field.d.ts.map +1 -1
  150. package/dist/react/ui/field.js +10 -0
  151. package/dist/react/ui/field.js.map +1 -1
  152. package/dist/react/ui/form.d.ts +14 -7
  153. package/dist/react/ui/form.d.ts.map +1 -1
  154. package/dist/react/ui/form.js +7 -0
  155. package/dist/react/ui/form.js.map +1 -1
  156. package/dist/react/ui/hover-card.d.ts +5 -4
  157. package/dist/react/ui/hover-card.d.ts.map +1 -1
  158. package/dist/react/ui/hover-card.js +1 -0
  159. package/dist/react/ui/hover-card.js.map +1 -1
  160. package/dist/react/ui/input-group.d.ts +13 -7
  161. package/dist/react/ui/input-group.d.ts.map +1 -1
  162. package/dist/react/ui/input-group.js +6 -0
  163. package/dist/react/ui/input-group.js.map +1 -1
  164. package/dist/react/ui/input-otp.d.ts +9 -5
  165. package/dist/react/ui/input-otp.d.ts.map +1 -1
  166. package/dist/react/ui/input-otp.js +4 -0
  167. package/dist/react/ui/input-otp.js.map +1 -1
  168. package/dist/react/ui/input.d.ts +3 -2
  169. package/dist/react/ui/input.d.ts.map +1 -1
  170. package/dist/react/ui/input.js +1 -0
  171. package/dist/react/ui/input.js.map +1 -1
  172. package/dist/react/ui/item.d.ts +12 -11
  173. package/dist/react/ui/item.d.ts.map +1 -1
  174. package/dist/react/ui/item.js +1 -0
  175. package/dist/react/ui/item.js.map +1 -1
  176. package/dist/react/ui/kbd.d.ts +4 -3
  177. package/dist/react/ui/kbd.d.ts.map +1 -1
  178. package/dist/react/ui/kbd.js +1 -0
  179. package/dist/react/ui/kbd.js.map +1 -1
  180. package/dist/react/ui/label.d.ts +3 -2
  181. package/dist/react/ui/label.d.ts.map +1 -1
  182. package/dist/react/ui/label.js +1 -0
  183. package/dist/react/ui/label.js.map +1 -1
  184. package/dist/react/ui/menubar.d.ts +18 -17
  185. package/dist/react/ui/menubar.d.ts.map +1 -1
  186. package/dist/react/ui/menubar.js +1 -0
  187. package/dist/react/ui/menubar.js.map +1 -1
  188. package/dist/react/ui/navigation-menu.d.ts +17 -9
  189. package/dist/react/ui/navigation-menu.d.ts.map +1 -1
  190. package/dist/react/ui/navigation-menu.js +8 -0
  191. package/dist/react/ui/navigation-menu.js.map +1 -1
  192. package/dist/react/ui/pagination.d.ts +15 -8
  193. package/dist/react/ui/pagination.d.ts.map +1 -1
  194. package/dist/react/ui/pagination.js +7 -0
  195. package/dist/react/ui/pagination.js.map +1 -1
  196. package/dist/react/ui/popover.d.ts +6 -5
  197. package/dist/react/ui/popover.d.ts.map +1 -1
  198. package/dist/react/ui/popover.js +1 -0
  199. package/dist/react/ui/popover.js.map +1 -1
  200. package/dist/react/ui/progress.d.ts +3 -2
  201. package/dist/react/ui/progress.d.ts.map +1 -1
  202. package/dist/react/ui/progress.js +1 -0
  203. package/dist/react/ui/progress.js.map +1 -1
  204. package/dist/react/ui/radio-group.d.ts +4 -3
  205. package/dist/react/ui/radio-group.d.ts.map +1 -1
  206. package/dist/react/ui/radio-group.js +1 -0
  207. package/dist/react/ui/radio-group.js.map +1 -1
  208. package/dist/react/ui/resizable.d.ts +7 -4
  209. package/dist/react/ui/resizable.d.ts.map +1 -1
  210. package/dist/react/ui/resizable.js +3 -0
  211. package/dist/react/ui/resizable.js.map +1 -1
  212. package/dist/react/ui/scroll-area.d.ts +5 -3
  213. package/dist/react/ui/scroll-area.d.ts.map +1 -1
  214. package/dist/react/ui/scroll-area.js +2 -0
  215. package/dist/react/ui/scroll-area.js.map +1 -1
  216. package/dist/react/ui/select.d.ts +23 -11
  217. package/dist/react/ui/select.d.ts.map +1 -1
  218. package/dist/react/ui/select.js +12 -0
  219. package/dist/react/ui/select.js.map +1 -1
  220. package/dist/react/ui/separator.d.ts +3 -2
  221. package/dist/react/ui/separator.d.ts.map +1 -1
  222. package/dist/react/ui/separator.js +1 -0
  223. package/dist/react/ui/separator.js.map +1 -1
  224. package/dist/react/ui/sheet.d.ts +17 -9
  225. package/dist/react/ui/sheet.d.ts.map +1 -1
  226. package/dist/react/ui/sheet.js +10 -0
  227. package/dist/react/ui/sheet.js.map +1 -1
  228. package/dist/react/ui/sidebar.d.ts +46 -24
  229. package/dist/react/ui/sidebar.d.ts.map +1 -1
  230. package/dist/react/ui/sidebar.js +23 -1
  231. package/dist/react/ui/sidebar.js.map +1 -1
  232. package/dist/react/ui/skeleton.d.ts +3 -2
  233. package/dist/react/ui/skeleton.d.ts.map +1 -1
  234. package/dist/react/ui/skeleton.js +1 -0
  235. package/dist/react/ui/skeleton.js.map +1 -1
  236. package/dist/react/ui/slider.d.ts +3 -2
  237. package/dist/react/ui/slider.d.ts.map +1 -1
  238. package/dist/react/ui/slider.js +1 -0
  239. package/dist/react/ui/slider.js.map +1 -1
  240. package/dist/react/ui/sonner.d.ts +3 -2
  241. package/dist/react/ui/sonner.d.ts.map +1 -1
  242. package/dist/react/ui/sonner.js +1 -0
  243. package/dist/react/ui/sonner.js.map +1 -1
  244. package/dist/react/ui/spinner.d.ts +3 -2
  245. package/dist/react/ui/spinner.d.ts.map +1 -1
  246. package/dist/react/ui/spinner.js +1 -0
  247. package/dist/react/ui/spinner.js.map +1 -1
  248. package/dist/react/ui/switch.d.ts +3 -2
  249. package/dist/react/ui/switch.d.ts.map +1 -1
  250. package/dist/react/ui/switch.js +1 -0
  251. package/dist/react/ui/switch.js.map +1 -1
  252. package/dist/react/ui/table.d.ts +10 -9
  253. package/dist/react/ui/table.d.ts.map +1 -1
  254. package/dist/react/ui/table.js +1 -0
  255. package/dist/react/ui/table.js.map +1 -1
  256. package/dist/react/ui/tabs.d.ts +9 -5
  257. package/dist/react/ui/tabs.d.ts.map +1 -1
  258. package/dist/react/ui/tabs.js +4 -0
  259. package/dist/react/ui/tabs.js.map +1 -1
  260. package/dist/react/ui/textarea.d.ts +3 -2
  261. package/dist/react/ui/textarea.d.ts.map +1 -1
  262. package/dist/react/ui/textarea.js +1 -0
  263. package/dist/react/ui/textarea.js.map +1 -1
  264. package/dist/react/ui/toggle-group.d.ts +4 -3
  265. package/dist/react/ui/toggle-group.d.ts.map +1 -1
  266. package/dist/react/ui/toggle-group.js +1 -0
  267. package/dist/react/ui/toggle-group.js.map +1 -1
  268. package/dist/react/ui/toggle.d.ts +3 -2
  269. package/dist/react/ui/toggle.d.ts.map +1 -1
  270. package/dist/react/ui/toggle.js +1 -0
  271. package/dist/react/ui/toggle.js.map +1 -1
  272. package/dist/react/ui/tooltip.d.ts +7 -5
  273. package/dist/react/ui/tooltip.d.ts.map +1 -1
  274. package/dist/react/ui/tooltip.js +2 -0
  275. package/dist/react/ui/tooltip.js.map +1 -1
  276. package/docs/docs/api/appkit/Class.AppKitError/index.html +77 -0
  277. package/docs/docs/api/appkit/Class.AppKitError.md +154 -0
  278. package/docs/docs/api/appkit/Class.AuthenticationError/index.html +110 -0
  279. package/docs/docs/api/appkit/Class.AuthenticationError.md +236 -0
  280. package/docs/docs/api/appkit/Class.ConfigurationError/index.html +112 -0
  281. package/docs/docs/api/appkit/Class.ConfigurationError.md +243 -0
  282. package/docs/docs/api/appkit/Class.ConnectionError/index.html +120 -0
  283. package/docs/docs/api/appkit/Class.ConnectionError.md +265 -0
  284. package/docs/docs/api/appkit/Class.ExecutionError/index.html +116 -0
  285. package/docs/docs/api/appkit/Class.ExecutionError.md +250 -0
  286. package/docs/docs/api/appkit/Class.InitializationError/index.html +104 -0
  287. package/docs/docs/api/appkit/Class.InitializationError.md +222 -0
  288. package/docs/docs/api/appkit/Class.Plugin/index.html +149 -0
  289. package/docs/docs/api/appkit/Class.Plugin.md +392 -0
  290. package/docs/docs/api/appkit/Class.ServerError/index.html +108 -0
  291. package/docs/docs/api/appkit/Class.ServerError.md +229 -0
  292. package/docs/docs/api/appkit/Class.TunnelError/index.html +108 -0
  293. package/docs/docs/api/appkit/Class.TunnelError.md +231 -0
  294. package/docs/docs/api/appkit/Class.ValidationError/index.html +106 -0
  295. package/docs/docs/api/appkit/Class.ValidationError.md +225 -0
  296. package/docs/docs/api/appkit/Function.appKitTypesPlugin/index.html +24 -0
  297. package/docs/docs/api/appkit/Function.appKitTypesPlugin.md +20 -0
  298. package/docs/docs/api/appkit/Function.createApp/index.html +24 -0
  299. package/docs/docs/api/appkit/Function.createApp.md +31 -0
  300. package/docs/docs/api/appkit/Function.isSQLTypeMarker/index.html +25 -0
  301. package/docs/docs/api/appkit/Function.isSQLTypeMarker.md +32 -0
  302. package/docs/docs/api/appkit/Interface.BasePluginConfig/index.html +28 -0
  303. package/docs/docs/api/appkit/Interface.BasePluginConfig.md +37 -0
  304. package/docs/docs/api/appkit/Interface.CacheConfig/index.html +63 -0
  305. package/docs/docs/api/appkit/Interface.CacheConfig.md +131 -0
  306. package/docs/docs/api/appkit/Interface.ITelemetry/index.html +73 -0
  307. package/docs/docs/api/appkit/Interface.ITelemetry.md +144 -0
  308. package/docs/docs/api/appkit/Interface.StreamExecutionSettings/index.html +26 -0
  309. package/docs/docs/api/appkit/Interface.StreamExecutionSettings.md +30 -0
  310. package/docs/docs/api/appkit/Interface.TelemetryConfig/index.html +32 -0
  311. package/docs/docs/api/appkit/Interface.TelemetryConfig.md +48 -0
  312. package/docs/docs/api/appkit/TypeAlias.IAppRouter/index.html +18 -0
  313. package/docs/docs/api/appkit/TypeAlias.IAppRouter.md +8 -0
  314. package/docs/docs/api/appkit/Variable.sql/index.html +98 -0
  315. package/docs/docs/api/appkit/Variable.sql.md +260 -0
  316. package/docs/docs/api/appkit/index.html +28 -0
  317. package/docs/docs/api/appkit-ui/data/AreaChart/index.html +29 -0
  318. package/docs/docs/api/appkit-ui/data/AreaChart.md +79 -0
  319. package/docs/docs/api/appkit-ui/data/BarChart/index.html +29 -0
  320. package/docs/docs/api/appkit-ui/data/BarChart.md +74 -0
  321. package/docs/docs/api/appkit-ui/data/DataTable/index.html +36 -0
  322. package/docs/docs/api/appkit-ui/data/DataTable.md +69 -0
  323. package/docs/docs/api/appkit-ui/data/DonutChart/index.html +29 -0
  324. package/docs/docs/api/appkit-ui/data/DonutChart.md +72 -0
  325. package/docs/docs/api/appkit-ui/data/HeatmapChart/index.html +35 -0
  326. package/docs/docs/api/appkit-ui/data/HeatmapChart.md +91 -0
  327. package/docs/docs/api/appkit-ui/data/LineChart/index.html +29 -0
  328. package/docs/docs/api/appkit-ui/data/LineChart.md +77 -0
  329. package/docs/docs/api/appkit-ui/data/PieChart/index.html +29 -0
  330. package/docs/docs/api/appkit-ui/data/PieChart.md +72 -0
  331. package/docs/docs/api/appkit-ui/data/RadarChart/index.html +29 -0
  332. package/docs/docs/api/appkit-ui/data/RadarChart.md +74 -0
  333. package/docs/docs/api/appkit-ui/data/ScatterChart/index.html +29 -0
  334. package/docs/docs/api/appkit-ui/data/ScatterChart.md +76 -0
  335. package/docs/docs/api/appkit-ui/index.html +23 -0
  336. package/docs/docs/api/appkit-ui/styling/index.html +74 -0
  337. package/docs/docs/api/appkit-ui/styling.md +81 -0
  338. package/docs/docs/api/appkit-ui/ui/Accordion/index.html +48 -0
  339. package/docs/docs/api/appkit-ui/ui/Accordion.md +139 -0
  340. package/docs/docs/api/appkit-ui/ui/Alert/index.html +41 -0
  341. package/docs/docs/api/appkit-ui/ui/Alert.md +89 -0
  342. package/docs/docs/api/appkit-ui/ui/AlertDialog/index.html +97 -0
  343. package/docs/docs/api/appkit-ui/ui/AlertDialog.md +282 -0
  344. package/docs/docs/api/appkit-ui/ui/AspectRatio/index.html +27 -0
  345. package/docs/docs/api/appkit-ui/ui/AspectRatio.md +46 -0
  346. package/docs/docs/api/appkit-ui/ui/Avatar/index.html +41 -0
  347. package/docs/docs/api/appkit-ui/ui/Avatar.md +90 -0
  348. package/docs/docs/api/appkit-ui/ui/Badge/index.html +27 -0
  349. package/docs/docs/api/appkit-ui/ui/Badge.md +38 -0
  350. package/docs/docs/api/appkit-ui/ui/Breadcrumb/index.html +69 -0
  351. package/docs/docs/api/appkit-ui/ui/Breadcrumb.md +193 -0
  352. package/docs/docs/api/appkit-ui/ui/Button/index.html +27 -0
  353. package/docs/docs/api/appkit-ui/ui/Button.md +39 -0
  354. package/docs/docs/api/appkit-ui/ui/ButtonGroup/index.html +38 -0
  355. package/docs/docs/api/appkit-ui/ui/ButtonGroup.md +68 -0
  356. package/docs/docs/api/appkit-ui/ui/Calendar/index.html +34 -0
  357. package/docs/docs/api/appkit-ui/ui/Calendar.md +154 -0
  358. package/docs/docs/api/appkit-ui/ui/Card/index.html +69 -0
  359. package/docs/docs/api/appkit-ui/ui/Card.md +222 -0
  360. package/docs/docs/api/appkit-ui/ui/Carousel/index.html +55 -0
  361. package/docs/docs/api/appkit-ui/ui/Carousel.md +152 -0
  362. package/docs/docs/api/appkit-ui/ui/ChartContainer/index.html +58 -0
  363. package/docs/docs/api/appkit-ui/ui/ChartContainer.md +343 -0
  364. package/docs/docs/api/appkit-ui/ui/Checkbox/index.html +27 -0
  365. package/docs/docs/api/appkit-ui/ui/Checkbox.md +53 -0
  366. package/docs/docs/api/appkit-ui/ui/Collapsible/index.html +41 -0
  367. package/docs/docs/api/appkit-ui/ui/Collapsible.md +125 -0
  368. package/docs/docs/api/appkit-ui/ui/Command/index.html +83 -0
  369. package/docs/docs/api/appkit-ui/ui/Command.md +287 -0
  370. package/docs/docs/api/appkit-ui/ui/ContextMenu/index.html +111 -0
  371. package/docs/docs/api/appkit-ui/ui/ContextMenu.md +419 -0
  372. package/docs/docs/api/appkit-ui/ui/Dialog/index.html +90 -0
  373. package/docs/docs/api/appkit-ui/ui/Dialog.md +285 -0
  374. package/docs/docs/api/appkit-ui/ui/Drawer/index.html +90 -0
  375. package/docs/docs/api/appkit-ui/ui/Drawer.md +387 -0
  376. package/docs/docs/api/appkit-ui/ui/DropdownMenu/index.html +111 -0
  377. package/docs/docs/api/appkit-ui/ui/DropdownMenu.md +478 -0
  378. package/docs/docs/api/appkit-ui/ui/Empty/index.html +54 -0
  379. package/docs/docs/api/appkit-ui/ui/Empty.md +109 -0
  380. package/docs/docs/api/appkit-ui/ui/Field/index.html +87 -0
  381. package/docs/docs/api/appkit-ui/ui/Field.md +201 -0
  382. package/docs/docs/api/appkit-ui/ui/FormControl/index.html +59 -0
  383. package/docs/docs/api/appkit-ui/ui/FormControl.md +128 -0
  384. package/docs/docs/api/appkit-ui/ui/HoverCard/index.html +39 -0
  385. package/docs/docs/api/appkit-ui/ui/HoverCard.md +131 -0
  386. package/docs/docs/api/appkit-ui/ui/Input/index.html +27 -0
  387. package/docs/docs/api/appkit-ui/ui/Input.md +35 -0
  388. package/docs/docs/api/appkit-ui/ui/InputGroup/index.html +59 -0
  389. package/docs/docs/api/appkit-ui/ui/InputGroup.md +123 -0
  390. package/docs/docs/api/appkit-ui/ui/InputOTP/index.html +48 -0
  391. package/docs/docs/api/appkit-ui/ui/InputOTP.md +124 -0
  392. package/docs/docs/api/appkit-ui/ui/Item/index.html +78 -0
  393. package/docs/docs/api/appkit-ui/ui/Item.md +185 -0
  394. package/docs/docs/api/appkit-ui/ui/Kbd/index.html +30 -0
  395. package/docs/docs/api/appkit-ui/ui/Kbd.md +39 -0
  396. package/docs/docs/api/appkit-ui/ui/Label/index.html +27 -0
  397. package/docs/docs/api/appkit-ui/ui/Label.md +44 -0
  398. package/docs/docs/api/appkit-ui/ui/Menubar/index.html +117 -0
  399. package/docs/docs/api/appkit-ui/ui/Menubar.md +484 -0
  400. package/docs/docs/api/appkit-ui/ui/NavigationMenu/index.html +76 -0
  401. package/docs/docs/api/appkit-ui/ui/NavigationMenu.md +338 -0
  402. package/docs/docs/api/appkit-ui/ui/Pagination/index.html +69 -0
  403. package/docs/docs/api/appkit-ui/ui/Pagination.md +191 -0
  404. package/docs/docs/api/appkit-ui/ui/Popover/index.html +45 -0
  405. package/docs/docs/api/appkit-ui/ui/Popover.md +173 -0
  406. package/docs/docs/api/appkit-ui/ui/Progress/index.html +27 -0
  407. package/docs/docs/api/appkit-ui/ui/Progress.md +51 -0
  408. package/docs/docs/api/appkit-ui/ui/RadioGroup/index.html +33 -0
  409. package/docs/docs/api/appkit-ui/ui/RadioGroup.md +83 -0
  410. package/docs/docs/api/appkit-ui/ui/ResizableHandle/index.html +41 -0
  411. package/docs/docs/api/appkit-ui/ui/ResizableHandle.md +136 -0
  412. package/docs/docs/api/appkit-ui/ui/ScrollArea/index.html +34 -0
  413. package/docs/docs/api/appkit-ui/ui/ScrollArea.md +83 -0
  414. package/docs/docs/api/appkit-ui/ui/Select/index.html +82 -0
  415. package/docs/docs/api/appkit-ui/ui/Select.md +267 -0
  416. package/docs/docs/api/appkit-ui/ui/Separator/index.html +27 -0
  417. package/docs/docs/api/appkit-ui/ui/Separator.md +56 -0
  418. package/docs/docs/api/appkit-ui/ui/Sheet/index.html +76 -0
  419. package/docs/docs/api/appkit-ui/ui/Sheet.md +236 -0
  420. package/docs/docs/api/appkit-ui/ui/Sidebar/index.html +183 -0
  421. package/docs/docs/api/appkit-ui/ui/Sidebar.md +490 -0
  422. package/docs/docs/api/appkit-ui/ui/Skeleton/index.html +27 -0
  423. package/docs/docs/api/appkit-ui/ui/Skeleton.md +43 -0
  424. package/docs/docs/api/appkit-ui/ui/Slider/index.html +27 -0
  425. package/docs/docs/api/appkit-ui/ui/Slider.md +61 -0
  426. package/docs/docs/api/appkit-ui/ui/Spinner/index.html +24 -0
  427. package/docs/docs/api/appkit-ui/ui/Spinner.md +22 -0
  428. package/docs/docs/api/appkit-ui/ui/Switch/index.html +27 -0
  429. package/docs/docs/api/appkit-ui/ui/Switch.md +46 -0
  430. package/docs/docs/api/appkit-ui/ui/Table/index.html +69 -0
  431. package/docs/docs/api/appkit-ui/ui/Table.md +236 -0
  432. package/docs/docs/api/appkit-ui/ui/Tabs/index.html +48 -0
  433. package/docs/docs/api/appkit-ui/ui/Tabs.md +177 -0
  434. package/docs/docs/api/appkit-ui/ui/Textarea/index.html +27 -0
  435. package/docs/docs/api/appkit-ui/ui/Textarea.md +35 -0
  436. package/docs/docs/api/appkit-ui/ui/Toaster/index.html +27 -0
  437. package/docs/docs/api/appkit-ui/ui/Toaster.md +75 -0
  438. package/docs/docs/api/appkit-ui/ui/Toggle/index.html +27 -0
  439. package/docs/docs/api/appkit-ui/ui/Toggle.md +48 -0
  440. package/docs/docs/api/appkit-ui/ui/ToggleGroup/index.html +33 -0
  441. package/docs/docs/api/appkit-ui/ui/ToggleGroup.md +88 -0
  442. package/docs/docs/api/appkit-ui/ui/Tooltip/index.html +46 -0
  443. package/docs/docs/api/appkit-ui/ui/Tooltip.md +134 -0
  444. package/docs/docs/api/appkit-ui.md +15 -0
  445. package/docs/docs/api/appkit.md +48 -0
  446. package/docs/docs/api/index.html +28 -0
  447. package/docs/docs/api.md +24 -0
  448. package/docs/docs/app-management/index.html +106 -0
  449. package/docs/docs/app-management.md +171 -0
  450. package/docs/docs/architecture/index.html +71 -0
  451. package/docs/docs/architecture.md +69 -0
  452. package/docs/docs/category/development/index.html +16 -0
  453. package/docs/docs/category/development.md +3 -0
  454. package/docs/docs/configuration/index.html +66 -0
  455. package/docs/docs/configuration.md +150 -0
  456. package/docs/docs/core-principles/index.html +38 -0
  457. package/docs/docs/core-principles.md +31 -0
  458. package/docs/docs/development/index.html +34 -0
  459. package/docs/docs/development/llm-guide/index.html +74 -0
  460. package/docs/docs/development/llm-guide.md +74 -0
  461. package/docs/docs/development/local-development/index.html +27 -0
  462. package/docs/docs/development/local-development.md +20 -0
  463. package/docs/docs/development/project-setup/index.html +69 -0
  464. package/docs/docs/development/project-setup.md +246 -0
  465. package/docs/docs/development/remote-bridge/index.html +76 -0
  466. package/docs/docs/development/remote-bridge.md +80 -0
  467. package/docs/docs/development/type-generation/index.html +65 -0
  468. package/docs/docs/development/type-generation.md +110 -0
  469. package/docs/docs/development.md +21 -0
  470. package/docs/docs/index.html +58 -0
  471. package/docs/docs/plugins/index.html +151 -0
  472. package/docs/docs/plugins.md +313 -0
  473. package/docs/docs.md +64 -0
  474. package/llms.txt +121 -1231
  475. package/package.json +7 -5
  476. package/scripts/postinstall.js +1 -1
  477. package/AGENTS.md +0 -1234
  478. package/bin/setup-claude.js +0 -190
@@ -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_runtime231 from "react/jsx-runtime";
6
+ import * as react_jsx_runtime242 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
 
@@ -17,6 +17,7 @@ type SidebarContextProps = {
17
17
  isMobile: boolean;
18
18
  toggleSidebar: () => void;
19
19
  };
20
+ /** Hook to access sidebar state and controls */
20
21
  declare function useSidebar(): SidebarContextProps;
21
22
  declare function SidebarProvider({
22
23
  defaultOpen,
@@ -30,7 +31,8 @@ declare function SidebarProvider({
30
31
  defaultOpen?: boolean;
31
32
  open?: boolean;
32
33
  onOpenChange?: (open: boolean) => void;
33
- }): react_jsx_runtime231.JSX.Element;
34
+ }): react_jsx_runtime242.JSX.Element;
35
+ /** Collapsible navigation sidebar with mobile support */
34
36
  declare function Sidebar({
35
37
  side,
36
38
  variant,
@@ -42,70 +44,84 @@ declare function Sidebar({
42
44
  side?: "left" | "right";
43
45
  variant?: "sidebar" | "floating" | "inset";
44
46
  collapsible?: "offcanvas" | "icon" | "none";
45
- }): react_jsx_runtime231.JSX.Element;
47
+ }): react_jsx_runtime242.JSX.Element;
48
+ /** Button that toggles the sidebar open and closed */
46
49
  declare function SidebarTrigger({
47
50
  className,
48
51
  onClick,
49
52
  ...props
50
- }: React$1.ComponentProps<typeof Button>): react_jsx_runtime231.JSX.Element;
53
+ }: React$1.ComponentProps<typeof Button>): react_jsx_runtime242.JSX.Element;
54
+ /** Clickable rail element for toggling sidebar visibility */
51
55
  declare function SidebarRail({
52
56
  className,
53
57
  ...props
54
- }: React$1.ComponentProps<"button">): react_jsx_runtime231.JSX.Element;
58
+ }: React$1.ComponentProps<"button">): react_jsx_runtime242.JSX.Element;
59
+ /** Main content area that adapts to sidebar state */
55
60
  declare function SidebarInset({
56
61
  className,
57
62
  ...props
58
- }: React$1.ComponentProps<"main">): react_jsx_runtime231.JSX.Element;
63
+ }: React$1.ComponentProps<"main">): react_jsx_runtime242.JSX.Element;
64
+ /** Input field styled for use within the sidebar */
59
65
  declare function SidebarInput({
60
66
  className,
61
67
  ...props
62
- }: React$1.ComponentProps<typeof Input>): react_jsx_runtime231.JSX.Element;
68
+ }: React$1.ComponentProps<typeof Input>): react_jsx_runtime242.JSX.Element;
69
+ /** Header section at the top of the sidebar */
63
70
  declare function SidebarHeader({
64
71
  className,
65
72
  ...props
66
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
73
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
74
+ /** Footer section at the bottom of the sidebar */
67
75
  declare function SidebarFooter({
68
76
  className,
69
77
  ...props
70
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
78
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
79
+ /** Visual separator between sidebar sections */
71
80
  declare function SidebarSeparator({
72
81
  className,
73
82
  ...props
74
- }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime231.JSX.Element;
83
+ }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime242.JSX.Element;
84
+ /** Scrollable content area within the sidebar */
75
85
  declare function SidebarContent({
76
86
  className,
77
87
  ...props
78
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
88
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
89
+ /** Container for grouping related sidebar items */
79
90
  declare function SidebarGroup({
80
91
  className,
81
92
  ...props
82
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
93
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
94
+ /** Label heading for a sidebar group */
83
95
  declare function SidebarGroupLabel({
84
96
  className,
85
97
  asChild,
86
98
  ...props
87
99
  }: React$1.ComponentProps<"div"> & {
88
100
  asChild?: boolean;
89
- }): react_jsx_runtime231.JSX.Element;
101
+ }): react_jsx_runtime242.JSX.Element;
102
+ /** Action button displayed next to a sidebar group label */
90
103
  declare function SidebarGroupAction({
91
104
  className,
92
105
  asChild,
93
106
  ...props
94
107
  }: React$1.ComponentProps<"button"> & {
95
108
  asChild?: boolean;
96
- }): react_jsx_runtime231.JSX.Element;
109
+ }): react_jsx_runtime242.JSX.Element;
110
+ /** Content container for sidebar group items */
97
111
  declare function SidebarGroupContent({
98
112
  className,
99
113
  ...props
100
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
114
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
115
+ /** Navigation menu list within the sidebar */
101
116
  declare function SidebarMenu({
102
117
  className,
103
118
  ...props
104
- }: React$1.ComponentProps<"ul">): react_jsx_runtime231.JSX.Element;
119
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime242.JSX.Element;
120
+ /** Individual menu item within the sidebar */
105
121
  declare function SidebarMenuItem({
106
122
  className,
107
123
  ...props
108
- }: React$1.ComponentProps<"li">): react_jsx_runtime231.JSX.Element;
124
+ }: React$1.ComponentProps<"li">): react_jsx_runtime242.JSX.Element;
109
125
  declare const sidebarMenuButtonVariants: (props?: ({
110
126
  variant?: "default" | "outline" | null | undefined;
111
127
  size?: "default" | "sm" | "lg" | null | undefined;
@@ -122,7 +138,8 @@ declare function SidebarMenuButton({
122
138
  asChild?: boolean;
123
139
  isActive?: boolean;
124
140
  tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
125
- } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime231.JSX.Element;
141
+ } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime242.JSX.Element;
142
+ /** Action button displayed alongside a menu item */
126
143
  declare function SidebarMenuAction({
127
144
  className,
128
145
  asChild,
@@ -131,26 +148,31 @@ declare function SidebarMenuAction({
131
148
  }: React$1.ComponentProps<"button"> & {
132
149
  asChild?: boolean;
133
150
  showOnHover?: boolean;
134
- }): react_jsx_runtime231.JSX.Element;
151
+ }): react_jsx_runtime242.JSX.Element;
152
+ /** Badge for displaying counts or status on menu items */
135
153
  declare function SidebarMenuBadge({
136
154
  className,
137
155
  ...props
138
- }: React$1.ComponentProps<"div">): react_jsx_runtime231.JSX.Element;
156
+ }: React$1.ComponentProps<"div">): react_jsx_runtime242.JSX.Element;
157
+ /** Loading skeleton placeholder for menu items */
139
158
  declare function SidebarMenuSkeleton({
140
159
  className,
141
160
  showIcon,
142
161
  ...props
143
162
  }: React$1.ComponentProps<"div"> & {
144
163
  showIcon?: boolean;
145
- }): react_jsx_runtime231.JSX.Element;
164
+ }): react_jsx_runtime242.JSX.Element;
165
+ /** Submenu list for nested navigation items */
146
166
  declare function SidebarMenuSub({
147
167
  className,
148
168
  ...props
149
- }: React$1.ComponentProps<"ul">): react_jsx_runtime231.JSX.Element;
169
+ }: React$1.ComponentProps<"ul">): react_jsx_runtime242.JSX.Element;
170
+ /** Individual item within a sidebar submenu */
150
171
  declare function SidebarMenuSubItem({
151
172
  className,
152
173
  ...props
153
- }: React$1.ComponentProps<"li">): react_jsx_runtime231.JSX.Element;
174
+ }: React$1.ComponentProps<"li">): react_jsx_runtime242.JSX.Element;
175
+ /** Button for submenu items */
154
176
  declare function SidebarMenuSubButton({
155
177
  asChild,
156
178
  size,
@@ -161,7 +183,7 @@ declare function SidebarMenuSubButton({
161
183
  asChild?: boolean;
162
184
  size?: "sm" | "md";
163
185
  isActive?: boolean;
164
- }): react_jsx_runtime231.JSX.Element;
186
+ }): react_jsx_runtime242.JSX.Element;
165
187
  //#endregion
166
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 };
167
189
  //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/react/ui/sidebar.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/react/ui/sidebar.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -22,6 +22,7 @@ const SIDEBAR_WIDTH_MOBILE = "18rem";
22
22
  const SIDEBAR_WIDTH_ICON = "3rem";
23
23
  const SIDEBAR_KEYBOARD_SHORTCUT = "b";
24
24
  const SidebarContext = React$1.createContext(null);
25
+ /** Hook to access sidebar state and controls */
25
26
  function useSidebar() {
26
27
  const context = React$1.useContext(SidebarContext);
27
28
  if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
@@ -39,7 +40,7 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
39
40
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
40
41
  }, [setOpenProp, open]);
41
42
  const toggleSidebar = React$1.useCallback(() => {
42
- return isMobile ? setOpenMobile((open$1) => !open$1) : setOpen((open$1) => !open$1);
43
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);
43
44
  }, [
44
45
  isMobile,
45
46
  setOpen,
@@ -91,6 +92,7 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
91
92
  })
92
93
  });
93
94
  }
95
+ /** Collapsible navigation sidebar with mobile support */
94
96
  function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }) {
95
97
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
96
98
  if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
@@ -142,6 +144,7 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
142
144
  })]
143
145
  });
144
146
  }
147
+ /** Button that toggles the sidebar open and closed */
145
148
  function SidebarTrigger({ className, onClick, ...props }) {
146
149
  const { toggleSidebar } = useSidebar();
147
150
  return /* @__PURE__ */ jsxs(Button, {
@@ -161,6 +164,7 @@ function SidebarTrigger({ className, onClick, ...props }) {
161
164
  })]
162
165
  });
163
166
  }
167
+ /** Clickable rail element for toggling sidebar visibility */
164
168
  function SidebarRail({ className, ...props }) {
165
169
  const { toggleSidebar } = useSidebar();
166
170
  return /* @__PURE__ */ jsx("button", {
@@ -174,6 +178,7 @@ function SidebarRail({ className, ...props }) {
174
178
  ...props
175
179
  });
176
180
  }
181
+ /** Main content area that adapts to sidebar state */
177
182
  function SidebarInset({ className, ...props }) {
178
183
  return /* @__PURE__ */ jsx("main", {
179
184
  "data-slot": "sidebar-inset",
@@ -181,6 +186,7 @@ function SidebarInset({ className, ...props }) {
181
186
  ...props
182
187
  });
183
188
  }
189
+ /** Input field styled for use within the sidebar */
184
190
  function SidebarInput({ className, ...props }) {
185
191
  return /* @__PURE__ */ jsx(Input, {
186
192
  "data-slot": "sidebar-input",
@@ -189,6 +195,7 @@ function SidebarInput({ className, ...props }) {
189
195
  ...props
190
196
  });
191
197
  }
198
+ /** Header section at the top of the sidebar */
192
199
  function SidebarHeader({ className, ...props }) {
193
200
  return /* @__PURE__ */ jsx("div", {
194
201
  "data-slot": "sidebar-header",
@@ -197,6 +204,7 @@ function SidebarHeader({ className, ...props }) {
197
204
  ...props
198
205
  });
199
206
  }
207
+ /** Footer section at the bottom of the sidebar */
200
208
  function SidebarFooter({ className, ...props }) {
201
209
  return /* @__PURE__ */ jsx("div", {
202
210
  "data-slot": "sidebar-footer",
@@ -205,6 +213,7 @@ function SidebarFooter({ className, ...props }) {
205
213
  ...props
206
214
  });
207
215
  }
216
+ /** Visual separator between sidebar sections */
208
217
  function SidebarSeparator({ className, ...props }) {
209
218
  return /* @__PURE__ */ jsx(Separator, {
210
219
  "data-slot": "sidebar-separator",
@@ -213,6 +222,7 @@ function SidebarSeparator({ className, ...props }) {
213
222
  ...props
214
223
  });
215
224
  }
225
+ /** Scrollable content area within the sidebar */
216
226
  function SidebarContent({ className, ...props }) {
217
227
  return /* @__PURE__ */ jsx("div", {
218
228
  "data-slot": "sidebar-content",
@@ -221,6 +231,7 @@ function SidebarContent({ className, ...props }) {
221
231
  ...props
222
232
  });
223
233
  }
234
+ /** Container for grouping related sidebar items */
224
235
  function SidebarGroup({ className, ...props }) {
225
236
  return /* @__PURE__ */ jsx("div", {
226
237
  "data-slot": "sidebar-group",
@@ -229,6 +240,7 @@ function SidebarGroup({ className, ...props }) {
229
240
  ...props
230
241
  });
231
242
  }
243
+ /** Label heading for a sidebar group */
232
244
  function SidebarGroupLabel({ className, asChild = false, ...props }) {
233
245
  return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
234
246
  "data-slot": "sidebar-group-label",
@@ -237,6 +249,7 @@ function SidebarGroupLabel({ className, asChild = false, ...props }) {
237
249
  ...props
238
250
  });
239
251
  }
252
+ /** Action button displayed next to a sidebar group label */
240
253
  function SidebarGroupAction({ className, asChild = false, ...props }) {
241
254
  return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
242
255
  "data-slot": "sidebar-group-action",
@@ -245,6 +258,7 @@ function SidebarGroupAction({ className, asChild = false, ...props }) {
245
258
  ...props
246
259
  });
247
260
  }
261
+ /** Content container for sidebar group items */
248
262
  function SidebarGroupContent({ className, ...props }) {
249
263
  return /* @__PURE__ */ jsx("div", {
250
264
  "data-slot": "sidebar-group-content",
@@ -253,6 +267,7 @@ function SidebarGroupContent({ className, ...props }) {
253
267
  ...props
254
268
  });
255
269
  }
270
+ /** Navigation menu list within the sidebar */
256
271
  function SidebarMenu({ className, ...props }) {
257
272
  return /* @__PURE__ */ jsx("ul", {
258
273
  "data-slot": "sidebar-menu",
@@ -261,6 +276,7 @@ function SidebarMenu({ className, ...props }) {
261
276
  ...props
262
277
  });
263
278
  }
279
+ /** Individual menu item within the sidebar */
264
280
  function SidebarMenuItem({ className, ...props }) {
265
281
  return /* @__PURE__ */ jsx("li", {
266
282
  "data-slot": "sidebar-menu-item",
@@ -312,6 +328,7 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
312
328
  ...tooltip
313
329
  })] });
314
330
  }
331
+ /** Action button displayed alongside a menu item */
315
332
  function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }) {
316
333
  return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
317
334
  "data-slot": "sidebar-menu-action",
@@ -320,6 +337,7 @@ function SidebarMenuAction({ className, asChild = false, showOnHover = false, ..
320
337
  ...props
321
338
  });
322
339
  }
340
+ /** Badge for displaying counts or status on menu items */
323
341
  function SidebarMenuBadge({ className, ...props }) {
324
342
  return /* @__PURE__ */ jsx("div", {
325
343
  "data-slot": "sidebar-menu-badge",
@@ -328,6 +346,7 @@ function SidebarMenuBadge({ className, ...props }) {
328
346
  ...props
329
347
  });
330
348
  }
349
+ /** Loading skeleton placeholder for menu items */
331
350
  function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
332
351
  const width = React$1.useMemo(() => {
333
352
  return `${Math.floor(Math.random() * 40) + 50}%`;
@@ -347,6 +366,7 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
347
366
  })]
348
367
  });
349
368
  }
369
+ /** Submenu list for nested navigation items */
350
370
  function SidebarMenuSub({ className, ...props }) {
351
371
  return /* @__PURE__ */ jsx("ul", {
352
372
  "data-slot": "sidebar-menu-sub",
@@ -355,6 +375,7 @@ function SidebarMenuSub({ className, ...props }) {
355
375
  ...props
356
376
  });
357
377
  }
378
+ /** Individual item within a sidebar submenu */
358
379
  function SidebarMenuSubItem({ className, ...props }) {
359
380
  return /* @__PURE__ */ jsx("li", {
360
381
  "data-slot": "sidebar-menu-sub-item",
@@ -363,6 +384,7 @@ function SidebarMenuSubItem({ className, ...props }) {
363
384
  ...props
364
385
  });
365
386
  }
387
+ /** Button for submenu items */
366
388
  function SidebarMenuSubButton({ asChild = false, size = "md", isActive = false, className, ...props }) {
367
389
  return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
368
390
  "data-slot": "sidebar-menu-sub-button",
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":["React","open"],"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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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
+ {"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,10 +1,11 @@
1
- import * as react_jsx_runtime254 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime265 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/skeleton.d.ts
4
+ /** Loading placeholder with pulsing animation */
4
5
  declare function Skeleton({
5
6
  className,
6
7
  ...props
7
- }: React.ComponentProps<"div">): react_jsx_runtime254.JSX.Element;
8
+ }: React.ComponentProps<"div">): react_jsx_runtime265.JSX.Element;
8
9
  //#endregion
9
10
  export { Skeleton };
10
11
  //# sourceMappingURL=skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../../src/react/ui/skeleton.tsx"],"sourcesContent":[],"mappings":";;;iBAES,QAAA;;;GAAkC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../../src/react/ui/skeleton.tsx"],"sourcesContent":[],"mappings":";;;;iBAGS,QAAA;;;GAAkC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA"}
@@ -2,6 +2,7 @@ import { cn } from "../lib/utils.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/skeleton.tsx
5
+ /** Loading placeholder with pulsing animation */
5
6
  function Skeleton({ className, ...props }) {
6
7
  return /* @__PURE__ */ jsx("div", {
7
8
  "data-slot": "skeleton",
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","names":[],"sources":["../../../src/react/ui/skeleton.tsx"],"sourcesContent":["import { cn } from \"../lib/utils\";\n\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":";;;;AAEA,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;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ"}
@@ -1,8 +1,9 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime255 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime266 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
6
+ /** Draggable input for selecting numeric values within a range */
6
7
  declare function Slider({
7
8
  className,
8
9
  defaultValue,
@@ -10,7 +11,7 @@ declare function Slider({
10
11
  min,
11
12
  max,
12
13
  ...props
13
- }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime255.JSX.Element;
14
+ }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime266.JSX.Element;
14
15
  //#endregion
15
16
  export { Slider };
16
17
  //# sourceMappingURL=slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","names":[],"sources":["../../../src/react/ui/slider.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOS,MAAA;;;;;;;GAON,OAAA,CAAM,sBAAsB,eAAA,CAAgB,QAAK,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"slider.d.ts","names":[],"sources":["../../../src/react/ui/slider.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,MAAA;;;;;;;GAON,OAAA,CAAM,sBAAsB,eAAA,CAAgB,QAAK,oBAAA,CAAA,GAAA,CAAA"}
@@ -6,6 +6,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import * as SliderPrimitive from "@radix-ui/react-slider";
7
7
 
8
8
  //#region src/react/ui/slider.tsx
9
+ /** Draggable input for selecting numeric values within a range */
9
10
  function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
10
11
  const _values = React$1.useMemo(() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max], [
11
12
  value,
@@ -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\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":";;;;;;;;AAOA,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;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"}