@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,30 +1,38 @@
1
- import type { FieldValues, Path, Control, UseFormGetValues } from 'react-hook-form'
2
- import type { SectionNode } from '../../section/types'
3
- import { FormBuilderField } from './FormBuilderField'
4
- import type { FormBuilderFieldConfig, FormBuilderSectionConfig } from '../types'
5
- import { cn } from '../../../../shadcn/lib/utils'
1
+ import type {
2
+ FieldValues,
3
+ Path,
4
+ Control,
5
+ UseFormGetValues,
6
+ } from 'react-hook-form';
7
+ import type { SectionNode } from '../../section/types';
8
+ import { FormBuilderField } from './FormBuilderField';
9
+ import type {
10
+ FormBuilderFieldConfig,
11
+ FormBuilderSectionConfig,
12
+ } from '../types';
13
+ import { cn } from '../../../../shadcn/lib/utils';
6
14
 
7
15
  interface BuildSectionNodesOptions<TFieldValues extends FieldValues> {
8
- sections: Array<FormBuilderSectionConfig<TFieldValues>>
9
- control: Control<TFieldValues>
16
+ sections: Array<FormBuilderSectionConfig<TFieldValues>>;
17
+ control: Control<TFieldValues>;
10
18
  handleFieldDependencies: (
11
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>
12
- ) => { disabled?: boolean; hidden?: boolean } | Record<string, never>
19
+ field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
20
+ ) => { disabled?: boolean; hidden?: boolean } | Record<string, never>;
13
21
  handleFieldChange: (
14
22
  field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
15
23
  value: unknown,
16
24
  ...extras: unknown[]
17
- ) => void
25
+ ) => void;
18
26
  onFieldChange?: (
19
27
  name: Path<TFieldValues> | string,
20
28
  value: unknown,
21
- allValues: TFieldValues
22
- ) => void
23
- getValues: UseFormGetValues<TFieldValues>
29
+ allValues: TFieldValues,
30
+ ) => void;
31
+ getValues: UseFormGetValues<TFieldValues>;
24
32
  }
25
33
 
26
34
  export function buildSectionNodes<TFieldValues extends FieldValues>(
27
- options: BuildSectionNodesOptions<TFieldValues>
35
+ options: BuildSectionNodesOptions<TFieldValues>,
28
36
  ): SectionNode[] {
29
37
  const {
30
38
  sections,
@@ -33,25 +41,30 @@ export function buildSectionNodes<TFieldValues extends FieldValues>(
33
41
  handleFieldChange,
34
42
  onFieldChange,
35
43
  getValues,
36
- } = options
44
+ } = options;
37
45
 
38
46
  const buildLeavesFromFields = (
39
- fields?: Array<FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>>
47
+ fields?: Array<
48
+ FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>
49
+ >,
40
50
  ): SectionNode['children'] =>
41
51
  (fields ?? [])
42
52
  .map((field) => {
43
- const fieldState = handleFieldDependencies(field)
53
+ const fieldState = handleFieldDependencies(field);
44
54
 
45
- const isHiddenType = field.type === 'hidden'
46
- if (!isHiddenType && (field.hidden || fieldState.hidden)) return null
47
- if (fieldState.hidden) return null
55
+ const isHiddenType = field.type === 'hidden';
56
+ if (!isHiddenType && (field.hidden || fieldState.hidden)) return null;
57
+ if (fieldState.hidden) return null;
48
58
 
49
- const spanMd = Math.max(1, Math.min(12, field.gridCols ?? 1))
59
+ const spanMd = Math.max(1, Math.min(12, field.gridCols ?? 1));
50
60
 
51
61
  return {
52
62
  key: field.name,
53
63
  span: isHiddenType ? undefined : { base: 1, md: spanMd },
54
- className: cn(field.wrapperClassName, isHiddenType ? 'hidden' : undefined),
64
+ className: cn(
65
+ field.wrapperClassName,
66
+ isHiddenType ? 'hidden' : undefined,
67
+ ),
55
68
  hidden: isHiddenType ? false : field.hidden,
56
69
  content: (
57
70
  <FormBuilderField
@@ -62,15 +75,19 @@ export function buildSectionNodes<TFieldValues extends FieldValues>(
62
75
  }}
63
76
  control={control}
64
77
  onChange={(value, ...extras) => {
65
- handleFieldChange(field, value, ...extras)
66
- onFieldChange?.(field.name as Path<TFieldValues> | string, value, getValues())
78
+ handleFieldChange(field, value, ...extras);
79
+ onFieldChange?.(
80
+ field.name as Path<TFieldValues> | string,
81
+ value,
82
+ getValues(),
83
+ );
67
84
  }}
68
85
  onFieldChange={onFieldChange}
69
86
  />
70
87
  ),
71
- }
88
+ };
72
89
  })
73
- .filter(Boolean) as SectionNode['children']
90
+ .filter(Boolean) as SectionNode['children'];
74
91
 
75
92
  const buildSectionNode = (
76
93
  section: FormBuilderSectionConfig<TFieldValues>,
@@ -82,39 +99,45 @@ export function buildSectionNodes<TFieldValues extends FieldValues>(
82
99
  subtitle: section.description,
83
100
  variant: section.variant ?? 'plain',
84
101
  className: section.className,
85
- layout: section.layout ?? (section.tabs && section.tabs.length > 0 ? 'tabs' : 'grid'),
102
+ layout:
103
+ section.layout ??
104
+ (section.tabs && section.tabs.length > 0 ? 'tabs' : 'grid'),
86
105
  grid: section.grid ?? { cols: 1, mdCols: 2, gap: 'gap-4' },
87
106
  flex: section.flex,
88
107
  hidden: section.hidden,
89
- }
108
+ };
90
109
 
91
110
  if (baseNode.layout === 'tabs' && section.tabs && section.tabs.length > 0) {
92
- baseNode.defaultTabId = section.defaultTabId ?? section.tabs[0]?.id
93
- baseNode.tabsListClassName = section.tabsListClassName
94
- baseNode.tabsContentClassName = section.tabsContentClassName
111
+ baseNode.defaultTabId = section.defaultTabId ?? section.tabs[0]?.id;
112
+ baseNode.tabsListClassName = section.tabsListClassName;
113
+ baseNode.tabsContentClassName = section.tabsContentClassName;
95
114
  baseNode.tabs = section.tabs.map((tab, _tabIdx) => {
96
- const nestedNodes = tab.sections.map((subSection, subIdx) => buildSectionNode(subSection, subIdx))
115
+ const nestedNodes = tab.sections.map((subSection, subIdx) =>
116
+ buildSectionNode(subSection, subIdx),
117
+ );
97
118
  const containerNode: SectionNode = {
98
119
  id: `${baseNode.id}-tab-${tab.id}`,
99
120
  variant: 'plain',
100
121
  layout: 'grid',
101
122
  grid: section.grid ?? { cols: 1, mdCols: 2, gap: 'gap-4' },
102
123
  children: nestedNodes,
103
- }
124
+ };
104
125
  return {
105
126
  id: tab.id,
106
127
  label: tab.label,
107
128
  className: tab.className,
108
129
  contentClassName: tab.contentClassName,
109
130
  node: containerNode,
110
- }
111
- })
112
- return baseNode
131
+ };
132
+ });
133
+ return baseNode;
113
134
  }
114
135
 
115
- baseNode.children = buildLeavesFromFields(section.fields)
116
- return baseNode
117
- }
136
+ baseNode.children = buildLeavesFromFields(section.fields);
137
+ return baseNode;
138
+ };
118
139
 
119
- return sections.map((section, sectionIndex) => buildSectionNode(section, sectionIndex))
140
+ return sections.map((section, sectionIndex) =>
141
+ buildSectionNode(section, sectionIndex),
142
+ );
120
143
  }
@@ -2,22 +2,29 @@ import { useMemo } from 'react';
2
2
  import { useForm, type FieldValues, type UseFormReturn } from 'react-hook-form';
3
3
  import { zodResolver } from '@hookform/resolvers/zod';
4
4
  import { z } from 'zod';
5
- import type { FormBuilderFieldConfig, FormBuilderSectionConfig } from '../types';
6
-
7
- export interface UseFormBuilderOptions<TFieldValues extends FieldValues = FieldValues> {
5
+ import type {
6
+ FormBuilderFieldConfig,
7
+ FormBuilderSectionConfig,
8
+ } from '../types';
9
+
10
+ export interface UseFormBuilderOptions<
11
+ TFieldValues extends FieldValues = FieldValues,
12
+ > {
8
13
  sections: FormBuilderSectionConfig<TFieldValues>[];
9
14
  defaultValues?: Partial<TFieldValues>;
10
15
  schema?: z.ZodType<TFieldValues>;
11
16
  }
12
17
 
13
- export interface UseFormBuilderReturn<TFieldValues extends FieldValues = FieldValues> {
18
+ export interface UseFormBuilderReturn<
19
+ TFieldValues extends FieldValues = FieldValues,
20
+ > {
14
21
  form: UseFormReturn<TFieldValues>;
15
22
  sections: FormBuilderSectionConfig<TFieldValues>[];
16
23
  schema: z.ZodType<unknown>;
17
24
  }
18
25
 
19
26
  export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
20
- options: UseFormBuilderOptions<TFieldValues>
27
+ options: UseFormBuilderOptions<TFieldValues>,
21
28
  ): UseFormBuilderReturn<TFieldValues> {
22
29
  const { sections, defaultValues, schema: providedSchema } = options;
23
30
 
@@ -26,7 +33,7 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
26
33
  if (providedSchema) return providedSchema;
27
34
 
28
35
  const generateFieldSchema = (
29
- field: FormBuilderFieldConfig<TFieldValues, string>
36
+ field: FormBuilderFieldConfig<TFieldValues, string>,
30
37
  ): z.ZodType<unknown> => {
31
38
  if (field.validation && field.validation instanceof z.ZodType) {
32
39
  return field.validation;
@@ -43,9 +50,12 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
43
50
 
44
51
  switch (field.type) {
45
52
  case 'email':
46
- baseSchema = z.string().email(
47
- (validationObj.email as { message?: string })?.message || 'Invalid email address'
48
- );
53
+ baseSchema = z
54
+ .string()
55
+ .email(
56
+ (validationObj.email as { message?: string })?.message ||
57
+ 'Invalid email address',
58
+ );
49
59
  break;
50
60
  case 'number':
51
61
  baseSchema = z.number();
@@ -60,10 +70,17 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
60
70
  // Check if field supports multiple values
61
71
  if ((field as { multiple?: boolean }).multiple) {
62
72
  // Multiple: array of string/number/boolean
63
- baseSchema = z.array(z.union([z.string(), z.number(), z.boolean()]));
73
+ baseSchema = z.array(
74
+ z.union([z.string(), z.number(), z.boolean()]),
75
+ );
64
76
  } else {
65
77
  // Single: string, number, boolean, or null (when empty)
66
- baseSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);
78
+ baseSchema = z.union([
79
+ z.string(),
80
+ z.number(),
81
+ z.boolean(),
82
+ z.null(),
83
+ ]);
67
84
  }
68
85
  break;
69
86
  case 'file':
@@ -80,10 +97,12 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
80
97
  case 'time_range':
81
98
  case 'date_time_range':
82
99
  case 'month_range':
83
- baseSchema = z.object({
84
- from: z.date().optional().nullable(),
85
- to: z.date().optional().nullable(),
86
- }).nullable();
100
+ baseSchema = z
101
+ .object({
102
+ from: z.date().optional().nullable(),
103
+ to: z.date().optional().nullable(),
104
+ })
105
+ .nullable();
87
106
  break;
88
107
  default:
89
108
  baseSchema = z.string();
@@ -92,25 +111,25 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
92
111
  if (validationObj.min && baseSchema instanceof z.ZodNumber) {
93
112
  baseSchema = baseSchema.min(
94
113
  (validationObj.min as { value: number }).value,
95
- (validationObj.min as { message?: string }).message
114
+ (validationObj.min as { message?: string }).message,
96
115
  );
97
116
  }
98
117
  if (validationObj.max && baseSchema instanceof z.ZodNumber) {
99
118
  baseSchema = baseSchema.max(
100
119
  (validationObj.max as { value: number }).value,
101
- (validationObj.max as { message?: string }).message
120
+ (validationObj.max as { message?: string }).message,
102
121
  );
103
122
  }
104
123
  if (validationObj.minLength && baseSchema instanceof z.ZodString) {
105
124
  baseSchema = baseSchema.min(
106
125
  (validationObj.minLength as { value: number }).value,
107
- (validationObj.minLength as { message?: string }).message
126
+ (validationObj.minLength as { message?: string }).message,
108
127
  );
109
128
  }
110
129
  if (validationObj.maxLength && baseSchema instanceof z.ZodString) {
111
130
  baseSchema = baseSchema.max(
112
131
  (validationObj.maxLength as { value: number }).value,
113
- (validationObj.maxLength as { message?: string }).message
132
+ (validationObj.maxLength as { message?: string }).message,
114
133
  );
115
134
  }
116
135
  // Array item count constraints
@@ -129,7 +148,11 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
129
148
  );
130
149
  }
131
150
  // If required and file field, enforce at least 1 item when no explicit minItems
132
- if (field.type === 'file' && field.required && !validationObj.minItems) {
151
+ if (
152
+ field.type === 'file' &&
153
+ field.required &&
154
+ !validationObj.minItems
155
+ ) {
133
156
  arr = arr.min(1, `${field.label} requires at least 1 file`);
134
157
  }
135
158
  baseSchema = arr;
@@ -143,14 +166,17 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
143
166
  // For required fields, add validation
144
167
  // For string fields, enforce non-empty when required (only if minLength not already set)
145
168
  if (baseSchema instanceof z.ZodString && !validationObj.minLength) {
146
- baseSchema = baseSchema.min(1, `${field.label || field.name} is required`);
169
+ baseSchema = baseSchema.min(
170
+ 1,
171
+ `${field.label || field.name} is required`,
172
+ );
147
173
  }
148
174
 
149
175
  // For union fields (select/radio/autocomplete), add refinement for required validation
150
176
  if (baseSchema instanceof z.ZodUnion) {
151
177
  baseSchema = baseSchema.refine(
152
178
  (val) => val !== null && val !== undefined,
153
- { message: `${field.label || field.name} is required` }
179
+ { message: `${field.label || field.name} is required` },
154
180
  );
155
181
  }
156
182
 
@@ -182,10 +208,17 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
182
208
  // Check if field supports multiple values
183
209
  if ((field as { multiple?: boolean }).multiple) {
184
210
  // Multiple: array of string/number/boolean
185
- fieldSchema = z.array(z.union([z.string(), z.number(), z.boolean()]));
211
+ fieldSchema = z.array(
212
+ z.union([z.string(), z.number(), z.boolean()]),
213
+ );
186
214
  } else {
187
215
  // Single: string, number, boolean, or null (when empty)
188
- fieldSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);
216
+ fieldSchema = z.union([
217
+ z.string(),
218
+ z.number(),
219
+ z.boolean(),
220
+ z.null(),
221
+ ]);
189
222
  }
190
223
  break;
191
224
  case 'file': {
@@ -210,10 +243,12 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
210
243
  case 'time_range':
211
244
  case 'date_time_range':
212
245
  case 'month_range':
213
- fieldSchema = z.object({
214
- from: z.date().optional().nullable(),
215
- to: z.date().optional().nullable(),
216
- }).nullable();
246
+ fieldSchema = z
247
+ .object({
248
+ from: z.date().optional().nullable(),
249
+ to: z.date().optional().nullable(),
250
+ })
251
+ .nullable();
217
252
  break;
218
253
  case 'object':
219
254
  if (field.fields) {
@@ -258,14 +293,17 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
258
293
 
259
294
  // For array fields (multiple select/autocomplete), enforce at least 1 item when required
260
295
  if (fieldSchema instanceof z.ZodArray) {
261
- fieldSchema = fieldSchema.min(1, `${fieldLabel} requires at least 1 selection`);
296
+ fieldSchema = fieldSchema.min(
297
+ 1,
298
+ `${fieldLabel} requires at least 1 selection`,
299
+ );
262
300
  }
263
301
 
264
302
  // For union fields (single select/radio/autocomplete), add refinement for required validation
265
303
  if (fieldSchema instanceof z.ZodUnion) {
266
304
  fieldSchema = fieldSchema.refine(
267
305
  (val) => val !== null && val !== undefined,
268
- { message: `${fieldLabel} is required` }
306
+ { message: `${fieldLabel} is required` },
269
307
  );
270
308
  }
271
309
 
@@ -296,9 +334,13 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
296
334
 
297
335
  // Generate default values from field configs
298
336
  const generatedDefaultValues = useMemo(() => {
299
- const values: Record<string, unknown> = { ...((defaultValues ?? {}) as Record<string, unknown>) };
337
+ const values: Record<string, unknown> = {
338
+ ...((defaultValues ?? {}) as Record<string, unknown>),
339
+ };
300
340
 
301
- const processFields = (fields: FormBuilderFieldConfig<TFieldValues, string>[]) => {
341
+ const processFields = (
342
+ fields: FormBuilderFieldConfig<TFieldValues, string>[],
343
+ ) => {
302
344
  for (const field of fields) {
303
345
  // Skip if value already exists
304
346
  if (values[field.name] !== undefined) {
@@ -387,8 +429,15 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
387
429
  // Create form with validation
388
430
  const form = useForm<TFieldValues>({
389
431
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
390
- resolver: zodResolver(generatedSchema as any) as unknown as import('react-hook-form').Resolver<TFieldValues, any, TFieldValues>,
391
- defaultValues: generatedDefaultValues as unknown as import('react-hook-form').DefaultValues<TFieldValues>,
432
+ resolver: zodResolver(
433
+ generatedSchema as any,
434
+ ) as unknown as import('react-hook-form').Resolver<
435
+ TFieldValues,
436
+ any,
437
+ TFieldValues
438
+ >,
439
+ defaultValues:
440
+ generatedDefaultValues as unknown as import('react-hook-form').DefaultValues<TFieldValues>,
392
441
  });
393
442
 
394
443
  return {