@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,7 +1,13 @@
1
1
  import { useState } from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
- import { Autocomplete, type AutocompleteProps } from '../../../kit/components/autocomplete/Autocomplete';
4
- import type { AutocompleteOption, AutocompleteFetchResult } from '../../../kit/components/autocomplete/types';
3
+ import {
4
+ Autocomplete,
5
+ type AutocompleteProps,
6
+ } from '../../../kit/components/autocomplete/Autocomplete';
7
+ import type {
8
+ AutocompleteOption,
9
+ AutocompleteFetchResult,
10
+ } from '../../../kit/components/autocomplete/types';
5
11
 
6
12
  const meta: Meta<typeof Autocomplete> = {
7
13
  title: 'Kit/Components/Autocomplete',
@@ -49,26 +55,34 @@ export const ClientMode: Story = {
49
55
 
50
56
  // Mock server fetcher
51
57
  function makeServerFetcher(all: AutocompleteOption[], minLatency = 350) {
52
- return async ({ search, page, pageSize }: {
58
+ return async ({
59
+ search,
60
+ page,
61
+ pageSize,
62
+ }: {
53
63
  search: string;
54
64
  page?: number;
55
65
  pageSize: number;
56
66
  }): Promise<AutocompleteFetchResult> => {
57
67
  const q = (search || '').toLowerCase();
58
68
  const resolvedPage = page ?? 1;
59
- const filtered = q ? all.filter(o => o.label.toLowerCase().includes(q)) : all;
69
+ const filtered = q
70
+ ? all.filter((o) => o.label.toLowerCase().includes(q))
71
+ : all;
60
72
  const start = (resolvedPage - 1) * pageSize;
61
73
  const slice = filtered.slice(start, start + pageSize);
62
74
  const hasMore = start + pageSize < filtered.length;
63
- await new Promise(r => setTimeout(r, minLatency));
75
+ await new Promise((r) => setTimeout(r, minLatency));
64
76
  return { items: slice, hasMore, nextCursor: null };
65
77
  };
66
78
  }
67
79
 
68
- const MANY_OPTIONS: AutocompleteOption[] = Array.from({ length: 100 }).map((_, i) => ({
69
- label: `Option ${i + 1}`,
70
- value: i + 1,
71
- }));
80
+ const MANY_OPTIONS: AutocompleteOption[] = Array.from({ length: 100 }).map(
81
+ (_, i) => ({
82
+ label: `Option ${i + 1}`,
83
+ value: i + 1,
84
+ }),
85
+ );
72
86
 
73
87
  export const ServerMode: Story = {
74
88
  name: 'Server mode (infinite scroll)',
@@ -89,7 +103,9 @@ export const CustomRender: Story = {
89
103
  renderOption: (option, selected) => (
90
104
  <div className="flex items-center gap-2">
91
105
  <span className="inline-block h-2 w-2 rounded-full bg-primary" />
92
- <span className={selected ? 'font-medium' : undefined}>{option.label}</span>
106
+ <span className={selected ? 'font-medium' : undefined}>
107
+ {option.label}
108
+ </span>
93
109
  </div>
94
110
  ),
95
111
  } satisfies Partial<AutocompleteProps>,
@@ -161,10 +177,13 @@ function EditFormExample() {
161
177
  <div className="space-y-6 max-w-md">
162
178
  <div className="rounded-lg border p-4 bg-card">
163
179
  <h3 className="font-semibold mb-4">Edit User Profile</h3>
164
-
180
+
165
181
  <div className="space-y-4">
166
182
  <div>
167
- <label className="text-sm font-medium mb-2 block">
183
+ <label
184
+ htmlFor="favoriteCity"
185
+ className="text-sm font-medium mb-2 block"
186
+ >
168
187
  Favorite City (Single Select)
169
188
  </label>
170
189
  <Autocomplete
@@ -180,7 +199,10 @@ function EditFormExample() {
180
199
  </div>
181
200
 
182
201
  <div>
183
- <label className="text-sm font-medium mb-2 block">
202
+ <label
203
+ htmlFor="visitedCities"
204
+ className="text-sm font-medium mb-2 block"
205
+ >
184
206
  Visited Cities (Multiple Select)
185
207
  </label>
186
208
  <Autocomplete
@@ -199,7 +221,11 @@ function EditFormExample() {
199
221
  </div>
200
222
 
201
223
  <div className="mt-4 pt-4 border-t text-xs text-muted-foreground">
202
- <span role="img" aria-label="lightbulb">💡</span> Notice: Labels are automatically populated from the options array without needing <code>initialSelectedOptions</code>
224
+ <span role="img" aria-label="lightbulb">
225
+ 💡
226
+ </span>{' '}
227
+ Notice: Labels are automatically populated from the options array
228
+ without needing <code>initialSelectedOptions</code>
203
229
  </div>
204
230
  </div>
205
231
  </div>
@@ -217,7 +243,9 @@ function ServerModeWithLoadSelectedExample() {
217
243
  selectedOptionIds: [5, 15, 25], // Only IDs, no labels
218
244
  };
219
245
 
220
- const [selectedIds, setSelectedIds] = useState(userPreferences.selectedOptionIds);
246
+ const [selectedIds, setSelectedIds] = useState(
247
+ userPreferences.selectedOptionIds,
248
+ );
221
249
 
222
250
  // Simulate fetcher that searches/paginates
223
251
  const serverFetcher = makeServerFetcher(MANY_OPTIONS, 500);
@@ -225,11 +253,11 @@ function ServerModeWithLoadSelectedExample() {
225
253
  // Function to load labels for selected IDs
226
254
  const loadSelectedLabels = async (ids: Array<string | number>) => {
227
255
  console.log('🔍 Loading labels for IDs:', ids);
228
-
256
+
229
257
  // Simulate API call to fetch specific items by IDs
230
- await new Promise(r => setTimeout(r, 800));
231
-
232
- return MANY_OPTIONS.filter(opt => ids.includes(opt.value));
258
+ await new Promise((r) => setTimeout(r, 800));
259
+
260
+ return MANY_OPTIONS.filter((opt) => ids.includes(opt.value));
233
261
  };
234
262
 
235
263
  return (
@@ -239,7 +267,7 @@ function ServerModeWithLoadSelectedExample() {
239
267
  <p className="text-sm text-muted-foreground mb-4">
240
268
  Pre-selected IDs: {selectedIds.join(', ')}
241
269
  </p>
242
-
270
+
243
271
  <Autocomplete
244
272
  mode="server"
245
273
  fetcher={serverFetcher}
@@ -254,11 +282,16 @@ function ServerModeWithLoadSelectedExample() {
254
282
 
255
283
  <div className="mt-4 pt-4 border-t">
256
284
  <p className="text-xs text-muted-foreground mb-2">
257
- <span role="img" aria-label="info">ℹ️</span> How it works:
285
+ <span role="img" aria-label="info">
286
+ ℹ️
287
+ </span>{' '}
288
+ How it works:
258
289
  </p>
259
290
  <ul className="text-xs text-muted-foreground space-y-1 list-disc list-inside">
260
291
  <li>Component receives only IDs: [5, 15, 25]</li>
261
- <li>When dropdown opens, <code>loadSelected</code> is called</li>
292
+ <li>
293
+ When dropdown opens, <code>loadSelected</code> is called
294
+ </li>
262
295
  <li>Fetches labels from server and displays them</li>
263
296
  <li>Perfect for edit forms with server-side data</li>
264
297
  </ul>
@@ -24,7 +24,15 @@ export const Basic: Story = {
24
24
  <div className="p-6 space-y-4">
25
25
  <div>
26
26
  <div className="text-sm text-muted-foreground">Selected date</div>
27
- <div className="font-medium">{value ? value.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' }) : '—'}</div>
27
+ <div className="font-medium">
28
+ {value
29
+ ? value.toLocaleDateString(undefined, {
30
+ year: 'numeric',
31
+ month: 'short',
32
+ day: '2-digit',
33
+ })
34
+ : '—'}
35
+ </div>
28
36
  </div>
29
37
  <DatePicker value={value} onChange={setValue} />
30
38
  </div>
@@ -46,9 +54,22 @@ export const WithConstraints: Story = {
46
54
  <div className="p-6 space-y-4">
47
55
  <div>
48
56
  <div className="text-sm text-muted-foreground">Selected date</div>
49
- <div className="font-medium">{value ? value.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' }) : '—'}</div>
57
+ <div className="font-medium">
58
+ {value
59
+ ? value.toLocaleDateString(undefined, {
60
+ year: 'numeric',
61
+ month: 'short',
62
+ day: '2-digit',
63
+ })
64
+ : '—'}
65
+ </div>
50
66
  </div>
51
- <DatePicker value={value} onChange={setValue} minDate={minDate} maxDate={maxDate} />
67
+ <DatePicker
68
+ value={value}
69
+ onChange={setValue}
70
+ minDate={minDate}
71
+ maxDate={maxDate}
72
+ />
52
73
  </div>
53
74
  );
54
75
  }
@@ -62,16 +83,40 @@ export const DisabledSingleDates: Story = {
62
83
  function Demo() {
63
84
  const [value, setValue] = React.useState<Date | null>(new Date());
64
85
  const today = new Date();
65
- const d1 = new Date(today.getFullYear(), today.getMonth(), today.getDate());
66
- const d2 = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
67
- const d3 = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7);
86
+ const d1 = new Date(
87
+ today.getFullYear(),
88
+ today.getMonth(),
89
+ today.getDate(),
90
+ );
91
+ const d2 = new Date(
92
+ today.getFullYear(),
93
+ today.getMonth(),
94
+ today.getDate() + 1,
95
+ );
96
+ const d3 = new Date(
97
+ today.getFullYear(),
98
+ today.getMonth(),
99
+ today.getDate() + 7,
100
+ );
68
101
  return (
69
102
  <div className="p-6 space-y-4">
70
103
  <div>
71
104
  <div className="text-sm text-muted-foreground">Selected date</div>
72
- <div className="font-medium">{value ? value.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' }) : '—'}</div>
105
+ <div className="font-medium">
106
+ {value
107
+ ? value.toLocaleDateString(undefined, {
108
+ year: 'numeric',
109
+ month: 'short',
110
+ day: '2-digit',
111
+ })
112
+ : '—'}
113
+ </div>
73
114
  </div>
74
- <DatePicker value={value} onChange={setValue} disabledDates={[d1, d2, d3]} />
115
+ <DatePicker
116
+ value={value}
117
+ onChange={setValue}
118
+ disabledDates={[d1, d2, d3]}
119
+ />
75
120
  </div>
76
121
  );
77
122
  }
@@ -85,15 +130,33 @@ export const DisabledDateRanges: Story = {
85
130
  function Demo() {
86
131
  const [value, setValue] = React.useState<Date | null>(new Date());
87
132
  const base = new Date();
88
- const range1 = { from: new Date(base.getFullYear(), base.getMonth(), 10), to: new Date(base.getFullYear(), base.getMonth(), 15) };
89
- const range2 = { from: new Date(base.getFullYear(), base.getMonth(), 20), to: new Date(base.getFullYear(), base.getMonth(), 22) };
133
+ const range1 = {
134
+ from: new Date(base.getFullYear(), base.getMonth(), 10),
135
+ to: new Date(base.getFullYear(), base.getMonth(), 15),
136
+ };
137
+ const range2 = {
138
+ from: new Date(base.getFullYear(), base.getMonth(), 20),
139
+ to: new Date(base.getFullYear(), base.getMonth(), 22),
140
+ };
90
141
  return (
91
142
  <div className="p-6 space-y-4">
92
143
  <div>
93
144
  <div className="text-sm text-muted-foreground">Selected date</div>
94
- <div className="font-medium">{value ? value.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' }) : '—'}</div>
145
+ <div className="font-medium">
146
+ {value
147
+ ? value.toLocaleDateString(undefined, {
148
+ year: 'numeric',
149
+ month: 'short',
150
+ day: '2-digit',
151
+ })
152
+ : '—'}
153
+ </div>
95
154
  </div>
96
- <DatePicker value={value} onChange={setValue} disabledDates={[range1, range2]} />
155
+ <DatePicker
156
+ value={value}
157
+ onChange={setValue}
158
+ disabledDates={[range1, range2]}
159
+ />
97
160
  </div>
98
161
  );
99
162
  }
@@ -109,7 +172,11 @@ export const ControlledOpen: Story = {
109
172
  const [open, setOpen] = React.useState(false);
110
173
  return (
111
174
  <div className="p-6 space-y-4">
112
- <button type="button" className="underline text-sm" onClick={() => setOpen((o) => !o)}>
175
+ <button
176
+ type="button"
177
+ className="underline text-sm"
178
+ onClick={() => setOpen((o) => !o)}
179
+ >
113
180
  Toggle popover
114
181
  </button>
115
182
  <DatePicker
@@ -47,9 +47,21 @@ export const DisabledSingleDates: Story = {
47
47
  render: () => {
48
48
  function Demo() {
49
49
  const today = new Date();
50
- const d1 = new Date(today.getFullYear(), today.getMonth(), today.getDate());
51
- const d2 = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
52
- const d3 = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7);
50
+ const d1 = new Date(
51
+ today.getFullYear(),
52
+ today.getMonth(),
53
+ today.getDate(),
54
+ );
55
+ const d2 = new Date(
56
+ today.getFullYear(),
57
+ today.getMonth(),
58
+ today.getDate() + 1,
59
+ );
60
+ const d3 = new Date(
61
+ today.getFullYear(),
62
+ today.getMonth(),
63
+ today.getDate() + 7,
64
+ );
53
65
  const [value, setValue] = React.useState<DateRange | null>(null);
54
66
  return (
55
67
  <div className="p-6 space-y-4">
@@ -61,7 +73,11 @@ export const DisabledSingleDates: Story = {
61
73
  : '—'}
62
74
  </div>
63
75
  </div>
64
- <DateRangePicker value={value} onChange={setValue} disabledDates={[d1, d2, d3]} />
76
+ <DateRangePicker
77
+ value={value}
78
+ onChange={setValue}
79
+ disabledDates={[d1, d2, d3]}
80
+ />
65
81
  </div>
66
82
  );
67
83
  }
@@ -74,9 +90,18 @@ export const DisabledDateRanges: Story = {
74
90
  render: () => {
75
91
  function Demo() {
76
92
  const base = new Date();
77
- const range1 = { from: new Date(base.getFullYear(), base.getMonth(), 10), to: new Date(base.getFullYear(), base.getMonth(), 15) };
78
- const range2 = { from: new Date(base.getFullYear(), base.getMonth(), 20), to: new Date(base.getFullYear(), base.getMonth(), 22) };
79
- const [value, setValue] = React.useState<DateRange | null>({ from: range1.from, to: range1.from });
93
+ const range1 = {
94
+ from: new Date(base.getFullYear(), base.getMonth(), 10),
95
+ to: new Date(base.getFullYear(), base.getMonth(), 15),
96
+ };
97
+ const range2 = {
98
+ from: new Date(base.getFullYear(), base.getMonth(), 20),
99
+ to: new Date(base.getFullYear(), base.getMonth(), 22),
100
+ };
101
+ const [value, setValue] = React.useState<DateRange | null>({
102
+ from: range1.from,
103
+ to: range1.from,
104
+ });
80
105
  return (
81
106
  <div className="p-6 space-y-4">
82
107
  <div>
@@ -87,7 +112,11 @@ export const DisabledDateRanges: Story = {
87
112
  : '—'}
88
113
  </div>
89
114
  </div>
90
- <DateRangePicker value={value} onChange={setValue} disabledDates={[range1, range2]} />
115
+ <DateRangePicker
116
+ value={value}
117
+ onChange={setValue}
118
+ disabledDates={[range1, range2]}
119
+ />
91
120
  </div>
92
121
  );
93
122
  }
@@ -102,7 +131,10 @@ export const WithConstraints: Story = {
102
131
  const now = new Date();
103
132
  const minDate = new Date(now.getFullYear(), now.getMonth(), 1);
104
133
  const maxDate = new Date(now.getFullYear(), now.getMonth(), 28);
105
- const [value, setValue] = React.useState<DateRange | null>({ from: minDate, to: maxDate });
134
+ const [value, setValue] = React.useState<DateRange | null>({
135
+ from: minDate,
136
+ to: maxDate,
137
+ });
106
138
  return (
107
139
  <div className="p-6 space-y-4">
108
140
  <div>
@@ -113,7 +145,12 @@ export const WithConstraints: Story = {
113
145
  : '—'}
114
146
  </div>
115
147
  </div>
116
- <DateRangePicker value={value} onChange={setValue} minDate={minDate} maxDate={maxDate} />
148
+ <DateRangePicker
149
+ value={value}
150
+ onChange={setValue}
151
+ minDate={minDate}
152
+ maxDate={maxDate}
153
+ />
117
154
  </div>
118
155
  );
119
156
  }
@@ -133,7 +170,11 @@ export const PresetsPanelApplyMode: Story = {
133
170
  const [open, setOpen] = React.useState<boolean>(false);
134
171
  return (
135
172
  <div className="p-6 space-y-4">
136
- <button type="button" className="underline text-sm" onClick={() => setOpen((o) => !o)}>
173
+ <button
174
+ type="button"
175
+ className="underline text-sm"
176
+ onClick={() => setOpen((o) => !o)}
177
+ >
137
178
  Toggle popover
138
179
  </button>
139
180
  <DateRangePicker
@@ -1,8 +1,9 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Login } from '../../../kit/components/login/Login';
3
- import { FormBuilder, type FormBuilderSectionConfig } from '../../../kit/builder/form/components';
3
+ import { FormBuilder } from '../../../kit/builder/form/components';
4
4
  import { z } from 'zod';
5
5
  import { Button } from '../../../shadcn/ui/button';
6
+ import type { FormBuilderSectionConfig } from '@/kit/builder/form';
6
7
 
7
8
  const meta: Meta<typeof Login> = {
8
9
  title: 'Kit/Components/Login',
@@ -44,7 +45,11 @@ const handleSubmit = async (data: Record<string, unknown>) => {
44
45
  function GoogleIcon() {
45
46
  return (
46
47
  <svg viewBox="0 0 24 24" className="h-4 w-4" aria-hidden>
47
- <path fill="#EA4335" d="M12 10.2v3.9h5.5c-.2 1.3-1.7 3.9-5.5 3.9-3.3 0-6-2.7-6-6s2.7-6 6-6c1.9 0 3.2.8 3.9 1.5l2.7-2.6C16.9 3 14.7 2 12 2 6.9 2 2.7 6.2 2.7 11.3S6.9 20.7 12 20.7c6 0 9.9-4.2 9.9-10.1 0-.7-.1-1.2-.2-1.7H12z" />
48
+ <title>Google</title>
49
+ <path
50
+ fill="#EA4335"
51
+ d="M12 10.2v3.9h5.5c-.2 1.3-1.7 3.9-5.5 3.9-3.3 0-6-2.7-6-6s2.7-6 6-6c1.9 0 3.2.8 3.9 1.5l2.7-2.6C16.9 3 14.7 2 12 2 6.9 2 2.7 6.2 2.7 11.3S6.9 20.7 12 20.7c6 0 9.9-4.2 9.9-10.1 0-.7-.1-1.2-.2-1.7H12z"
52
+ />
48
53
  </svg>
49
54
  );
50
55
  }
@@ -52,6 +57,7 @@ function GoogleIcon() {
52
57
  function MicrosoftIcon() {
53
58
  return (
54
59
  <svg viewBox="0 0 24 24" className="h-4 w-4" aria-hidden>
60
+ <title>Microsoft</title>
55
61
  <path fill="#F25022" d="M11.5 11.5H2.5V2.5h9z" />
56
62
  <path fill="#7FBA00" d="M21.5 11.5h-9V2.5h9z" />
57
63
  <path fill="#00A4EF" d="M11.5 21.5H2.5v-9h9z" />
@@ -18,13 +18,20 @@ type Story = StoryObj<typeof MonthPicker>;
18
18
  export const Basic: Story = {
19
19
  name: 'Basic',
20
20
  render: () => {
21
- const [selected, setSelected] = React.useState<Date | undefined>(new Date());
21
+ const [selected, setSelected] = React.useState<Date | undefined>(
22
+ new Date(),
23
+ );
22
24
 
23
25
  return (
24
26
  <div className="p-6">
25
27
  <div className="mb-4">
26
28
  <div className="text-sm text-muted-foreground">Selected month</div>
27
- <div className="font-medium">{selected?.toLocaleString(undefined, { month: 'long', year: 'numeric' })}</div>
29
+ <div className="font-medium">
30
+ {selected?.toLocaleString(undefined, {
31
+ month: 'long',
32
+ year: 'numeric',
33
+ })}
34
+ </div>
28
35
  </div>
29
36
  <MonthPicker
30
37
  selectedMonth={selected}
@@ -46,7 +53,9 @@ export const Basic: Story = {
46
53
  export const WithConstraints: Story = {
47
54
  name: 'With constraints',
48
55
  render: () => {
49
- const [selected, setSelected] = React.useState<Date | undefined>(new Date());
56
+ const [selected, setSelected] = React.useState<Date | undefined>(
57
+ new Date(),
58
+ );
50
59
 
51
60
  const now = new Date();
52
61
  const minDate = new Date(now.getFullYear(), 2); // Mar this year
@@ -60,7 +69,12 @@ export const WithConstraints: Story = {
60
69
  <div className="p-6 space-y-4">
61
70
  <div>
62
71
  <div className="text-sm text-muted-foreground">Selected month</div>
63
- <div className="font-medium">{selected?.toLocaleString(undefined, { month: 'long', year: 'numeric' })}</div>
72
+ <div className="font-medium">
73
+ {selected?.toLocaleString(undefined, {
74
+ month: 'long',
75
+ year: 'numeric',
76
+ })}
77
+ </div>
64
78
  </div>
65
79
  <MonthPicker
66
80
  selectedMonth={selected}
@@ -69,10 +83,16 @@ export const WithConstraints: Story = {
69
83
  maxDate={maxDate}
70
84
  disabledDates={disabledDates}
71
85
  callbacks={{ yearLabel: (y) => `FY ${y}`, monthLabel: (m) => m.name }}
72
- variant={{ calendar: { main: 'ghost', selected: 'default' }, chevrons: 'outline' }}
86
+ variant={{
87
+ calendar: { main: 'ghost', selected: 'default' },
88
+ chevrons: 'outline',
89
+ }}
73
90
  />
74
91
  <div className="text-xs text-muted-foreground">
75
- Allowed months: {minDate.toLocaleString(undefined, { month: 'short' })} - {maxDate.toLocaleString(undefined, { month: 'short' })} ({minDate.getFullYear()})
92
+ Allowed months:{' '}
93
+ {minDate.toLocaleString(undefined, { month: 'short' })} -{' '}
94
+ {maxDate.toLocaleString(undefined, { month: 'short' })} (
95
+ {minDate.getFullYear()})
76
96
  </div>
77
97
  </div>
78
98
  );
@@ -18,7 +18,9 @@ type Story = StoryObj<typeof MonthRangePicker>;
18
18
  export const Basic: Story = {
19
19
  name: 'Basic',
20
20
  render: () => {
21
- const [range, setRange] = React.useState<{ start: Date; end: Date } | undefined>({
21
+ const [range, setRange] = React.useState<
22
+ { start: Date; end: Date } | undefined
23
+ >({
22
24
  start: new Date(new Date().getFullYear(), 0),
23
25
  end: new Date(new Date().getFullYear(), 11),
24
26
  });
@@ -45,7 +47,9 @@ export const Basic: Story = {
45
47
  export const WithQuickSelectorsAndConstraints: Story = {
46
48
  name: 'With quick selectors + constraints',
47
49
  render: () => {
48
- const [range, setRange] = React.useState<{ start: Date; end: Date } | undefined>();
50
+ const [range, setRange] = React.useState<
51
+ { start: Date; end: Date } | undefined
52
+ >();
49
53
 
50
54
  const now = new Date();
51
55
  const minDate = new Date(now.getFullYear() - 1, 0); // Jan last year
@@ -64,7 +68,10 @@ export const WithQuickSelectorsAndConstraints: Story = {
64
68
  },
65
69
  {
66
70
  label: 'Last 6 months',
67
- startMonth: new Date(now.getFullYear(), Math.max(0, now.getMonth() - 5)),
71
+ startMonth: new Date(
72
+ now.getFullYear(),
73
+ Math.max(0, now.getMonth() - 5),
74
+ ),
68
75
  endMonth: new Date(now.getFullYear(), now.getMonth()),
69
76
  },
70
77
  ];
@@ -87,10 +94,22 @@ export const WithQuickSelectorsAndConstraints: Story = {
87
94
  quickSelectors={customSelectors}
88
95
  showQuickSelectors
89
96
  callbacks={{ yearLabel: (y) => `${y}` }}
90
- variant={{ calendar: { main: 'ghost', selected: 'default' }, chevrons: 'outline' }}
97
+ variant={{
98
+ calendar: { main: 'ghost', selected: 'default' },
99
+ chevrons: 'outline',
100
+ }}
91
101
  />
92
102
  <div className="text-xs text-muted-foreground">
93
- Allowed: {minDate.toLocaleString(undefined, { month: 'short', year: 'numeric' })} → {maxDate.toLocaleString(undefined, { month: 'short', year: 'numeric' })}
103
+ Allowed:{' '}
104
+ {minDate.toLocaleString(undefined, {
105
+ month: 'short',
106
+ year: 'numeric',
107
+ })}{' '}
108
+ →{' '}
109
+ {maxDate.toLocaleString(undefined, {
110
+ month: 'short',
111
+ year: 'numeric',
112
+ })}
94
113
  </div>
95
114
  </div>
96
115
  );
@@ -1,6 +1,6 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
- import * as React from 'react'
3
- import { TimePicker } from '../../../kit/components/timepicker/TimePicker'
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import * as React from 'react';
3
+ import { TimePicker } from '../../../kit/components/timepicker/TimePicker';
4
4
 
5
5
  const meta: Meta<typeof TimePicker> = {
6
6
  title: 'Kit/Components/TimePicker',
@@ -9,11 +9,11 @@ const meta: Meta<typeof TimePicker> = {
9
9
  controls: { expanded: true },
10
10
  backgrounds: { disable: true },
11
11
  },
12
- }
12
+ };
13
13
 
14
- export default meta
14
+ export default meta;
15
15
 
16
- type Story = StoryObj<typeof TimePicker>
16
+ type Story = StoryObj<typeof TimePicker>;
17
17
 
18
18
  export const Basic: Story = {
19
19
  name: 'Basic (HH:mm, 24h)',
@@ -22,19 +22,21 @@ export const Basic: Story = {
22
22
  hourCycle: 24,
23
23
  },
24
24
  render: (args) => {
25
- const [value, setValue] = React.useState<Date | null>(new Date())
25
+ const [value, setValue] = React.useState<Date | null>(new Date());
26
26
 
27
27
  return (
28
28
  <div className="p-6 space-y-4">
29
29
  <div>
30
30
  <div className="text-sm text-muted-foreground">Selected</div>
31
- <div className="font-medium">{value?.toLocaleTimeString?.() ?? '—'}</div>
31
+ <div className="font-medium">
32
+ {value?.toLocaleTimeString?.() ?? '—'}
33
+ </div>
32
34
  </div>
33
35
  <TimePicker {...args} value={value} onChange={setValue} />
34
36
  </div>
35
- )
37
+ );
36
38
  },
37
- }
39
+ };
38
40
 
39
41
  export const HourOnly12h: Story = {
40
42
  name: 'Hour only (12h)',
@@ -43,14 +45,14 @@ export const HourOnly12h: Story = {
43
45
  hourCycle: 12,
44
46
  },
45
47
  render: (args) => {
46
- const [value, setValue] = React.useState<Date | null>(new Date())
48
+ const [value, setValue] = React.useState<Date | null>(new Date());
47
49
  return (
48
50
  <div className="p-6 space-y-4">
49
51
  <TimePicker {...args} value={value} onChange={setValue} />
50
52
  </div>
51
- )
53
+ );
52
54
  },
53
- }
55
+ };
54
56
 
55
57
  export const WithSeconds: Story = {
56
58
  name: 'With seconds (HH:mm:ss, 24h)',
@@ -59,11 +61,11 @@ export const WithSeconds: Story = {
59
61
  hourCycle: 24,
60
62
  },
61
63
  render: (args) => {
62
- const [value, setValue] = React.useState<Date | null>(new Date())
64
+ const [value, setValue] = React.useState<Date | null>(new Date());
63
65
  return (
64
66
  <div className="p-6 space-y-4">
65
67
  <TimePicker {...args} value={value} onChange={setValue} />
66
68
  </div>
67
- )
69
+ );
68
70
  },
69
- }
71
+ };