@k3-universe/react-kit 0.0.27 → 0.0.29

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 (422) hide show
  1. package/.storybook/main.ts +1 -1
  2. package/.storybook/preview.ts +18 -10
  3. package/biome.json +10 -0
  4. package/dist/index.js +2319 -1227
  5. package/dist/kit/builder/auth/AuthProvider.d.ts +36 -0
  6. package/dist/kit/builder/auth/AuthProvider.d.ts.map +1 -0
  7. package/dist/kit/builder/auth/adapter.d.ts +14 -0
  8. package/dist/kit/builder/auth/adapter.d.ts.map +1 -0
  9. package/dist/kit/builder/auth/client-adapters.d.ts +149 -0
  10. package/dist/kit/builder/auth/client-adapters.d.ts.map +1 -0
  11. package/dist/kit/builder/auth/components.d.ts +119 -0
  12. package/dist/kit/builder/auth/components.d.ts.map +1 -0
  13. package/dist/kit/builder/auth/hooks.d.ts +158 -0
  14. package/dist/kit/builder/auth/hooks.d.ts.map +1 -0
  15. package/dist/kit/builder/auth/index.d.ts +11 -0
  16. package/dist/kit/builder/auth/index.d.ts.map +1 -0
  17. package/dist/kit/builder/auth/permission-checker.d.ts +31 -0
  18. package/dist/kit/builder/auth/permission-checker.d.ts.map +1 -0
  19. package/dist/kit/builder/auth/storage.d.ts +17 -0
  20. package/dist/kit/builder/auth/storage.d.ts.map +1 -0
  21. package/dist/kit/builder/auth/token-manager.d.ts +9 -0
  22. package/dist/kit/builder/auth/token-manager.d.ts.map +1 -0
  23. package/dist/kit/builder/auth/types.d.ts +183 -0
  24. package/dist/kit/builder/auth/types.d.ts.map +1 -0
  25. package/dist/kit/builder/data-table/components/DataTable.d.ts +2 -1
  26. package/dist/kit/builder/data-table/components/DataTable.d.ts.map +1 -1
  27. package/dist/kit/builder/data-table/components/DataTableColumnHeader.d.ts +2 -2
  28. package/dist/kit/builder/data-table/components/DataTableColumnHeader.d.ts.map +1 -1
  29. package/dist/kit/builder/data-table/components/DataTablePagination.d.ts +2 -1
  30. package/dist/kit/builder/data-table/components/DataTablePagination.d.ts.map +1 -1
  31. package/dist/kit/builder/data-table/components/DataTableViewOptions.d.ts +1 -1
  32. package/dist/kit/builder/data-table/components/DataTableViewOptions.d.ts.map +1 -1
  33. package/dist/kit/builder/data-table/types.d.ts.map +1 -1
  34. package/dist/kit/builder/dialog/index.d.ts +1 -1
  35. package/dist/kit/builder/dialog/index.d.ts.map +1 -1
  36. package/dist/kit/builder/dialog/provider.d.ts +0 -1
  37. package/dist/kit/builder/dialog/provider.d.ts.map +1 -1
  38. package/dist/kit/builder/form/components/FormBuilder.d.ts.map +1 -1
  39. package/dist/kit/builder/form/components/FormBuilderActions.d.ts.map +1 -1
  40. package/dist/kit/builder/form/components/FormBuilderContext.d.ts.map +1 -1
  41. package/dist/kit/builder/form/components/FormBuilderField.d.ts +1 -1
  42. package/dist/kit/builder/form/components/FormBuilderField.d.ts.map +1 -1
  43. package/dist/kit/builder/form/components/fields/ArrayField.d.ts +1 -1
  44. package/dist/kit/builder/form/components/fields/ArrayField.d.ts.map +1 -1
  45. package/dist/kit/builder/form/components/fields/AutocompleteField.d.ts +1 -1
  46. package/dist/kit/builder/form/components/fields/AutocompleteField.d.ts.map +1 -1
  47. package/dist/kit/builder/form/components/fields/CheckboxField.d.ts +1 -1
  48. package/dist/kit/builder/form/components/fields/CheckboxField.d.ts.map +1 -1
  49. package/dist/kit/builder/form/components/fields/DateField.d.ts +1 -1
  50. package/dist/kit/builder/form/components/fields/DateField.d.ts.map +1 -1
  51. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts +1 -1
  52. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts.map +1 -1
  53. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts +1 -1
  54. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts.map +1 -1
  55. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts +1 -1
  56. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts.map +1 -1
  57. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts +1 -1
  58. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts.map +1 -1
  59. package/dist/kit/builder/form/components/fields/FileField.d.ts +1 -1
  60. package/dist/kit/builder/form/components/fields/FileField.d.ts.map +1 -1
  61. package/dist/kit/builder/form/components/fields/MonthPickerField.d.ts +1 -1
  62. package/dist/kit/builder/form/components/fields/MonthPickerField.d.ts.map +1 -1
  63. package/dist/kit/builder/form/components/fields/MonthRangePickerField.d.ts +1 -1
  64. package/dist/kit/builder/form/components/fields/MonthRangePickerField.d.ts.map +1 -1
  65. package/dist/kit/builder/form/components/fields/NumberField.d.ts +1 -1
  66. package/dist/kit/builder/form/components/fields/NumberField.d.ts.map +1 -1
  67. package/dist/kit/builder/form/components/fields/ObjectField.d.ts.map +1 -1
  68. package/dist/kit/builder/form/components/fields/RadioField.d.ts +1 -1
  69. package/dist/kit/builder/form/components/fields/RadioField.d.ts.map +1 -1
  70. package/dist/kit/builder/form/components/fields/SelectField.d.ts +1 -1
  71. package/dist/kit/builder/form/components/fields/SelectField.d.ts.map +1 -1
  72. package/dist/kit/builder/form/components/fields/SwitchField.d.ts +1 -1
  73. package/dist/kit/builder/form/components/fields/SwitchField.d.ts.map +1 -1
  74. package/dist/kit/builder/form/components/fields/TextField.d.ts +1 -1
  75. package/dist/kit/builder/form/components/fields/TextField.d.ts.map +1 -1
  76. package/dist/kit/builder/form/components/fields/TextareaField.d.ts +1 -1
  77. package/dist/kit/builder/form/components/fields/TextareaField.d.ts.map +1 -1
  78. package/dist/kit/builder/form/components/fields/TimePickerField.d.ts +1 -1
  79. package/dist/kit/builder/form/components/fields/TimePickerField.d.ts.map +1 -1
  80. package/dist/kit/builder/form/components/fields/TimeRangePickerField.d.ts +1 -1
  81. package/dist/kit/builder/form/components/fields/TimeRangePickerField.d.ts.map +1 -1
  82. package/dist/kit/builder/form/components/fields/index.d.ts.map +1 -1
  83. package/dist/kit/builder/form/components/fields/types.d.ts.map +1 -1
  84. package/dist/kit/builder/form/components/sectionNodes.d.ts.map +1 -1
  85. package/dist/kit/builder/form/hooks/useFormBuilder.d.ts.map +1 -1
  86. package/dist/kit/builder/form/types.d.ts.map +1 -1
  87. package/dist/kit/builder/form/utils/section-factories.d.ts.map +1 -1
  88. package/dist/kit/builder/page/Page.d.ts.map +1 -1
  89. package/dist/kit/builder/page/index.d.ts.map +1 -1
  90. package/dist/kit/builder/section/SectionBuilder.d.ts +1 -1
  91. package/dist/kit/builder/section/SectionBuilder.d.ts.map +1 -1
  92. package/dist/kit/builder/section/SectionContainer.d.ts +14 -0
  93. package/dist/kit/builder/section/SectionContainer.d.ts.map +1 -0
  94. package/dist/kit/builder/stack-dialog/context.d.ts.map +1 -1
  95. package/dist/kit/builder/stack-dialog/hooks.d.ts.map +1 -1
  96. package/dist/kit/builder/stack-dialog/index.d.ts +3 -3
  97. package/dist/kit/builder/stack-dialog/index.d.ts.map +1 -1
  98. package/dist/kit/builder/stack-dialog/provider.d.ts.map +1 -1
  99. package/dist/kit/builder/stack-dialog/renderer.d.ts.map +1 -1
  100. package/dist/kit/builder/stack-dialog/types.d.ts +1 -1
  101. package/dist/kit/builder/stack-dialog/types.d.ts.map +1 -1
  102. package/dist/kit/components/autocomplete/Autocomplete.d.ts +1 -1
  103. package/dist/kit/components/autocomplete/Autocomplete.d.ts.map +1 -1
  104. package/dist/kit/components/autocomplete/types.d.ts.map +1 -1
  105. package/dist/kit/components/datepicker/DatePicker.d.ts.map +1 -1
  106. package/dist/kit/components/datepicker/DateRangePicker.d.ts.map +1 -1
  107. package/dist/kit/components/datetimepicker/DateTimePicker.d.ts.map +1 -1
  108. package/dist/kit/components/datetimepicker/DateTimeRangePicker.d.ts.map +1 -1
  109. package/dist/kit/components/datetimepicker/index.d.ts.map +1 -1
  110. package/dist/kit/components/fileuploader/FileUploader.d.ts.map +1 -1
  111. package/dist/kit/components/fileuploader/types.d.ts +2 -2
  112. package/dist/kit/components/forminfo/FormInfoError.d.ts.map +1 -1
  113. package/dist/kit/components/login/Login.d.ts +1 -1
  114. package/dist/kit/components/login/Login.d.ts.map +1 -1
  115. package/dist/kit/components/monthpicker/MonthInput.d.ts.map +1 -1
  116. package/dist/kit/components/monthpicker/MonthPicker.d.ts.map +1 -1
  117. package/dist/kit/components/monthpicker/MonthRangeInput.d.ts.map +1 -1
  118. package/dist/kit/components/monthpicker/MonthRangePicker.d.ts.map +1 -1
  119. package/dist/kit/components/timepicker/TimePicker.d.ts.map +1 -1
  120. package/dist/kit/components/timepicker/TimeRangePicker.d.ts.map +1 -1
  121. package/dist/kit/components/timepicker/index.d.ts.map +1 -1
  122. package/dist/kit/layouts/admin/components/AdminLayout.d.ts.map +1 -1
  123. package/dist/kit/layouts/admin/components/ThemeToggle.d.ts.map +1 -1
  124. package/dist/kit/layouts/admin/hooks/menu.d.ts.map +1 -1
  125. package/dist/kit/layouts/admin/providers/AdminMenuProvider.d.ts +1 -1
  126. package/dist/kit/layouts/admin/providers/AdminMenuProvider.d.ts.map +1 -1
  127. package/dist/shadcn/hooks/use-mobile.d.ts.map +1 -1
  128. package/dist/shadcn/ui/accordion.d.ts +2 -2
  129. package/dist/shadcn/ui/accordion.d.ts.map +1 -1
  130. package/dist/shadcn/ui/alert-dialog.d.ts +4 -4
  131. package/dist/shadcn/ui/alert-dialog.d.ts.map +1 -1
  132. package/dist/shadcn/ui/alert.d.ts +4 -4
  133. package/dist/shadcn/ui/alert.d.ts.map +1 -1
  134. package/dist/shadcn/ui/aspect-ratio.d.ts +1 -1
  135. package/dist/shadcn/ui/aspect-ratio.d.ts.map +1 -1
  136. package/dist/shadcn/ui/avatar.d.ts +2 -2
  137. package/dist/shadcn/ui/avatar.d.ts.map +1 -1
  138. package/dist/shadcn/ui/badge.d.ts +2 -2
  139. package/dist/shadcn/ui/badge.d.ts.map +1 -1
  140. package/dist/shadcn/ui/breadcrumb.d.ts +8 -8
  141. package/dist/shadcn/ui/breadcrumb.d.ts.map +1 -1
  142. package/dist/shadcn/ui/button.d.ts +2 -2
  143. package/dist/shadcn/ui/button.d.ts.map +1 -1
  144. package/dist/shadcn/ui/calendar.d.ts +2 -2
  145. package/dist/shadcn/ui/calendar.d.ts.map +1 -1
  146. package/dist/shadcn/ui/card.d.ts +8 -8
  147. package/dist/shadcn/ui/card.d.ts.map +1 -1
  148. package/dist/shadcn/ui/carousel.d.ts +5 -5
  149. package/dist/shadcn/ui/carousel.d.ts.map +1 -1
  150. package/dist/shadcn/ui/chart.d.ts +7 -7
  151. package/dist/shadcn/ui/chart.d.ts.map +1 -1
  152. package/dist/shadcn/ui/checkbox.d.ts +2 -2
  153. package/dist/shadcn/ui/checkbox.d.ts.map +1 -1
  154. package/dist/shadcn/ui/collapsible.d.ts +1 -1
  155. package/dist/shadcn/ui/collapsible.d.ts.map +1 -1
  156. package/dist/shadcn/ui/command.d.ts +2 -2
  157. package/dist/shadcn/ui/command.d.ts.map +1 -1
  158. package/dist/shadcn/ui/context-menu.d.ts +4 -4
  159. package/dist/shadcn/ui/context-menu.d.ts.map +1 -1
  160. package/dist/shadcn/ui/dialog.d.ts +4 -4
  161. package/dist/shadcn/ui/dialog.d.ts.map +1 -1
  162. package/dist/shadcn/ui/drawer.d.ts +3 -3
  163. package/dist/shadcn/ui/drawer.d.ts.map +1 -1
  164. package/dist/shadcn/ui/dropdown-menu.d.ts +4 -4
  165. package/dist/shadcn/ui/dropdown-menu.d.ts.map +1 -1
  166. package/dist/shadcn/ui/form.d.ts +5 -5
  167. package/dist/shadcn/ui/form.d.ts.map +1 -1
  168. package/dist/shadcn/ui/hover-card.d.ts +2 -2
  169. package/dist/shadcn/ui/hover-card.d.ts.map +1 -1
  170. package/dist/shadcn/ui/input-otp.d.ts +4 -4
  171. package/dist/shadcn/ui/input-otp.d.ts.map +1 -1
  172. package/dist/shadcn/ui/input.d.ts +2 -2
  173. package/dist/shadcn/ui/input.d.ts.map +1 -1
  174. package/dist/shadcn/ui/label.d.ts +2 -2
  175. package/dist/shadcn/ui/label.d.ts.map +1 -1
  176. package/dist/shadcn/ui/menubar.d.ts +4 -4
  177. package/dist/shadcn/ui/menubar.d.ts.map +1 -1
  178. package/dist/shadcn/ui/navigation-menu.d.ts +2 -2
  179. package/dist/shadcn/ui/navigation-menu.d.ts.map +1 -1
  180. package/dist/shadcn/ui/pagination.d.ts +6 -6
  181. package/dist/shadcn/ui/pagination.d.ts.map +1 -1
  182. package/dist/shadcn/ui/popover.d.ts +2 -2
  183. package/dist/shadcn/ui/popover.d.ts.map +1 -1
  184. package/dist/shadcn/ui/progress.d.ts +2 -2
  185. package/dist/shadcn/ui/progress.d.ts.map +1 -1
  186. package/dist/shadcn/ui/radio-group.d.ts +2 -2
  187. package/dist/shadcn/ui/radio-group.d.ts.map +1 -1
  188. package/dist/shadcn/ui/resizable.d.ts +2 -2
  189. package/dist/shadcn/ui/resizable.d.ts.map +1 -1
  190. package/dist/shadcn/ui/scroll-area.d.ts +2 -2
  191. package/dist/shadcn/ui/scroll-area.d.ts.map +1 -1
  192. package/dist/shadcn/ui/select.d.ts +3 -3
  193. package/dist/shadcn/ui/select.d.ts.map +1 -1
  194. package/dist/shadcn/ui/separator.d.ts +2 -2
  195. package/dist/shadcn/ui/separator.d.ts.map +1 -1
  196. package/dist/shadcn/ui/sheet.d.ts +5 -5
  197. package/dist/shadcn/ui/sheet.d.ts.map +1 -1
  198. package/dist/shadcn/ui/sidebar.d.ts +26 -26
  199. package/dist/shadcn/ui/sidebar.d.ts.map +1 -1
  200. package/dist/shadcn/ui/skeleton.d.ts +1 -1
  201. package/dist/shadcn/ui/skeleton.d.ts.map +1 -1
  202. package/dist/shadcn/ui/slider.d.ts +2 -2
  203. package/dist/shadcn/ui/slider.d.ts.map +1 -1
  204. package/dist/shadcn/ui/sonner.d.ts.map +1 -1
  205. package/dist/shadcn/ui/switch.d.ts +2 -2
  206. package/dist/shadcn/ui/switch.d.ts.map +1 -1
  207. package/dist/shadcn/ui/table.d.ts +9 -9
  208. package/dist/shadcn/ui/table.d.ts.map +1 -1
  209. package/dist/shadcn/ui/tabs.d.ts +2 -2
  210. package/dist/shadcn/ui/tabs.d.ts.map +1 -1
  211. package/dist/shadcn/ui/textarea.d.ts +2 -2
  212. package/dist/shadcn/ui/textarea.d.ts.map +1 -1
  213. package/dist/shadcn/ui/toggle-group.d.ts +2 -2
  214. package/dist/shadcn/ui/toggle-group.d.ts.map +1 -1
  215. package/dist/shadcn/ui/toggle.d.ts +2 -2
  216. package/dist/shadcn/ui/toggle.d.ts.map +1 -1
  217. package/dist/shadcn/ui/tooltip.d.ts +2 -2
  218. package/dist/shadcn/ui/tooltip.d.ts.map +1 -1
  219. package/package.json +2 -2
  220. package/src/index.ts +1 -1
  221. package/src/kit/builder/auth/AuthProvider.tsx +131 -0
  222. package/src/kit/builder/auth/adapter.ts +436 -0
  223. package/src/kit/builder/auth/client-adapters.ts +398 -0
  224. package/src/kit/builder/auth/components.tsx +221 -0
  225. package/src/kit/builder/auth/hooks.ts +237 -0
  226. package/src/kit/builder/auth/index.ts +134 -0
  227. package/src/kit/builder/auth/permission-checker.ts +150 -0
  228. package/src/kit/builder/auth/storage.ts +366 -0
  229. package/src/kit/builder/auth/token-manager.ts +55 -0
  230. package/src/kit/builder/auth/types.ts +393 -0
  231. package/src/kit/builder/data-table/components/DataTable.tsx +216 -82
  232. package/src/kit/builder/data-table/components/DataTableColumnHeader.tsx +9 -5
  233. package/src/kit/builder/data-table/components/DataTablePagination.tsx +49 -27
  234. package/src/kit/builder/data-table/components/DataTableViewOptions.tsx +13 -4
  235. package/src/kit/builder/data-table/types.ts +18 -3
  236. package/src/kit/builder/dialog/index.ts +5 -1
  237. package/src/kit/builder/dialog/provider.tsx +56 -27
  238. package/src/kit/builder/form/components/FormBuilder.tsx +10 -14
  239. package/src/kit/builder/form/components/FormBuilderActions.tsx +1 -1
  240. package/src/kit/builder/form/components/FormBuilderContext.tsx +13 -6
  241. package/src/kit/builder/form/components/FormBuilderField.tsx +70 -20
  242. package/src/kit/builder/form/components/fields/ArrayField.tsx +148 -62
  243. package/src/kit/builder/form/components/fields/AutocompleteField.tsx +53 -18
  244. package/src/kit/builder/form/components/fields/CheckboxField.tsx +20 -11
  245. package/src/kit/builder/form/components/fields/DateField.tsx +17 -6
  246. package/src/kit/builder/form/components/fields/DatePickerField.tsx +15 -10
  247. package/src/kit/builder/form/components/fields/DateRangePickerField.tsx +20 -15
  248. package/src/kit/builder/form/components/fields/DateTimePickerField.tsx +16 -11
  249. package/src/kit/builder/form/components/fields/DateTimeRangePickerField.tsx +23 -17
  250. package/src/kit/builder/form/components/fields/FileField.tsx +10 -5
  251. package/src/kit/builder/form/components/fields/MonthPickerField.tsx +18 -11
  252. package/src/kit/builder/form/components/fields/MonthRangePickerField.tsx +23 -17
  253. package/src/kit/builder/form/components/fields/NumberField.tsx +9 -4
  254. package/src/kit/builder/form/components/fields/ObjectField.tsx +12 -7
  255. package/src/kit/builder/form/components/fields/RadioField.tsx +32 -14
  256. package/src/kit/builder/form/components/fields/SelectField.tsx +26 -11
  257. package/src/kit/builder/form/components/fields/SwitchField.tsx +20 -11
  258. package/src/kit/builder/form/components/fields/TextField.tsx +11 -5
  259. package/src/kit/builder/form/components/fields/TextareaField.tsx +9 -4
  260. package/src/kit/builder/form/components/fields/TimePickerField.tsx +16 -11
  261. package/src/kit/builder/form/components/fields/TimeRangePickerField.tsx +23 -17
  262. package/src/kit/builder/form/components/fields/index.ts +21 -21
  263. package/src/kit/builder/form/components/fields/types.ts +15 -11
  264. package/src/kit/builder/form/components/sectionNodes.tsx +63 -40
  265. package/src/kit/builder/form/hooks/useFormBuilder.ts +83 -34
  266. package/src/kit/builder/form/types.ts +173 -148
  267. package/src/kit/builder/form/utils/section-factories.ts +4 -1
  268. package/src/kit/builder/form/utils/transformers.ts +4 -4
  269. package/src/kit/builder/form/utils/validations.ts +1 -1
  270. package/src/kit/builder/page/Page.tsx +26 -6
  271. package/src/kit/builder/page/index.ts +1 -1
  272. package/src/kit/builder/section/SectionBuilder.tsx +252 -127
  273. package/src/kit/builder/section/SectionContainer.tsx +85 -0
  274. package/src/kit/builder/stack-dialog/context.ts +10 -4
  275. package/src/kit/builder/stack-dialog/hooks.ts +4 -3
  276. package/src/kit/builder/stack-dialog/index.ts +5 -11
  277. package/src/kit/builder/stack-dialog/provider.tsx +11 -11
  278. package/src/kit/builder/stack-dialog/renderer.tsx +23 -26
  279. package/src/kit/builder/stack-dialog/types.ts +18 -18
  280. package/src/kit/components/autocomplete/Autocomplete.tsx +631 -549
  281. package/src/kit/components/autocomplete/types.ts +17 -17
  282. package/src/kit/components/datepicker/DatePicker.tsx +33 -9
  283. package/src/kit/components/datepicker/DateRangePicker.tsx +159 -87
  284. package/src/kit/components/datetimepicker/DateTimePicker.tsx +136 -30
  285. package/src/kit/components/datetimepicker/DateTimeRangePicker.tsx +257 -67
  286. package/src/kit/components/datetimepicker/index.ts +3 -3
  287. package/src/kit/components/fileuploader/FileUploader.tsx +315 -180
  288. package/src/kit/components/fileuploader/index.ts +3 -3
  289. package/src/kit/components/fileuploader/types.ts +3 -3
  290. package/src/kit/components/forminfo/FormInfoError.tsx +26 -11
  291. package/src/kit/components/login/Login.tsx +13 -4
  292. package/src/kit/components/monthpicker/MonthInput.tsx +13 -4
  293. package/src/kit/components/monthpicker/MonthPicker.tsx +12 -11
  294. package/src/kit/components/monthpicker/MonthRangeInput.tsx +29 -8
  295. package/src/kit/components/monthpicker/MonthRangePicker.tsx +23 -21
  296. package/src/kit/components/timepicker/TimePicker.tsx +19 -11
  297. package/src/kit/components/timepicker/TimeRangePicker.tsx +106 -29
  298. package/src/kit/components/timepicker/index.ts +3 -3
  299. package/src/kit/layouts/admin/components/AdminLayout.tsx +53 -24
  300. package/src/kit/layouts/admin/components/ThemeToggle.tsx +3 -9
  301. package/src/kit/layouts/admin/hooks/menu.ts +11 -5
  302. package/src/kit/layouts/admin/providers/AdminMenuProvider.tsx +59 -39
  303. package/src/kit/layouts/admin/types/index.ts +1 -1
  304. package/src/kit/themes/base.css +1 -1
  305. package/src/kit/themes/clean-slate.css +40 -32
  306. package/src/kit/themes/default.css +34 -24
  307. package/src/kit/themes/minimal-modern.css +37 -29
  308. package/src/kit/themes/spotify.css +56 -39
  309. package/src/shadcn/hooks/use-mobile.ts +13 -11
  310. package/src/shadcn/lib/utils.ts +2 -2
  311. package/src/shadcn/ui/accordion.tsx +14 -14
  312. package/src/shadcn/ui/alert-dialog.tsx +29 -29
  313. package/src/shadcn/ui/alert.tsx +20 -20
  314. package/src/shadcn/ui/aspect-ratio.tsx +4 -4
  315. package/src/shadcn/ui/avatar.tsx +13 -13
  316. package/src/shadcn/ui/badge.tsx +16 -16
  317. package/src/shadcn/ui/breadcrumb.tsx +28 -28
  318. package/src/shadcn/ui/button.tsx +23 -23
  319. package/src/shadcn/ui/calendar.tsx +82 -78
  320. package/src/shadcn/ui/card.tsx +27 -27
  321. package/src/shadcn/ui/carousel.tsx +93 -93
  322. package/src/shadcn/ui/chart.tsx +103 -103
  323. package/src/shadcn/ui/checkbox.tsx +9 -9
  324. package/src/shadcn/ui/collapsible.tsx +6 -6
  325. package/src/shadcn/ui/command.tsx +36 -36
  326. package/src/shadcn/ui/context-menu.tsx +40 -40
  327. package/src/shadcn/ui/dialog.tsx +28 -28
  328. package/src/shadcn/ui/drawer.tsx +30 -30
  329. package/src/shadcn/ui/dropdown-menu.tsx +41 -41
  330. package/src/shadcn/ui/form.tsx +48 -47
  331. package/src/shadcn/ui/hover-card.tsx +11 -11
  332. package/src/shadcn/ui/input-otp.tsx +23 -23
  333. package/src/shadcn/ui/input.tsx +9 -9
  334. package/src/shadcn/ui/label.tsx +8 -8
  335. package/src/shadcn/ui/menubar.tsx +47 -47
  336. package/src/shadcn/ui/navigation-menu.tsx +33 -33
  337. package/src/shadcn/ui/pagination.tsx +28 -28
  338. package/src/shadcn/ui/popover.tsx +12 -12
  339. package/src/shadcn/ui/progress.tsx +8 -8
  340. package/src/shadcn/ui/radio-group.tsx +11 -11
  341. package/src/shadcn/ui/resizable.tsx +14 -14
  342. package/src/shadcn/ui/scroll-area.tsx +15 -15
  343. package/src/shadcn/ui/select.tsx +34 -34
  344. package/src/shadcn/ui/separator.tsx +9 -9
  345. package/src/shadcn/ui/sheet.tsx +36 -36
  346. package/src/shadcn/ui/sidebar.tsx +227 -227
  347. package/src/shadcn/ui/skeleton.tsx +5 -5
  348. package/src/shadcn/ui/slider.tsx +12 -12
  349. package/src/shadcn/ui/sonner.tsx +11 -11
  350. package/src/shadcn/ui/switch.tsx +9 -9
  351. package/src/shadcn/ui/table.tsx +32 -32
  352. package/src/shadcn/ui/tabs.tsx +14 -14
  353. package/src/shadcn/ui/textarea.tsx +7 -7
  354. package/src/shadcn/ui/toggle-group.tsx +17 -17
  355. package/src/shadcn/ui/toggle.tsx +16 -16
  356. package/src/shadcn/ui/tooltip.tsx +11 -11
  357. package/src/stories/FileUploader.stories.tsx +23 -4
  358. package/src/stories/kit/builder/DataTable.Basic.stories.tsx +14 -4
  359. package/src/stories/kit/builder/DataTable.Filters.stories.tsx +36 -14
  360. package/src/stories/kit/builder/DataTable.Pagination.stories.tsx +3 -2
  361. package/src/stories/kit/builder/DataTable.SelectionAndActions.stories.tsx +18 -4
  362. package/src/stories/kit/builder/DataTable.Sorting.stories.tsx +18 -7
  363. package/src/stories/kit/builder/Dialog.stories.tsx +19 -13
  364. package/src/stories/kit/builder/Form.ArrayLayouts.stories.tsx +40 -16
  365. package/src/stories/kit/builder/Form.Autocomplete.stories.tsx +34 -22
  366. package/src/stories/kit/builder/Form.Basic.stories.tsx +38 -6
  367. package/src/stories/kit/builder/Form.Complex.stories.tsx +356 -111
  368. package/src/stories/kit/builder/Form.DateTime.stories.tsx +12 -8
  369. package/src/stories/kit/builder/Form.Dynamic.stories.tsx +695 -132
  370. package/src/stories/kit/builder/Form.Files.stories.tsx +37 -26
  371. package/src/stories/kit/builder/Form.MultipleFormBuilder.stories.tsx +46 -42
  372. package/src/stories/kit/builder/Form.Pickers.stories.tsx +12 -8
  373. package/src/stories/kit/builder/Form.Simple.stories.tsx +15 -6
  374. package/src/stories/kit/builder/Form.Time.stories.tsx +12 -8
  375. package/src/stories/kit/builder/Page.stories.tsx +32 -6
  376. package/src/stories/kit/builder/Section.stories.tsx +58 -11
  377. package/src/stories/kit/components/Autocomplete.stories.tsx +55 -22
  378. package/src/stories/kit/components/DatePicker.stories.tsx +80 -13
  379. package/src/stories/kit/components/DateRangePicker.stories.tsx +52 -11
  380. package/src/stories/kit/components/Login.stories.tsx +8 -2
  381. package/src/stories/kit/components/MonthPicker.stories.tsx +26 -6
  382. package/src/stories/kit/components/MonthRangePicker.stories.tsx +24 -5
  383. package/src/stories/kit/components/TimePicker.stories.tsx +18 -16
  384. package/src/stories/kit/components/TimeRangePicker.stories.tsx +18 -12
  385. package/src/stories/kit/layouts/admin/AdminLayout.Basic.stories.tsx +29 -6
  386. package/src/stories/kit/layouts/admin/AdminLayout.Collapsible.stories.tsx +26 -5
  387. package/src/stories/kit/layouts/admin/AdminLayout.Complex.stories.tsx +101 -18
  388. package/src/stories/kit/layouts/admin/AdminLayout.CustomSidebarHeaderComponent.stories.tsx +18 -4
  389. package/src/stories/kit/layouts/admin/AdminLayout.CustomSidebarTitleAndIcon.stories.tsx +17 -4
  390. package/src/stories/kit/layouts/admin/AdminLayout.HeaderSlots.stories.tsx +28 -6
  391. package/src/stories/shadcn/ui/Accordion.stories.tsx +33 -10
  392. package/src/stories/shadcn/ui/AlertDialog.stories.tsx +3 -1
  393. package/src/stories/shadcn/ui/Button.stories.tsx +3 -1
  394. package/src/stories/shadcn/ui/Calendar.stories.tsx +6 -1
  395. package/src/stories/shadcn/ui/Card.stories.tsx +11 -2
  396. package/src/stories/shadcn/ui/Checkbox.stories.tsx +11 -3
  397. package/src/stories/shadcn/ui/Collapsible.stories.tsx +12 -5
  398. package/src/stories/shadcn/ui/ContextMenu.stories.tsx +12 -4
  399. package/src/stories/shadcn/ui/Dialog.stories.tsx +15 -3
  400. package/src/stories/shadcn/ui/Drawer.stories.tsx +5 -2
  401. package/src/stories/shadcn/ui/DropdownMenu.stories.tsx +15 -5
  402. package/src/stories/shadcn/ui/Form.stories.tsx +5 -2
  403. package/src/stories/shadcn/ui/HoverCard.stories.tsx +8 -2
  404. package/src/stories/shadcn/ui/Input.stories.tsx +3 -1
  405. package/src/stories/shadcn/ui/InputOtp.stories.tsx +9 -2
  406. package/src/stories/shadcn/ui/Menubar.stories.tsx +21 -7
  407. package/src/stories/shadcn/ui/NavigationMenu.stories.tsx +30 -5
  408. package/src/stories/shadcn/ui/Popover.stories.tsx +8 -2
  409. package/src/stories/shadcn/ui/Resizable.stories.tsx +17 -5
  410. package/src/stories/shadcn/ui/ScrollArea.stories.tsx +54 -2
  411. package/src/stories/shadcn/ui/Select.stories.tsx +7 -1
  412. package/src/stories/shadcn/ui/Sheet.stories.tsx +2 -1
  413. package/src/stories/shadcn/ui/Sidebar.stories.tsx +13 -2
  414. package/src/stories/shadcn/ui/Sonner.stories.tsx +12 -2
  415. package/src/stories/shadcn/ui/Table.stories.tsx +86 -27
  416. package/src/stories/shadcn/ui/Tabs.stories.tsx +9 -2
  417. package/src/stories/shadcn/ui/Textarea.stories.tsx +3 -1
  418. package/src/stories/shadcn/ui/Toggle.stories.tsx +10 -2
  419. package/src/stories/shadcn/ui/Tooltip.stories.tsx +6 -1
  420. package/tsconfig.json +1 -5
  421. package/tsconfig.tsbuildinfo +1 -0
  422. package/eslint.config.mjs +0 -19
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { type ColumnDef } from '@tanstack/react-table';
3
+ import type { ColumnDef } from '@tanstack/react-table';
4
4
  import { DataTable } from '../../../kit/builder/data-table';
5
5
 
6
6
  // Simple type for demo
@@ -33,9 +33,19 @@ const columns: ColumnDef<Person>[] = [
33
33
  ];
34
34
 
35
35
  const data: Person[] = [
36
- { id: '1', name: 'Alice Johnson', email: 'alice@example.com', status: 'active' },
36
+ {
37
+ id: '1',
38
+ name: 'Alice Johnson',
39
+ email: 'alice@example.com',
40
+ status: 'active',
41
+ },
37
42
  { id: '2', name: 'Bob Smith', email: 'bob@example.com', status: 'inactive' },
38
- { id: '3', name: 'Carol White', email: 'carol@example.com', status: 'active' },
43
+ {
44
+ id: '3',
45
+ name: 'Carol White',
46
+ email: 'carol@example.com',
47
+ status: 'active',
48
+ },
39
49
  ];
40
50
 
41
51
  const meta: Meta<typeof DataTable<Person, unknown>> = {
@@ -1,6 +1,7 @@
1
- import React, { useState } from 'react';
1
+ import type React from 'react';
2
+ import { useState } from 'react';
2
3
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { type ColumnDef } from '@tanstack/react-table';
4
+ import type { ColumnDef } from '@tanstack/react-table';
4
5
  import { DataTable } from '../../../kit/builder/data-table';
5
6
  import { createSection, createField } from '../../../kit/builder/form';
6
7
  import { toast } from 'sonner';
@@ -16,7 +17,11 @@ const columns: ColumnDef<Order>[] = [
16
17
  { accessorKey: 'id', header: 'Order #' },
17
18
  { accessorKey: 'customer', header: 'Customer' },
18
19
  { accessorKey: 'status', header: 'Status' },
19
- { accessorKey: 'total', header: 'Total', cell: ({ getValue }) => `$${(getValue() as number).toFixed(2)}` },
20
+ {
21
+ accessorKey: 'total',
22
+ header: 'Total',
23
+ cell: ({ getValue }) => `$${(getValue() as number).toFixed(2)}`,
24
+ },
20
25
  ];
21
26
 
22
27
  const allData: Order[] = [
@@ -28,15 +33,19 @@ const allData: Order[] = [
28
33
  ];
29
34
 
30
35
  const filterSections = [
31
- createSection.card('Find orders', [
32
- createField.text('customer', 'Customer'),
33
- createField.select('status', 'Status', [
34
- { label: 'Any', value: null },
35
- { label: 'Pending', value: 'pending' },
36
- { label: 'Paid', value: 'paid' },
37
- { label: 'Shipped', value: 'shipped' },
38
- ]),
39
- ], { grid: { cols: 3 } }),
36
+ createSection.card(
37
+ 'Find orders',
38
+ [
39
+ createField.text('customer', 'Customer'),
40
+ createField.select('status', 'Status', [
41
+ { label: 'Any', value: null },
42
+ { label: 'Pending', value: 'pending' },
43
+ { label: 'Paid', value: 'paid' },
44
+ { label: 'Shipped', value: 'shipped' },
45
+ ]),
46
+ ],
47
+ { grid: { cols: 3 } },
48
+ ),
40
49
  ];
41
50
 
42
51
  const meta: Meta<typeof DataTable<Order, unknown>> = {
@@ -53,7 +62,11 @@ export const WithFilters: Story = {
53
62
  const [values, setValues] = useState<Record<string, unknown>>({});
54
63
 
55
64
  const filtered = allData.filter((o) => {
56
- const byCustomer = values.customer ? o.customer.toLowerCase().includes(String(values.customer).toLowerCase()) : true;
65
+ const byCustomer = values.customer
66
+ ? o.customer
67
+ .toLowerCase()
68
+ .includes(String(values.customer).toLowerCase())
69
+ : true;
57
70
  const byStatus = values.status ? o.status === values.status : true;
58
71
  return byCustomer && byStatus;
59
72
  });
@@ -68,7 +81,16 @@ export const WithFilters: Story = {
68
81
  formFilters={filterSections}
69
82
  formFilterValues={values}
70
83
  onFormFilterChange={setValues}
71
- actions={[{ key: 'export', label: 'Export', variant: 'outline', onClick: () => { toast.info('Export...') } }]}
84
+ actions={[
85
+ {
86
+ key: 'export',
87
+ label: 'Export',
88
+ variant: 'outline',
89
+ onClick: () => {
90
+ toast.info('Export...');
91
+ },
92
+ },
93
+ ]}
72
94
  />
73
95
  </div>
74
96
  );
@@ -1,6 +1,7 @@
1
- import React, { useState } from 'react';
1
+ import type React from 'react';
2
+ import { useState } from 'react';
2
3
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { type ColumnDef } from '@tanstack/react-table';
4
+ import type { ColumnDef } from '@tanstack/react-table';
4
5
  import { DataTable } from '../../../kit/builder/data-table';
5
6
 
6
7
  interface Person {
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { type ColumnDef } from '@tanstack/react-table';
3
+ import type { ColumnDef } from '@tanstack/react-table';
4
4
  import { Trash2, Plus } from 'lucide-react';
5
5
  import { DataTable } from '../../../kit/builder/data-table';
6
6
  import { toast } from 'sonner';
@@ -13,7 +13,13 @@ interface Item {
13
13
 
14
14
  const columns: ColumnDef<Item>[] = [
15
15
  { accessorKey: 'name', header: 'Item' },
16
- { accessorKey: 'price', header: 'Price', cell: ({ getValue }) => <span className="tabular-nums">${(getValue() as number).toFixed(2)}</span> },
16
+ {
17
+ accessorKey: 'price',
18
+ header: 'Price',
19
+ cell: ({ getValue }) => (
20
+ <span className="tabular-nums">${(getValue() as number).toFixed(2)}</span>
21
+ ),
22
+ },
17
23
  ];
18
24
 
19
25
  const data: Item[] = [
@@ -43,7 +49,15 @@ export const SelectableWithActions: Story = {
43
49
  showStandardActions
44
50
  onRefresh={() => new Promise((r) => setTimeout(r, 800))}
45
51
  actions={[
46
- { key: 'create', label: 'New Item', icon: <Plus className="h-4 w-4" />, variant: 'outline', onClick: () => { toast.info('Create clicked') } },
52
+ {
53
+ key: 'create',
54
+ label: 'New Item',
55
+ icon: <Plus className="h-4 w-4" />,
56
+ variant: 'outline',
57
+ onClick: () => {
58
+ toast.info('Create clicked');
59
+ },
60
+ },
47
61
  ]}
48
62
  batchActions={[
49
63
  {
@@ -1,7 +1,10 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { type ColumnDef } from '@tanstack/react-table';
4
- import { DataTable, DataTableColumnHeader } from '../../../kit/builder/data-table';
3
+ import type { ColumnDef } from '@tanstack/react-table';
4
+ import {
5
+ DataTable,
6
+ DataTableColumnHeader,
7
+ } from '../../../kit/builder/data-table';
5
8
 
6
9
  interface Person {
7
10
  id: string;
@@ -13,16 +16,24 @@ interface Person {
13
16
  const columns: ColumnDef<Person>[] = [
14
17
  {
15
18
  accessorKey: 'name',
16
- header: ({ column }) => <DataTableColumnHeader column={column} title="Name" />,
19
+ header: ({ column }) => (
20
+ <DataTableColumnHeader column={column} title="Name" />
21
+ ),
17
22
  },
18
23
  {
19
24
  accessorKey: 'email',
20
- header: ({ column }) => <DataTableColumnHeader column={column} title="Email" />,
25
+ header: ({ column }) => (
26
+ <DataTableColumnHeader column={column} title="Email" />
27
+ ),
21
28
  },
22
29
  {
23
30
  accessorKey: 'age',
24
- header: ({ column }) => <DataTableColumnHeader column={column} title="Age" />,
25
- cell: ({ getValue }) => <span className="tabular-nums">{getValue() as number}</span>,
31
+ header: ({ column }) => (
32
+ <DataTableColumnHeader column={column} title="Age" />
33
+ ),
34
+ cell: ({ getValue }) => (
35
+ <span className="tabular-nums">{getValue() as number}</span>
36
+ ),
26
37
  },
27
38
  ];
28
39
 
@@ -58,20 +58,26 @@ export const CustomExample: Story = {
58
58
  <Button
59
59
  variant="secondary"
60
60
  onClick={async () => {
61
- const val = await open<string>(({ close }) => (
62
- <div className="space-y-4">
63
- <h3 className="text-lg font-medium text-foreground">Custom Modal</h3>
64
- <p className="text-sm text-muted-foreground">You can render anything here and call close(value) to resolve.</p>
65
- <div className="flex justify-end gap-2">
66
- <Button variant="outline" onClick={() => close(undefined)}>
67
- Cancel
68
- </Button>
69
- <Button onClick={() => close('done')}>
70
- Confirm
71
- </Button>
61
+ const val = await open<string>(
62
+ ({ close }) => (
63
+ <div className="space-y-4">
64
+ <h3 className="text-lg font-medium text-foreground">
65
+ Custom Modal
66
+ </h3>
67
+ <p className="text-sm text-muted-foreground">
68
+ You can render anything here and call close(value) to
69
+ resolve.
70
+ </p>
71
+ <div className="flex justify-end gap-2">
72
+ <Button variant="outline" onClick={() => close(undefined)}>
73
+ Cancel
74
+ </Button>
75
+ <Button onClick={() => close('done')}>Confirm</Button>
76
+ </div>
72
77
  </div>
73
- </div>
74
- ), { preventCloseOnInteractOutside: true });
78
+ ),
79
+ { preventCloseOnInteractOutside: true },
80
+ );
75
81
  // eslint-disable-next-line no-console
76
82
  console.log('custom result:', val);
77
83
  }}
@@ -1,5 +1,8 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
- import { FormBuilder, type FormBuilderProps } from '../../../kit/builder/form/components/FormBuilder'
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import {
3
+ FormBuilder,
4
+ type FormBuilderProps,
5
+ } from '../../../kit/builder/form/components/FormBuilder';
3
6
 
4
7
  const meta: Meta<typeof FormBuilder> = {
5
8
  title: 'Kit/Builder/Form',
@@ -8,11 +11,11 @@ const meta: Meta<typeof FormBuilder> = {
8
11
  controls: { expanded: true },
9
12
  backgrounds: { disable: true },
10
13
  },
11
- }
14
+ };
12
15
 
13
- export default meta
16
+ export default meta;
14
17
 
15
- type Story = StoryObj<typeof FormBuilder>
18
+ type Story = StoryObj<typeof FormBuilder>;
16
19
 
17
20
  export const ArrayCardLayout: Story = {
18
21
  name: 'Array - Card layout',
@@ -44,7 +47,7 @@ export const ArrayCardLayout: Story = {
44
47
  <FormBuilder {...(args as FormBuilderProps)} />
45
48
  </div>
46
49
  ),
47
- }
50
+ };
48
51
 
49
52
  export const ArrayTableLayout: Story = {
50
53
  name: 'Array - Table layout',
@@ -52,7 +55,8 @@ export const ArrayTableLayout: Story = {
52
55
  sections: [
53
56
  {
54
57
  title: 'Table Layout',
55
- description: 'Array items are displayed in a table with configurable colors',
58
+ description:
59
+ 'Array items are displayed in a table with configurable colors',
56
60
  layout: 'grid',
57
61
  grid: { cols: 1, gap: 'gap-4' },
58
62
  fields: [
@@ -67,7 +71,12 @@ export const ArrayTableLayout: Story = {
67
71
  rowAltBgClass: 'bg-teal-50',
68
72
  },
69
73
  fields: [
70
- { name: 'product', label: 'Product', type: 'text', required: true },
74
+ {
75
+ name: 'product',
76
+ label: 'Product',
77
+ type: 'text',
78
+ required: true,
79
+ },
71
80
  { name: 'price', label: 'Price', type: 'number', required: true },
72
81
  ],
73
82
  },
@@ -82,7 +91,7 @@ export const ArrayTableLayout: Story = {
82
91
  <FormBuilder {...(args as FormBuilderProps)} />
83
92
  </div>
84
93
  ),
85
- }
94
+ };
86
95
 
87
96
  export const ArrayCustomLayout: Story = {
88
97
  name: 'Array - Custom renderer',
@@ -103,7 +112,13 @@ export const ArrayCustomLayout: Story = {
103
112
  label: 'Items (custom)',
104
113
  defaultValue: [],
105
114
  arrayLayout: 'custom',
106
- arrayRender: ({ value: _value = [], rows = [], addItem, removeItem, disabled }) => {
115
+ arrayRender: ({
116
+ value: _value = [],
117
+ rows = [],
118
+ addItem,
119
+ removeItem,
120
+ disabled,
121
+ }) => {
107
122
  return (
108
123
  <div className="space-y-3">
109
124
  <div className="flex justify-between items-center">
@@ -117,11 +132,18 @@ export const ArrayCustomLayout: Story = {
117
132
  </button>
118
133
  </div>
119
134
  <div className="space-y-2">
120
- <div className="text-xs text-muted-foreground">Rows: {rows.length}</div>
135
+ <div className="text-xs text-muted-foreground">
136
+ Rows: {rows.length}
137
+ </div>
121
138
  {Array.isArray(rows) && rows.length > 0 ? (
122
139
  rows.map((row: { id: string }, i: number) => (
123
- <div key={row.id ?? i} className="flex items-center gap-3 border rounded-md p-3">
124
- <span className="text-sm text-muted-foreground">Row {i + 1}</span>
140
+ <div
141
+ key={row.id ?? i}
142
+ className="flex items-center gap-3 border rounded-md p-3"
143
+ >
144
+ <span className="text-sm text-muted-foreground">
145
+ Row {i + 1}
146
+ </span>
125
147
  <button
126
148
  type="button"
127
149
  className="ml-auto btn btn-destructive"
@@ -132,11 +154,13 @@ export const ArrayCustomLayout: Story = {
132
154
  </div>
133
155
  ))
134
156
  ) : (
135
- <p className="text-sm text-muted-foreground">No items. Click Add Item.</p>
157
+ <p className="text-sm text-muted-foreground">
158
+ No items. Click Add Item.
159
+ </p>
136
160
  )}
137
161
  </div>
138
162
  </div>
139
- )
163
+ );
140
164
  },
141
165
  },
142
166
  ],
@@ -150,4 +174,4 @@ export const ArrayCustomLayout: Story = {
150
174
  <FormBuilder {...(args as FormBuilderProps)} />
151
175
  </div>
152
176
  ),
153
- }
177
+ };
@@ -1,6 +1,6 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
- import { FormBuilder } from '../../../kit/builder/form/components/FormBuilder'
3
- import { type FormBuilderProps } from '../../../kit/builder/form/types'
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { FormBuilder } from '../../../kit/builder/form/components/FormBuilder';
3
+ import type { FormBuilderProps } from '../../../kit/builder/form/types';
4
4
 
5
5
  const meta: Meta<typeof FormBuilder> = {
6
6
  title: 'Kit/Builder/Form',
@@ -9,11 +9,11 @@ const meta: Meta<typeof FormBuilder> = {
9
9
  controls: { expanded: true },
10
10
  backgrounds: { disable: true },
11
11
  },
12
- }
12
+ };
13
13
 
14
- export default meta
14
+ export default meta;
15
15
 
16
- type Story = StoryObj<typeof FormBuilder>
16
+ type Story = StoryObj<typeof FormBuilder>;
17
17
 
18
18
  const CITY_OPTIONS = [
19
19
  { label: 'New York', value: 'nyc' },
@@ -26,7 +26,7 @@ const CITY_OPTIONS = [
26
26
  { label: 'Boston', value: 'bos' },
27
27
  { label: 'Denver', value: 'den' },
28
28
  { label: 'Portland', value: 'pdx' },
29
- ]
29
+ ];
30
30
 
31
31
  export const SingleAutocomplete: Story = {
32
32
  name: 'Autocomplete - Single select (clearable + custom allowed)',
@@ -52,7 +52,7 @@ export const SingleAutocomplete: Story = {
52
52
  },
53
53
  ],
54
54
  onSubmit: (data: unknown) => {
55
- console.log('Submit (single):', data)
55
+ console.log('Submit (single):', data);
56
56
  },
57
57
  showActions: true,
58
58
  } satisfies Partial<FormBuilderProps>,
@@ -61,7 +61,7 @@ export const SingleAutocomplete: Story = {
61
61
  <FormBuilder {...(args as FormBuilderProps)} />
62
62
  </div>
63
63
  ),
64
- }
64
+ };
65
65
 
66
66
  // ---- Server edit page (prefilled IDs -> fetch labels) ----
67
67
  const ALL_SERVER_OPTIONS = Array.from({ length: 100 }).map((_, i) => ({
@@ -70,22 +70,32 @@ const ALL_SERVER_OPTIONS = Array.from({ length: 100 }).map((_, i) => ({
70
70
  }));
71
71
 
72
72
  function makeServerFetcher(all = ALL_SERVER_OPTIONS, minLatency = 250) {
73
- return async ({ search, page = 1, pageSize = 10 }: { search: string; page?: number; pageSize: number; }) => {
73
+ return async ({
74
+ search,
75
+ page = 1,
76
+ pageSize = 10,
77
+ }: {
78
+ search: string;
79
+ page?: number;
80
+ pageSize: number;
81
+ }) => {
74
82
  const q = (search || '').toLowerCase();
75
- const filtered = q ? all.filter(o => o.label.toLowerCase().includes(q)) : all;
83
+ const filtered = q
84
+ ? all.filter((o) => o.label.toLowerCase().includes(q))
85
+ : all;
76
86
  const start = (page - 1) * pageSize;
77
87
  const slice = filtered.slice(start, start + pageSize);
78
88
  const hasMore = start + pageSize < filtered.length;
79
- await new Promise(r => setTimeout(r, minLatency));
89
+ await new Promise((r) => setTimeout(r, minLatency));
80
90
  return { items: slice, hasMore, nextCursor: null };
81
91
  };
82
92
  }
83
93
 
84
94
  async function loadSelectedByIds(values: Array<string | number>) {
85
95
  // Simulate server lookup for labels by ID
86
- await new Promise(r => setTimeout(r, 150));
87
- const nums = values.map(v => (typeof v === 'string' ? Number(v) : v));
88
- return ALL_SERVER_OPTIONS.filter(o => nums.includes(o.value));
96
+ await new Promise((r) => setTimeout(r, 150));
97
+ const nums = values.map((v) => (typeof v === 'string' ? Number(v) : v));
98
+ return ALL_SERVER_OPTIONS.filter((o) => nums.includes(o.value));
89
99
  }
90
100
 
91
101
  export const ServerEditPrefilledByIds: Story = {
@@ -113,7 +123,9 @@ export const ServerEditPrefilledByIds: Story = {
113
123
  // Provide resolver to fetch labels for the current values
114
124
  loadSelected: loadSelectedByIds,
115
125
  // Pre-seed labels so chips render labels immediately on load
116
- initialSelectedOptions: ALL_SERVER_OPTIONS.filter(o => [2, 5, 17].includes(o.value)),
126
+ initialSelectedOptions: ALL_SERVER_OPTIONS.filter((o) =>
127
+ [2, 5, 17].includes(o.value),
128
+ ),
117
129
  },
118
130
  ],
119
131
  },
@@ -123,7 +135,7 @@ export const ServerEditPrefilledByIds: Story = {
123
135
  cities: [2, 5, 17],
124
136
  },
125
137
  onSubmit: (data: unknown) => {
126
- console.log('Submit (server edit):', data)
138
+ console.log('Submit (server edit):', data);
127
139
  },
128
140
  showActions: true,
129
141
  } satisfies Partial<FormBuilderProps>,
@@ -132,7 +144,7 @@ export const ServerEditPrefilledByIds: Story = {
132
144
  <FormBuilder {...(args as FormBuilderProps)} />
133
145
  </div>
134
146
  ),
135
- }
147
+ };
136
148
 
137
149
  export const MultiAutocompleteChips: Story = {
138
150
  name: 'Autocomplete - Multi select with chips',
@@ -159,7 +171,7 @@ export const MultiAutocompleteChips: Story = {
159
171
  },
160
172
  ],
161
173
  onSubmit: (data: unknown) => {
162
- console.log('Submit (multi):', data)
174
+ console.log('Submit (multi):', data);
163
175
  },
164
176
  showActions: true,
165
177
  } satisfies Partial<FormBuilderProps>,
@@ -168,7 +180,7 @@ export const MultiAutocompleteChips: Story = {
168
180
  <FormBuilder {...(args as FormBuilderProps)} />
169
181
  </div>
170
182
  ),
171
- }
183
+ };
172
184
 
173
185
  export const TaggingAutocomplete: Story = {
174
186
  name: 'Autocomplete - Tagging (no options, custom values)',
@@ -196,7 +208,7 @@ export const TaggingAutocomplete: Story = {
196
208
  },
197
209
  ],
198
210
  onSubmit: (data: unknown) => {
199
- console.log('Submit (tagging):', data)
211
+ console.log('Submit (tagging):', data);
200
212
  },
201
213
  showActions: true,
202
214
  } satisfies Partial<FormBuilderProps>,
@@ -205,4 +217,4 @@ export const TaggingAutocomplete: Story = {
205
217
  <FormBuilder {...(args as FormBuilderProps)} />
206
218
  </div>
207
219
  ),
208
- }
220
+ };
@@ -1,5 +1,8 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
- import { FormBuilder, type FormBuilderProps } from '../../../kit/builder/form/components/FormBuilder';
2
+ import {
3
+ FormBuilder,
4
+ type FormBuilderProps,
5
+ } from '../../../kit/builder/form/components/FormBuilder';
3
6
 
4
7
  const meta: Meta<typeof FormBuilder> = {
5
8
  title: 'Kit/Builder/Form',
@@ -25,12 +28,41 @@ export const BasicUsage: Story = {
25
28
  layout: 'grid',
26
29
  grid: { cols: 1, mdCols: 2, gap: 'gap-4' },
27
30
  fields: [
28
- { name: 'firstName', label: 'First name', type: 'text', required: true },
29
- { name: 'lastName', label: 'Last name', type: 'text', required: true },
31
+ {
32
+ name: 'firstName',
33
+ label: 'First name',
34
+ type: 'text',
35
+ required: true,
36
+ },
37
+ {
38
+ name: 'lastName',
39
+ label: 'Last name',
40
+ type: 'text',
41
+ required: true,
42
+ },
30
43
  { name: 'email', label: 'Email', type: 'email', required: true },
31
- { name: 'newsletter', label: 'Subscribe to newsletter', type: 'checkbox', defaultValue: false, gridCols: 2 },
32
- { name: 'darkMode', label: 'Enable dark mode', type: 'switch', defaultValue: false, gridCols: 2 },
33
- { name: 'darkModeStacked', label: 'Enable dark mode (stacked)', type: 'switch', defaultValue: true, labelPlacement: 'stacked', gridCols: 2 },
44
+ {
45
+ name: 'newsletter',
46
+ label: 'Subscribe to newsletter',
47
+ type: 'checkbox',
48
+ defaultValue: false,
49
+ gridCols: 2,
50
+ },
51
+ {
52
+ name: 'darkMode',
53
+ label: 'Enable dark mode',
54
+ type: 'switch',
55
+ defaultValue: false,
56
+ gridCols: 2,
57
+ },
58
+ {
59
+ name: 'darkModeStacked',
60
+ label: 'Enable dark mode (stacked)',
61
+ type: 'switch',
62
+ defaultValue: true,
63
+ labelPlacement: 'stacked',
64
+ gridCols: 2,
65
+ },
34
66
  ],
35
67
  },
36
68
  ],