@databricks/appkit-ui 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/CLAUDE.md +121 -1228
  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 +6 -17
  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 +5 -26
  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/create-chart.js +1 -2
  28. package/dist/react/charts/create-chart.js.map +1 -1
  29. package/dist/react/charts/heatmap/index.d.ts +7 -22
  30. package/dist/react/charts/heatmap/index.d.ts.map +1 -1
  31. package/dist/react/charts/heatmap/index.js +6 -22
  32. package/dist/react/charts/heatmap/index.js.map +1 -1
  33. package/dist/react/charts/line/index.d.ts +6 -18
  34. package/dist/react/charts/line/index.d.ts.map +1 -1
  35. package/dist/react/charts/line/index.js +5 -18
  36. package/dist/react/charts/line/index.js.map +1 -1
  37. package/dist/react/charts/normalize.js +16 -16
  38. package/dist/react/charts/normalize.js.map +1 -1
  39. package/dist/react/charts/pie/index.d.ts +10 -32
  40. package/dist/react/charts/pie/index.d.ts.map +1 -1
  41. package/dist/react/charts/pie/index.js +9 -32
  42. package/dist/react/charts/pie/index.js.map +1 -1
  43. package/dist/react/charts/radar/index.d.ts +6 -16
  44. package/dist/react/charts/radar/index.d.ts.map +1 -1
  45. package/dist/react/charts/radar/index.js +5 -16
  46. package/dist/react/charts/radar/index.js.map +1 -1
  47. package/dist/react/charts/scatter/index.d.ts +6 -16
  48. package/dist/react/charts/scatter/index.d.ts.map +1 -1
  49. package/dist/react/charts/scatter/index.js +5 -16
  50. package/dist/react/charts/scatter/index.js.map +1 -1
  51. package/dist/react/charts/types.d.ts +0 -5
  52. package/dist/react/charts/types.d.ts.map +1 -1
  53. package/dist/react/charts/types.js.map +1 -1
  54. package/dist/react/charts/wrapper.d.ts +0 -2
  55. package/dist/react/charts/wrapper.d.ts.map +1 -1
  56. package/dist/react/charts/wrapper.js +2 -4
  57. package/dist/react/charts/wrapper.js.map +1 -1
  58. package/dist/react/hooks/types.d.ts +0 -2
  59. package/dist/react/hooks/types.d.ts.map +1 -1
  60. package/dist/react/hooks/use-analytics-query.d.ts +4 -0
  61. package/dist/react/hooks/use-analytics-query.d.ts.map +1 -1
  62. package/dist/react/hooks/use-analytics-query.js +17 -14
  63. package/dist/react/hooks/use-analytics-query.js.map +1 -1
  64. package/dist/react/hooks/use-chart-data.d.ts +0 -2
  65. package/dist/react/hooks/use-chart-data.d.ts.map +1 -1
  66. package/dist/react/hooks/use-chart-data.js +2 -3
  67. package/dist/react/hooks/use-chart-data.js.map +1 -1
  68. package/dist/react/table/data-table.d.ts +4 -1
  69. package/dist/react/table/data-table.d.ts.map +1 -1
  70. package/dist/react/table/data-table.js +4 -1
  71. package/dist/react/table/data-table.js.map +1 -1
  72. package/dist/react/table/table-wrapper.js +5 -6
  73. package/dist/react/table/table-wrapper.js.map +1 -1
  74. package/dist/react/table/types.d.ts.map +1 -1
  75. package/dist/react/ui/accordion.d.ts +9 -5
  76. package/dist/react/ui/accordion.d.ts.map +1 -1
  77. package/dist/react/ui/accordion.js +4 -0
  78. package/dist/react/ui/accordion.js.map +1 -1
  79. package/dist/react/ui/alert-dialog.d.ts +23 -12
  80. package/dist/react/ui/alert-dialog.d.ts.map +1 -1
  81. package/dist/react/ui/alert-dialog.js +11 -0
  82. package/dist/react/ui/alert-dialog.js.map +1 -1
  83. package/dist/react/ui/alert.d.ts +7 -4
  84. package/dist/react/ui/alert.d.ts.map +1 -1
  85. package/dist/react/ui/alert.js +3 -0
  86. package/dist/react/ui/alert.js.map +1 -1
  87. package/dist/react/ui/aspect-ratio.d.ts +3 -2
  88. package/dist/react/ui/aspect-ratio.d.ts.map +1 -1
  89. package/dist/react/ui/aspect-ratio.js +1 -0
  90. package/dist/react/ui/aspect-ratio.js.map +1 -1
  91. package/dist/react/ui/avatar.d.ts +7 -4
  92. package/dist/react/ui/avatar.d.ts.map +1 -1
  93. package/dist/react/ui/avatar.js +3 -0
  94. package/dist/react/ui/avatar.js.map +1 -1
  95. package/dist/react/ui/badge.d.ts +5 -4
  96. package/dist/react/ui/badge.d.ts.map +1 -1
  97. package/dist/react/ui/badge.js +1 -0
  98. package/dist/react/ui/badge.js.map +1 -1
  99. package/dist/react/ui/breadcrumb.d.ts +15 -8
  100. package/dist/react/ui/breadcrumb.d.ts.map +1 -1
  101. package/dist/react/ui/breadcrumb.js +7 -0
  102. package/dist/react/ui/breadcrumb.js.map +1 -1
  103. package/dist/react/ui/button-group.d.ts +9 -6
  104. package/dist/react/ui/button-group.d.ts.map +1 -1
  105. package/dist/react/ui/button-group.js +3 -0
  106. package/dist/react/ui/button-group.js.map +1 -1
  107. package/dist/react/ui/button.d.ts +5 -4
  108. package/dist/react/ui/button.d.ts.map +1 -1
  109. package/dist/react/ui/button.js +1 -0
  110. package/dist/react/ui/button.js.map +1 -1
  111. package/dist/react/ui/calendar.d.ts +5 -3
  112. package/dist/react/ui/calendar.d.ts.map +1 -1
  113. package/dist/react/ui/calendar.js +14 -12
  114. package/dist/react/ui/calendar.js.map +1 -1
  115. package/dist/react/ui/card.d.ts +15 -8
  116. package/dist/react/ui/card.d.ts.map +1 -1
  117. package/dist/react/ui/card.js +7 -0
  118. package/dist/react/ui/card.js.map +1 -1
  119. package/dist/react/ui/carousel.d.ts +11 -6
  120. package/dist/react/ui/carousel.d.ts.map +1 -1
  121. package/dist/react/ui/carousel.js +9 -4
  122. package/dist/react/ui/carousel.js.map +1 -1
  123. package/dist/react/ui/chart.d.ts +6 -5
  124. package/dist/react/ui/chart.d.ts.map +1 -1
  125. package/dist/react/ui/chart.js +2 -1
  126. package/dist/react/ui/chart.js.map +1 -1
  127. package/dist/react/ui/checkbox.d.ts +3 -2
  128. package/dist/react/ui/checkbox.d.ts.map +1 -1
  129. package/dist/react/ui/checkbox.js +1 -0
  130. package/dist/react/ui/checkbox.js.map +1 -1
  131. package/dist/react/ui/collapsible.d.ts +7 -4
  132. package/dist/react/ui/collapsible.d.ts.map +1 -1
  133. package/dist/react/ui/collapsible.js +3 -0
  134. package/dist/react/ui/collapsible.js.map +1 -1
  135. package/dist/react/ui/command.d.ts +19 -10
  136. package/dist/react/ui/command.d.ts.map +1 -1
  137. package/dist/react/ui/command.js +9 -0
  138. package/dist/react/ui/command.js.map +1 -1
  139. package/dist/react/ui/context-menu.d.ts +17 -16
  140. package/dist/react/ui/context-menu.d.ts.map +1 -1
  141. package/dist/react/ui/context-menu.js +1 -0
  142. package/dist/react/ui/context-menu.js.map +1 -1
  143. package/dist/react/ui/dialog.d.ts +21 -11
  144. package/dist/react/ui/dialog.d.ts.map +1 -1
  145. package/dist/react/ui/dialog.js +10 -0
  146. package/dist/react/ui/dialog.js.map +1 -1
  147. package/dist/react/ui/drawer.d.ts +21 -11
  148. package/dist/react/ui/drawer.d.ts.map +1 -1
  149. package/dist/react/ui/drawer.js +10 -0
  150. package/dist/react/ui/drawer.js.map +1 -1
  151. package/dist/react/ui/dropdown-menu.d.ts +17 -16
  152. package/dist/react/ui/dropdown-menu.d.ts.map +1 -1
  153. package/dist/react/ui/dropdown-menu.js +1 -0
  154. package/dist/react/ui/dropdown-menu.js.map +1 -1
  155. package/dist/react/ui/empty.d.ts +8 -7
  156. package/dist/react/ui/empty.d.ts.map +1 -1
  157. package/dist/react/ui/empty.js +1 -0
  158. package/dist/react/ui/empty.js.map +1 -1
  159. package/dist/react/ui/field.d.ts +21 -11
  160. package/dist/react/ui/field.d.ts.map +1 -1
  161. package/dist/react/ui/field.js +10 -0
  162. package/dist/react/ui/field.js.map +1 -1
  163. package/dist/react/ui/form.d.ts +14 -7
  164. package/dist/react/ui/form.d.ts.map +1 -1
  165. package/dist/react/ui/form.js +7 -0
  166. package/dist/react/ui/form.js.map +1 -1
  167. package/dist/react/ui/hover-card.d.ts +5 -4
  168. package/dist/react/ui/hover-card.d.ts.map +1 -1
  169. package/dist/react/ui/hover-card.js +1 -0
  170. package/dist/react/ui/hover-card.js.map +1 -1
  171. package/dist/react/ui/input-group.d.ts +16 -10
  172. package/dist/react/ui/input-group.d.ts.map +1 -1
  173. package/dist/react/ui/input-group.js +6 -0
  174. package/dist/react/ui/input-group.js.map +1 -1
  175. package/dist/react/ui/input-otp.d.ts +9 -5
  176. package/dist/react/ui/input-otp.d.ts.map +1 -1
  177. package/dist/react/ui/input-otp.js +4 -0
  178. package/dist/react/ui/input-otp.js.map +1 -1
  179. package/dist/react/ui/input.d.ts +3 -2
  180. package/dist/react/ui/input.d.ts.map +1 -1
  181. package/dist/react/ui/input.js +1 -0
  182. package/dist/react/ui/input.js.map +1 -1
  183. package/dist/react/ui/item.d.ts +15 -14
  184. package/dist/react/ui/item.d.ts.map +1 -1
  185. package/dist/react/ui/item.js +1 -0
  186. package/dist/react/ui/item.js.map +1 -1
  187. package/dist/react/ui/kbd.d.ts +1 -0
  188. package/dist/react/ui/kbd.d.ts.map +1 -1
  189. package/dist/react/ui/kbd.js +1 -0
  190. package/dist/react/ui/kbd.js.map +1 -1
  191. package/dist/react/ui/label.d.ts +1 -0
  192. package/dist/react/ui/label.d.ts.map +1 -1
  193. package/dist/react/ui/label.js +1 -0
  194. package/dist/react/ui/label.js.map +1 -1
  195. package/dist/react/ui/menubar.d.ts +1 -0
  196. package/dist/react/ui/menubar.d.ts.map +1 -1
  197. package/dist/react/ui/menubar.js +1 -0
  198. package/dist/react/ui/menubar.js.map +1 -1
  199. package/dist/react/ui/navigation-menu.d.ts +8 -0
  200. package/dist/react/ui/navigation-menu.d.ts.map +1 -1
  201. package/dist/react/ui/navigation-menu.js +8 -0
  202. package/dist/react/ui/navigation-menu.js.map +1 -1
  203. package/dist/react/ui/pagination.d.ts +7 -0
  204. package/dist/react/ui/pagination.d.ts.map +1 -1
  205. package/dist/react/ui/pagination.js +7 -0
  206. package/dist/react/ui/pagination.js.map +1 -1
  207. package/dist/react/ui/popover.d.ts +6 -5
  208. package/dist/react/ui/popover.d.ts.map +1 -1
  209. package/dist/react/ui/popover.js +1 -0
  210. package/dist/react/ui/popover.js.map +1 -1
  211. package/dist/react/ui/progress.d.ts +3 -2
  212. package/dist/react/ui/progress.d.ts.map +1 -1
  213. package/dist/react/ui/progress.js +1 -0
  214. package/dist/react/ui/progress.js.map +1 -1
  215. package/dist/react/ui/radio-group.d.ts +4 -3
  216. package/dist/react/ui/radio-group.d.ts.map +1 -1
  217. package/dist/react/ui/radio-group.js +1 -0
  218. package/dist/react/ui/radio-group.js.map +1 -1
  219. package/dist/react/ui/resizable.d.ts +7 -4
  220. package/dist/react/ui/resizable.d.ts.map +1 -1
  221. package/dist/react/ui/resizable.js +3 -0
  222. package/dist/react/ui/resizable.js.map +1 -1
  223. package/dist/react/ui/scroll-area.d.ts +5 -3
  224. package/dist/react/ui/scroll-area.d.ts.map +1 -1
  225. package/dist/react/ui/scroll-area.js +2 -0
  226. package/dist/react/ui/scroll-area.js.map +1 -1
  227. package/dist/react/ui/select.d.ts +23 -11
  228. package/dist/react/ui/select.d.ts.map +1 -1
  229. package/dist/react/ui/select.js +12 -0
  230. package/dist/react/ui/select.js.map +1 -1
  231. package/dist/react/ui/separator.d.ts +3 -2
  232. package/dist/react/ui/separator.d.ts.map +1 -1
  233. package/dist/react/ui/separator.js +1 -0
  234. package/dist/react/ui/separator.js.map +1 -1
  235. package/dist/react/ui/sheet.d.ts +17 -9
  236. package/dist/react/ui/sheet.d.ts.map +1 -1
  237. package/dist/react/ui/sheet.js +10 -0
  238. package/dist/react/ui/sheet.js.map +1 -1
  239. package/dist/react/ui/sidebar.d.ts +46 -24
  240. package/dist/react/ui/sidebar.d.ts.map +1 -1
  241. package/dist/react/ui/sidebar.js +23 -1
  242. package/dist/react/ui/sidebar.js.map +1 -1
  243. package/dist/react/ui/skeleton.d.ts +3 -2
  244. package/dist/react/ui/skeleton.d.ts.map +1 -1
  245. package/dist/react/ui/skeleton.js +1 -0
  246. package/dist/react/ui/skeleton.js.map +1 -1
  247. package/dist/react/ui/slider.d.ts +3 -2
  248. package/dist/react/ui/slider.d.ts.map +1 -1
  249. package/dist/react/ui/slider.js +1 -0
  250. package/dist/react/ui/slider.js.map +1 -1
  251. package/dist/react/ui/sonner.d.ts +3 -2
  252. package/dist/react/ui/sonner.d.ts.map +1 -1
  253. package/dist/react/ui/sonner.js +1 -0
  254. package/dist/react/ui/sonner.js.map +1 -1
  255. package/dist/react/ui/spinner.d.ts +3 -2
  256. package/dist/react/ui/spinner.d.ts.map +1 -1
  257. package/dist/react/ui/spinner.js +1 -0
  258. package/dist/react/ui/spinner.js.map +1 -1
  259. package/dist/react/ui/switch.d.ts +3 -2
  260. package/dist/react/ui/switch.d.ts.map +1 -1
  261. package/dist/react/ui/switch.js +1 -0
  262. package/dist/react/ui/switch.js.map +1 -1
  263. package/dist/react/ui/table.d.ts +1 -0
  264. package/dist/react/ui/table.d.ts.map +1 -1
  265. package/dist/react/ui/table.js +1 -0
  266. package/dist/react/ui/table.js.map +1 -1
  267. package/dist/react/ui/tabs.d.ts +9 -5
  268. package/dist/react/ui/tabs.d.ts.map +1 -1
  269. package/dist/react/ui/tabs.js +4 -0
  270. package/dist/react/ui/tabs.js.map +1 -1
  271. package/dist/react/ui/textarea.d.ts +3 -2
  272. package/dist/react/ui/textarea.d.ts.map +1 -1
  273. package/dist/react/ui/textarea.js +1 -0
  274. package/dist/react/ui/textarea.js.map +1 -1
  275. package/dist/react/ui/toggle-group.d.ts +4 -3
  276. package/dist/react/ui/toggle-group.d.ts.map +1 -1
  277. package/dist/react/ui/toggle-group.js +1 -0
  278. package/dist/react/ui/toggle-group.js.map +1 -1
  279. package/dist/react/ui/toggle.d.ts +3 -2
  280. package/dist/react/ui/toggle.d.ts.map +1 -1
  281. package/dist/react/ui/toggle.js +1 -0
  282. package/dist/react/ui/toggle.js.map +1 -1
  283. package/dist/react/ui/tooltip.d.ts +7 -5
  284. package/dist/react/ui/tooltip.d.ts.map +1 -1
  285. package/dist/react/ui/tooltip.js +2 -0
  286. package/dist/react/ui/tooltip.js.map +1 -1
  287. package/docs/docs/api/appkit/Class.AppKitError/index.html +77 -0
  288. package/docs/docs/api/appkit/Class.AppKitError.md +154 -0
  289. package/docs/docs/api/appkit/Class.AuthenticationError/index.html +110 -0
  290. package/docs/docs/api/appkit/Class.AuthenticationError.md +236 -0
  291. package/docs/docs/api/appkit/Class.ConfigurationError/index.html +112 -0
  292. package/docs/docs/api/appkit/Class.ConfigurationError.md +243 -0
  293. package/docs/docs/api/appkit/Class.ConnectionError/index.html +120 -0
  294. package/docs/docs/api/appkit/Class.ConnectionError.md +265 -0
  295. package/docs/docs/api/appkit/Class.ExecutionError/index.html +116 -0
  296. package/docs/docs/api/appkit/Class.ExecutionError.md +250 -0
  297. package/docs/docs/api/appkit/Class.InitializationError/index.html +104 -0
  298. package/docs/docs/api/appkit/Class.InitializationError.md +222 -0
  299. package/docs/docs/api/appkit/Class.Plugin/index.html +149 -0
  300. package/docs/docs/api/appkit/Class.Plugin.md +392 -0
  301. package/docs/docs/api/appkit/Class.ServerError/index.html +108 -0
  302. package/docs/docs/api/appkit/Class.ServerError.md +229 -0
  303. package/docs/docs/api/appkit/Class.TunnelError/index.html +108 -0
  304. package/docs/docs/api/appkit/Class.TunnelError.md +231 -0
  305. package/docs/docs/api/appkit/Class.ValidationError/index.html +106 -0
  306. package/docs/docs/api/appkit/Class.ValidationError.md +225 -0
  307. package/docs/docs/api/appkit/Function.appKitTypesPlugin/index.html +24 -0
  308. package/docs/docs/api/appkit/Function.appKitTypesPlugin.md +20 -0
  309. package/docs/docs/api/appkit/Function.createApp/index.html +24 -0
  310. package/docs/docs/api/appkit/Function.createApp.md +31 -0
  311. package/docs/docs/api/appkit/Function.isSQLTypeMarker/index.html +25 -0
  312. package/docs/docs/api/appkit/Function.isSQLTypeMarker.md +32 -0
  313. package/docs/docs/api/appkit/Interface.BasePluginConfig/index.html +28 -0
  314. package/docs/docs/api/appkit/Interface.BasePluginConfig.md +37 -0
  315. package/docs/docs/api/appkit/Interface.CacheConfig/index.html +63 -0
  316. package/docs/docs/api/appkit/Interface.CacheConfig.md +131 -0
  317. package/docs/docs/api/appkit/Interface.ITelemetry/index.html +73 -0
  318. package/docs/docs/api/appkit/Interface.ITelemetry.md +144 -0
  319. package/docs/docs/api/appkit/Interface.StreamExecutionSettings/index.html +26 -0
  320. package/docs/docs/api/appkit/Interface.StreamExecutionSettings.md +30 -0
  321. package/docs/docs/api/appkit/Interface.TelemetryConfig/index.html +32 -0
  322. package/docs/docs/api/appkit/Interface.TelemetryConfig.md +48 -0
  323. package/docs/docs/api/appkit/TypeAlias.IAppRouter/index.html +18 -0
  324. package/docs/docs/api/appkit/TypeAlias.IAppRouter.md +8 -0
  325. package/docs/docs/api/appkit/Variable.sql/index.html +98 -0
  326. package/docs/docs/api/appkit/Variable.sql.md +260 -0
  327. package/docs/docs/api/appkit/index.html +28 -0
  328. package/docs/docs/api/appkit-ui/data/AreaChart/index.html +29 -0
  329. package/docs/docs/api/appkit-ui/data/AreaChart.md +79 -0
  330. package/docs/docs/api/appkit-ui/data/BarChart/index.html +29 -0
  331. package/docs/docs/api/appkit-ui/data/BarChart.md +74 -0
  332. package/docs/docs/api/appkit-ui/data/DataTable/index.html +36 -0
  333. package/docs/docs/api/appkit-ui/data/DataTable.md +69 -0
  334. package/docs/docs/api/appkit-ui/data/DonutChart/index.html +29 -0
  335. package/docs/docs/api/appkit-ui/data/DonutChart.md +72 -0
  336. package/docs/docs/api/appkit-ui/data/HeatmapChart/index.html +35 -0
  337. package/docs/docs/api/appkit-ui/data/HeatmapChart.md +91 -0
  338. package/docs/docs/api/appkit-ui/data/LineChart/index.html +29 -0
  339. package/docs/docs/api/appkit-ui/data/LineChart.md +77 -0
  340. package/docs/docs/api/appkit-ui/data/PieChart/index.html +29 -0
  341. package/docs/docs/api/appkit-ui/data/PieChart.md +72 -0
  342. package/docs/docs/api/appkit-ui/data/RadarChart/index.html +29 -0
  343. package/docs/docs/api/appkit-ui/data/RadarChart.md +74 -0
  344. package/docs/docs/api/appkit-ui/data/ScatterChart/index.html +29 -0
  345. package/docs/docs/api/appkit-ui/data/ScatterChart.md +76 -0
  346. package/docs/docs/api/appkit-ui/index.html +23 -0
  347. package/docs/docs/api/appkit-ui/styling/index.html +74 -0
  348. package/docs/docs/api/appkit-ui/styling.md +81 -0
  349. package/docs/docs/api/appkit-ui/ui/Accordion/index.html +48 -0
  350. package/docs/docs/api/appkit-ui/ui/Accordion.md +139 -0
  351. package/docs/docs/api/appkit-ui/ui/Alert/index.html +41 -0
  352. package/docs/docs/api/appkit-ui/ui/Alert.md +89 -0
  353. package/docs/docs/api/appkit-ui/ui/AlertDialog/index.html +97 -0
  354. package/docs/docs/api/appkit-ui/ui/AlertDialog.md +282 -0
  355. package/docs/docs/api/appkit-ui/ui/AspectRatio/index.html +27 -0
  356. package/docs/docs/api/appkit-ui/ui/AspectRatio.md +46 -0
  357. package/docs/docs/api/appkit-ui/ui/Avatar/index.html +41 -0
  358. package/docs/docs/api/appkit-ui/ui/Avatar.md +90 -0
  359. package/docs/docs/api/appkit-ui/ui/Badge/index.html +27 -0
  360. package/docs/docs/api/appkit-ui/ui/Badge.md +38 -0
  361. package/docs/docs/api/appkit-ui/ui/Breadcrumb/index.html +69 -0
  362. package/docs/docs/api/appkit-ui/ui/Breadcrumb.md +193 -0
  363. package/docs/docs/api/appkit-ui/ui/Button/index.html +27 -0
  364. package/docs/docs/api/appkit-ui/ui/Button.md +39 -0
  365. package/docs/docs/api/appkit-ui/ui/ButtonGroup/index.html +38 -0
  366. package/docs/docs/api/appkit-ui/ui/ButtonGroup.md +68 -0
  367. package/docs/docs/api/appkit-ui/ui/Calendar/index.html +34 -0
  368. package/docs/docs/api/appkit-ui/ui/Calendar.md +154 -0
  369. package/docs/docs/api/appkit-ui/ui/Card/index.html +69 -0
  370. package/docs/docs/api/appkit-ui/ui/Card.md +222 -0
  371. package/docs/docs/api/appkit-ui/ui/Carousel/index.html +55 -0
  372. package/docs/docs/api/appkit-ui/ui/Carousel.md +152 -0
  373. package/docs/docs/api/appkit-ui/ui/ChartContainer/index.html +58 -0
  374. package/docs/docs/api/appkit-ui/ui/ChartContainer.md +343 -0
  375. package/docs/docs/api/appkit-ui/ui/Checkbox/index.html +27 -0
  376. package/docs/docs/api/appkit-ui/ui/Checkbox.md +53 -0
  377. package/docs/docs/api/appkit-ui/ui/Collapsible/index.html +41 -0
  378. package/docs/docs/api/appkit-ui/ui/Collapsible.md +125 -0
  379. package/docs/docs/api/appkit-ui/ui/Command/index.html +83 -0
  380. package/docs/docs/api/appkit-ui/ui/Command.md +287 -0
  381. package/docs/docs/api/appkit-ui/ui/ContextMenu/index.html +111 -0
  382. package/docs/docs/api/appkit-ui/ui/ContextMenu.md +419 -0
  383. package/docs/docs/api/appkit-ui/ui/Dialog/index.html +90 -0
  384. package/docs/docs/api/appkit-ui/ui/Dialog.md +285 -0
  385. package/docs/docs/api/appkit-ui/ui/Drawer/index.html +90 -0
  386. package/docs/docs/api/appkit-ui/ui/Drawer.md +387 -0
  387. package/docs/docs/api/appkit-ui/ui/DropdownMenu/index.html +111 -0
  388. package/docs/docs/api/appkit-ui/ui/DropdownMenu.md +478 -0
  389. package/docs/docs/api/appkit-ui/ui/Empty/index.html +54 -0
  390. package/docs/docs/api/appkit-ui/ui/Empty.md +109 -0
  391. package/docs/docs/api/appkit-ui/ui/Field/index.html +87 -0
  392. package/docs/docs/api/appkit-ui/ui/Field.md +201 -0
  393. package/docs/docs/api/appkit-ui/ui/FormControl/index.html +59 -0
  394. package/docs/docs/api/appkit-ui/ui/FormControl.md +128 -0
  395. package/docs/docs/api/appkit-ui/ui/HoverCard/index.html +39 -0
  396. package/docs/docs/api/appkit-ui/ui/HoverCard.md +131 -0
  397. package/docs/docs/api/appkit-ui/ui/Input/index.html +27 -0
  398. package/docs/docs/api/appkit-ui/ui/Input.md +35 -0
  399. package/docs/docs/api/appkit-ui/ui/InputGroup/index.html +59 -0
  400. package/docs/docs/api/appkit-ui/ui/InputGroup.md +123 -0
  401. package/docs/docs/api/appkit-ui/ui/InputOTP/index.html +48 -0
  402. package/docs/docs/api/appkit-ui/ui/InputOTP.md +124 -0
  403. package/docs/docs/api/appkit-ui/ui/Item/index.html +78 -0
  404. package/docs/docs/api/appkit-ui/ui/Item.md +185 -0
  405. package/docs/docs/api/appkit-ui/ui/Kbd/index.html +30 -0
  406. package/docs/docs/api/appkit-ui/ui/Kbd.md +39 -0
  407. package/docs/docs/api/appkit-ui/ui/Label/index.html +27 -0
  408. package/docs/docs/api/appkit-ui/ui/Label.md +44 -0
  409. package/docs/docs/api/appkit-ui/ui/Menubar/index.html +117 -0
  410. package/docs/docs/api/appkit-ui/ui/Menubar.md +484 -0
  411. package/docs/docs/api/appkit-ui/ui/NavigationMenu/index.html +76 -0
  412. package/docs/docs/api/appkit-ui/ui/NavigationMenu.md +338 -0
  413. package/docs/docs/api/appkit-ui/ui/Pagination/index.html +69 -0
  414. package/docs/docs/api/appkit-ui/ui/Pagination.md +191 -0
  415. package/docs/docs/api/appkit-ui/ui/Popover/index.html +45 -0
  416. package/docs/docs/api/appkit-ui/ui/Popover.md +173 -0
  417. package/docs/docs/api/appkit-ui/ui/Progress/index.html +27 -0
  418. package/docs/docs/api/appkit-ui/ui/Progress.md +51 -0
  419. package/docs/docs/api/appkit-ui/ui/RadioGroup/index.html +33 -0
  420. package/docs/docs/api/appkit-ui/ui/RadioGroup.md +83 -0
  421. package/docs/docs/api/appkit-ui/ui/ResizableHandle/index.html +41 -0
  422. package/docs/docs/api/appkit-ui/ui/ResizableHandle.md +136 -0
  423. package/docs/docs/api/appkit-ui/ui/ScrollArea/index.html +34 -0
  424. package/docs/docs/api/appkit-ui/ui/ScrollArea.md +83 -0
  425. package/docs/docs/api/appkit-ui/ui/Select/index.html +82 -0
  426. package/docs/docs/api/appkit-ui/ui/Select.md +267 -0
  427. package/docs/docs/api/appkit-ui/ui/Separator/index.html +27 -0
  428. package/docs/docs/api/appkit-ui/ui/Separator.md +56 -0
  429. package/docs/docs/api/appkit-ui/ui/Sheet/index.html +76 -0
  430. package/docs/docs/api/appkit-ui/ui/Sheet.md +236 -0
  431. package/docs/docs/api/appkit-ui/ui/Sidebar/index.html +183 -0
  432. package/docs/docs/api/appkit-ui/ui/Sidebar.md +490 -0
  433. package/docs/docs/api/appkit-ui/ui/Skeleton/index.html +27 -0
  434. package/docs/docs/api/appkit-ui/ui/Skeleton.md +43 -0
  435. package/docs/docs/api/appkit-ui/ui/Slider/index.html +27 -0
  436. package/docs/docs/api/appkit-ui/ui/Slider.md +61 -0
  437. package/docs/docs/api/appkit-ui/ui/Spinner/index.html +24 -0
  438. package/docs/docs/api/appkit-ui/ui/Spinner.md +22 -0
  439. package/docs/docs/api/appkit-ui/ui/Switch/index.html +27 -0
  440. package/docs/docs/api/appkit-ui/ui/Switch.md +46 -0
  441. package/docs/docs/api/appkit-ui/ui/Table/index.html +69 -0
  442. package/docs/docs/api/appkit-ui/ui/Table.md +236 -0
  443. package/docs/docs/api/appkit-ui/ui/Tabs/index.html +48 -0
  444. package/docs/docs/api/appkit-ui/ui/Tabs.md +177 -0
  445. package/docs/docs/api/appkit-ui/ui/Textarea/index.html +27 -0
  446. package/docs/docs/api/appkit-ui/ui/Textarea.md +35 -0
  447. package/docs/docs/api/appkit-ui/ui/Toaster/index.html +27 -0
  448. package/docs/docs/api/appkit-ui/ui/Toaster.md +75 -0
  449. package/docs/docs/api/appkit-ui/ui/Toggle/index.html +27 -0
  450. package/docs/docs/api/appkit-ui/ui/Toggle.md +48 -0
  451. package/docs/docs/api/appkit-ui/ui/ToggleGroup/index.html +33 -0
  452. package/docs/docs/api/appkit-ui/ui/ToggleGroup.md +88 -0
  453. package/docs/docs/api/appkit-ui/ui/Tooltip/index.html +46 -0
  454. package/docs/docs/api/appkit-ui/ui/Tooltip.md +134 -0
  455. package/docs/docs/api/appkit-ui.md +15 -0
  456. package/docs/docs/api/appkit.md +48 -0
  457. package/docs/docs/api/index.html +28 -0
  458. package/docs/docs/api.md +24 -0
  459. package/docs/docs/app-management/index.html +106 -0
  460. package/docs/docs/app-management.md +171 -0
  461. package/docs/docs/architecture/index.html +71 -0
  462. package/docs/docs/architecture.md +69 -0
  463. package/docs/docs/category/development/index.html +16 -0
  464. package/docs/docs/category/development.md +3 -0
  465. package/docs/docs/configuration/index.html +66 -0
  466. package/docs/docs/configuration.md +150 -0
  467. package/docs/docs/core-principles/index.html +38 -0
  468. package/docs/docs/core-principles.md +31 -0
  469. package/docs/docs/development/index.html +34 -0
  470. package/docs/docs/development/llm-guide/index.html +74 -0
  471. package/docs/docs/development/llm-guide.md +74 -0
  472. package/docs/docs/development/local-development/index.html +27 -0
  473. package/docs/docs/development/local-development.md +20 -0
  474. package/docs/docs/development/project-setup/index.html +69 -0
  475. package/docs/docs/development/project-setup.md +246 -0
  476. package/docs/docs/development/remote-bridge/index.html +76 -0
  477. package/docs/docs/development/remote-bridge.md +80 -0
  478. package/docs/docs/development/type-generation/index.html +65 -0
  479. package/docs/docs/development/type-generation.md +110 -0
  480. package/docs/docs/development.md +21 -0
  481. package/docs/docs/index.html +58 -0
  482. package/docs/docs/plugins/index.html +151 -0
  483. package/docs/docs/plugins.md +313 -0
  484. package/docs/docs.md +64 -0
  485. package/llms.txt +121 -1228
  486. package/package.json +7 -5
  487. package/scripts/postinstall.js +1 -1
  488. package/AGENTS.md +0 -1231
  489. package/bin/setup-claude.js +0 -190
@@ -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":"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"}
@@ -1,10 +1,11 @@
1
- import * as react_jsx_runtime255 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime254 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/skeleton.d.ts
4
+ /** Loading placeholder with pulsing animation */
4
5
  declare function Skeleton({
5
6
  className,
6
7
  ...props
7
- }: React.ComponentProps<"div">): react_jsx_runtime255.JSX.Element;
8
+ }: React.ComponentProps<"div">): react_jsx_runtime254.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_runtime257 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime255 from "react/jsx-runtime";
3
3
  import * as SliderPrimitive from "@radix-ui/react-slider";
4
4
 
5
5
  //#region src/react/ui/slider.d.ts
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_runtime257.JSX.Element;
14
+ }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime255.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"}
@@ -1,10 +1,11 @@
1
- import * as react_jsx_runtime258 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime256 from "react/jsx-runtime";
2
2
  import { ToasterProps } from "sonner";
3
3
 
4
4
  //#region src/react/ui/sonner.d.ts
5
+ /** Toast notification system for displaying temporary messages */
5
6
  declare const Toaster$1: ({
6
7
  ...props
7
- }: ToasterProps) => react_jsx_runtime258.JSX.Element;
8
+ }: ToasterProps) => react_jsx_runtime256.JSX.Element;
8
9
  //#endregion
9
10
  export { Toaster$1 as Toaster };
10
11
  //# sourceMappingURL=sonner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sonner.d.ts","names":[],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":[],"mappings":";;;;cAWM;;GAAyB,iBAAY,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"sonner.d.ts","names":[],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":[],"mappings":";;;;;cAYM;;GAAyB,iBAAY,oBAAA,CAAA,GAAA,CAAA"}
@@ -4,6 +4,7 @@ import { useTheme } from "next-themes";
4
4
  import { Toaster } from "sonner";
5
5
 
6
6
  //#region src/react/ui/sonner.tsx
7
+ /** Toast notification system for displaying temporary messages */
7
8
  const Toaster$1 = ({ ...props }) => {
8
9
  const { theme = "system" } = useTheme();
9
10
  return /* @__PURE__ */ jsx(Toaster, {
@@ -1 +1 @@
1
- {"version":3,"file":"sonner.js","names":["Toaster","Sonner"],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":["// @ts-nocheck\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;;;AAWA,MAAMA,aAAW,EAAE,GAAG,YAA0B;CAC9C,MAAM,EAAE,QAAQ,aAAa,UAAU;AAEvC,QACE,oBAACC;EACQ;EACP,WAAU;EACV,OAAO;GACL,SAAS,oBAAC,mBAAgB,WAAU,WAAW;GAC/C,MAAM,oBAAC,YAAS,WAAU,WAAW;GACrC,SAAS,oBAAC,qBAAkB,WAAU,WAAW;GACjD,OAAO,oBAAC,gBAAa,WAAU,WAAW;GAC1C,SAAS,oBAAC,eAAY,WAAU,wBAAwB;GACzD;EACD,OACE;GACE,eAAe;GACf,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACpB;EAEH,GAAI;GACJ"}
1
+ {"version":3,"file":"sonner.js","names":["Toaster","Sonner"],"sources":["../../../src/react/ui/sonner.tsx"],"sourcesContent":["// @ts-nocheck\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\n/** Toast notification system for displaying temporary messages */\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;;;;AAYA,MAAMA,aAAW,EAAE,GAAG,YAA0B;CAC9C,MAAM,EAAE,QAAQ,aAAa,UAAU;AAEvC,QACE,oBAACC;EACQ;EACP,WAAU;EACV,OAAO;GACL,SAAS,oBAAC,mBAAgB,WAAU,WAAW;GAC/C,MAAM,oBAAC,YAAS,WAAU,WAAW;GACrC,SAAS,oBAAC,qBAAkB,WAAU,WAAW;GACjD,OAAO,oBAAC,gBAAa,WAAU,WAAW;GAC1C,SAAS,oBAAC,eAAY,WAAU,wBAAwB;GACzD;EACD,OACE;GACE,eAAe;GACf,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACpB;EAEH,GAAI;GACJ"}
@@ -1,10 +1,11 @@
1
- import * as react_jsx_runtime219 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime257 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/spinner.d.ts
4
+ /** Animated loading indicator */
4
5
  declare function Spinner({
5
6
  className,
6
7
  ...props
7
- }: React.ComponentProps<"svg">): react_jsx_runtime219.JSX.Element;
8
+ }: React.ComponentProps<"svg">): react_jsx_runtime257.JSX.Element;
8
9
  //#endregion
9
10
  export { Spinner };
10
11
  //# sourceMappingURL=spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":[],"mappings":";;;iBAKS,OAAA;;;GAAiC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"spinner.d.ts","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":[],"mappings":";;;;iBAMS,OAAA;;;GAAiC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA"}
@@ -3,6 +3,7 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { Loader2Icon } from "lucide-react";
4
4
 
5
5
  //#region src/react/ui/spinner.tsx
6
+ /** Animated loading indicator */
6
7
  function Spinner({ className, ...props }) {
7
8
  return /* @__PURE__ */ jsx(Loader2Icon, {
8
9
  role: "status",
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":["// @ts-nocheck\nimport { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;AAKA,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAsC;AACrE,QACE,oBAAC;EACC,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/react/ui/spinner.tsx"],"sourcesContent":["// @ts-nocheck\nimport { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Animated loading indicator */\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;;AAMA,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAsC;AACrE,QACE,oBAAC;EACC,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
@@ -1,12 +1,13 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime256 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime258 from "react/jsx-runtime";
3
3
  import * as SwitchPrimitive from "@radix-ui/react-switch";
4
4
 
5
5
  //#region src/react/ui/switch.d.ts
6
+ /** Toggle control for switching between on and off states */
6
7
  declare function Switch({
7
8
  className,
8
9
  ...props
9
- }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime256.JSX.Element;
10
+ }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime258.JSX.Element;
10
11
  //#endregion
11
12
  export { Switch };
12
13
  //# sourceMappingURL=switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.ts","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOS,MAAA;;;GAGN,OAAA,CAAM,sBAAsB,eAAA,CAAgB,QAAK,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"switch.d.ts","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,MAAA;;;GAGN,OAAA,CAAM,sBAAsB,eAAA,CAAgB,QAAK,oBAAA,CAAA,GAAA,CAAA"}
@@ -5,6 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
  import * as SwitchPrimitive from "@radix-ui/react-switch";
6
6
 
7
7
  //#region src/react/ui/switch.tsx
8
+ /** Toggle control for switching between on and off states */
8
9
  function Switch({ className, ...props }) {
9
10
  return /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
10
11
  "data-slot": "switch",
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;AAOA,SAAS,OAAO,EACd,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,6WACA,UACD;EACD,GAAI;YAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT,2QACD;IACD;GACmB"}
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../../src/react/ui/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Toggle control for switching between on and off states */\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;AAQA,SAAS,OAAO,EACd,WACA,GAAG,SACiD;AACpD,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,WAAW,GACT,6WACA,UACD;EACD,GAAI;YAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT,2QACD;IACD;GACmB"}
@@ -2,6 +2,7 @@ import * as React$1 from "react";
2
2
  import * as react_jsx_runtime259 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/table.d.ts
5
+ /** Structured data display with rows and columns */
5
6
  declare function Table({
6
7
  className,
7
8
  ...props
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,KAAA;;;GAA+B,OAAA,CAAM,0BAAuB,oBAAA,CAAA,GAAA,CAAA;iBAe5D,WAAA;;;GAAqC,OAAA,CAAM,0BAAuB,oBAAA,CAAA,GAAA,CAAA;iBAUlE,SAAA;;;GAAmC,OAAA,CAAM,0BAAuB,oBAAA,CAAA,GAAA,CAAA;AA7BrC,iBAuC3B,WAAA,CAnCK;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAmCgC,OAAA,CAAM,cAnCtC,CAAA,OAAA,CAAA,CAAA,EAmC6D,oBAAA,CAAA,GAAA,CAAA,OAnC7D;iBAgDL,QAAA,CAhDK;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgD6B,OAAA,CAAM,cAhDnC,CAAA,IAAA,CAAA,CAAA,EAgDuD,oBAAA,CAAA,GAAA,CAAA,OAhDvD;iBA6DL,SAAA,CA7DQ;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6D2B,OAAA,CAAM,cA7DjC,CAAA,IAAA,CAAA,CAAA,EA6DqD,oBAAA,CAAA,GAAA,CAAA,OA7DrD;iBA0ER,SAAA,CA1EqC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0EF,OAAA,CAAM,cA1EJ,CAAA,IAAA,CAAA,CAAA,EA0EwB,oBAAA,CAAA,GAAA,CAAA,OA1ExB;iBAuFrC,YAAA,CAvF4D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0FlE,OAAA,CAAM,cA1F4D,CAAA,SAAA,CAAA,CAAA,EA0FnC,oBAAA,CAAA,GAAA,CAAA,OA1FmC"}
1
+ {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":[],"mappings":";;;;;iBAKS,KAAA;;;GAA+B,OAAA,CAAM,0BAAuB,oBAAA,CAAA,GAAA,CAAA;iBAe5D,WAAA;;;GAAqC,OAAA,CAAM,0BAAuB,oBAAA,CAAA,GAAA,CAAA;AApBvC,iBA8B3B,SAAA,CAzBK;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyB8B,OAAA,CAAM,cAzBpC,CAAA,OAAA,CAAA,CAAA,EAyB2D,oBAAA,CAAA,GAAA,CAAA,OAzB3D;iBAmCL,WAAA,CAnCK;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAmCgC,OAAA,CAAM,cAnCtC,CAAA,OAAA,CAAA,CAAA,EAmC6D,oBAAA,CAAA,GAAA,CAAA,OAnC7D;iBAgDL,QAAA,CAhDQ;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgD0B,OAAA,CAAM,cAhDhC,CAAA,IAAA,CAAA,CAAA,EAgDoD,oBAAA,CAAA,GAAA,CAAA,OAhDpD;iBA6DR,SAAA,CA7DqC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6DF,OAAA,CAAM,cA7DJ,CAAA,IAAA,CAAA,CAAA,EA6DwB,oBAAA,CAAA,GAAA,CAAA,OA7DxB;iBA0ErC,SAAA,CA1E4D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0EzB,OAAA,CAAM,cA1EmB,CAAA,IAAA,CAAA,CAAA,EA0EC,oBAAA,CAAA,GAAA,CAAA,OA1ED;iBAuF5D,YAAA,CAvF4D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0FlE,OAAA,CAAM,cA1F4D,CAAA,SAAA,CAAA,CAAA,EA0FnC,oBAAA,CAAA,GAAA,CAAA,OA1FmC"}
@@ -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/table.tsx
5
+ /** Structured data display with rows and columns */
5
6
  function Table({ className, ...props }) {
6
7
  return /* @__PURE__ */ jsx("div", {
7
8
  "data-slot": "table-container",
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] text-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"mappings":";;;;AAIA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAwC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAU;YAEV,oBAAC;GACC,aAAU;GACV,WAAW,GAAG,iCAAiC,UAAU;GACzD,GAAI;IACJ;GACE;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,mBAAmB,UAAU;EAC3C,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAwC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,8BAA8B,UAAU;EACtD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,SAAS,EAAE,WAAW,GAAG,SAAqC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,6FACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,sJACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0HACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SAC+B;AAClC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ"}
1
+ {"version":3,"file":"table.js","names":[],"sources":["../../../src/react/ui/table.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Structured data display with rows and columns */\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] text-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"mappings":";;;;;AAKA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAwC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAU;YAEV,oBAAC;GACC,aAAU;GACV,WAAW,GAAG,iCAAiC,UAAU;GACzD,GAAI;IACJ;GACE;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,mBAAmB,UAAU;EAC3C,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAwC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,8BAA8B,UAAU;EACtD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,SAAS,EAAE,WAAW,GAAG,SAAqC;AACrE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,6FACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,sJACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0HACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SAC+B;AAClC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ"}
@@ -1,24 +1,28 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime271 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime267 from "react/jsx-runtime";
3
3
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4
4
 
5
5
  //#region src/react/ui/tabs.d.ts
6
+ /** Tabbed interface for organizing content into separate panels */
6
7
  declare function Tabs({
7
8
  className,
8
9
  ...props
9
- }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime271.JSX.Element;
10
+ }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime267.JSX.Element;
11
+ /** Container for tab trigger buttons */
10
12
  declare function TabsList({
11
13
  className,
12
14
  ...props
13
- }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime271.JSX.Element;
15
+ }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime267.JSX.Element;
16
+ /** Button that activates a tab panel */
14
17
  declare function TabsTrigger({
15
18
  className,
16
19
  ...props
17
- }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime271.JSX.Element;
20
+ }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime267.JSX.Element;
21
+ /** Content panel associated with a tab */
18
22
  declare function TabsContent({
19
23
  className,
20
24
  ...props
21
- }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime271.JSX.Element;
25
+ }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime267.JSX.Element;
22
26
  //#endregion
23
27
  export { Tabs, TabsContent, TabsList, TabsTrigger };
24
28
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOS,IAAA;;;GAGN,OAAA,CAAM,sBAAsB,aAAA,CAAc,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAUzC,QAAA;;;GAGN,OAAA,CAAM,sBAAsB,aAAA,CAAc,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAazC,WAAA;;;GAGN,OAAA,CAAM,sBAAsB,aAAA,CAAc,WAAQ,oBAAA,CAAA,GAAA,CAAA;AApCC,iBAiD7C,WAAA,CA7CI;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgDV,OAAA,CAAM,cAhDI,CAAA,OAgDkB,aAAA,CAAc,OAhDhC,CAAA,CAAA,EAgDwC,oBAAA,CAAA,GAAA,CAAA,OAhDxC"}
1
+ {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,IAAA;;;GAGN,OAAA,CAAM,sBAAsB,aAAA,CAAc,QAAK,oBAAA,CAAA,GAAA,CAAA;;AARI,iBAmB7C,QAAA,CAdI;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiBV,OAAA,CAAM,cAjBI,CAAA,OAiBkB,aAAA,CAAc,IAjBhC,CAAA,CAAA,EAiBqC,oBAAA,CAAA,GAAA,CAAA,OAjBrC;;iBA+BJ,WAAA,CA9BP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiCC,OAAA,CAAM,cAjCP,CAAA,OAiC6B,aAAA,CAAc,OAjC3C,CAAA,CAAA,EAiCmD,oBAAA,CAAA,GAAA,CAAA,OAjCnD;;iBA+CO,WAAA,CA7CA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgDN,OAAA,CAAM,cAhDA,CAAA,OAgDsB,aAAA,CAAc,OAhDpC,CAAA,CAAA,EAgD4C,oBAAA,CAAA,GAAA,CAAA,OAhD5C"}
@@ -5,6 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
  import * as TabsPrimitive from "@radix-ui/react-tabs";
6
6
 
7
7
  //#region src/react/ui/tabs.tsx
8
+ /** Tabbed interface for organizing content into separate panels */
8
9
  function Tabs({ className, ...props }) {
9
10
  return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
10
11
  "data-slot": "tabs",
@@ -12,6 +13,7 @@ function Tabs({ className, ...props }) {
12
13
  ...props
13
14
  });
14
15
  }
16
+ /** Container for tab trigger buttons */
15
17
  function TabsList({ className, ...props }) {
16
18
  return /* @__PURE__ */ jsx(TabsPrimitive.List, {
17
19
  "data-slot": "tabs-list",
@@ -19,6 +21,7 @@ function TabsList({ className, ...props }) {
19
21
  ...props
20
22
  });
21
23
  }
24
+ /** Button that activates a tab panel */
22
25
  function TabsTrigger({ className, ...props }) {
23
26
  return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
24
27
  "data-slot": "tabs-trigger",
@@ -26,6 +29,7 @@ function TabsTrigger({ className, ...props }) {
26
29
  ...props
27
30
  });
28
31
  }
32
+ /** Content panel associated with a tab */
29
33
  function TabsContent({ className, ...props }) {
30
34
  return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
31
35
  "data-slot": "tabs-content",
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;AAOA,SAAS,KAAK,EACZ,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ;;AAIN,SAAS,SAAS,EAChB,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,uGACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,mqBACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/react/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Tabbed interface for organizing content into separate panels */\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Container for tab trigger buttons */\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Button that activates a tab panel */\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Content panel associated with a tab */\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;;AAQA,SAAS,KAAK,EACZ,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ;;;AAKN,SAAS,SAAS,EAChB,WACA,GAAG,SAC+C;AAClD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,uGACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GACT,mqBACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAAC,cAAc;EACb,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
@@ -1,11 +1,12 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime268 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime271 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/textarea.d.ts
5
+ /** Multi-line text input field */
5
6
  declare function Textarea({
6
7
  className,
7
8
  ...props
8
- }: React$1.ComponentProps<"textarea">): react_jsx_runtime268.JSX.Element;
9
+ }: React$1.ComponentProps<"textarea">): react_jsx_runtime271.JSX.Element;
9
10
  //#endregion
10
11
  export { Textarea };
11
12
  //# sourceMappingURL=textarea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.d.ts","names":[],"sources":["../../../src/react/ui/textarea.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,QAAA;;;GAAkC,OAAA,CAAM,6BAA0B,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"textarea.d.ts","names":[],"sources":["../../../src/react/ui/textarea.tsx"],"sourcesContent":[],"mappings":";;;;;iBAKS,QAAA;;;GAAkC,OAAA,CAAM,6BAA0B,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/textarea.tsx
5
+ /** Multi-line text input field */
5
6
  function Textarea({ className, ...props }) {
6
7
  return /* @__PURE__ */ jsx("textarea", {
7
8
  "data-slot": "textarea",
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/react/ui/textarea.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":";;;;AAIA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,ucACA,UACD;EACD,GAAI;GACJ"}
1
+ {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/react/ui/textarea.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Multi-line text input field */\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":";;;;;AAKA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,ucACA,UACD;EACD,GAAI;GACJ"}
@@ -1,10 +1,11 @@
1
1
  import { toggleVariants } from "./toggle.js";
2
2
  import * as React$1 from "react";
3
- import * as react_jsx_runtime269 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime273 from "react/jsx-runtime";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
6
6
 
7
7
  //#region src/react/ui/toggle-group.d.ts
8
+ /** Group of toggle buttons for selecting one or more options */
8
9
  declare function ToggleGroup({
9
10
  className,
10
11
  variant,
@@ -14,14 +15,14 @@ declare function ToggleGroup({
14
15
  ...props
15
16
  }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants> & {
16
17
  spacing?: number;
17
- }): react_jsx_runtime269.JSX.Element;
18
+ }): react_jsx_runtime273.JSX.Element;
18
19
  declare function ToggleGroupItem({
19
20
  className,
20
21
  children,
21
22
  variant,
22
23
  size,
23
24
  ...props
24
- }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime269.JSX.Element;
25
+ }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime273.JSX.Element;
25
26
  //#endregion
26
27
  export { ToggleGroup, ToggleGroupItem };
27
28
  //# sourceMappingURL=toggle-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/react/ui/toggle-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAiBS,WAAA;;;;;;;GAON,OAAA,CAAM,sBAAsB,oBAAA,CAAqB,QAClD,oBAAoB;;IAEnB,oBAAA,CAAA,GAAA,CAAA;AAtBuC,iBA2CjC,eAAA,CA/BW;EAAA,SAAA;EAAA,QAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAqCjB,OAAA,CAAM,cArCW,CAAA,OAqCW,oBAAA,CAAqB,IArChC,CAAA,GAsClB,YAtCkB,CAAA,OAsCE,cAtCF,CAAA,CAAA,EAsCiB,oBAAA,CAAA,GAAA,CAAA,OAtCjB"}
1
+ {"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/react/ui/toggle-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;;iBAkBS,WAAA;;;;;;;AAbiC,GAoBvC,OAAA,CAAM,sBAAsB,oBAAA,CAAqB,QAClD,oBAAoB;;AArBoB,CAAA,CAAA,EAuBvC,oBAAA,CAAA,GAAA,CAAA,OAViB;iBA+BX,eAAA,CA/BW;EAAA,SAAA;EAAA,QAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAqCjB,OAAA,CAAM,cArCW,CAAA,OAqCW,oBAAA,CAAqB,IArChC,CAAA,GAsClB,YAtCkB,CAAA,OAsCE,cAtCF,CAAA,CAAA,EAsCiB,oBAAA,CAAA,GAAA,CAAA,OAtCjB"}
@@ -10,6 +10,7 @@ const ToggleGroupContext = React$1.createContext({
10
10
  variant: "default",
11
11
  spacing: 0
12
12
  });
13
+ /** Group of toggle buttons for selecting one or more options */
13
14
  function ToggleGroup({ className, variant, size, spacing = 0, children, ...props }) {
14
15
  return /* @__PURE__ */ jsx(ToggleGroupPrimitive.Root, {
15
16
  "data-slot": "toggle-group",