@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,27 +1,27 @@
1
1
  export type AutocompleteOption<T = unknown> = {
2
- value: string | number
3
- label: string
2
+ value: string | number;
3
+ label: string;
4
4
  /** Optional original object returned by the fetcher/static source */
5
- raw?: T
6
- }
5
+ raw?: T;
6
+ };
7
7
 
8
8
  export type AutocompleteFetchParams = {
9
- search: string
10
- moreFilter?: () => Record<string, string | number | boolean | null>,
11
- cursor?: string | number | null
12
- page: number
13
- pageSize: number
14
- }
9
+ search: string;
10
+ moreFilter?: () => Record<string, string | number | boolean | null>;
11
+ cursor?: string | number | null;
12
+ page: number;
13
+ pageSize: number;
14
+ };
15
15
 
16
16
  export type AutocompleteFetchResult<T = unknown> = {
17
- items: AutocompleteOption<T>[]
18
- nextCursor?: string | number | null
19
- hasMore: boolean
20
- total?: number
21
- }
17
+ items: AutocompleteOption<T>[];
18
+ nextCursor?: string | number | null;
19
+ hasMore: boolean;
20
+ total?: number;
21
+ };
22
22
 
23
23
  export type AutocompleteFetcher<T = unknown> = (
24
24
  params: AutocompleteFetchParams,
25
- ) => Promise<AutocompleteFetchResult<T>>
25
+ ) => Promise<AutocompleteFetchResult<T>>;
26
26
 
27
- export type AutocompleteMode = 'client' | 'server'
27
+ export type AutocompleteMode = 'client' | 'server';
@@ -4,10 +4,15 @@ import * as React from 'react';
4
4
  import { Calendar as CalendarIcon } from 'lucide-react';
5
5
  import { cn } from '../../../shadcn/lib/utils';
6
6
  import { Button } from '../../../shadcn/ui/button';
7
- import { Popover, PopoverContent, PopoverTrigger } from '../../../shadcn/ui/popover';
7
+ import {
8
+ Popover,
9
+ PopoverContent,
10
+ PopoverTrigger,
11
+ } from '../../../shadcn/ui/popover';
8
12
  import { Calendar } from '../../../shadcn/ui/calendar';
9
13
 
10
- export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
14
+ export interface DatePickerProps
15
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
11
16
  value?: Date | null;
12
17
  onChange?: (date: Date | null) => void;
13
18
  placeholder?: string;
@@ -25,11 +30,15 @@ export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
25
30
  }
26
31
 
27
32
  function isBefore(date: Date, min?: Date) {
28
- return !!(min && date < new Date(min.getFullYear(), min.getMonth(), min.getDate()));
33
+ return !!(
34
+ min && date < new Date(min.getFullYear(), min.getMonth(), min.getDate())
35
+ );
29
36
  }
30
37
 
31
38
  function isAfter(date: Date, max?: Date) {
32
- return !!(max && date > new Date(max.getFullYear(), max.getMonth(), max.getDate()));
39
+ return !!(
40
+ max && date > new Date(max.getFullYear(), max.getMonth(), max.getDate())
41
+ );
33
42
  }
34
43
 
35
44
  function startOfDay(d: Date) {
@@ -37,10 +46,17 @@ function startOfDay(d: Date) {
37
46
  }
38
47
 
39
48
  function sameDay(a: Date, b: Date) {
40
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
49
+ return (
50
+ a.getFullYear() === b.getFullYear() &&
51
+ a.getMonth() === b.getMonth() &&
52
+ a.getDate() === b.getDate()
53
+ );
41
54
  }
42
55
 
43
- function inDisabled(date: Date, items?: Array<Date | { from: Date; to: Date }>) {
56
+ function inDisabled(
57
+ date: Date,
58
+ items?: Array<Date | { from: Date; to: Date }>,
59
+ ) {
44
60
  if (!items || items.length === 0) return false;
45
61
  const d = startOfDay(date);
46
62
  for (const it of items) {
@@ -70,7 +86,8 @@ export function DatePicker({
70
86
  }: DatePickerProps) {
71
87
  const [internalOpen, setInternalOpen] = React.useState(false);
72
88
  const isOpen = typeof props.open === 'boolean' ? props.open : internalOpen;
73
- const setOpen = (o: boolean) => props.onOpenChange ? props.onOpenChange(o) : setInternalOpen(o);
89
+ const setOpen = (o: boolean) =>
90
+ props.onOpenChange ? props.onOpenChange(o) : setInternalOpen(o);
74
91
 
75
92
  const isDisabled = (date: Date) => {
76
93
  if (isBefore(date, minDate) || isAfter(date, maxDate)) return true;
@@ -81,7 +98,11 @@ export function DatePicker({
81
98
  const label = value
82
99
  ? format
83
100
  ? format(value)
84
- : value.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })
101
+ : value.toLocaleDateString(undefined, {
102
+ year: 'numeric',
103
+ month: 'short',
104
+ day: '2-digit',
105
+ })
85
106
  : placeholder;
86
107
 
87
108
  return (
@@ -92,7 +113,10 @@ export function DatePicker({
92
113
  type="button"
93
114
  disabled={disabled}
94
115
  variant={buttonVariant}
95
- className={cn('w-[240px] justify-start text-left font-normal', !value && 'text-muted-foreground')}
116
+ className={cn(
117
+ 'w-[240px] justify-start text-left font-normal',
118
+ !value && 'text-muted-foreground',
119
+ )}
96
120
  >
97
121
  <CalendarIcon className="mr-2 h-4 w-4" />
98
122
  {label}
@@ -4,11 +4,16 @@ import * as React from 'react';
4
4
  import { Calendar as CalendarIcon } from 'lucide-react';
5
5
  import { cn } from '../../../shadcn/lib/utils';
6
6
  import { Button } from '../../../shadcn/ui/button';
7
- import { Popover, PopoverContent, PopoverTrigger } from '../../../shadcn/ui/popover';
7
+ import {
8
+ Popover,
9
+ PopoverContent,
10
+ PopoverTrigger,
11
+ } from '../../../shadcn/ui/popover';
8
12
  import { Calendar } from '../../../shadcn/ui/calendar';
9
13
  import type { DateRange } from 'react-day-picker';
10
14
 
11
- export interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
15
+ export interface DateRangePickerProps
16
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
12
17
  value?: DateRange | null;
13
18
  onChange?: (range: DateRange | null) => void;
14
19
  placeholder?: string;
@@ -35,22 +40,33 @@ export interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivE
35
40
  }
36
41
 
37
42
  function sameDay(a: Date, b: Date) {
38
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
43
+ return (
44
+ a.getFullYear() === b.getFullYear() &&
45
+ a.getMonth() === b.getMonth() &&
46
+ a.getDate() === b.getDate()
47
+ );
39
48
  }
40
49
 
41
50
  function isBefore(date: Date, min?: Date) {
42
- return !!(min && date < new Date(min.getFullYear(), min.getMonth(), min.getDate()));
51
+ return !!(
52
+ min && date < new Date(min.getFullYear(), min.getMonth(), min.getDate())
53
+ );
43
54
  }
44
55
 
45
56
  function isAfter(date: Date, max?: Date) {
46
- return !!(max && date > new Date(max.getFullYear(), max.getMonth(), max.getDate()));
57
+ return !!(
58
+ max && date > new Date(max.getFullYear(), max.getMonth(), max.getDate())
59
+ );
47
60
  }
48
61
 
49
62
  function startOfDay(d: Date) {
50
63
  return new Date(d.getFullYear(), d.getMonth(), d.getDate());
51
64
  }
52
65
 
53
- function inDisabled(date: Date, items?: Array<Date | { from: Date; to: Date }>) {
66
+ function inDisabled(
67
+ date: Date,
68
+ items?: Array<Date | { from: Date; to: Date }>,
69
+ ) {
54
70
  if (!items || items.length === 0) return false;
55
71
  const d = startOfDay(date);
56
72
  for (const it of items) {
@@ -68,7 +84,7 @@ function inDisabled(date: Date, items?: Array<Date | { from: Date; to: Date }>)
68
84
  function rangeContainsDisabled(
69
85
  from?: Date,
70
86
  to?: Date,
71
- items?: Array<Date | { from: Date; to: Date }>
87
+ items?: Array<Date | { from: Date; to: Date }>,
72
88
  ) {
73
89
  if (!from || !to) return false;
74
90
  if (!items || items.length === 0) return false;
@@ -100,7 +116,8 @@ export function DateRangePicker({
100
116
  }: DateRangePickerProps) {
101
117
  const [internalOpen, setInternalOpen] = React.useState(false);
102
118
  const isOpen = typeof props.open === 'boolean' ? props.open : internalOpen;
103
- const setOpen = (o: boolean) => (props.onOpenChange ? props.onOpenChange(o) : setInternalOpen(o));
119
+ const setOpen = (o: boolean) =>
120
+ props.onOpenChange ? props.onOpenChange(o) : setInternalOpen(o);
104
121
 
105
122
  const isDisabled = (date: Date) => {
106
123
  if (isBefore(date, minDate) || isAfter(date, maxDate)) return true;
@@ -112,8 +129,8 @@ export function DateRangePicker({
112
129
  ? format
113
130
  ? format(value.from, value.to)
114
131
  : value.to
115
- ? `${value.from.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })} \t– ${value.to.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })}`
116
- : `${value.from.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })} \t– …`
132
+ ? `${value.from.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })} \t– ${value.to.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })}`
133
+ : `${value.from.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: '2-digit' })} \t– …`
117
134
  : placeholder;
118
135
 
119
136
  // Draft (apply mode) — selection applies when clicking Update
@@ -146,7 +163,8 @@ export function DateRangePicker({
146
163
  const parts: string[] = [];
147
164
  const dd = digits.slice(0, Math.min(2, digits.length));
148
165
  if (dd) parts.push(dd);
149
- const mm = digits.length > 2 ? digits.slice(2, Math.min(4, digits.length)) : '';
166
+ const mm =
167
+ digits.length > 2 ? digits.slice(2, Math.min(4, digits.length)) : '';
150
168
  if (mm) parts.push(mm);
151
169
  const yyyy = digits.length > 4 ? digits.slice(4) : '';
152
170
  if (yyyy) parts.push(yyyy);
@@ -164,8 +182,18 @@ export function DateRangePicker({
164
182
  if (dd < 1 || dd > lastDay) return undefined;
165
183
  const out = new Date(yyyy, mm - 1, dd);
166
184
  // bounds and disabled validation
167
- if (minDate && out < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return undefined;
168
- if (maxDate && out > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return undefined;
185
+ if (
186
+ minDate &&
187
+ out <
188
+ new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())
189
+ )
190
+ return undefined;
191
+ if (
192
+ maxDate &&
193
+ out >
194
+ new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())
195
+ )
196
+ return undefined;
169
197
  if (inDisabled(out, disabledDates)) return undefined;
170
198
  return out;
171
199
  };
@@ -196,23 +224,28 @@ export function DateRangePicker({
196
224
  const applyFromInput = () => {
197
225
  setFromTouched(true);
198
226
  if (!fromParsed) return;
199
- setDraft((prev) => ({ from: fromParsed, to: prev?.to } as DateRange));
227
+ setDraft((prev) => ({ from: fromParsed, to: prev?.to }) as DateRange);
200
228
  };
201
229
  const applyToInput = () => {
202
230
  setToTouched(true);
203
231
  if (!toParsed) return;
204
- setDraft((prev) => ({ from: prev?.from, to: toParsed } as DateRange));
232
+ setDraft((prev) => ({ from: prev?.from, to: toParsed }) as DateRange);
205
233
  };
206
234
 
207
235
  // If current draft is invalid (e.g., starts on a disabled day), hide it from the calendar selection
208
236
  const draftInvalidForSelection =
209
237
  (!!draft?.from && isDisabled(draft.from)) ||
210
238
  (!!draft?.to && isDisabled(draft.to)) ||
211
- (!!draft?.from && !!draft?.to && rangeContainsDisabled(draft.from, draft.to, disabledDates));
212
- const selectedRange = draftInvalidForSelection ? undefined : draft ?? undefined;
239
+ (!!draft?.from &&
240
+ !!draft?.to &&
241
+ rangeContainsDisabled(draft.from, draft.to, disabledDates));
242
+ const selectedRange = draftInvalidForSelection
243
+ ? undefined
244
+ : (draft ?? undefined);
213
245
 
214
246
  // Helpers for presets
215
- const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
247
+ const startOfDay = (d: Date) =>
248
+ new Date(d.getFullYear(), d.getMonth(), d.getDate());
216
249
  const startOfWeek = (d: Date) => {
217
250
  const s = startOfDay(d);
218
251
  return new Date(s.getFullYear(), s.getMonth(), s.getDate() - s.getDay()); // Sunday start
@@ -228,80 +261,93 @@ export function DateRangePicker({
228
261
  return out;
229
262
  };
230
263
  const defaultPresets: Array<{ label: string; getRange: () => DateRange }> = [
231
- { label: 'Today', getRange: () => { const t = startOfDay(new Date()); return { from: clamp(t), to: clamp(t) }; } },
232
- { label: 'Yesterday', getRange: () => { const t = startOfDay(new Date()); const y = new Date(t); y.setDate(t.getDate() - 1); return { from: clamp(y), to: clamp(y) }; } },
233
- {
234
- label: 'Last 7 days',
235
- getRange: () => {
236
- const end = startOfDay(new Date());
237
- const start = new Date(end);
238
- start.setDate(end.getDate() - 6);
239
- return { from: clamp(start), to: clamp(end) };
240
- },
264
+ {
265
+ label: 'Today',
266
+ getRange: () => {
267
+ const t = startOfDay(new Date());
268
+ return { from: clamp(t), to: clamp(t) };
269
+ },
270
+ },
271
+ {
272
+ label: 'Yesterday',
273
+ getRange: () => {
274
+ const t = startOfDay(new Date());
275
+ const y = new Date(t);
276
+ y.setDate(t.getDate() - 1);
277
+ return { from: clamp(y), to: clamp(y) };
278
+ },
279
+ },
280
+ {
281
+ label: 'Last 7 days',
282
+ getRange: () => {
283
+ const end = startOfDay(new Date());
284
+ const start = new Date(end);
285
+ start.setDate(end.getDate() - 6);
286
+ return { from: clamp(start), to: clamp(end) };
241
287
  },
242
- {
243
- label: 'Last 14 days',
244
- getRange: () => {
245
- const end = startOfDay(new Date());
246
- const start = new Date(end);
247
- start.setDate(end.getDate() - 13);
248
- return { from: clamp(start), to: clamp(end) };
249
- },
288
+ },
289
+ {
290
+ label: 'Last 14 days',
291
+ getRange: () => {
292
+ const end = startOfDay(new Date());
293
+ const start = new Date(end);
294
+ start.setDate(end.getDate() - 13);
295
+ return { from: clamp(start), to: clamp(end) };
250
296
  },
251
- {
252
- label: 'Last 30 days',
253
- getRange: () => {
254
- const end = startOfDay(new Date());
255
- const start = new Date(end);
256
- start.setDate(end.getDate() - 29);
257
- return { from: clamp(start), to: clamp(end) };
258
- },
297
+ },
298
+ {
299
+ label: 'Last 30 days',
300
+ getRange: () => {
301
+ const end = startOfDay(new Date());
302
+ const start = new Date(end);
303
+ start.setDate(end.getDate() - 29);
304
+ return { from: clamp(start), to: clamp(end) };
259
305
  },
260
- {
261
- label: 'This Week',
262
- getRange: () => {
263
- const now = new Date();
264
- return { from: clamp(startOfWeek(now)), to: clamp(endOfWeek(now)) };
265
- },
306
+ },
307
+ {
308
+ label: 'This Week',
309
+ getRange: () => {
310
+ const now = new Date();
311
+ return { from: clamp(startOfWeek(now)), to: clamp(endOfWeek(now)) };
266
312
  },
267
- {
268
- label: 'Last Week',
269
- getRange: () => {
270
- const now = new Date();
271
- const last = new Date(now);
272
- last.setDate(now.getDate() - 7);
273
- return { from: clamp(startOfWeek(last)), to: clamp(endOfWeek(last)) };
274
- },
313
+ },
314
+ {
315
+ label: 'Last Week',
316
+ getRange: () => {
317
+ const now = new Date();
318
+ const last = new Date(now);
319
+ last.setDate(now.getDate() - 7);
320
+ return { from: clamp(startOfWeek(last)), to: clamp(endOfWeek(last)) };
275
321
  },
276
- {
277
- label: 'This Month',
278
- getRange: () => {
279
- const now = new Date();
280
- const from = new Date(now.getFullYear(), now.getMonth(), 1);
281
- const to = new Date(now.getFullYear(), now.getMonth() + 1, 0);
282
- return { from: clamp(from), to: clamp(to) };
283
- },
322
+ },
323
+ {
324
+ label: 'This Month',
325
+ getRange: () => {
326
+ const now = new Date();
327
+ const from = new Date(now.getFullYear(), now.getMonth(), 1);
328
+ const to = new Date(now.getFullYear(), now.getMonth() + 1, 0);
329
+ return { from: clamp(from), to: clamp(to) };
284
330
  },
285
- {
286
- label: 'Last Month',
287
- getRange: () => {
288
- const now = new Date();
289
- const from = new Date(now.getFullYear(), now.getMonth() - 1, 1);
290
- const to = new Date(now.getFullYear(), now.getMonth(), 0);
291
- return { from: clamp(from), to: clamp(to) };
292
- },
331
+ },
332
+ {
333
+ label: 'Last Month',
334
+ getRange: () => {
335
+ const now = new Date();
336
+ const from = new Date(now.getFullYear(), now.getMonth() - 1, 1);
337
+ const to = new Date(now.getFullYear(), now.getMonth(), 0);
338
+ return { from: clamp(from), to: clamp(to) };
293
339
  },
294
- ];
340
+ },
341
+ ];
295
342
  const presets: Array<{ label: string; getRange: () => DateRange }> = (
296
- props.presets ?? props.quickSelectors ?? defaultPresets
343
+ props.presets ??
344
+ props.quickSelectors ??
345
+ defaultPresets
297
346
  ).filter(Boolean);
298
347
 
299
348
  const eqRange = (a?: DateRange | null, b?: DateRange | null) => {
300
349
  if (!a?.from || !a?.to || !b?.from || !b?.to) return false;
301
- return (
302
- sameDay(a.from, b.from) &&
303
- sameDay(a.to, b.to)
304
- );
350
+ return sameDay(a.from, b.from) && sameDay(a.to, b.to);
305
351
  };
306
352
 
307
353
  return (
@@ -312,13 +358,21 @@ export function DateRangePicker({
312
358
  type="button"
313
359
  disabled={disabled}
314
360
  variant={buttonVariant}
315
- className={cn('w-[280px] justify-start text-left font-normal', !value?.from && 'text-muted-foreground')}
361
+ className={cn(
362
+ 'w-[280px] justify-start text-left font-normal',
363
+ !value?.from && 'text-muted-foreground',
364
+ )}
316
365
  >
317
366
  <CalendarIcon className="mr-2 h-4 w-4" />
318
367
  {label}
319
368
  </Button>
320
369
  </PopoverTrigger>
321
- <PopoverContent className="w-auto p-4" align="start" side={props.popoverSide ?? 'bottom'} sideOffset={8}>
370
+ <PopoverContent
371
+ className="w-auto p-4"
372
+ align="start"
373
+ side={props.popoverSide ?? 'bottom'}
374
+ sideOffset={8}
375
+ >
322
376
  <div className="flex gap-6 min-w-[900px]">
323
377
  <div className="flex-1 pr-2">
324
378
  {/* Inputs */}
@@ -332,7 +386,9 @@ export function DateRangePicker({
332
386
  placeholder="dd/mm/yyyy"
333
387
  className={cn(
334
388
  'h-9 w-40 rounded-md border bg-background px-3 text-sm shadow-xs outline-hidden',
335
- fromInvalid ? 'border-destructive ring-1 ring-destructive/50' : 'border-input'
389
+ fromInvalid
390
+ ? 'border-destructive ring-1 ring-destructive/50'
391
+ : 'border-input',
336
392
  )}
337
393
  />
338
394
  <span className="text-muted-foreground">–</span>
@@ -345,7 +401,9 @@ export function DateRangePicker({
345
401
  placeholder="dd/mm/yyyy"
346
402
  className={cn(
347
403
  'h-9 w-40 rounded-md border bg-background px-3 text-sm shadow-xs outline-hidden',
348
- toInvalid ? 'border-destructive ring-1 ring-destructive/50' : 'border-input'
404
+ toInvalid
405
+ ? 'border-destructive ring-1 ring-destructive/50'
406
+ : 'border-input',
349
407
  )}
350
408
  />
351
409
  </div>
@@ -371,7 +429,11 @@ export function DateRangePicker({
371
429
  return;
372
430
  }
373
431
  // If the selected span contains any disabled date, reset selection
374
- if (from && to && rangeContainsDisabled(from, to, disabledDates)) {
432
+ if (
433
+ from &&
434
+ to &&
435
+ rangeContainsDisabled(from, to, disabledDates)
436
+ ) {
375
437
  setDraft(null);
376
438
  setFromTouched(true);
377
439
  setToTouched(true);
@@ -407,7 +469,10 @@ export function DateRangePicker({
407
469
  className="justify-between w-full"
408
470
  onClick={() => {
409
471
  // Ignore presets that include disabled dates
410
- if (rangeContainsDisabled(pr.from, pr.to, disabledDates)) return;
472
+ if (
473
+ rangeContainsDisabled(pr.from, pr.to, disabledDates)
474
+ )
475
+ return;
411
476
  setDraft(pr);
412
477
  setFromTouched(false);
413
478
  setToTouched(false);
@@ -426,7 +491,14 @@ export function DateRangePicker({
426
491
  </div>
427
492
  {(props.showFooter ?? true) && (
428
493
  <div className="flex items-center justify-end gap-2 pt-3 mt-3 border-t">
429
- <Button type="button" variant="ghost" onClick={() => { setDraft(value ?? null); setOpen(false); }}>
494
+ <Button
495
+ type="button"
496
+ variant="ghost"
497
+ onClick={() => {
498
+ setDraft(value ?? null);
499
+ setOpen(false);
500
+ }}
501
+ >
430
502
  {props.cancelLabel ?? 'Cancel'}
431
503
  </Button>
432
504
  <Button