@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":"empty.js","names":[],"sources":["../../../src/react/ui/empty.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-2 text-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n"],"mappings":";;;;;AAIA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAsC;AACnE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gIACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yDACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,qBAAqB,IACzB,+FACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,WAAW,EAClB,WACA,UAAU,WACV,GAAG,SACqE;AACxE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,mBAAmB;GAAE;GAAS;GAAW,CAAC,CAAC;EACzD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2GACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iFACA,UACD;EACD,GAAI;GACJ"}
1
+ {"version":3,"file":"empty.js","names":[],"sources":["../../../src/react/ui/empty.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Empty state component for displaying no-data scenarios */\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-2 text-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n"],"mappings":";;;;;;AAKA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAsC;AACnE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gIACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yDACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,qBAAqB,IACzB,+FACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,WAAW,EAClB,WACA,UAAU,WACV,GAAG,SACqE;AACxE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,mBAAmB;GAAE;GAAS;GAAW,CAAC,CAAC;EACzD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2GACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iFACA,UACD;EACD,GAAI;GACJ"}
@@ -1,55 +1,65 @@
1
1
  import { Label } from "./label.js";
2
- import * as react_jsx_runtime128 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime126 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as class_variance_authority_types4 from "class-variance-authority/types";
5
5
 
6
6
  //#region src/react/ui/field.d.ts
7
+ /** Container for grouping related form fields */
7
8
  declare function FieldSet({
8
9
  className,
9
10
  ...props
10
- }: React.ComponentProps<"fieldset">): react_jsx_runtime128.JSX.Element;
11
+ }: React.ComponentProps<"fieldset">): react_jsx_runtime126.JSX.Element;
12
+ /** Title or caption for a fieldset */
11
13
  declare function FieldLegend({
12
14
  className,
13
15
  variant,
14
16
  ...props
15
17
  }: React.ComponentProps<"legend"> & {
16
18
  variant?: "legend" | "label";
17
- }): react_jsx_runtime128.JSX.Element;
19
+ }): react_jsx_runtime126.JSX.Element;
20
+ /** Container for organizing multiple fields */
18
21
  declare function FieldGroup({
19
22
  className,
20
23
  ...props
21
- }: React.ComponentProps<"div">): react_jsx_runtime128.JSX.Element;
24
+ }: React.ComponentProps<"div">): react_jsx_runtime126.JSX.Element;
22
25
  declare const fieldVariants: (props?: ({
23
26
  orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
24
27
  } & class_variance_authority_types4.ClassProp) | undefined) => string;
28
+ /** Form field wrapper with label and input positioning */
25
29
  declare function Field({
26
30
  className,
27
31
  orientation,
28
32
  ...props
29
- }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime128.JSX.Element;
33
+ }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime126.JSX.Element;
34
+ /** Container for field label, description, and error messages */
30
35
  declare function FieldContent({
31
36
  className,
32
37
  ...props
33
- }: React.ComponentProps<"div">): react_jsx_runtime128.JSX.Element;
38
+ }: React.ComponentProps<"div">): react_jsx_runtime126.JSX.Element;
39
+ /** Label for a form field */
34
40
  declare function FieldLabel({
35
41
  className,
36
42
  ...props
37
- }: React.ComponentProps<typeof Label>): react_jsx_runtime128.JSX.Element;
43
+ }: React.ComponentProps<typeof Label>): react_jsx_runtime126.JSX.Element;
44
+ /** Title text for a field */
38
45
  declare function FieldTitle({
39
46
  className,
40
47
  ...props
41
- }: React.ComponentProps<"div">): react_jsx_runtime128.JSX.Element;
48
+ }: React.ComponentProps<"div">): react_jsx_runtime126.JSX.Element;
49
+ /** Helper text providing additional context for a field */
42
50
  declare function FieldDescription({
43
51
  className,
44
52
  ...props
45
- }: React.ComponentProps<"p">): react_jsx_runtime128.JSX.Element;
53
+ }: React.ComponentProps<"p">): react_jsx_runtime126.JSX.Element;
54
+ /** Visual separator between fields with optional label */
46
55
  declare function FieldSeparator({
47
56
  children,
48
57
  className,
49
58
  ...props
50
59
  }: React.ComponentProps<"div"> & {
51
60
  children?: React.ReactNode;
52
- }): react_jsx_runtime128.JSX.Element;
61
+ }): react_jsx_runtime126.JSX.Element;
62
+ /** Error message display for invalid field values */
53
63
  declare function FieldError({
54
64
  className,
55
65
  children,
@@ -59,7 +69,7 @@ declare function FieldError({
59
69
  errors?: Array<{
60
70
  message?: string;
61
71
  } | undefined>;
62
- }): react_jsx_runtime128.JSX.Element | null;
72
+ }): react_jsx_runtime126.JSX.Element | null;
63
73
  //#endregion
64
74
  export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
65
75
  //# sourceMappingURL=field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","names":[],"sources":["../../../src/react/ui/field.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAOS,QAAA;;;GAAkC,KAAA,CAAM,6BAA0B,oBAAA,CAAA,GAAA,CAAA;iBAclE,WAAA;;;;GAIN,KAAA,CAAM;;IAA2D,oBAAA,CAAA,GAAA,CAAA;AArBpC,iBAqCvB,UAAA,CAlCQ;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkC4B,KAAA,CAAM,cAlClC,CAAA,KAAA,CAAA,CAAA,EAkCuD,oBAAA,CAAA,GAAA,CAAA,OAlCvD;cA+CX,aA/CW,EAAA,CAAA,KAAgC,CAAhC,EAAA,CAAA;aAAG,CAAA,EAAA,YAAA,GAAA,UAAA,GAAA,YAAA,GAAA,IAAA,GAAA,SAAA;IAqEnB,+BAAA,CAAA,SArEgD,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;iBAuExC,KAAA,CAvEkE;EAAA,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EA2ExE,KAAA,CAAM,cA3EkE,CAAA,KAAA,CAAA,GA2E1C,YA3E0C,CAAA,OA2EtB,aA3EsB,CAAA,CAAA,EA2ER,oBAAA,CAAA,GAAA,CAAA,OA3EQ;iBAuFlE,YAAA,CAvFkE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuF5B,KAAA,CAAM,cAvFsB,CAAA,KAAA,CAAA,CAAA,EAuFD,oBAAA,CAAA,GAAA,CAAA,OAvFC;AAAA,iBAoGlE,UAAA,CAtFW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyFjB,KAAA,CAAM,cAzFW,CAAA,OAyFW,KAzFX,CAAA,CAAA,EAyFiB,oBAAA,CAAA,GAAA,CAAA,OAzFjB;iBAwGX,UAAA,CAxGW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAwGyB,KAAA,CAAM,cAxG/B,CAAA,KAAA,CAAA,CAAA,EAwGoD,oBAAA,CAAA,GAAA,CAAA,OAxGpD;iBAqHX,gBAAA,CApHP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAoHiD,KAAA,CAAM,cApHvD,CAAA,GAAA,CAAA,CAAA,EAoH0E,oBAAA,CAAA,GAAA,CAAA,OApH1E;iBAmIO,cAAA,CAlIP;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;CAAA,EAsIC,KAAA,CAAM,cAtIP,CAAA,KAAA,CAAA,GAAA;UAEC,CAAM,EAqII,KAAA,CAAM,SArIV;IAsIR,oBAAA,CAAA,GAAA,CAAA,OAtImE;iBA8J3D,UAAA,CA9J2D;EAAA,SAAA;EAAA,QAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAmKjE,KAAA,CAAM,cAnK2D,CAAA,KAAA,CAAA,GAAA;EAgB3D,MAAA,CAAA,EAoJE,KApJQ,CAAA;IAAA,OAAA,CAAA,EAAA,MAAA;MAAG,SAAA,CAAA;IAqJrB,oBAAA,CAAA,GAAA,CAAA,OAAA,GArJkD,IAAA"}
1
+ {"version":3,"file":"field.d.ts","names":[],"sources":["../../../src/react/ui/field.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAQS,QAAA;;;GAAkC,KAAA,CAAM,6BAA0B,oBAAA,CAAA,GAAA,CAAA;;iBAelE,WAAA;;;;GAIN,KAAA,CAAM;EAnBA,OAAA,CAAA,EAAA,QAAQ,GAAA,OAAA;CAAA,CAAA,EAmBmD,oBAAA,CAAA,GAAA,CAAA,OAnBnD;;iBAoCR,UAAA,CApCwC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAoCJ,KAAA,CAAM,cApCF,CAAA,KAAA,CAAA,CAAA,EAoCuB,oBAAA,CAAA,GAAA,CAAA,OApCvB;cAiD3C,aAjDqE,EAAA,CAAA,KAevD,CAfuD,EAAA,CAAA;EAAA,WAAA,CAAA,EAAA,YAAA,GAAA,UAAA,GAAA,YAAA,GAAA,IAAA,GAAA,SAAA;AAAA,CAAA,GAuE1E,+BAAA,CAAA,SAxDmB,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;;iBA2DX,KAAA,CA1DP;EAAA,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EA8DC,KAAA,CAAM,cA9DP,CAAA,KAAA,CAAA,GA8D+B,YA9D/B,CAAA,OA8DmD,aA9DnD,CAAA,CAAA,EA8DiE,oBAAA,CAAA,GAAA,CAAA,OA9DjE;;iBA2EO,YAAA,CAxEA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAwEsC,KAAA,CAAM,cAxE5C,CAAA,KAAA,CAAA,CAAA,EAwEiE,oBAAA,CAAA,GAAA,CAAA,OAxEjE;;iBAsFA,UAAA,CAtF2D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyFjE,KAAA,CAAM,cAzF2D,CAAA,OAyFrC,KAzFqC,CAAA,CAAA,EAyF/B,oBAAA,CAAA,GAAA,CAAA,OAzF+B;AAAA;iBAyG3D,UAAA,CAxFU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAwF0B,KAAA,CAAM,cAxFhC,CAAA,KAAA,CAAA,CAAA,EAwFqD,oBAAA,CAAA,GAAA,CAAA,OAxFrD;;iBAsGV,gBAAA,CAtG0C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAsGA,KAAA,CAAM,cAtGN,CAAA,GAAA,CAAA,CAAA,EAsGyB,oBAAA,CAAA,GAAA,CAAA,OAtGzB;;iBAsH1C,cAAA,CAtH+D;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;CAAA,EA0HrE,KAAA,CAAM,cA1H+D,CAAA,KAAA,CAAA,GAAA;EAalE,QAAA,CAAA,EA8GO,KAAA,CAAM,SAxFlB;IAyFA,oBAAA,CAAA,GAAA,CAAA,OAtFa;;iBA+GL,UAAA,CA9GP;EAAA,SAAA;EAAA,QAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAmHC,KAAA,CAAM,cAnHP,CAAA,KAAA,CAAA,GAAA;QACA,CAAA,EAmHS,KAnHT,CAAA;IAEC,OAAM,CAAA,EAAA,MAAA;MAA4C,SAAA,CAAA;IAkHpD,oBAAA,CAAA,GAAA,CAAA,OAAA,GAlHgC,IAAA"}
@@ -6,6 +6,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
 
8
8
  //#region src/react/ui/field.tsx
9
+ /** Container for grouping related form fields */
9
10
  function FieldSet({ className, ...props }) {
10
11
  return /* @__PURE__ */ jsx("fieldset", {
11
12
  "data-slot": "field-set",
@@ -13,6 +14,7 @@ function FieldSet({ className, ...props }) {
13
14
  ...props
14
15
  });
15
16
  }
17
+ /** Title or caption for a fieldset */
16
18
  function FieldLegend({ className, variant = "legend", ...props }) {
17
19
  return /* @__PURE__ */ jsx("legend", {
18
20
  "data-slot": "field-legend",
@@ -21,6 +23,7 @@ function FieldLegend({ className, variant = "legend", ...props }) {
21
23
  ...props
22
24
  });
23
25
  }
26
+ /** Container for organizing multiple fields */
24
27
  function FieldGroup({ className, ...props }) {
25
28
  return /* @__PURE__ */ jsx("div", {
26
29
  "data-slot": "field-group",
@@ -44,6 +47,7 @@ const fieldVariants = cva("group/field flex w-full gap-3 data-[invalid=true]:tex
44
47
  } },
45
48
  defaultVariants: { orientation: "vertical" }
46
49
  });
50
+ /** Form field wrapper with label and input positioning */
47
51
  function Field({ className, orientation = "vertical", ...props }) {
48
52
  return /* @__PURE__ */ jsx("div", {
49
53
  role: "group",
@@ -53,6 +57,7 @@ function Field({ className, orientation = "vertical", ...props }) {
53
57
  ...props
54
58
  });
55
59
  }
60
+ /** Container for field label, description, and error messages */
56
61
  function FieldContent({ className, ...props }) {
57
62
  return /* @__PURE__ */ jsx("div", {
58
63
  "data-slot": "field-content",
@@ -60,6 +65,7 @@ function FieldContent({ className, ...props }) {
60
65
  ...props
61
66
  });
62
67
  }
68
+ /** Label for a form field */
63
69
  function FieldLabel({ className, ...props }) {
64
70
  return /* @__PURE__ */ jsx(Label, {
65
71
  "data-slot": "field-label",
@@ -67,6 +73,7 @@ function FieldLabel({ className, ...props }) {
67
73
  ...props
68
74
  });
69
75
  }
76
+ /** Title text for a field */
70
77
  function FieldTitle({ className, ...props }) {
71
78
  return /* @__PURE__ */ jsx("div", {
72
79
  "data-slot": "field-label",
@@ -74,6 +81,7 @@ function FieldTitle({ className, ...props }) {
74
81
  ...props
75
82
  });
76
83
  }
84
+ /** Helper text providing additional context for a field */
77
85
  function FieldDescription({ className, ...props }) {
78
86
  return /* @__PURE__ */ jsx("p", {
79
87
  "data-slot": "field-description",
@@ -81,6 +89,7 @@ function FieldDescription({ className, ...props }) {
81
89
  ...props
82
90
  });
83
91
  }
92
+ /** Visual separator between fields with optional label */
84
93
  function FieldSeparator({ children, className, ...props }) {
85
94
  return /* @__PURE__ */ jsxs("div", {
86
95
  "data-slot": "field-separator",
@@ -94,6 +103,7 @@ function FieldSeparator({ children, className, ...props }) {
94
103
  })]
95
104
  });
96
105
  }
106
+ /** Error message display for invalid field values */
97
107
  function FieldError({ className, children, errors, ...props }) {
98
108
  const content = useMemo(() => {
99
109
  if (children) return children;
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":[],"sources":["../../../src/react/ui/field.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,uBACA,gFACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EACnB,WACA,UAAU,UACV,GAAG,SACiE;AACpE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GACT,oBACA,mCACA,gCACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0IACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,gBAAgB,IACpB,sEACA;CACE,UAAU,EACR,aAAa;EACX,UAAU,CAAC,4CAA4C;EACvD,YAAY;GACV;GACA;GACA;GACD;EACD,YAAY;GACV;GACA;GACA;GACD;EACF,EACF;CACD,iBAAiB,EACf,aAAa,YACd;CACF,CACF;AAED,SAAS,MAAM,EACb,WACA,cAAc,YACd,GAAG,SACgE;AACnE,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,cAAc,EAAE,aAAa,CAAC,EAAE,UAAU;EACxD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iEACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAClB,WACA,GAAG,SACkC;AACrC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gHACA,qKACA,6HACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,8GACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yHACA,gEACA,qEACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,eAAe,EACtB,UACA,WACA,GAAG,SAGF;AACD,QACE,qBAAC;EACC,aAAU;EACV,gBAAc,CAAC,CAAC;EAChB,WAAW,GACT,6EACA,UACD;EACD,GAAI;aAEJ,oBAAC,aAAU,WAAU,6BAA6B,EACjD,YACC,oBAAC;GACC,WAAU;GACV,aAAU;GAET;IACI;GAEL;;AAIV,SAAS,WAAW,EAClB,WACA,UACA,QACA,GAAG,SAGF;CACD,MAAM,UAAU,cAAc;AAC5B,MAAI,SACF,QAAO;AAGT,MAAI,CAAC,QAAQ,OACX,QAAO;EAGT,MAAM,eAAe,CACnB,GAAG,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CACpE;AAED,MAAI,cAAc,UAAU,EAC1B,QAAO,aAAa,IAAI;AAG1B,SACE,oBAAC;GAAG,WAAU;aACX,aAAa,KACX,OAAO,UACN,OAAO,WAAW,oBAAC,kBAAgB,MAAM,WAAd,MAA2B,CACzD;IACE;IAEN,CAAC,UAAU,OAAO,CAAC;AAEtB,KAAI,CAAC,QACH,QAAO;AAGT,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,WAAW,GAAG,wCAAwC,UAAU;EAChE,GAAI;YAEH;GACG"}
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../../src/react/ui/field.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\n\n/** Container for grouping related form fields */\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Title or caption for a fieldset */\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Container for organizing multiple fields */\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\n/** Form field wrapper with label and input positioning */\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\n/** Container for field label, description, and error messages */\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Label for a form field */\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Title text for a field */\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Helper text providing additional context for a field */\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Visual separator between fields with optional label */\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\n/** Error message display for invalid field values */\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n"],"mappings":";;;;;;;;;AAQA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,uBACA,gFACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EACnB,WACA,UAAU,UACV,GAAG,SACiE;AACpE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GACT,oBACA,mCACA,gCACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,0IACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,gBAAgB,IACpB,sEACA;CACE,UAAU,EACR,aAAa;EACX,UAAU,CAAC,4CAA4C;EACvD,YAAY;GACV;GACA;GACA;GACD;EACD,YAAY;GACV;GACA;GACA;GACD;EACF,EACF;CACD,iBAAiB,EACf,aAAa,YACd;CACF,CACF;;AAGD,SAAS,MAAM,EACb,WACA,cAAc,YACd,GAAG,SACgE;AACnE,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,cAAc,EAAE,aAAa,CAAC,EAAE,UAAU;EACxD,GAAI;GACJ;;;AAKN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iEACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,WAAW,EAClB,WACA,GAAG,SACkC;AACrC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gHACA,qKACA,6HACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,8GACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yHACA,gEACA,qEACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,eAAe,EACtB,UACA,WACA,GAAG,SAGF;AACD,QACE,qBAAC;EACC,aAAU;EACV,gBAAc,CAAC,CAAC;EAChB,WAAW,GACT,6EACA,UACD;EACD,GAAI;aAEJ,oBAAC,aAAU,WAAU,6BAA6B,EACjD,YACC,oBAAC;GACC,WAAU;GACV,aAAU;GAET;IACI;GAEL;;;AAKV,SAAS,WAAW,EAClB,WACA,UACA,QACA,GAAG,SAGF;CACD,MAAM,UAAU,cAAc;AAC5B,MAAI,SACF,QAAO;AAGT,MAAI,CAAC,QAAQ,OACX,QAAO;EAGT,MAAM,eAAe,CACnB,GAAG,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CACpE;AAED,MAAI,cAAc,UAAU,EAC1B,QAAO,aAAa,IAAI;AAG1B,SACE,oBAAC;GAAG,WAAU;aACX,aAAa,KACX,OAAO,UACN,OAAO,WAAW,oBAAC,kBAAgB,MAAM,WAAd,MAA2B,CACzD;IACE;IAEN,CAAC,UAAU,OAAO,CAAC;AAEtB,KAAI,CAAC,QACH,QAAO;AAGT,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,WAAW,GAAG,wCAAwC,UAAU;EAChE,GAAI;YAEH;GACG"}
@@ -1,15 +1,17 @@
1
1
  import * as react2 from "react";
2
- import * as react_jsx_runtime91 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime136 from "react/jsx-runtime";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import * as LabelPrimitive from "@radix-ui/react-label";
5
5
  import * as react_hook_form0 from "react-hook-form";
6
6
  import { ControllerProps, FieldPath, FieldValues } from "react-hook-form";
7
7
 
8
8
  //#region src/react/ui/form.d.ts
9
+ /** Form context provider using react-hook-form */
9
10
  declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form0.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => react2.JSX.Element;
11
+ /** Controlled field component for react-hook-form integration */
10
12
  declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({
11
13
  ...props
12
- }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime91.JSX.Element;
14
+ }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime136.JSX.Element;
13
15
  declare const useFormField: () => {
14
16
  invalid: boolean;
15
17
  isDirty: boolean;
@@ -22,25 +24,30 @@ declare const useFormField: () => {
22
24
  formDescriptionId: string;
23
25
  formMessageId: string;
24
26
  };
27
+ /** Container for a single form field with label and messages */
25
28
  declare function FormItem({
26
29
  className,
27
30
  ...props
28
- }: react2.ComponentProps<"div">): react_jsx_runtime91.JSX.Element;
31
+ }: react2.ComponentProps<"div">): react_jsx_runtime136.JSX.Element;
32
+ /** Label for a form field with error state styling */
29
33
  declare function FormLabel({
30
34
  className,
31
35
  ...props
32
- }: react2.ComponentProps<typeof LabelPrimitive.Root>): react_jsx_runtime91.JSX.Element;
36
+ }: react2.ComponentProps<typeof LabelPrimitive.Root>): react_jsx_runtime136.JSX.Element;
37
+ /** Wrapper for form control elements with accessibility attributes */
33
38
  declare function FormControl({
34
39
  ...props
35
- }: react2.ComponentProps<typeof Slot>): react_jsx_runtime91.JSX.Element;
40
+ }: react2.ComponentProps<typeof Slot>): react_jsx_runtime136.JSX.Element;
41
+ /** Helper text providing guidance for a form field */
36
42
  declare function FormDescription({
37
43
  className,
38
44
  ...props
39
- }: react2.ComponentProps<"p">): react_jsx_runtime91.JSX.Element;
45
+ }: react2.ComponentProps<"p">): react_jsx_runtime136.JSX.Element;
46
+ /** Validation error message for a form field */
40
47
  declare function FormMessage({
41
48
  className,
42
49
  ...props
43
- }: react2.ComponentProps<"p">): react_jsx_runtime91.JSX.Element | null;
50
+ }: react2.ComponentProps<"p">): react_jsx_runtime136.JSX.Element | null;
44
51
  //#endregion
45
52
  export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField };
46
53
  //# sourceMappingURL=form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","names":[],"sources":["../../../src/react/ui/form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;cAkBM,4BAAI,kDAAA,qBAAA,gBAAA,CAAA,kBAAA,cAAA,UAAA,wBAAA,MAAA,CAAA,GAAA,CAAA;cAaJ,iCACiB,cAAc,2BACrB,UAAU,gBAAgB,UAAU;;GAGjD,gBAAgB,cAAc,WAAM,mBAAA,CAAA,GAAA,CAAA;cAQjC;;EA1BA,OAAmB,EAAA,OAAA;EAAA,SAAA,EAAA,OAAA;cAAf,EAAA,OAAA;OAAA,CAAA,EA+CT,gBAAA,CAAA,UA/CS;MAAA,MAAA;MAAA,EAAA,MAAA;YAAA,EAAA,MAAA;mBAAA,EAAA,MAAA;eAAA,EAAA,MAAA;CAAe;AAAA,iBAyDhB,QAAA,CAjCR;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiC0C,MAAA,CAAM,cAjChD,CAAA,KAAA,CAAA,CAAA,EAiCqE,mBAAA,CAAA,GAAA,CAAA,OAjCrE;iBA+CQ,SAAA,CA/CR;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkDE,MAAA,CAAM,cAlDR,CAAA,OAkD8B,cAAA,CAAe,IAlD7C,CAAA,CAAA,EAkDkD,mBAAA,CAAA,GAAA,CAAA,OAlDlD;iBAgEQ,WAAA,CA1Ec;EAAA,GAAA;AAAA,CAAA,EA0EY,MAAA,CAAM,cA1ElB,CAAA,OA0EwC,IA1ExC,CAAA,CAAA,EA0E6C,mBAAA,CAAA,GAAA,CAAA,OA1E7C;iBA6Fd,eAAA,CA7F4B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6Fa,MAAA,CAAM,cA7FnB,CAAA,GAAA,CAAA,CAAA,EA6FsC,mBAAA,CAAA,GAAA,CAAA,OA7FtC;iBA0G5B,WAAA,CAzGiB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyGoB,MAAA,CAAM,cAzG1B,CAAA,GAAA,CAAA,CAAA,EAyG6C,mBAAA,CAAA,GAAA,CAAA,OAAA,GAzG7C,IAAA"}
1
+ {"version":3,"file":"form.d.ts","names":[],"sources":["../../../src/react/ui/form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;cAmBM,4BAAI,kDAAA,qBAAA,gBAAA,CAAA,kBAAA,cAAA,UAAA,wBAAA,MAAA,CAAA,GAAA,CAAA;;cAcJ,iCACiB,cAAc,2BACrB,UAAU,gBAAgB,UAAU;;GAGjD,gBAAgB,cAAc,WAAM,oBAAA,CAAA,GAAA,CAAA;AAzBd,cAiCnB,YA3BmB,EAAA,GAAA,GAAA;EAAA,OAAA,EAAA,OAAA;SAAf,EAAA,OAAA;WAAA,EAAA,OAAA;cAAA,EAAA,OAAA;OAAA,CAAA,EAgDT,gBAAA,CAAA,UAhDS;MAAA,MAAA;MAAA,EAAA,MAAA;YAAA,EAAA,MAAA;EAAe,iBAAA,EAAA,MAAA;EAcnB,aAWL,EAAA,MAAA;CAAA;;iBAkCQ,QAAA,CA5C4B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4CM,MAAA,CAAM,cA5CZ,CAAA,KAAA,CAAA,CAAA,EA4CiC,oBAAA,CAAA,GAAA,CAAA,OA5CjC;;iBA2D5B,SAAA,CA1DO;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6Db,MAAA,CAAM,cA7DO,CAAA,OA6De,cAAA,CAAe,IA7D9B,CAAA,CAAA,EA6DmC,oBAAA,CAAA,GAAA,CAAA,OA7DnC;;iBA4EP,WAAA,CA5EiC;EAAA,GAAA;AAAA,CAAA,EA4EP,MAAA,CAAM,cA5EC,CAAA,OA4EqB,IA5ErB,CAAA,CAAA,EA4E0B,oBAAA,CAAA,GAAA,CAAA,OA5E1B;;iBAgGjC,eAAA,CA7FwB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6FiB,MAAA,CAAM,cA7FvB,CAAA,GAAA,CAAA,CAAA,EA6F0C,oBAAA,CAAA,GAAA,CAAA,OA7F1C;;iBA2GxB,WAAA,CA3G8B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA2GO,MAAA,CAAM,cA3Gb,CAAA,GAAA,CAAA,CAAA,EA2GgC,oBAAA,CAAA,GAAA,CAAA,OAAA,GA3GhC,IAAA"}
@@ -8,8 +8,10 @@ import { Slot } from "@radix-ui/react-slot";
8
8
  import { Controller, FormProvider, useFormContext, useFormState } from "react-hook-form";
9
9
 
10
10
  //#region src/react/ui/form.tsx
11
+ /** Form context provider using react-hook-form */
11
12
  const Form = FormProvider;
12
13
  const FormFieldContext = React$1.createContext({});
14
+ /** Controlled field component for react-hook-form integration */
13
15
  const FormField = ({ ...props }) => {
14
16
  return /* @__PURE__ */ jsx(FormFieldContext.Provider, {
15
17
  value: { name: props.name },
@@ -34,6 +36,7 @@ const useFormField = () => {
34
36
  };
35
37
  };
36
38
  const FormItemContext = React$1.createContext({});
39
+ /** Container for a single form field with label and messages */
37
40
  function FormItem({ className, ...props }) {
38
41
  const id = React$1.useId();
39
42
  return /* @__PURE__ */ jsx(FormItemContext.Provider, {
@@ -45,6 +48,7 @@ function FormItem({ className, ...props }) {
45
48
  })
46
49
  });
47
50
  }
51
+ /** Label for a form field with error state styling */
48
52
  function FormLabel({ className, ...props }) {
49
53
  const { error, formItemId } = useFormField();
50
54
  return /* @__PURE__ */ jsx(Label, {
@@ -55,6 +59,7 @@ function FormLabel({ className, ...props }) {
55
59
  ...props
56
60
  });
57
61
  }
62
+ /** Wrapper for form control elements with accessibility attributes */
58
63
  function FormControl({ ...props }) {
59
64
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
60
65
  return /* @__PURE__ */ jsx(Slot, {
@@ -65,6 +70,7 @@ function FormControl({ ...props }) {
65
70
  ...props
66
71
  });
67
72
  }
73
+ /** Helper text providing guidance for a form field */
68
74
  function FormDescription({ className, ...props }) {
69
75
  const { formDescriptionId } = useFormField();
70
76
  return /* @__PURE__ */ jsx("p", {
@@ -74,6 +80,7 @@ function FormDescription({ className, ...props }) {
74
80
  ...props
75
81
  });
76
82
  }
83
+ /** Validation error message for a form field */
77
84
  function FormMessage({ className, ...props }) {
78
85
  const { error, formMessageId } = useFormField();
79
86
  const body = error ? String(error?.message ?? "") : props.children;
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","names":["React"],"sources":["../../../src/react/ui/form.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"mappings":";;;;;;;;;;AAkBA,MAAM,OAAO;AASb,MAAM,mBAAmBA,QAAM,cAC7B,EAAE,CACH;AAED,MAAM,aAGJ,EACA,GAAG,YACuC;AAC1C,QACE,oBAAC,iBAAiB;EAAS,OAAO,EAAE,MAAM,MAAM,MAAM;YACpD,oBAAC,cAAW,GAAI,QAAS;GACC;;AAIhC,MAAM,qBAAqB;CACzB,MAAM,eAAeA,QAAM,WAAW,iBAAiB;CACvD,MAAM,cAAcA,QAAM,WAAW,gBAAgB;CACrD,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,YAAY,aAAa,EAAE,MAAM,aAAa,MAAM,CAAC;CAC3D,MAAM,aAAa,cAAc,aAAa,MAAM,UAAU;AAE9D,KAAI,CAAC,aACH,OAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAM,EAAE,OAAO;AAEf,QAAO;EACL;EACA,MAAM,aAAa;EACnB,YAAY,GAAG,GAAG;EAClB,mBAAmB,GAAG,GAAG;EACzB,eAAe,GAAG,GAAG;EACrB,GAAG;EACJ;;AAOH,MAAM,kBAAkBA,QAAM,cAC5B,EAAE,CACH;AAED,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;CACtE,MAAM,KAAKA,QAAM,OAAO;AAExB,QACE,oBAAC,gBAAgB;EAAS,OAAO,EAAE,IAAI;YACrC,oBAAC;GACC,aAAU;GACV,WAAW,GAAG,cAAc,UAAU;GACtC,GAAI;IACJ;GACuB;;AAI/B,SAAS,UAAU,EACjB,WACA,GAAG,SACgD;CACnD,MAAM,EAAE,OAAO,eAAe,cAAc;AAE5C,QACE,oBAAC;EACC,aAAU;EACV,cAAY,CAAC,CAAC;EACd,WAAW,GAAG,sCAAsC,UAAU;EAC9D,SAAS;EACT,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,GAAG,SAA4C;CACpE,MAAM,EAAE,OAAO,YAAY,mBAAmB,kBAC5C,cAAc;AAEhB,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,oBACE,CAAC,QACG,GAAG,sBACH,GAAG,kBAAkB,GAAG;EAE9B,gBAAc,CAAC,CAAC;EAChB,GAAI;GACJ;;AAIN,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,MAAM,EAAE,sBAAsB,cAAc;AAE5C,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;CACvE,MAAM,EAAE,OAAO,kBAAkB,cAAc;CAC/C,MAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,GAAG,GAAG,MAAM;AAE1D,KAAI,CAAC,KACH,QAAO;AAGT,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,WAAW,GAAG,4BAA4B,UAAU;EACpD,GAAI;YAEH;GACC"}
1
+ {"version":3,"file":"form.js","names":["React"],"sources":["../../../src/react/ui/form.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"./label\";\n\n/** Form context provider using react-hook-form */\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\n/** Controlled field component for react-hook-form integration */\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\n/** Container for a single form field with label and messages */\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\n/** Label for a form field with error state styling */\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\n/** Wrapper for form control elements with accessibility attributes */\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\n/** Helper text providing guidance for a form field */\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\n/** Validation error message for a form field */\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"mappings":";;;;;;;;;;;AAmBA,MAAM,OAAO;AASb,MAAM,mBAAmBA,QAAM,cAC7B,EAAE,CACH;;AAGD,MAAM,aAGJ,EACA,GAAG,YACuC;AAC1C,QACE,oBAAC,iBAAiB;EAAS,OAAO,EAAE,MAAM,MAAM,MAAM;YACpD,oBAAC,cAAW,GAAI,QAAS;GACC;;AAIhC,MAAM,qBAAqB;CACzB,MAAM,eAAeA,QAAM,WAAW,iBAAiB;CACvD,MAAM,cAAcA,QAAM,WAAW,gBAAgB;CACrD,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,YAAY,aAAa,EAAE,MAAM,aAAa,MAAM,CAAC;CAC3D,MAAM,aAAa,cAAc,aAAa,MAAM,UAAU;AAE9D,KAAI,CAAC,aACH,OAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAM,EAAE,OAAO;AAEf,QAAO;EACL;EACA,MAAM,aAAa;EACnB,YAAY,GAAG,GAAG;EAClB,mBAAmB,GAAG,GAAG;EACzB,eAAe,GAAG,GAAG;EACrB,GAAG;EACJ;;AAOH,MAAM,kBAAkBA,QAAM,cAC5B,EAAE,CACH;;AAGD,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;CACtE,MAAM,KAAKA,QAAM,OAAO;AAExB,QACE,oBAAC,gBAAgB;EAAS,OAAO,EAAE,IAAI;YACrC,oBAAC;GACC,aAAU;GACV,WAAW,GAAG,cAAc,UAAU;GACtC,GAAI;IACJ;GACuB;;;AAK/B,SAAS,UAAU,EACjB,WACA,GAAG,SACgD;CACnD,MAAM,EAAE,OAAO,eAAe,cAAc;AAE5C,QACE,oBAAC;EACC,aAAU;EACV,cAAY,CAAC,CAAC;EACd,WAAW,GAAG,sCAAsC,UAAU;EAC9D,SAAS;EACT,GAAI;GACJ;;;AAKN,SAAS,YAAY,EAAE,GAAG,SAA4C;CACpE,MAAM,EAAE,OAAO,YAAY,mBAAmB,kBAC5C,cAAc;AAEhB,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,oBACE,CAAC,QACG,GAAG,sBACH,GAAG,kBAAkB,GAAG;EAE9B,gBAAc,CAAC,CAAC;EAChB,GAAI;GACJ;;;AAKN,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,MAAM,EAAE,sBAAsB,cAAc;AAE5C,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,WAAW,GAAG,iCAAiC,UAAU;EACzD,GAAI;GACJ;;;AAKN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;CACvE,MAAM,EAAE,OAAO,kBAAkB,cAAc;CAC/C,MAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,GAAG,GAAG,MAAM;AAE1D,KAAI,CAAC,KACH,QAAO;AAGT,QACE,oBAAC;EACC,aAAU;EACV,IAAI;EACJ,WAAW,GAAG,4BAA4B,UAAU;EACpD,GAAI;YAEH;GACC"}
@@ -1,20 +1,21 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime148 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime142 from "react/jsx-runtime";
3
3
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
4
4
 
5
5
  //#region src/react/ui/hover-card.d.ts
6
+ /** Content card that appears when hovering over an element */
6
7
  declare function HoverCard({
7
8
  ...props
8
- }: React$1.ComponentProps<typeof HoverCardPrimitive.Root>): react_jsx_runtime148.JSX.Element;
9
+ }: React$1.ComponentProps<typeof HoverCardPrimitive.Root>): react_jsx_runtime142.JSX.Element;
9
10
  declare function HoverCardTrigger({
10
11
  ...props
11
- }: React$1.ComponentProps<typeof HoverCardPrimitive.Trigger>): react_jsx_runtime148.JSX.Element;
12
+ }: React$1.ComponentProps<typeof HoverCardPrimitive.Trigger>): react_jsx_runtime142.JSX.Element;
12
13
  declare function HoverCardContent({
13
14
  className,
14
15
  align,
15
16
  sideOffset,
16
17
  ...props
17
- }: React$1.ComponentProps<typeof HoverCardPrimitive.Content>): react_jsx_runtime148.JSX.Element;
18
+ }: React$1.ComponentProps<typeof HoverCardPrimitive.Content>): react_jsx_runtime142.JSX.Element;
18
19
  //#endregion
19
20
  export { HoverCard, HoverCardContent, HoverCardTrigger };
20
21
  //# sourceMappingURL=hover-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card.d.ts","names":[],"sources":["../../../src/react/ui/hover-card.tsx"],"sourcesContent":[],"mappings":";;;;;iBAQS,SAAA;;GAEN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAI9C,gBAAA;;GAEN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,WAAQ,oBAAA,CAAA,GAAA,CAAA;iBAMjD,gBAAA;;;;;GAKN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,WAAQ,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"hover-card.d.ts","names":[],"sources":["../../../src/react/ui/hover-card.tsx"],"sourcesContent":[],"mappings":";;;;;;iBASS,SAAA;;GAEN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAI9C,gBAAA;;GAEN,OAAA,CAAM,sBAAsB,kBAAA,CAAmB,WAAQ,oBAAA,CAAA,GAAA,CAAA;AAdO,iBAoBxD,gBAAA,CAdS;EAAA,SAAA;EAAA,KAAA;EAAA,UAAA;EAAA,GAAA;AAAA,CAAA,EAmBf,OAAA,CAAM,cAnBS,CAAA,OAmBa,kBAAA,CAAmB,OAnBhC,CAAA,CAAA,EAmBwC,oBAAA,CAAA,GAAA,CAAA,OAnBxC"}
@@ -6,6 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
7
7
 
8
8
  //#region src/react/ui/hover-card.tsx
9
+ /** Content card that appears when hovering over an element */
9
10
  function HoverCard({ ...props }) {
10
11
  return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, {
11
12
  "data-slot": "hover-card",
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card.js","names":[],"sources":["../../../src/react/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal\n data-slot=\"hover-card-portal\"\n container={useResolvedPortalContainer()}\n >\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,EACjB,GAAG,SACoD;AACvD,QAAO,oBAAC,mBAAmB;EAAK,aAAU;EAAa,GAAI;GAAS;;AAGtE,SAAS,iBAAiB,EACxB,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAAQ,aAAU;EAAqB,GAAI;GAAS;;AAI5E,SAAS,iBAAiB,EACxB,WACA,QAAQ,UACR,aAAa,GACb,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAClB,aAAU;EACV,WAAW,4BAA4B;YAEvC,oBAAC,mBAAmB;GAClB,aAAU;GACH;GACK;GACZ,WAAW,GACT,qeACA,UACD;GACD,GAAI;IACJ;GACwB"}
1
+ {"version":3,"file":"hover-card.js","names":[],"sources":["../../../src/react/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../lib/utils\";\nimport { useResolvedPortalContainer } from \"../portal-container-context\";\n\n/** Content card that appears when hovering over an element */\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal\n data-slot=\"hover-card-portal\"\n container={useResolvedPortalContainer()}\n >\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"mappings":";;;;;;;;;AASA,SAAS,UAAU,EACjB,GAAG,SACoD;AACvD,QAAO,oBAAC,mBAAmB;EAAK,aAAU;EAAa,GAAI;GAAS;;AAGtE,SAAS,iBAAiB,EACxB,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAAQ,aAAU;EAAqB,GAAI;GAAS;;AAI5E,SAAS,iBAAiB,EACxB,WACA,QAAQ,UACR,aAAa,GACb,GAAG,SACuD;AAC1D,QACE,oBAAC,mBAAmB;EAClB,aAAU;EACV,WAAW,4BAA4B;YAEvC,oBAAC,mBAAmB;GAClB,aAAU;GACH;GACK;GACZ,WAAW,GACT,qeACA,UACD;GACD,GAAI;IACJ;GACwB"}
@@ -1,44 +1,50 @@
1
1
  import { Button } from "./button.js";
2
2
  import * as React$1 from "react";
3
- import * as react_jsx_runtime152 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime146 from "react/jsx-runtime";
4
4
  import { VariantProps } from "class-variance-authority";
5
- import * as class_variance_authority_types7 from "class-variance-authority/types";
5
+ import * as class_variance_authority_types5 from "class-variance-authority/types";
6
6
 
7
7
  //#region src/react/ui/input-group.d.ts
8
+ /** Container for combining input fields with addons and buttons */
8
9
  declare function InputGroup({
9
10
  className,
10
11
  ...props
11
- }: React$1.ComponentProps<"div">): react_jsx_runtime152.JSX.Element;
12
+ }: React$1.ComponentProps<"div">): react_jsx_runtime146.JSX.Element;
12
13
  declare const inputGroupAddonVariants: (props?: ({
13
14
  align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
14
- } & class_variance_authority_types7.ClassProp) | undefined) => string;
15
+ } & class_variance_authority_types5.ClassProp) | undefined) => string;
16
+ /** Decorative content positioned at the start or end of an input group */
15
17
  declare function InputGroupAddon({
16
18
  className,
17
19
  align,
18
20
  ...props
19
- }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): react_jsx_runtime152.JSX.Element;
21
+ }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): react_jsx_runtime146.JSX.Element;
20
22
  declare const inputGroupButtonVariants: (props?: ({
21
23
  size?: "sm" | "icon-sm" | "xs" | "icon-xs" | null | undefined;
22
- } & class_variance_authority_types7.ClassProp) | undefined) => string;
24
+ } & class_variance_authority_types5.ClassProp) | undefined) => string;
25
+ /** Button integrated within an input group */
23
26
  declare function InputGroupButton({
24
27
  className,
25
28
  type,
26
29
  variant,
27
30
  size,
28
31
  ...props
29
- }: Omit<React$1.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): react_jsx_runtime152.JSX.Element;
32
+ }: Omit<React$1.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): react_jsx_runtime146.JSX.Element;
33
+ /** Static text or icon displayed within an input group */
30
34
  declare function InputGroupText({
31
35
  className,
32
36
  ...props
33
- }: React$1.ComponentProps<"span">): react_jsx_runtime152.JSX.Element;
37
+ }: React$1.ComponentProps<"span">): react_jsx_runtime146.JSX.Element;
38
+ /** Text input styled for use within an input group */
34
39
  declare function InputGroupInput({
35
40
  className,
36
41
  ...props
37
- }: React$1.ComponentProps<"input">): react_jsx_runtime152.JSX.Element;
42
+ }: React$1.ComponentProps<"input">): react_jsx_runtime146.JSX.Element;
43
+ /** Textarea styled for use within an input group */
38
44
  declare function InputGroupTextarea({
39
45
  className,
40
46
  ...props
41
- }: React$1.ComponentProps<"textarea">): react_jsx_runtime152.JSX.Element;
47
+ }: React$1.ComponentProps<"textarea">): react_jsx_runtime146.JSX.Element;
42
48
  //#endregion
43
49
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
44
50
  //# sourceMappingURL=input-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.d.ts","names":[],"sources":["../../../src/react/ui/input-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAUS,UAAA;;;GAAoC,OAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;cA4BlE;;IAmBL,+BAAA,CAAA;AAnDiC,iBAqDzB,eAAA,CAjDU;EAAA,SAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAqDhB,OAAA,CAAM,cArDU,CAAA,KAAA,CAAA,GAqDc,YArDd,CAAA,OAqDkC,uBArDlC,CAAA,CAAA,EAqD0D,oBAAA,CAAA,GAAA,CAAA,OArD1D;cAuEb,wBAvEa,EAAA,CAAA,KAAgC,CAAhC,EAAA,CAAA;MAAG,CAAA,EAAA,IAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA;IAuFrB,+BAAA,CAAA,SAvFkD,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;iBAyF1C,gBAAA,CAzF+D;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EA+FrE,IA/FqE,CA+FhE,OAAA,CAAM,cA/F0D,CAAA,OA+FpC,MA/FoC,CAAA,EAAA,MAAA,CAAA,GAgGtE,YAhGsE,CAAA,OAgGlD,wBAhGkD,CAAA,CAAA,EAgGzB,oBAAA,CAAA,GAAA,CAAA,OAhGyB;iBA4G/D,cAAA,CA5G+D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4GvB,OAAA,CAAM,cA5GiB,CAAA,MAAA,CAAA,CAAA,EA4GK,oBAAA,CAAA,GAAA,CAAA,OA5GL;AAAA,iBAwH/D,eAAA,CAzER;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4EE,OAAA,CAAM,cA5ER,CAAA,OAAA,CAAA,CAAA,EA4E+B,oBAAA,CAAA,GAAA,CAAA,OA5E/B;iBAyFQ,kBAAA,CAvFe;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0FrB,OAAA,CAAM,cA1Fe,CAAA,UAAA,CAAA,CAAA,EA0FW,oBAAA,CAAA,GAAA,CAAA,OA1FX"}
1
+ {"version":3,"file":"input-group.d.ts","names":[],"sources":["../../../src/react/ui/input-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;;iBAWS,UAAA;;;GAAoC,OAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;cA4BlE,+BA5Ba;;AALe,CAAA,GAoDjC,+BAAA,CAAA,SA/CkB,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;;iBAkDV,eAAA,CAlDa;EAAA,SAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAsDnB,OAAA,CAAM,cAtDa,CAAA,KAAA,CAAA,GAsDW,YAtDX,CAAA,OAsD+B,uBAtD/B,CAAA,CAAA,EAsDuD,oBAAA,CAAA,GAAA,CAAA,OAtDvD;cAwEhB,wBAxE6C,EAAA,CAAA,KAAqB,CAArB,EAAA,CAAA;MAAqB,CAAA,EAAA,IAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA;CAAA,GAwFvE,+BAAA,CAAA,SAxFuE,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;AAAA;iBA2F/D,gBAAA,CAzCe;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EA+CrB,IA/CqB,CA+ChB,OAAA,CAAM,cA/CU,CAAA,OA+CY,MA/CZ,CAAA,EAAA,MAAA,CAAA,GAgDtB,YAhDsB,CAAA,OAgDF,wBAhDE,CAAA,CAAA,EAgDuB,oBAAA,CAAA,GAAA,CAAA,OAhDvB;;iBA6Df,cAAA,CA5DP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4D+C,OAAA,CAAM,cA5DrD,CAAA,MAAA,CAAA,CAAA,EA4D2E,oBAAA,CAAA,GAAA,CAAA,OA5D3E;;iBAyEO,eAAA,CAtEA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyEN,OAAA,CAAM,cAzEA,CAAA,OAAA,CAAA,CAAA,EAyEuB,oBAAA,CAAA,GAAA,CAAA,OAzEvB;;iBAuFA,kBAAA,CAvFwB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0F9B,OAAA,CAAM,cA1FwB,CAAA,UAAA,CAAA,CAAA,EA0FE,oBAAA,CAAA,GAAA,CAAA,OA1FF"}
@@ -8,6 +8,7 @@ import { jsx } from "react/jsx-runtime";
8
8
  import { cva } from "class-variance-authority";
9
9
 
10
10
  //#region src/react/ui/input-group.tsx
11
+ /** Container for combining input fields with addons and buttons */
11
12
  function InputGroup({ className, ...props }) {
12
13
  return /* @__PURE__ */ jsx("div", {
13
14
  "data-slot": "input-group",
@@ -25,6 +26,7 @@ const inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-te
25
26
  } },
26
27
  defaultVariants: { align: "inline-start" }
27
28
  });
29
+ /** Decorative content positioned at the start or end of an input group */
28
30
  function InputGroupAddon({ className, align = "inline-start", ...props }) {
29
31
  return /* @__PURE__ */ jsx("div", {
30
32
  role: "group",
@@ -47,6 +49,7 @@ const inputGroupButtonVariants = cva("text-sm shadow-none flex gap-2 items-cente
47
49
  } },
48
50
  defaultVariants: { size: "xs" }
49
51
  });
52
+ /** Button integrated within an input group */
50
53
  function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
51
54
  return /* @__PURE__ */ jsx(Button, {
52
55
  type,
@@ -56,12 +59,14 @@ function InputGroupButton({ className, type = "button", variant = "ghost", size
56
59
  ...props
57
60
  });
58
61
  }
62
+ /** Static text or icon displayed within an input group */
59
63
  function InputGroupText({ className, ...props }) {
60
64
  return /* @__PURE__ */ jsx("span", {
61
65
  className: cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
62
66
  ...props
63
67
  });
64
68
  }
69
+ /** Text input styled for use within an input group */
65
70
  function InputGroupInput({ className, ...props }) {
66
71
  return /* @__PURE__ */ jsx(Input, {
67
72
  "data-slot": "input-group-control",
@@ -69,6 +74,7 @@ function InputGroupInput({ className, ...props }) {
69
74
  ...props
70
75
  });
71
76
  }
77
+ /** Textarea styled for use within an input group */
72
78
  function InputGroupTextarea({ className, ...props }) {
73
79
  return /* @__PURE__ */ jsx(Textarea, {
74
80
  "data-slot": "input-group-control",
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.js","names":[],"sources":["../../../src/react/ui/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Textarea } from \"./textarea\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n },\n);\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"mappings":";;;;;;;;;;AAUA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,MAAK;EACL,WAAW,GACT,4JACA,sCAGA,mDACA,iDACA,kIACA,4HAGA,mMAGA,kLAEA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,0BAA0B,IAC9B,2PACA;CACE,UAAU,EACR,OAAO;EACL,gBACE;EACF,cACE;EACF,eACE;EACF,aACE;EACH,EACF;CACD,iBAAiB,EACf,OAAO,gBACR;CACF,CACF;AAED,SAAS,gBAAgB,EACvB,WACA,QAAQ,gBACR,GAAG,SAC0E;AAC7E,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,cAAY;EACZ,WAAW,GAAG,wBAAwB,EAAE,OAAO,CAAC,EAAE,UAAU;EAC5D,UAAU,MAAM;AACd,OAAK,EAAE,OAAuB,QAAQ,SAAS,CAC7C;AAEF,KAAE,cAAc,eAAe,cAAc,QAAQ,EAAE,OAAO;;EAEhE,GAAI;GACJ;;AAIN,MAAM,2BAA2B,IAC/B,+CACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,WACE;EACF,WAAW;EACZ,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;AAED,SAAS,iBAAiB,EACxB,WACA,OAAO,UACP,UAAU,SACV,OAAO,MACP,GAAG,SAE4C;AAC/C,QACE,oBAAC;EACO;EACN,aAAW;EACF;EACT,WAAW,GAAG,yBAAyB,EAAE,MAAM,CAAC,EAAE,UAAU;EAC5D,GAAI;GACJ;;AAIN,SAAS,eAAe,EAAE,WAAW,GAAG,SAAuC;AAC7E,QACE,oBAAC;EACC,WAAW,GACT,0HACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,gBAAgB,EACvB,WACA,GAAG,SAC6B;AAChC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,oGACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACgC;AACnC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,qHACA,UACD;EACD,GAAI;GACJ"}
1
+ {"version":3,"file":"input-group.js","names":[],"sources":["../../../src/react/ui/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Textarea } from \"./textarea\";\n\n/** Container for combining input fields with addons and buttons */\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\n/** Decorative content positioned at the start or end of an input group */\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n },\n);\n\n/** Button integrated within an input group */\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\n/** Static text or icon displayed within an input group */\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Text input styled for use within an input group */\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Textarea styled for use within an input group */\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,MAAK;EACL,WAAW,GACT,4JACA,sCAGA,mDACA,iDACA,kIACA,4HAGA,mMAGA,kLAEA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,0BAA0B,IAC9B,2PACA;CACE,UAAU,EACR,OAAO;EACL,gBACE;EACF,cACE;EACF,eACE;EACF,aACE;EACH,EACF;CACD,iBAAiB,EACf,OAAO,gBACR;CACF,CACF;;AAGD,SAAS,gBAAgB,EACvB,WACA,QAAQ,gBACR,GAAG,SAC0E;AAC7E,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,cAAY;EACZ,WAAW,GAAG,wBAAwB,EAAE,OAAO,CAAC,EAAE,UAAU;EAC5D,UAAU,MAAM;AACd,OAAK,EAAE,OAAuB,QAAQ,SAAS,CAC7C;AAEF,KAAE,cAAc,eAAe,cAAc,QAAQ,EAAE,OAAO;;EAEhE,GAAI;GACJ;;AAIN,MAAM,2BAA2B,IAC/B,+CACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,WACE;EACF,WAAW;EACZ,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;;AAGD,SAAS,iBAAiB,EACxB,WACA,OAAO,UACP,UAAU,SACV,OAAO,MACP,GAAG,SAE4C;AAC/C,QACE,oBAAC;EACO;EACN,aAAW;EACF;EACT,WAAW,GAAG,yBAAyB,EAAE,MAAM,CAAC,EAAE,UAAU;EAC5D,GAAI;GACJ;;;AAKN,SAAS,eAAe,EAAE,WAAW,GAAG,SAAuC;AAC7E,QACE,oBAAC;EACC,WAAW,GACT,0HACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,gBAAgB,EACvB,WACA,GAAG,SAC6B;AAChC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,oGACA,UACD;EACD,GAAI;GACJ;;;AAKN,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACgC;AACnC,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,qHACA,UACD;EACD,GAAI;GACJ"}