@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,60 +1,96 @@
1
- import { useFieldArray } from 'react-hook-form'
2
- import type { FieldArrayPath, FieldValues } from 'react-hook-form'
3
- import { Card, CardContent, CardHeader, CardTitle } from '../../../../../shadcn/ui/card'
4
- import { Button } from '../../../../../shadcn/ui/button'
5
- import { Input } from '../../../../../shadcn/ui/input'
6
- import { GripVertical, Plus, Trash2 } from 'lucide-react'
7
- import { cn } from '../../../../../shadcn/lib/utils'
8
- import type { FieldRenderProps } from './types'
9
- import { FormBuilderField } from '../FormBuilderField'
10
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../../../../shadcn/ui/table'
1
+ import { useFieldArray } from 'react-hook-form';
2
+ import type { FieldArrayPath, FieldValues } from 'react-hook-form';
3
+ import {
4
+ Card,
5
+ CardContent,
6
+ CardHeader,
7
+ CardTitle,
8
+ } from '../../../../../shadcn/ui/card';
9
+ import { Button } from '../../../../../shadcn/ui/button';
10
+ import { Input } from '../../../../../shadcn/ui/input';
11
+ import { GripVertical, Plus, Trash2 } from 'lucide-react';
12
+ import { cn } from '../../../../../shadcn/lib/utils';
13
+ import type { FieldRenderProps } from './types';
14
+ import { FormBuilderField } from '../FormBuilderField';
15
+ import {
16
+ Table,
17
+ TableBody,
18
+ TableCell,
19
+ TableHead,
20
+ TableHeader,
21
+ TableRow,
22
+ } from '../../../../../shadcn/ui/table';
11
23
 
12
- export function ArrayField({ field, control, fieldPath, value, onChange }: FieldRenderProps) {
24
+ export function ArrayField({
25
+ field,
26
+ control,
27
+ fieldPath,
28
+ value,
29
+ onChange,
30
+ }: FieldRenderProps) {
13
31
  const { fields, append, remove } = useFieldArray({
14
32
  control,
15
33
  name: fieldPath as FieldArrayPath<FieldValues>,
16
- })
34
+ });
17
35
 
18
36
  const addItem = () => {
19
37
  // For custom layout, prefer appending an object so useFieldArray can generate stable IDs
20
38
  if (field.arrayLayout === 'custom') {
21
- append({} as never)
22
- return
39
+ append({} as never);
40
+ return;
23
41
  }
24
42
  if (field.fields && field.fields.length === 1) {
25
- const defaultValue = field.fields[0].defaultValue ?? ''
26
- append(defaultValue as never)
43
+ const defaultValue = field.fields[0].defaultValue ?? '';
44
+ append(defaultValue as never);
27
45
  } else if (field.fields) {
28
- const defaultObject: Record<string, unknown> = {}
46
+ const defaultObject: Record<string, unknown> = {};
29
47
  field.fields.forEach((subField) => {
30
- defaultObject[subField.name] = subField.defaultValue ?? ''
31
- })
32
- append(defaultObject as never)
48
+ defaultObject[subField.name] = subField.defaultValue ?? '';
49
+ });
50
+ append(defaultObject as never);
33
51
  } else {
34
- append('' as never)
52
+ append('' as never);
35
53
  }
36
- }
54
+ };
37
55
 
38
- const removeItem = (index: number) => remove(index)
56
+ const removeItem = (index: number) => remove(index);
39
57
 
40
58
  // Custom layout hook
41
- if (field.arrayLayout === 'custom' && typeof field.arrayRender === 'function') {
59
+ if (
60
+ field.arrayLayout === 'custom' &&
61
+ typeof field.arrayRender === 'function'
62
+ ) {
42
63
  return (
43
- <>{field.arrayRender({ field, control, fieldPath, value, onChange, addItem, removeItem, disabled: field.disabled, rows: fields })}</>
44
- )
64
+ <>
65
+ {field.arrayRender({
66
+ field,
67
+ control,
68
+ fieldPath,
69
+ value,
70
+ onChange,
71
+ addItem,
72
+ removeItem,
73
+ disabled: field.disabled,
74
+ rows: fields,
75
+ })}
76
+ </>
77
+ );
45
78
  }
46
79
 
47
80
  // Table layout
48
81
  if (field.arrayLayout === 'table') {
49
- const hasNested = Array.isArray(field.fields) && field.fields.length > 0
50
- const fFields = field.fields ?? []
51
- const isSubFieldHidden = (subField: typeof fFields[number]) =>
52
- Boolean(subField?.hidden) || subField?.type === 'hidden'
53
- const visibleSubFields = fFields.filter(subField => !isSubFieldHidden(subField))
54
- const singleNested = hasNested && visibleSubFields.length === 1
55
- const headerBg = field.arrayColors?.headerBgClass ?? 'bg-primary'
56
- const headerText = field.arrayColors?.headerTextClass ?? 'text-primary-foreground'
57
- const altRow = field.arrayColors?.rowAltBgClass ?? 'bg-muted/40'
82
+ const hasNested = Array.isArray(field.fields) && field.fields.length > 0;
83
+ const fFields = field.fields ?? [];
84
+ const isSubFieldHidden = (subField: (typeof fFields)[number]) =>
85
+ Boolean(subField?.hidden) || subField?.type === 'hidden';
86
+ const visibleSubFields = fFields.filter(
87
+ (subField) => !isSubFieldHidden(subField),
88
+ );
89
+ const singleNested = hasNested && visibleSubFields.length === 1;
90
+ const headerBg = field.arrayColors?.headerBgClass ?? 'bg-primary';
91
+ const headerText =
92
+ field.arrayColors?.headerTextClass ?? 'text-primary-foreground';
93
+ const altRow = field.arrayColors?.rowAltBgClass ?? 'bg-muted/40';
58
94
 
59
95
  return (
60
96
  <Card className={cn(field.className, 'py-3 rounded-md gap-3')}>
@@ -63,10 +99,18 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
63
99
  <div>
64
100
  <CardTitle className="text-base">{field.label}</CardTitle>
65
101
  {field.description && (
66
- <p className="text-sm text-muted-foreground">{field.description}</p>
102
+ <p className="text-sm text-muted-foreground">
103
+ {field.description}
104
+ </p>
67
105
  )}
68
106
  </div>
69
- <Button type="button" variant="outline" size="sm" onClick={addItem} disabled={field.disabled}>
107
+ <Button
108
+ type="button"
109
+ variant="outline"
110
+ size="sm"
111
+ onClick={addItem}
112
+ disabled={field.disabled}
113
+ >
70
114
  <Plus className="h-4 w-4 mr-1" />
71
115
  Add Item
72
116
  </Button>
@@ -83,10 +127,14 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
83
127
  <TableRow className={cn(headerBg, headerText)}>
84
128
  {hasNested ? (
85
129
  singleNested ? (
86
- <TableHead className={cn(headerText)}>{visibleSubFields[0]?.label || 'Value'}</TableHead>
130
+ <TableHead className={cn(headerText)}>
131
+ {visibleSubFields[0]?.label || 'Value'}
132
+ </TableHead>
87
133
  ) : (
88
- visibleSubFields.map(sf => (
89
- <TableHead key={sf.name} className={cn(headerText)}>{sf.label || sf.name}</TableHead>
134
+ visibleSubFields.map((sf) => (
135
+ <TableHead key={sf.name} className={cn(headerText)}>
136
+ {sf.label || sf.name}
137
+ </TableHead>
90
138
  ))
91
139
  )
92
140
  ) : (
@@ -97,18 +145,25 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
97
145
  </TableHeader>
98
146
  <TableBody>
99
147
  {fields.map((item, index) => (
100
- <TableRow key={item.id} className={cn(index % 2 === 1 && altRow)}>
148
+ <TableRow
149
+ key={item.id}
150
+ className={cn(index % 2 === 1 && altRow)}
151
+ >
101
152
  {hasNested ? (
102
153
  singleNested ? (
103
154
  <TableCell>
104
155
  <FormBuilderField
105
- field={{ ...visibleSubFields[0], name: visibleSubFields[0]?.name, label: visibleSubFields[0]?.label || 'Value' }}
156
+ field={{
157
+ ...visibleSubFields[0],
158
+ name: visibleSubFields[0]?.name,
159
+ label: visibleSubFields[0]?.label || 'Value',
160
+ }}
106
161
  control={control}
107
162
  parentPath={`${fieldPath}.${index}`}
108
163
  />
109
164
  </TableCell>
110
165
  ) : (
111
- visibleSubFields.map(subField => (
166
+ visibleSubFields.map((subField) => (
112
167
  <TableCell key={subField.name}>
113
168
  <FormBuilderField
114
169
  field={subField}
@@ -121,12 +176,15 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
121
176
  ) : (
122
177
  <TableCell>
123
178
  <Input
124
- value={String(((value as unknown[] | undefined)?.[index] ?? ''))}
179
+ value={String(
180
+ (value as unknown[] | undefined)?.[index] ?? '',
181
+ )}
125
182
  onChange={(e) => {
126
- const current = (value as unknown[] | undefined) ?? []
127
- const newArray = [...current]
128
- newArray[index] = e.target.value
129
- onChange(newArray)
183
+ const current =
184
+ (value as unknown[] | undefined) ?? [];
185
+ const newArray = [...current];
186
+ newArray[index] = e.target.value;
187
+ onChange(newArray);
130
188
  }}
131
189
  placeholder={`Item ${index + 1}`}
132
190
  disabled={field.disabled}
@@ -134,7 +192,13 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
134
192
  </TableCell>
135
193
  )}
136
194
  <TableCell className="w-1 text-right">
137
- <Button type="button" variant="destructive" size="sm" onClick={() => remove(index)} disabled={field.disabled}>
195
+ <Button
196
+ type="button"
197
+ variant="destructive"
198
+ size="sm"
199
+ onClick={() => remove(index)}
200
+ disabled={field.disabled}
201
+ >
138
202
  <Trash2 className="h-4 w-4" />
139
203
  </Button>
140
204
  </TableCell>
@@ -145,7 +209,7 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
145
209
  )}
146
210
  </CardContent>
147
211
  </Card>
148
- )
212
+ );
149
213
  }
150
214
 
151
215
  // Default: card layout (existing UI)
@@ -156,10 +220,18 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
156
220
  <div>
157
221
  <CardTitle className="text-base">{field.label}</CardTitle>
158
222
  {field.description && (
159
- <p className="text-sm text-muted-foreground">{field.description}</p>
223
+ <p className="text-sm text-muted-foreground">
224
+ {field.description}
225
+ </p>
160
226
  )}
161
227
  </div>
162
- <Button type="button" variant="outline" size="sm" onClick={addItem} disabled={field.disabled}>
228
+ <Button
229
+ type="button"
230
+ variant="outline"
231
+ size="sm"
232
+ onClick={addItem}
233
+ disabled={field.disabled}
234
+ >
163
235
  <Plus className="h-4 w-4 mr-1" />
164
236
  Add Item
165
237
  </Button>
@@ -177,9 +249,17 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
177
249
  <div className="flex items-center justify-between">
178
250
  <div className="flex items-center gap-2">
179
251
  <GripVertical className="h-4 w-4 text-muted-foreground" />
180
- <span className="text-sm font-medium">Item {index + 1}</span>
252
+ <span className="text-sm font-medium">
253
+ Item {index + 1}
254
+ </span>
181
255
  </div>
182
- <Button type="button" variant="ghost" size="sm" onClick={() => remove(index)} disabled={field.disabled}>
256
+ <Button
257
+ type="button"
258
+ variant="ghost"
259
+ size="sm"
260
+ onClick={() => remove(index)}
261
+ disabled={field.disabled}
262
+ >
183
263
  <Trash2 className="h-4 w-4" />
184
264
  </Button>
185
265
  </div>
@@ -187,13 +267,17 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
187
267
  <CardContent>
188
268
  {field.fields && field.fields.length === 1 ? (
189
269
  <FormBuilderField
190
- field={{ ...field.fields[0], name: field.fields[0].name, label: field.fields[0].label || 'Value' }}
270
+ field={{
271
+ ...field.fields[0],
272
+ name: field.fields[0].name,
273
+ label: field.fields[0].label || 'Value',
274
+ }}
191
275
  control={control}
192
276
  parentPath={`${fieldPath}.${index}`}
193
277
  />
194
278
  ) : field.fields ? (
195
279
  <div className="grid gap-2 md:grid-cols-2">
196
- {field.fields.map(subField => (
280
+ {field.fields.map((subField) => (
197
281
  <FormBuilderField
198
282
  key={subField.name}
199
283
  field={subField}
@@ -204,12 +288,14 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
204
288
  </div>
205
289
  ) : (
206
290
  <Input
207
- value={String(((value as unknown[] | undefined)?.[index] ?? ''))}
291
+ value={String(
292
+ (value as unknown[] | undefined)?.[index] ?? '',
293
+ )}
208
294
  onChange={(e) => {
209
- const current = (value as unknown[] | undefined) ?? []
210
- const newArray = [...current]
211
- newArray[index] = e.target.value
212
- onChange(newArray)
295
+ const current = (value as unknown[] | undefined) ?? [];
296
+ const newArray = [...current];
297
+ newArray[index] = e.target.value;
298
+ onChange(newArray);
213
299
  }}
214
300
  placeholder={`Item ${index + 1}`}
215
301
  disabled={field.disabled}
@@ -221,5 +307,5 @@ export function ArrayField({ field, control, fieldPath, value, onChange }: Field
221
307
  )}
222
308
  </CardContent>
223
309
  </Card>
224
- )
310
+ );
225
311
  }
@@ -1,29 +1,58 @@
1
- import { Autocomplete } from '../../../../../kit/components/autocomplete/Autocomplete'
2
- import type { AutocompleteOption } from '../../../../../kit/components/autocomplete/types'
3
- import type { FieldRenderProps } from './types'
1
+ import { Autocomplete } from '../../../../../kit/components/autocomplete/Autocomplete';
2
+ import type { AutocompleteOption } from '../../../../../kit/components/autocomplete/types';
3
+ import type { FieldRenderProps } from './types';
4
4
 
5
- export function AutocompleteField({ field, value, onChange, className }: FieldRenderProps) {
5
+ export function AutocompleteField({
6
+ field,
7
+ value,
8
+ onChange,
9
+ className,
10
+ }: FieldRenderProps) {
6
11
  const options: AutocompleteOption[] = (field.options ?? [])
7
- .filter((o): o is { label: string; value: string | number } => o.value !== null && o.value !== undefined)
8
- .map(o => ({ label: o.label, value: o.value as string | number, raw: (o as unknown as AutocompleteOption).raw }))
12
+ .filter(
13
+ (o): o is { label: string; value: string | number } =>
14
+ o.value !== null && o.value !== undefined,
15
+ )
16
+ .map((o) => ({
17
+ label: o.label,
18
+ value: o.value as string | number,
19
+ raw: (o as unknown as AutocompleteOption).raw,
20
+ }));
9
21
 
10
22
  // Shape defaultValue according to single/multiple
11
- let defaultValueShaped: string | number | null | Array<string | number> | undefined = undefined
23
+ let defaultValueShaped:
24
+ | string
25
+ | number
26
+ | null
27
+ | Array<string | number>
28
+ | undefined;
12
29
  if (field.defaultValue !== undefined) {
13
30
  if (field.multiple) {
14
31
  if (Array.isArray(field.defaultValue)) {
15
- defaultValueShaped = field.defaultValue.filter((v): v is string | number => typeof v === 'string' || typeof v === 'number')
16
- } else if (field.defaultValue === null || field.defaultValue === undefined) {
17
- defaultValueShaped = []
18
- } else if (typeof field.defaultValue === 'string' || typeof field.defaultValue === 'number') {
19
- defaultValueShaped = [field.defaultValue]
32
+ defaultValueShaped = field.defaultValue.filter(
33
+ (v): v is string | number =>
34
+ typeof v === 'string' || typeof v === 'number',
35
+ );
36
+ } else if (
37
+ field.defaultValue === null ||
38
+ field.defaultValue === undefined
39
+ ) {
40
+ defaultValueShaped = [];
41
+ } else if (
42
+ typeof field.defaultValue === 'string' ||
43
+ typeof field.defaultValue === 'number'
44
+ ) {
45
+ defaultValueShaped = [field.defaultValue];
20
46
  } else {
21
- defaultValueShaped = []
47
+ defaultValueShaped = [];
22
48
  }
23
49
  } else {
24
- defaultValueShaped = (typeof field.defaultValue === 'string' || typeof field.defaultValue === 'number' || field.defaultValue === null)
25
- ? field.defaultValue as string | number | null
26
- : null
50
+ defaultValueShaped =
51
+ typeof field.defaultValue === 'string' ||
52
+ typeof field.defaultValue === 'number' ||
53
+ field.defaultValue === null
54
+ ? (field.defaultValue as string | number | null)
55
+ : null;
27
56
  }
28
57
  }
29
58
 
@@ -42,12 +71,18 @@ export function AutocompleteField({ field, value, onChange, className }: FieldRe
42
71
  defaultValue={defaultValueShaped}
43
72
  initialSelectedOptions={field.initialSelectedOptions ?? undefined}
44
73
  loadSelected={field.loadSelected}
45
- value={field.multiple ? ((Array.isArray(value) ? value : (value ? [value] : [])) as Array<string | number>) : ((value as string | number | null) ?? null)}
74
+ value={
75
+ field.multiple
76
+ ? ((Array.isArray(value) ? value : value ? [value] : []) as Array<
77
+ string | number
78
+ >)
79
+ : ((value as string | number | null) ?? null)
80
+ }
46
81
  onChange={(val, option, raw) => onChange(val, option, raw)}
47
82
  placeholder={field.placeholder}
48
83
  renderOption={field.renderOption}
49
84
  disabled={field.disabled}
50
85
  className={className}
51
86
  />
52
- )
87
+ );
53
88
  }
@@ -1,13 +1,19 @@
1
- import { Checkbox } from '../../../../../shadcn/ui/checkbox'
2
- import { Label } from '../../../../../shadcn/ui/label'
3
- import { cn } from '../../../../../shadcn/lib/utils'
4
- import type { FieldRenderProps } from './types'
1
+ import { Checkbox } from '../../../../../shadcn/ui/checkbox';
2
+ import { Label } from '../../../../../shadcn/ui/label';
3
+ import { cn } from '../../../../../shadcn/lib/utils';
4
+ import type { FieldRenderProps } from './types';
5
5
 
6
- export function CheckboxField({ field, fieldPath, value, onChange, className }: FieldRenderProps) {
7
- const placement = field.labelPlacement ?? 'inline'
6
+ export function CheckboxField({
7
+ field,
8
+ fieldPath,
9
+ value,
10
+ onChange,
11
+ className,
12
+ }: FieldRenderProps) {
13
+ const placement = field.labelPlacement ?? 'inline';
8
14
 
9
15
  if (placement === 'stacked') {
10
- const labelId = `${fieldPath}-label`
16
+ const labelId = `${fieldPath}-label`;
11
17
  return (
12
18
  <div className="space-y-2">
13
19
  <Label id={labelId} className="text-sm font-medium">
@@ -23,7 +29,7 @@ export function CheckboxField({ field, fieldPath, value, onChange, className }:
23
29
  className={cn(className)}
24
30
  />
25
31
  </div>
26
- )
32
+ );
27
33
  }
28
34
 
29
35
  if (placement === 'hidden') {
@@ -35,7 +41,7 @@ export function CheckboxField({ field, fieldPath, value, onChange, className }:
35
41
  disabled={field.disabled}
36
42
  className={cn(className)}
37
43
  />
38
- )
44
+ );
39
45
  }
40
46
 
41
47
  return (
@@ -47,10 +53,13 @@ export function CheckboxField({ field, fieldPath, value, onChange, className }:
47
53
  disabled={field.disabled}
48
54
  className={cn(className)}
49
55
  />
50
- <Label htmlFor={fieldPath} className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">
56
+ <Label
57
+ htmlFor={fieldPath}
58
+ className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
59
+ >
51
60
  {field.label}
52
61
  {field.required && <span className="text-destructive ml-1">*</span>}
53
62
  </Label>
54
63
  </div>
55
- )
64
+ );
56
65
  }
@@ -1,15 +1,26 @@
1
- import { Input } from '../../../../../shadcn/ui/input'
2
- import type { FieldRenderProps } from './types'
1
+ import { Input } from '../../../../../shadcn/ui/input';
2
+ import type { FieldRenderProps } from './types';
3
3
 
4
- export function DateField({ field, value, onChange, className }: FieldRenderProps) {
4
+ export function DateField({
5
+ field,
6
+ value,
7
+ onChange,
8
+ className,
9
+ }: FieldRenderProps) {
5
10
  return (
6
11
  <Input
7
12
  className={className}
8
13
  disabled={field.disabled}
9
14
  placeholder={field.placeholder}
10
15
  type="date"
11
- value={value ? new Date(value as Date | string).toISOString().split('T')[0] : ''}
12
- onChange={(e) => onChange(e.target.value ? new Date(e.target.value) : null)}
16
+ value={
17
+ value
18
+ ? new Date(value as Date | string).toISOString().split('T')[0]
19
+ : ''
20
+ }
21
+ onChange={(e) =>
22
+ onChange(e.target.value ? new Date(e.target.value) : null)
23
+ }
13
24
  />
14
- )
25
+ );
15
26
  }
@@ -1,14 +1,19 @@
1
- import * as React from 'react'
2
- import type { FieldRenderProps } from './types'
3
- import { DatePicker } from '../../../../components/datepicker/DatePicker'
1
+ import * as React from 'react';
2
+ import type { FieldRenderProps } from './types';
3
+ import { DatePicker } from '../../../../components/datepicker/DatePicker';
4
4
 
5
- export function DatePickerField({ field, value, onChange, className }: FieldRenderProps) {
5
+ export function DatePickerField({
6
+ field,
7
+ value,
8
+ onChange,
9
+ className,
10
+ }: FieldRenderProps) {
6
11
  const v = React.useMemo(() => {
7
- if (!value) return null
8
- if (value instanceof Date) return value
9
- const d = new Date(value as string)
10
- return Number.isNaN(d.getTime()) ? null : d
11
- }, [value])
12
+ if (!value) return null;
13
+ if (value instanceof Date) return value;
14
+ const d = new Date(value as string);
15
+ return Number.isNaN(d.getTime()) ? null : d;
16
+ }, [value]);
12
17
 
13
18
  return (
14
19
  <DatePicker
@@ -20,5 +25,5 @@ export function DatePickerField({ field, value, onChange, className }: FieldRend
20
25
  disabledDates={field.disabledDates}
21
26
  buttonVariant="outline"
22
27
  />
23
- )
28
+ );
24
29
  }
@@ -1,27 +1,32 @@
1
- import * as React from 'react'
2
- import type { FieldRenderProps } from './types'
3
- import { DateRangePicker } from '../../../../components/datepicker/DateRangePicker'
4
- import type { DateRange } from 'react-day-picker'
1
+ import * as React from 'react';
2
+ import type { FieldRenderProps } from './types';
3
+ import { DateRangePicker } from '../../../../components/datepicker/DateRangePicker';
4
+ import type { DateRange } from 'react-day-picker';
5
5
 
6
6
  function coerceDate(input: unknown): Date | undefined {
7
- if (!input) return undefined
8
- if (input instanceof Date) return input
9
- const d = new Date(input as string)
10
- return Number.isNaN(d.getTime()) ? undefined : d
7
+ if (!input) return undefined;
8
+ if (input instanceof Date) return input;
9
+ const d = new Date(input as string);
10
+ return Number.isNaN(d.getTime()) ? undefined : d;
11
11
  }
12
12
 
13
- export function DateRangePickerField({ field, value, onChange, className }: FieldRenderProps) {
13
+ export function DateRangePickerField({
14
+ field,
15
+ value,
16
+ onChange,
17
+ className,
18
+ }: FieldRenderProps) {
14
19
  const v = React.useMemo<DateRange | null>(() => {
15
- if (!value) return null
20
+ if (!value) return null;
16
21
  if (typeof value === 'object' && value !== null) {
17
- const anyVal = value as { from?: unknown; to?: unknown }
22
+ const anyVal = value as { from?: unknown; to?: unknown };
18
23
  return {
19
24
  from: coerceDate(anyVal.from),
20
25
  to: coerceDate(anyVal.to),
21
- }
26
+ };
22
27
  }
23
- return null
24
- }, [value])
28
+ return null;
29
+ }, [value]);
25
30
 
26
31
  return (
27
32
  <DateRangePicker
@@ -37,5 +42,5 @@ export function DateRangePickerField({ field, value, onChange, className }: Fiel
37
42
  cancelLabel={field.cancelLabel}
38
43
  applyLabel={field.applyLabel}
39
44
  />
40
- )
45
+ );
41
46
  }
@@ -1,14 +1,19 @@
1
- import * as React from 'react'
2
- import type { FieldRenderProps } from './types'
3
- import { DateTimePicker } from '../../../../components/datetimepicker/DateTimePicker'
1
+ import * as React from 'react';
2
+ import type { FieldRenderProps } from './types';
3
+ import { DateTimePicker } from '../../../../components/datetimepicker/DateTimePicker';
4
4
 
5
- export function DateTimePickerField({ field, value, onChange, className }: FieldRenderProps) {
5
+ export function DateTimePickerField({
6
+ field,
7
+ value,
8
+ onChange,
9
+ className,
10
+ }: FieldRenderProps) {
6
11
  const v = React.useMemo(() => {
7
- if (!value) return null
8
- if (value instanceof Date) return value
9
- const d = new Date(value as string)
10
- return Number.isNaN(d.getTime()) ? null : d
11
- }, [value])
12
+ if (!value) return null;
13
+ if (value instanceof Date) return value;
14
+ const d = new Date(value as string);
15
+ return Number.isNaN(d.getTime()) ? null : d;
16
+ }, [value]);
12
17
 
13
18
  return (
14
19
  <DateTimePicker
@@ -27,7 +32,7 @@ export function DateTimePickerField({ field, value, onChange, className }: Field
27
32
  cancelLabel={field.cancelLabel}
28
33
  applyLabel={field.applyLabel}
29
34
  />
30
- )
35
+ );
31
36
  }
32
37
 
33
- export default DateTimePickerField
38
+ export default DateTimePickerField;