@k3-universe/react-kit 0.0.28 → 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 (831) 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 +2786 -1410
  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.map +1 -1
  26. package/dist/kit/builder/data-table/components/DataTableColumnHeader.d.ts +2 -2
  27. package/dist/kit/builder/data-table/components/DataTableColumnHeader.d.ts.map +1 -1
  28. package/dist/kit/builder/data-table/components/DataTablePagination.d.ts +1 -1
  29. package/dist/kit/builder/data-table/components/DataTablePagination.d.ts.map +1 -1
  30. package/dist/kit/builder/data-table/components/DataTableViewOptions.d.ts +1 -1
  31. package/dist/kit/builder/data-table/components/DataTableViewOptions.d.ts.map +1 -1
  32. package/dist/kit/builder/data-table/types.d.ts.map +1 -1
  33. package/dist/kit/builder/dialog/index.d.ts +1 -1
  34. package/dist/kit/builder/dialog/index.d.ts.map +1 -1
  35. package/dist/kit/builder/dialog/provider.d.ts +0 -1
  36. package/dist/kit/builder/dialog/provider.d.ts.map +1 -1
  37. package/dist/kit/builder/form/components/FormBuilder.d.ts.map +1 -1
  38. package/dist/kit/builder/form/components/FormBuilderActions.d.ts.map +1 -1
  39. package/dist/kit/builder/form/components/FormBuilderContext.d.ts.map +1 -1
  40. package/dist/kit/builder/form/components/FormBuilderField.d.ts +1 -1
  41. package/dist/kit/builder/form/components/FormBuilderField.d.ts.map +1 -1
  42. package/dist/kit/builder/form/components/fields/ArrayField.d.ts +1 -1
  43. package/dist/kit/builder/form/components/fields/ArrayField.d.ts.map +1 -1
  44. package/dist/kit/builder/form/components/fields/AutocompleteField.d.ts +1 -1
  45. package/dist/kit/builder/form/components/fields/AutocompleteField.d.ts.map +1 -1
  46. package/dist/kit/builder/form/components/fields/CheckboxField.d.ts +1 -1
  47. package/dist/kit/builder/form/components/fields/CheckboxField.d.ts.map +1 -1
  48. package/dist/kit/builder/form/components/fields/DateField.d.ts +1 -1
  49. package/dist/kit/builder/form/components/fields/DateField.d.ts.map +1 -1
  50. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts +1 -1
  51. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts.map +1 -1
  52. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts +1 -1
  53. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts.map +1 -1
  54. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts +1 -1
  55. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts.map +1 -1
  56. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts +1 -1
  57. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts.map +1 -1
  58. package/dist/kit/builder/form/components/fields/FileField.d.ts +1 -1
  59. package/dist/kit/builder/form/components/fields/FileField.d.ts.map +1 -1
  60. package/dist/kit/builder/form/components/fields/MonthPickerField.d.ts +1 -1
  61. package/dist/kit/builder/form/components/fields/MonthPickerField.d.ts.map +1 -1
  62. package/dist/kit/builder/form/components/fields/MonthRangePickerField.d.ts +1 -1
  63. package/dist/kit/builder/form/components/fields/MonthRangePickerField.d.ts.map +1 -1
  64. package/dist/kit/builder/form/components/fields/NumberField.d.ts +1 -1
  65. package/dist/kit/builder/form/components/fields/NumberField.d.ts.map +1 -1
  66. package/dist/kit/builder/form/components/fields/ObjectField.d.ts.map +1 -1
  67. package/dist/kit/builder/form/components/fields/RadioField.d.ts +1 -1
  68. package/dist/kit/builder/form/components/fields/RadioField.d.ts.map +1 -1
  69. package/dist/kit/builder/form/components/fields/SelectField.d.ts +1 -1
  70. package/dist/kit/builder/form/components/fields/SelectField.d.ts.map +1 -1
  71. package/dist/kit/builder/form/components/fields/SwitchField.d.ts +1 -1
  72. package/dist/kit/builder/form/components/fields/SwitchField.d.ts.map +1 -1
  73. package/dist/kit/builder/form/components/fields/TextField.d.ts +1 -1
  74. package/dist/kit/builder/form/components/fields/TextField.d.ts.map +1 -1
  75. package/dist/kit/builder/form/components/fields/TextareaField.d.ts +1 -1
  76. package/dist/kit/builder/form/components/fields/TextareaField.d.ts.map +1 -1
  77. package/dist/kit/builder/form/components/fields/TimePickerField.d.ts +1 -1
  78. package/dist/kit/builder/form/components/fields/TimePickerField.d.ts.map +1 -1
  79. package/dist/kit/builder/form/components/fields/TimeRangePickerField.d.ts +1 -1
  80. package/dist/kit/builder/form/components/fields/TimeRangePickerField.d.ts.map +1 -1
  81. package/dist/kit/builder/form/components/fields/index.d.ts.map +1 -1
  82. package/dist/kit/builder/form/components/fields/types.d.ts.map +1 -1
  83. package/dist/kit/builder/form/components/sectionNodes.d.ts.map +1 -1
  84. package/dist/kit/builder/form/hooks/useFormBuilder.d.ts.map +1 -1
  85. package/dist/kit/builder/form/types.d.ts.map +1 -1
  86. package/dist/kit/builder/form/utils/section-factories.d.ts.map +1 -1
  87. package/dist/kit/builder/page/Page.d.ts.map +1 -1
  88. package/dist/kit/builder/page/index.d.ts.map +1 -1
  89. package/dist/kit/builder/section/SectionBuilder.d.ts +1 -1
  90. package/dist/kit/builder/section/SectionBuilder.d.ts.map +1 -1
  91. package/dist/kit/builder/section/SectionContainer.d.ts +14 -0
  92. package/dist/kit/builder/section/SectionContainer.d.ts.map +1 -0
  93. package/dist/kit/builder/stack-dialog/context.d.ts.map +1 -1
  94. package/dist/kit/builder/stack-dialog/hooks.d.ts.map +1 -1
  95. package/dist/kit/builder/stack-dialog/index.d.ts +3 -3
  96. package/dist/kit/builder/stack-dialog/index.d.ts.map +1 -1
  97. package/dist/kit/builder/stack-dialog/provider.d.ts.map +1 -1
  98. package/dist/kit/builder/stack-dialog/renderer.d.ts.map +1 -1
  99. package/dist/kit/builder/stack-dialog/types.d.ts +1 -1
  100. package/dist/kit/builder/stack-dialog/types.d.ts.map +1 -1
  101. package/dist/kit/components/autocomplete/Autocomplete.d.ts +1 -1
  102. package/dist/kit/components/autocomplete/Autocomplete.d.ts.map +1 -1
  103. package/dist/kit/components/autocomplete/types.d.ts.map +1 -1
  104. package/dist/kit/components/datepicker/DatePicker.d.ts.map +1 -1
  105. package/dist/kit/components/datepicker/DateRangePicker.d.ts.map +1 -1
  106. package/dist/kit/components/datetimepicker/DateTimePicker.d.ts.map +1 -1
  107. package/dist/kit/components/datetimepicker/DateTimeRangePicker.d.ts.map +1 -1
  108. package/dist/kit/components/datetimepicker/index.d.ts.map +1 -1
  109. package/dist/kit/components/fileuploader/FileUploader.d.ts.map +1 -1
  110. package/dist/kit/components/fileuploader/types.d.ts +2 -2
  111. package/dist/kit/components/forminfo/FormInfoError.d.ts.map +1 -1
  112. package/dist/kit/components/login/Login.d.ts +1 -1
  113. package/dist/kit/components/login/Login.d.ts.map +1 -1
  114. package/dist/kit/components/monthpicker/MonthInput.d.ts.map +1 -1
  115. package/dist/kit/components/monthpicker/MonthPicker.d.ts.map +1 -1
  116. package/dist/kit/components/monthpicker/MonthRangeInput.d.ts.map +1 -1
  117. package/dist/kit/components/monthpicker/MonthRangePicker.d.ts.map +1 -1
  118. package/dist/kit/components/timepicker/TimePicker.d.ts.map +1 -1
  119. package/dist/kit/components/timepicker/TimeRangePicker.d.ts.map +1 -1
  120. package/dist/kit/components/timepicker/index.d.ts.map +1 -1
  121. package/dist/kit/layouts/admin/components/AdminLayout.d.ts.map +1 -1
  122. package/dist/kit/layouts/admin/components/ThemeToggle.d.ts.map +1 -1
  123. package/dist/kit/layouts/admin/hooks/menu.d.ts.map +1 -1
  124. package/dist/kit/layouts/admin/providers/AdminMenuProvider.d.ts +1 -1
  125. package/dist/kit/layouts/admin/providers/AdminMenuProvider.d.ts.map +1 -1
  126. package/dist/kit/themes/base.css +1 -1
  127. package/dist/kit/themes/clean-slate.css +5 -5
  128. package/dist/kit/themes/default.css +5 -5
  129. package/dist/kit/themes/minimal-modern.css +5 -5
  130. package/dist/kit/themes/spotify.css +5 -5
  131. package/dist/shadcn/hooks/use-mobile.d.ts.map +1 -1
  132. package/dist/shadcn/ui/accordion.d.ts +2 -2
  133. package/dist/shadcn/ui/accordion.d.ts.map +1 -1
  134. package/dist/shadcn/ui/alert-dialog.d.ts +4 -4
  135. package/dist/shadcn/ui/alert-dialog.d.ts.map +1 -1
  136. package/dist/shadcn/ui/alert.d.ts +4 -4
  137. package/dist/shadcn/ui/alert.d.ts.map +1 -1
  138. package/dist/shadcn/ui/aspect-ratio.d.ts +1 -1
  139. package/dist/shadcn/ui/aspect-ratio.d.ts.map +1 -1
  140. package/dist/shadcn/ui/avatar.d.ts +2 -2
  141. package/dist/shadcn/ui/avatar.d.ts.map +1 -1
  142. package/dist/shadcn/ui/badge.d.ts +2 -2
  143. package/dist/shadcn/ui/badge.d.ts.map +1 -1
  144. package/dist/shadcn/ui/breadcrumb.d.ts +8 -8
  145. package/dist/shadcn/ui/breadcrumb.d.ts.map +1 -1
  146. package/dist/shadcn/ui/button.d.ts +2 -2
  147. package/dist/shadcn/ui/button.d.ts.map +1 -1
  148. package/dist/shadcn/ui/calendar.d.ts +2 -2
  149. package/dist/shadcn/ui/calendar.d.ts.map +1 -1
  150. package/dist/shadcn/ui/card.d.ts +8 -8
  151. package/dist/shadcn/ui/card.d.ts.map +1 -1
  152. package/dist/shadcn/ui/carousel.d.ts +5 -5
  153. package/dist/shadcn/ui/carousel.d.ts.map +1 -1
  154. package/dist/shadcn/ui/chart.d.ts +7 -7
  155. package/dist/shadcn/ui/chart.d.ts.map +1 -1
  156. package/dist/shadcn/ui/checkbox.d.ts +2 -2
  157. package/dist/shadcn/ui/checkbox.d.ts.map +1 -1
  158. package/dist/shadcn/ui/collapsible.d.ts +1 -1
  159. package/dist/shadcn/ui/collapsible.d.ts.map +1 -1
  160. package/dist/shadcn/ui/command.d.ts +2 -2
  161. package/dist/shadcn/ui/command.d.ts.map +1 -1
  162. package/dist/shadcn/ui/context-menu.d.ts +4 -4
  163. package/dist/shadcn/ui/context-menu.d.ts.map +1 -1
  164. package/dist/shadcn/ui/dialog.d.ts +4 -4
  165. package/dist/shadcn/ui/dialog.d.ts.map +1 -1
  166. package/dist/shadcn/ui/drawer.d.ts +3 -3
  167. package/dist/shadcn/ui/drawer.d.ts.map +1 -1
  168. package/dist/shadcn/ui/dropdown-menu.d.ts +4 -4
  169. package/dist/shadcn/ui/dropdown-menu.d.ts.map +1 -1
  170. package/dist/shadcn/ui/form.d.ts +5 -5
  171. package/dist/shadcn/ui/form.d.ts.map +1 -1
  172. package/dist/shadcn/ui/hover-card.d.ts +2 -2
  173. package/dist/shadcn/ui/hover-card.d.ts.map +1 -1
  174. package/dist/shadcn/ui/input-otp.d.ts +4 -4
  175. package/dist/shadcn/ui/input-otp.d.ts.map +1 -1
  176. package/dist/shadcn/ui/input.d.ts +2 -2
  177. package/dist/shadcn/ui/input.d.ts.map +1 -1
  178. package/dist/shadcn/ui/label.d.ts +2 -2
  179. package/dist/shadcn/ui/label.d.ts.map +1 -1
  180. package/dist/shadcn/ui/menubar.d.ts +4 -4
  181. package/dist/shadcn/ui/menubar.d.ts.map +1 -1
  182. package/dist/shadcn/ui/navigation-menu.d.ts +2 -2
  183. package/dist/shadcn/ui/navigation-menu.d.ts.map +1 -1
  184. package/dist/shadcn/ui/pagination.d.ts +6 -6
  185. package/dist/shadcn/ui/pagination.d.ts.map +1 -1
  186. package/dist/shadcn/ui/popover.d.ts +2 -2
  187. package/dist/shadcn/ui/popover.d.ts.map +1 -1
  188. package/dist/shadcn/ui/progress.d.ts +2 -2
  189. package/dist/shadcn/ui/progress.d.ts.map +1 -1
  190. package/dist/shadcn/ui/radio-group.d.ts +2 -2
  191. package/dist/shadcn/ui/radio-group.d.ts.map +1 -1
  192. package/dist/shadcn/ui/resizable.d.ts +2 -2
  193. package/dist/shadcn/ui/resizable.d.ts.map +1 -1
  194. package/dist/shadcn/ui/scroll-area.d.ts +2 -2
  195. package/dist/shadcn/ui/scroll-area.d.ts.map +1 -1
  196. package/dist/shadcn/ui/select.d.ts +3 -3
  197. package/dist/shadcn/ui/select.d.ts.map +1 -1
  198. package/dist/shadcn/ui/separator.d.ts +2 -2
  199. package/dist/shadcn/ui/separator.d.ts.map +1 -1
  200. package/dist/shadcn/ui/sheet.d.ts +5 -5
  201. package/dist/shadcn/ui/sheet.d.ts.map +1 -1
  202. package/dist/shadcn/ui/sidebar.d.ts +26 -26
  203. package/dist/shadcn/ui/sidebar.d.ts.map +1 -1
  204. package/dist/shadcn/ui/skeleton.d.ts +1 -1
  205. package/dist/shadcn/ui/skeleton.d.ts.map +1 -1
  206. package/dist/shadcn/ui/slider.d.ts +2 -2
  207. package/dist/shadcn/ui/slider.d.ts.map +1 -1
  208. package/dist/shadcn/ui/sonner.d.ts.map +1 -1
  209. package/dist/shadcn/ui/switch.d.ts +2 -2
  210. package/dist/shadcn/ui/switch.d.ts.map +1 -1
  211. package/dist/shadcn/ui/table.d.ts +9 -9
  212. package/dist/shadcn/ui/table.d.ts.map +1 -1
  213. package/dist/shadcn/ui/tabs.d.ts +2 -2
  214. package/dist/shadcn/ui/tabs.d.ts.map +1 -1
  215. package/dist/shadcn/ui/textarea.d.ts +2 -2
  216. package/dist/shadcn/ui/textarea.d.ts.map +1 -1
  217. package/dist/shadcn/ui/toggle-group.d.ts +2 -2
  218. package/dist/shadcn/ui/toggle-group.d.ts.map +1 -1
  219. package/dist/shadcn/ui/toggle.d.ts +2 -2
  220. package/dist/shadcn/ui/toggle.d.ts.map +1 -1
  221. package/dist/shadcn/ui/tooltip.d.ts +2 -2
  222. package/dist/shadcn/ui/tooltip.d.ts.map +1 -1
  223. package/package.json +2 -2
  224. package/src/index.ts +1 -1
  225. package/src/kit/builder/auth/AuthProvider.tsx +131 -0
  226. package/src/kit/builder/auth/adapter.ts +436 -0
  227. package/src/kit/builder/auth/client-adapters.ts +398 -0
  228. package/src/kit/builder/auth/components.tsx +221 -0
  229. package/src/kit/builder/auth/hooks.ts +237 -0
  230. package/src/kit/builder/auth/index.ts +134 -0
  231. package/src/kit/builder/auth/permission-checker.ts +150 -0
  232. package/src/kit/builder/auth/storage.ts +366 -0
  233. package/src/kit/builder/auth/token-manager.ts +55 -0
  234. package/src/kit/builder/auth/types.ts +393 -0
  235. package/src/kit/builder/data-table/components/DataTable.tsx +214 -82
  236. package/src/kit/builder/data-table/components/DataTableColumnHeader.tsx +9 -5
  237. package/src/kit/builder/data-table/components/DataTablePagination.tsx +19 -5
  238. package/src/kit/builder/data-table/components/DataTableViewOptions.tsx +13 -4
  239. package/src/kit/builder/data-table/types.ts +18 -3
  240. package/src/kit/builder/dialog/index.ts +5 -1
  241. package/src/kit/builder/dialog/provider.tsx +56 -27
  242. package/src/kit/builder/form/components/FormBuilder.tsx +10 -14
  243. package/src/kit/builder/form/components/FormBuilderActions.tsx +1 -1
  244. package/src/kit/builder/form/components/FormBuilderContext.tsx +13 -6
  245. package/src/kit/builder/form/components/FormBuilderField.tsx +70 -20
  246. package/src/kit/builder/form/components/fields/ArrayField.tsx +148 -62
  247. package/src/kit/builder/form/components/fields/AutocompleteField.tsx +53 -18
  248. package/src/kit/builder/form/components/fields/CheckboxField.tsx +20 -11
  249. package/src/kit/builder/form/components/fields/DateField.tsx +17 -6
  250. package/src/kit/builder/form/components/fields/DatePickerField.tsx +15 -10
  251. package/src/kit/builder/form/components/fields/DateRangePickerField.tsx +20 -15
  252. package/src/kit/builder/form/components/fields/DateTimePickerField.tsx +16 -11
  253. package/src/kit/builder/form/components/fields/DateTimeRangePickerField.tsx +23 -17
  254. package/src/kit/builder/form/components/fields/FileField.tsx +10 -5
  255. package/src/kit/builder/form/components/fields/MonthPickerField.tsx +18 -11
  256. package/src/kit/builder/form/components/fields/MonthRangePickerField.tsx +23 -17
  257. package/src/kit/builder/form/components/fields/NumberField.tsx +9 -4
  258. package/src/kit/builder/form/components/fields/ObjectField.tsx +12 -7
  259. package/src/kit/builder/form/components/fields/RadioField.tsx +32 -14
  260. package/src/kit/builder/form/components/fields/SelectField.tsx +26 -11
  261. package/src/kit/builder/form/components/fields/SwitchField.tsx +20 -11
  262. package/src/kit/builder/form/components/fields/TextField.tsx +11 -5
  263. package/src/kit/builder/form/components/fields/TextareaField.tsx +9 -4
  264. package/src/kit/builder/form/components/fields/TimePickerField.tsx +16 -11
  265. package/src/kit/builder/form/components/fields/TimeRangePickerField.tsx +23 -17
  266. package/src/kit/builder/form/components/fields/index.ts +21 -21
  267. package/src/kit/builder/form/components/fields/types.ts +15 -11
  268. package/src/kit/builder/form/components/sectionNodes.tsx +63 -40
  269. package/src/kit/builder/form/hooks/useFormBuilder.ts +83 -34
  270. package/src/kit/builder/form/types.ts +173 -148
  271. package/src/kit/builder/form/utils/section-factories.ts +4 -1
  272. package/src/kit/builder/form/utils/transformers.ts +4 -4
  273. package/src/kit/builder/form/utils/validations.ts +1 -1
  274. package/src/kit/builder/page/Page.tsx +26 -6
  275. package/src/kit/builder/page/index.ts +1 -1
  276. package/src/kit/builder/section/SectionBuilder.tsx +252 -127
  277. package/src/kit/builder/section/SectionContainer.tsx +85 -0
  278. package/src/kit/builder/stack-dialog/context.ts +10 -4
  279. package/src/kit/builder/stack-dialog/hooks.ts +4 -3
  280. package/src/kit/builder/stack-dialog/index.ts +5 -11
  281. package/src/kit/builder/stack-dialog/provider.tsx +11 -11
  282. package/src/kit/builder/stack-dialog/renderer.tsx +23 -26
  283. package/src/kit/builder/stack-dialog/types.ts +18 -18
  284. package/src/kit/components/autocomplete/Autocomplete.tsx +631 -549
  285. package/src/kit/components/autocomplete/types.ts +17 -17
  286. package/src/kit/components/datepicker/DatePicker.tsx +33 -9
  287. package/src/kit/components/datepicker/DateRangePicker.tsx +159 -87
  288. package/src/kit/components/datetimepicker/DateTimePicker.tsx +136 -30
  289. package/src/kit/components/datetimepicker/DateTimeRangePicker.tsx +257 -67
  290. package/src/kit/components/datetimepicker/index.ts +3 -3
  291. package/src/kit/components/fileuploader/FileUploader.tsx +315 -180
  292. package/src/kit/components/fileuploader/index.ts +3 -3
  293. package/src/kit/components/fileuploader/types.ts +3 -3
  294. package/src/kit/components/forminfo/FormInfoError.tsx +26 -11
  295. package/src/kit/components/login/Login.tsx +13 -4
  296. package/src/kit/components/monthpicker/MonthInput.tsx +13 -4
  297. package/src/kit/components/monthpicker/MonthPicker.tsx +12 -11
  298. package/src/kit/components/monthpicker/MonthRangeInput.tsx +29 -8
  299. package/src/kit/components/monthpicker/MonthRangePicker.tsx +23 -21
  300. package/src/kit/components/timepicker/TimePicker.tsx +19 -11
  301. package/src/kit/components/timepicker/TimeRangePicker.tsx +106 -29
  302. package/src/kit/components/timepicker/index.ts +3 -3
  303. package/src/kit/layouts/admin/components/AdminLayout.tsx +53 -24
  304. package/src/kit/layouts/admin/components/ThemeToggle.tsx +3 -9
  305. package/src/kit/layouts/admin/hooks/menu.ts +11 -5
  306. package/src/kit/layouts/admin/providers/AdminMenuProvider.tsx +59 -39
  307. package/src/kit/layouts/admin/types/index.ts +1 -1
  308. package/src/kit/themes/base.css +1 -1
  309. package/src/kit/themes/clean-slate.css +40 -32
  310. package/src/kit/themes/default.css +34 -24
  311. package/src/kit/themes/minimal-modern.css +37 -29
  312. package/src/kit/themes/spotify.css +56 -39
  313. package/src/shadcn/hooks/use-mobile.ts +13 -11
  314. package/src/shadcn/lib/utils.ts +2 -2
  315. package/src/shadcn/ui/accordion.tsx +14 -14
  316. package/src/shadcn/ui/alert-dialog.tsx +29 -29
  317. package/src/shadcn/ui/alert.tsx +20 -20
  318. package/src/shadcn/ui/aspect-ratio.tsx +4 -4
  319. package/src/shadcn/ui/avatar.tsx +13 -13
  320. package/src/shadcn/ui/badge.tsx +16 -16
  321. package/src/shadcn/ui/breadcrumb.tsx +28 -28
  322. package/src/shadcn/ui/button.tsx +23 -23
  323. package/src/shadcn/ui/calendar.tsx +82 -78
  324. package/src/shadcn/ui/card.tsx +27 -27
  325. package/src/shadcn/ui/carousel.tsx +93 -93
  326. package/src/shadcn/ui/chart.tsx +103 -103
  327. package/src/shadcn/ui/checkbox.tsx +9 -9
  328. package/src/shadcn/ui/collapsible.tsx +6 -6
  329. package/src/shadcn/ui/command.tsx +36 -36
  330. package/src/shadcn/ui/context-menu.tsx +40 -40
  331. package/src/shadcn/ui/dialog.tsx +28 -28
  332. package/src/shadcn/ui/drawer.tsx +30 -30
  333. package/src/shadcn/ui/dropdown-menu.tsx +41 -41
  334. package/src/shadcn/ui/form.tsx +48 -47
  335. package/src/shadcn/ui/hover-card.tsx +11 -11
  336. package/src/shadcn/ui/input-otp.tsx +23 -23
  337. package/src/shadcn/ui/input.tsx +9 -9
  338. package/src/shadcn/ui/label.tsx +8 -8
  339. package/src/shadcn/ui/menubar.tsx +47 -47
  340. package/src/shadcn/ui/navigation-menu.tsx +33 -33
  341. package/src/shadcn/ui/pagination.tsx +28 -28
  342. package/src/shadcn/ui/popover.tsx +12 -12
  343. package/src/shadcn/ui/progress.tsx +8 -8
  344. package/src/shadcn/ui/radio-group.tsx +11 -11
  345. package/src/shadcn/ui/resizable.tsx +14 -14
  346. package/src/shadcn/ui/scroll-area.tsx +15 -15
  347. package/src/shadcn/ui/select.tsx +34 -34
  348. package/src/shadcn/ui/separator.tsx +9 -9
  349. package/src/shadcn/ui/sheet.tsx +36 -36
  350. package/src/shadcn/ui/sidebar.tsx +227 -227
  351. package/src/shadcn/ui/skeleton.tsx +5 -5
  352. package/src/shadcn/ui/slider.tsx +12 -12
  353. package/src/shadcn/ui/sonner.tsx +11 -11
  354. package/src/shadcn/ui/switch.tsx +9 -9
  355. package/src/shadcn/ui/table.tsx +32 -32
  356. package/src/shadcn/ui/tabs.tsx +14 -14
  357. package/src/shadcn/ui/textarea.tsx +7 -7
  358. package/src/shadcn/ui/toggle-group.tsx +17 -17
  359. package/src/shadcn/ui/toggle.tsx +16 -16
  360. package/src/shadcn/ui/tooltip.tsx +11 -11
  361. package/src/stories/FileUploader.stories.tsx +23 -4
  362. package/src/stories/kit/builder/DataTable.Basic.stories.tsx +14 -4
  363. package/src/stories/kit/builder/DataTable.Filters.stories.tsx +36 -14
  364. package/src/stories/kit/builder/DataTable.Pagination.stories.tsx +3 -2
  365. package/src/stories/kit/builder/DataTable.SelectionAndActions.stories.tsx +18 -4
  366. package/src/stories/kit/builder/DataTable.Sorting.stories.tsx +18 -7
  367. package/src/stories/kit/builder/Dialog.stories.tsx +19 -13
  368. package/src/stories/kit/builder/Form.ArrayLayouts.stories.tsx +40 -16
  369. package/src/stories/kit/builder/Form.Autocomplete.stories.tsx +34 -22
  370. package/src/stories/kit/builder/Form.Basic.stories.tsx +38 -6
  371. package/src/stories/kit/builder/Form.Complex.stories.tsx +356 -111
  372. package/src/stories/kit/builder/Form.DateTime.stories.tsx +12 -8
  373. package/src/stories/kit/builder/Form.Dynamic.stories.tsx +695 -132
  374. package/src/stories/kit/builder/Form.Files.stories.tsx +37 -26
  375. package/src/stories/kit/builder/Form.MultipleFormBuilder.stories.tsx +46 -42
  376. package/src/stories/kit/builder/Form.Pickers.stories.tsx +12 -8
  377. package/src/stories/kit/builder/Form.Simple.stories.tsx +15 -6
  378. package/src/stories/kit/builder/Form.Time.stories.tsx +12 -8
  379. package/src/stories/kit/builder/Page.stories.tsx +32 -6
  380. package/src/stories/kit/builder/Section.stories.tsx +58 -11
  381. package/src/stories/kit/components/Autocomplete.stories.tsx +55 -22
  382. package/src/stories/kit/components/DatePicker.stories.tsx +80 -13
  383. package/src/stories/kit/components/DateRangePicker.stories.tsx +52 -11
  384. package/src/stories/kit/components/Login.stories.tsx +8 -2
  385. package/src/stories/kit/components/MonthPicker.stories.tsx +26 -6
  386. package/src/stories/kit/components/MonthRangePicker.stories.tsx +24 -5
  387. package/src/stories/kit/components/TimePicker.stories.tsx +18 -16
  388. package/src/stories/kit/components/TimeRangePicker.stories.tsx +18 -12
  389. package/src/stories/kit/layouts/admin/AdminLayout.Basic.stories.tsx +29 -6
  390. package/src/stories/kit/layouts/admin/AdminLayout.Collapsible.stories.tsx +26 -5
  391. package/src/stories/kit/layouts/admin/AdminLayout.Complex.stories.tsx +101 -18
  392. package/src/stories/kit/layouts/admin/AdminLayout.CustomSidebarHeaderComponent.stories.tsx +18 -4
  393. package/src/stories/kit/layouts/admin/AdminLayout.CustomSidebarTitleAndIcon.stories.tsx +17 -4
  394. package/src/stories/kit/layouts/admin/AdminLayout.HeaderSlots.stories.tsx +28 -6
  395. package/src/stories/shadcn/ui/Accordion.stories.tsx +33 -10
  396. package/src/stories/shadcn/ui/AlertDialog.stories.tsx +3 -1
  397. package/src/stories/shadcn/ui/Button.stories.tsx +3 -1
  398. package/src/stories/shadcn/ui/Calendar.stories.tsx +6 -1
  399. package/src/stories/shadcn/ui/Card.stories.tsx +11 -2
  400. package/src/stories/shadcn/ui/Checkbox.stories.tsx +11 -3
  401. package/src/stories/shadcn/ui/Collapsible.stories.tsx +12 -5
  402. package/src/stories/shadcn/ui/ContextMenu.stories.tsx +12 -4
  403. package/src/stories/shadcn/ui/Dialog.stories.tsx +15 -3
  404. package/src/stories/shadcn/ui/Drawer.stories.tsx +5 -2
  405. package/src/stories/shadcn/ui/DropdownMenu.stories.tsx +15 -5
  406. package/src/stories/shadcn/ui/Form.stories.tsx +5 -2
  407. package/src/stories/shadcn/ui/HoverCard.stories.tsx +8 -2
  408. package/src/stories/shadcn/ui/Input.stories.tsx +3 -1
  409. package/src/stories/shadcn/ui/InputOtp.stories.tsx +9 -2
  410. package/src/stories/shadcn/ui/Menubar.stories.tsx +21 -7
  411. package/src/stories/shadcn/ui/NavigationMenu.stories.tsx +30 -5
  412. package/src/stories/shadcn/ui/Popover.stories.tsx +8 -2
  413. package/src/stories/shadcn/ui/Resizable.stories.tsx +17 -5
  414. package/src/stories/shadcn/ui/ScrollArea.stories.tsx +54 -2
  415. package/src/stories/shadcn/ui/Select.stories.tsx +7 -1
  416. package/src/stories/shadcn/ui/Sheet.stories.tsx +2 -1
  417. package/src/stories/shadcn/ui/Sidebar.stories.tsx +13 -2
  418. package/src/stories/shadcn/ui/Sonner.stories.tsx +12 -2
  419. package/src/stories/shadcn/ui/Table.stories.tsx +86 -27
  420. package/src/stories/shadcn/ui/Tabs.stories.tsx +9 -2
  421. package/src/stories/shadcn/ui/Textarea.stories.tsx +3 -1
  422. package/src/stories/shadcn/ui/Toggle.stories.tsx +10 -2
  423. package/src/stories/shadcn/ui/Tooltip.stories.tsx +6 -1
  424. package/storybook-static/assets/Accordion.stories-KU4JBR8U.js +52 -0
  425. package/storybook-static/assets/AdminLayout-CPvVCwfY.js +53 -0
  426. package/storybook-static/assets/AdminLayout.Basic.stories-DkP2UVXe.js +4 -0
  427. package/storybook-static/assets/AdminLayout.Collapsible.stories-BuuVjtpW.js +4 -0
  428. package/storybook-static/assets/AdminLayout.Complex.stories-D-k4H0hJ.js +29 -0
  429. package/storybook-static/assets/AdminLayout.CustomSidebarHeaderComponent.stories-B_0IEDd4.js +9 -0
  430. package/storybook-static/assets/AdminLayout.CustomSidebarTitleAndIcon.stories-CvAeXUyA.js +4 -0
  431. package/storybook-static/assets/AdminLayout.HeaderSlots.stories-RBFHoSZK.js +7 -0
  432. package/storybook-static/assets/Alert.stories-DKxKtIc0.js +27 -0
  433. package/storybook-static/assets/AlertDialog.stories-BqTpZ_nG.js +43 -0
  434. package/storybook-static/assets/AspectRatio.stories-DPO9QQ5F.js +22 -0
  435. package/storybook-static/assets/Autocomplete-Cpg4CaJe.js +56 -0
  436. package/storybook-static/assets/Autocomplete.stories-CWj4G5fh.js +56 -0
  437. package/storybook-static/assets/Avatar.stories-DPhov_2g.js +12 -0
  438. package/storybook-static/assets/Badge.stories-DFKrRdXq.js +12 -0
  439. package/storybook-static/assets/Breadcrumb.stories-CTE6CZUC.js +25 -0
  440. package/storybook-static/assets/Button.stories-cbt2InL-.js +26 -0
  441. package/storybook-static/assets/Calendar.stories-DRhTw_43.js +3 -0
  442. package/storybook-static/assets/Card.stories-Isf6n_K3.js +15 -0
  443. package/storybook-static/assets/Carousel.stories-Cmg0I3fR.js +15 -0
  444. package/storybook-static/assets/Chart.stories-aQ-fNijT.js +126 -0
  445. package/storybook-static/assets/Checkbox.stories-B7YMXPDc.js +12 -0
  446. package/storybook-static/assets/Collapsible.stories-BUzl17ZZ.js +18 -0
  447. package/storybook-static/assets/Combination-BdQWAuko.js +41 -0
  448. package/storybook-static/assets/Command.stories-DzBlWQs0.js +30 -0
  449. package/storybook-static/assets/ContextMenu.stories-CJlBQyXc.js +31 -0
  450. package/storybook-static/assets/DataTable.Basic.stories-BWYKFDmK.js +6 -0
  451. package/storybook-static/assets/DataTable.Filters.stories-uZdtJk8t.js +21 -0
  452. package/storybook-static/assets/DataTable.Pagination.stories-C5N1khkp.js +24 -0
  453. package/storybook-static/assets/DataTable.SelectionAndActions.stories-FhCqZKvO.js +26 -0
  454. package/storybook-static/assets/DataTable.Sorting.stories-D-k7EtRj.js +6 -0
  455. package/storybook-static/assets/Dialog.stories-C62AF-Gx.js +54 -0
  456. package/storybook-static/assets/Dialog.stories-lrjRwOus.js +18 -0
  457. package/storybook-static/assets/Drawer.stories-CGjkdJeV.js +24 -0
  458. package/storybook-static/assets/DropdownMenu.stories-DkGClRAA.js +35 -0
  459. package/storybook-static/assets/Form.ArrayLayouts.stories-C5d_062d.js +130 -0
  460. package/storybook-static/assets/Form.Autocomplete.stories-CPZPkk4o.js +142 -0
  461. package/storybook-static/assets/Form.Basic.stories-Bhcu3-3n.js +58 -0
  462. package/storybook-static/assets/Form.Complex.stories-QnXh5a7Q.js +361 -0
  463. package/storybook-static/assets/Form.Dynamic.stories-DFW6wIuT.js +502 -0
  464. package/storybook-static/assets/Form.Simple.stories-BhJcyhbE.js +53 -0
  465. package/storybook-static/assets/Form.stories-PFNsMYxO.js +3 -0
  466. package/storybook-static/assets/FormBuilder-BQBBxo_k.js +5 -0
  467. package/storybook-static/assets/HoverCard.stories-CAlQEVn8.js +21 -0
  468. package/storybook-static/assets/Input.stories-CEhODt0V.js +16 -0
  469. package/storybook-static/assets/InputOtp.stories-DSvNP4dS.js +42 -0
  470. package/storybook-static/assets/Label.stories-B3pa8ZLY.js +14 -0
  471. package/storybook-static/assets/Login.stories-C7KQkmR_.js +37 -0
  472. package/storybook-static/assets/Menubar.stories-CHXhSHxc.js +44 -0
  473. package/storybook-static/assets/MonthPicker.stories-BnrOc4fm.js +99 -0
  474. package/storybook-static/assets/MonthRangePicker.stories-55Gk1t-7.js +134 -0
  475. package/storybook-static/assets/NavigationMenu.stories-CXoS080P.js +30 -0
  476. package/storybook-static/assets/Page.stories-GdSJgZ6-.js +91 -0
  477. package/storybook-static/assets/Pagination.stories-BEBwqH4N.js +29 -0
  478. package/storybook-static/assets/Popover.stories-BICy98Cw.js +15 -0
  479. package/storybook-static/assets/Progress.stories-DECHNOME.js +8 -0
  480. package/storybook-static/assets/RadioGroup.stories-DA7-uKfV.js +16 -0
  481. package/storybook-static/assets/Resizable.stories-B99kWkH7.js +25 -0
  482. package/storybook-static/assets/ScrollArea.stories-BqvUAXqU.js +12 -0
  483. package/storybook-static/assets/Section.stories-lFMlFBQn.js +277 -0
  484. package/storybook-static/assets/SectionBuilder-BQW705x0.js +1 -0
  485. package/storybook-static/assets/Select.stories-BsKyZ6Io.js +17 -0
  486. package/storybook-static/assets/Separator.stories-BTDOaOM2.js +17 -0
  487. package/storybook-static/assets/Sheet.stories-Cam1gR6G.js +24 -0
  488. package/storybook-static/assets/Sidebar.stories-DnOa6G7y.js +106 -0
  489. package/storybook-static/assets/Skeleton.stories-BQNIuIe5.js +9 -0
  490. package/storybook-static/assets/Slider.stories-Bslq7hjq.js +6 -0
  491. package/storybook-static/assets/Sonner.stories-D34pBBtI.js +18 -0
  492. package/storybook-static/assets/Switch.stories-Puyb1-Bx.js +3 -0
  493. package/storybook-static/assets/Table.stories-ClZxAhut.js +35 -0
  494. package/storybook-static/assets/Tabs.stories-CURNTETB.js +10 -0
  495. package/storybook-static/assets/Textarea.stories-Cf1ZBrWw.js +17 -0
  496. package/storybook-static/assets/Toggle.stories-CdMHY_bi.js +3 -0
  497. package/storybook-static/assets/ToggleGroup.stories-BM68m1dX.js +13 -0
  498. package/storybook-static/assets/Tooltip.stories-DiQv64dM.js +10 -0
  499. package/storybook-static/assets/accordion-DVgwQcnw.js +1 -0
  500. package/storybook-static/assets/alert-dialog-DCUEwpqm.js +7 -0
  501. package/storybook-static/assets/avatar-BzwOE-mi.js +1 -0
  502. package/storybook-static/assets/axe-HmUsR1st.js +30 -0
  503. package/storybook-static/assets/badge-BnQWua6u.js +1 -0
  504. package/storybook-static/assets/button-0oMkiryo.js +1 -0
  505. package/storybook-static/assets/card-BJpPOzP8.js +1 -0
  506. package/storybook-static/assets/chart-column-DZGb4ZZS.js +6 -0
  507. package/storybook-static/assets/check-B9hBGj6o.js +6 -0
  508. package/storybook-static/assets/checkbox-CyIeaWHX.js +1 -0
  509. package/storybook-static/assets/chevron-down-D_37S6il.js +6 -0
  510. package/storybook-static/assets/chevron-left-BBoN0vbI.js +6 -0
  511. package/storybook-static/assets/chevron-right-B5vIMLxK.js +6 -0
  512. package/storybook-static/assets/circle-C5Lzx6Nx.js +6 -0
  513. package/storybook-static/assets/clean-slate-D1HmMFJM.css +1 -0
  514. package/storybook-static/assets/command-Csa9p8_a.js +6 -0
  515. package/storybook-static/assets/createLucideIcon-BrHXro7t.js +21 -0
  516. package/storybook-static/assets/default-CN_Fo1GY.css +1 -0
  517. package/storybook-static/assets/dependencies-ctrV69dx.js +1 -0
  518. package/storybook-static/assets/dialog-CsnqITTn.js +1 -0
  519. package/storybook-static/assets/dropdown-menu-BWxxwPHL.js +1 -0
  520. package/storybook-static/assets/ellipsis-BRS038RR.js +6 -0
  521. package/storybook-static/assets/grip-vertical-BxXG8KNA.js +6 -0
  522. package/storybook-static/assets/iframe-C9bogcIc.css +1 -0
  523. package/storybook-static/assets/iframe-v7iAhKit.js +1555 -0
  524. package/storybook-static/assets/index-0-qMRXou.js +1 -0
  525. package/storybook-static/assets/index-AvwFFKJc.js +1 -0
  526. package/storybook-static/assets/index-BVDb4dFc.js +1 -0
  527. package/storybook-static/assets/index-B_qx7A5T.js +1 -0
  528. package/storybook-static/assets/index-BdQq_4o_.js +1 -0
  529. package/storybook-static/assets/index-BfiCOk42.js +1 -0
  530. package/storybook-static/assets/index-Bv9yk470.js +1 -0
  531. package/storybook-static/assets/index-Bw1A27Kp.js +1 -0
  532. package/storybook-static/assets/index-ByqivBWx.js +1 -0
  533. package/storybook-static/assets/index-C9Ta0ZTH.js +1 -0
  534. package/storybook-static/assets/index-CDY5kTx5.js +1 -0
  535. package/storybook-static/assets/index-CGnyVRgB.js +1 -0
  536. package/storybook-static/assets/index-CGrAONsN.js +1 -0
  537. package/storybook-static/assets/index-CWjrGFAQ.js +1 -0
  538. package/storybook-static/assets/index-CwBdPBFz.js +9 -0
  539. package/storybook-static/assets/index-D8RXF03I.js +1 -0
  540. package/storybook-static/assets/index-DLIxT4Z7.js +1 -0
  541. package/storybook-static/assets/index-DW48STyt.js +1 -0
  542. package/storybook-static/assets/index-DbaA6-o1.js +1 -0
  543. package/storybook-static/assets/index-Dph_5COR.js +1 -0
  544. package/storybook-static/assets/index-DrN5n71E.js +1 -0
  545. package/storybook-static/assets/index-Tp9IdbR8.js +1 -0
  546. package/storybook-static/assets/index-WyF3-wTE.js +9 -0
  547. package/storybook-static/assets/index-XSmPROEP.js +1 -0
  548. package/storybook-static/assets/index-Z6wF44KX.js +5 -0
  549. package/storybook-static/assets/index-_RPqOjlQ.js +1 -0
  550. package/storybook-static/assets/index-jrimW4QO.js +1 -0
  551. package/storybook-static/assets/index-nqc17SX4.js +1 -0
  552. package/storybook-static/assets/input-11YRd9gD.js +1 -0
  553. package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +9 -0
  554. package/storybook-static/assets/label-Do8ODIVk.js +1 -0
  555. package/storybook-static/assets/lodash-DDwpuhPG.js +73 -0
  556. package/storybook-static/assets/matchers-7Z3WT2CE-T3xScrR7.js +14 -0
  557. package/storybook-static/assets/minimal-modern-BlYVzfQU.css +1 -0
  558. package/storybook-static/assets/popover-CcciSWAw.js +1 -0
  559. package/storybook-static/assets/preload-helper-Dp1pzeXC.js +1 -0
  560. package/storybook-static/assets/radio-group-DiJ0Y_KQ.js +1 -0
  561. package/storybook-static/assets/react-18-Cr9fq_Ip.js +25 -0
  562. package/storybook-static/assets/react-icons.esm-B_ULMmNU.js +1 -0
  563. package/storybook-static/assets/refresh-cw-BmRDhIV_.js +6 -0
  564. package/storybook-static/assets/schemas-CGNYCiJ6.js +18 -0
  565. package/storybook-static/assets/section-factories-DCCY9R35.js +1 -0
  566. package/storybook-static/assets/select-DDrkxaOg.js +6 -0
  567. package/storybook-static/assets/separator-o5SAUnaJ.js +1 -0
  568. package/storybook-static/assets/settings-2-xWGvvbG6.js +6 -0
  569. package/storybook-static/assets/sheet-C7jhU3XE.js +1 -0
  570. package/storybook-static/assets/shopping-cart-BFlrufvo.js +11 -0
  571. package/storybook-static/assets/sidebar-C8hU1Mxy.js +6 -0
  572. package/storybook-static/assets/skeleton-CjDnQs43.js +1 -0
  573. package/storybook-static/assets/spotify-CUDj7g8m.css +1 -0
  574. package/storybook-static/assets/switch-CKGRuk3u.js +1 -0
  575. package/storybook-static/assets/table-CP3vMqFn.js +1 -0
  576. package/storybook-static/assets/tabs-CopK2m3j.js +1 -0
  577. package/storybook-static/assets/textarea-Dw2vruMl.js +1 -0
  578. package/storybook-static/assets/toggle-DmHbWetf.js +16 -0
  579. package/storybook-static/assets/tooltip-_LqYEYFw.js +1 -0
  580. package/storybook-static/assets/trash-2-xdbApPby.js +11 -0
  581. package/storybook-static/assets/utils-D-KgF5mV.js +1 -0
  582. package/storybook-static/assets/x-B1a4fyWM.js +6 -0
  583. package/storybook-static/favicon-wrapper.svg +46 -0
  584. package/storybook-static/favicon.svg +1 -0
  585. package/storybook-static/iframe.html +687 -0
  586. package/storybook-static/index.d.ts +64 -0
  587. package/storybook-static/index.d.ts.map +1 -0
  588. package/storybook-static/index.html +166 -0
  589. package/storybook-static/index.json +1 -0
  590. package/storybook-static/kit/builder/data-table/components/DataTable.d.ts +37 -0
  591. package/storybook-static/kit/builder/data-table/components/DataTable.d.ts.map +1 -0
  592. package/storybook-static/kit/builder/data-table/components/DataTableColumnHeader.d.ts +8 -0
  593. package/storybook-static/kit/builder/data-table/components/DataTableColumnHeader.d.ts.map +1 -0
  594. package/storybook-static/kit/builder/data-table/components/DataTablePagination.d.ts +6 -0
  595. package/storybook-static/kit/builder/data-table/components/DataTablePagination.d.ts.map +1 -0
  596. package/storybook-static/kit/builder/data-table/components/DataTableViewOptions.d.ts +5 -0
  597. package/storybook-static/kit/builder/data-table/components/DataTableViewOptions.d.ts.map +1 -0
  598. package/storybook-static/kit/builder/data-table/index.d.ts +7 -0
  599. package/storybook-static/kit/builder/data-table/index.d.ts.map +1 -0
  600. package/storybook-static/kit/builder/data-table/types.d.ts +27 -0
  601. package/storybook-static/kit/builder/data-table/types.d.ts.map +1 -0
  602. package/storybook-static/kit/builder/data-table/utils/dotAccessor.d.ts +2 -0
  603. package/storybook-static/kit/builder/data-table/utils/dotAccessor.d.ts.map +1 -0
  604. package/storybook-static/kit/builder/dialog/index.d.ts +3 -0
  605. package/storybook-static/kit/builder/dialog/index.d.ts.map +1 -0
  606. package/storybook-static/kit/builder/dialog/provider.d.ts +26 -0
  607. package/storybook-static/kit/builder/dialog/provider.d.ts.map +1 -0
  608. package/storybook-static/kit/builder/form/components/FormBuilder.d.ts +137 -0
  609. package/storybook-static/kit/builder/form/components/FormBuilder.d.ts.map +1 -0
  610. package/storybook-static/kit/builder/form/components/FormBuilderActions.d.ts +20 -0
  611. package/storybook-static/kit/builder/form/components/FormBuilderActions.d.ts.map +1 -0
  612. package/storybook-static/kit/builder/form/components/FormBuilderField.d.ts +12 -0
  613. package/storybook-static/kit/builder/form/components/FormBuilderField.d.ts.map +1 -0
  614. package/storybook-static/kit/builder/form/components/fields/ArrayField.d.ts +3 -0
  615. package/storybook-static/kit/builder/form/components/fields/ArrayField.d.ts.map +1 -0
  616. package/storybook-static/kit/builder/form/components/fields/AutocompleteField.d.ts +3 -0
  617. package/storybook-static/kit/builder/form/components/fields/AutocompleteField.d.ts.map +1 -0
  618. package/storybook-static/kit/builder/form/components/fields/CheckboxField.d.ts +3 -0
  619. package/storybook-static/kit/builder/form/components/fields/CheckboxField.d.ts.map +1 -0
  620. package/storybook-static/kit/builder/form/components/fields/DateField.d.ts +3 -0
  621. package/storybook-static/kit/builder/form/components/fields/DateField.d.ts.map +1 -0
  622. package/storybook-static/kit/builder/form/components/fields/FileField.d.ts +3 -0
  623. package/storybook-static/kit/builder/form/components/fields/FileField.d.ts.map +1 -0
  624. package/storybook-static/kit/builder/form/components/fields/NumberField.d.ts +3 -0
  625. package/storybook-static/kit/builder/form/components/fields/NumberField.d.ts.map +1 -0
  626. package/storybook-static/kit/builder/form/components/fields/ObjectField.d.ts +3 -0
  627. package/storybook-static/kit/builder/form/components/fields/ObjectField.d.ts.map +1 -0
  628. package/storybook-static/kit/builder/form/components/fields/RadioField.d.ts +3 -0
  629. package/storybook-static/kit/builder/form/components/fields/RadioField.d.ts.map +1 -0
  630. package/storybook-static/kit/builder/form/components/fields/SelectField.d.ts +3 -0
  631. package/storybook-static/kit/builder/form/components/fields/SelectField.d.ts.map +1 -0
  632. package/storybook-static/kit/builder/form/components/fields/SwitchField.d.ts +3 -0
  633. package/storybook-static/kit/builder/form/components/fields/SwitchField.d.ts.map +1 -0
  634. package/storybook-static/kit/builder/form/components/fields/TextField.d.ts +3 -0
  635. package/storybook-static/kit/builder/form/components/fields/TextField.d.ts.map +1 -0
  636. package/storybook-static/kit/builder/form/components/fields/TextareaField.d.ts +3 -0
  637. package/storybook-static/kit/builder/form/components/fields/TextareaField.d.ts.map +1 -0
  638. package/storybook-static/kit/builder/form/components/fields/index.d.ts +14 -0
  639. package/storybook-static/kit/builder/form/components/fields/index.d.ts.map +1 -0
  640. package/storybook-static/kit/builder/form/components/fields/types.d.ts +14 -0
  641. package/storybook-static/kit/builder/form/components/fields/types.d.ts.map +1 -0
  642. package/storybook-static/kit/builder/form/components/index.d.ts +4 -0
  643. package/storybook-static/kit/builder/form/components/index.d.ts.map +1 -0
  644. package/storybook-static/kit/builder/form/index.d.ts +3 -0
  645. package/storybook-static/kit/builder/form/index.d.ts.map +1 -0
  646. package/storybook-static/kit/builder/form/utils/common-forms.d.ts +7 -0
  647. package/storybook-static/kit/builder/form/utils/common-forms.d.ts.map +1 -0
  648. package/storybook-static/kit/builder/form/utils/dependencies.d.ts +41 -0
  649. package/storybook-static/kit/builder/form/utils/dependencies.d.ts.map +1 -0
  650. package/storybook-static/kit/builder/form/utils/field-factories.d.ts +23 -0
  651. package/storybook-static/kit/builder/form/utils/field-factories.d.ts.map +1 -0
  652. package/storybook-static/kit/builder/form/utils/index.d.ts +15 -0
  653. package/storybook-static/kit/builder/form/utils/index.d.ts.map +1 -0
  654. package/storybook-static/kit/builder/form/utils/section-factories.d.ts +7 -0
  655. package/storybook-static/kit/builder/form/utils/section-factories.d.ts.map +1 -0
  656. package/storybook-static/kit/builder/form/utils/transformers.d.ts +6 -0
  657. package/storybook-static/kit/builder/form/utils/transformers.d.ts.map +1 -0
  658. package/storybook-static/kit/builder/form/utils/validations.d.ts +13 -0
  659. package/storybook-static/kit/builder/form/utils/validations.d.ts.map +1 -0
  660. package/storybook-static/kit/builder/form/utils/validators.d.ts +8 -0
  661. package/storybook-static/kit/builder/form/utils/validators.d.ts.map +1 -0
  662. package/storybook-static/kit/builder/page/Page.d.ts +48 -0
  663. package/storybook-static/kit/builder/page/Page.d.ts.map +1 -0
  664. package/storybook-static/kit/builder/page/index.d.ts +2 -0
  665. package/storybook-static/kit/builder/page/index.d.ts.map +1 -0
  666. package/storybook-static/kit/builder/section/SectionBuilder.d.ts +3 -0
  667. package/storybook-static/kit/builder/section/SectionBuilder.d.ts.map +1 -0
  668. package/storybook-static/kit/builder/section/index.d.ts +3 -0
  669. package/storybook-static/kit/builder/section/index.d.ts.map +1 -0
  670. package/storybook-static/kit/builder/section/types.d.ts +70 -0
  671. package/storybook-static/kit/builder/section/types.d.ts.map +1 -0
  672. package/storybook-static/kit/builder/stack-dialog/context.d.ts +3 -0
  673. package/storybook-static/kit/builder/stack-dialog/context.d.ts.map +1 -0
  674. package/storybook-static/kit/builder/stack-dialog/hooks.d.ts +6 -0
  675. package/storybook-static/kit/builder/stack-dialog/hooks.d.ts.map +1 -0
  676. package/storybook-static/kit/builder/stack-dialog/index.d.ts +5 -0
  677. package/storybook-static/kit/builder/stack-dialog/index.d.ts.map +1 -0
  678. package/storybook-static/kit/builder/stack-dialog/provider.d.ts +3 -0
  679. package/storybook-static/kit/builder/stack-dialog/provider.d.ts.map +1 -0
  680. package/storybook-static/kit/builder/stack-dialog/renderer.d.ts +6 -0
  681. package/storybook-static/kit/builder/stack-dialog/renderer.d.ts.map +1 -0
  682. package/storybook-static/kit/builder/stack-dialog/types.d.ts +20 -0
  683. package/storybook-static/kit/builder/stack-dialog/types.d.ts.map +1 -0
  684. package/storybook-static/kit/components/autocomplete/Autocomplete.d.ts +53 -0
  685. package/storybook-static/kit/components/autocomplete/Autocomplete.d.ts.map +1 -0
  686. package/storybook-static/kit/components/autocomplete/index.d.ts +4 -0
  687. package/storybook-static/kit/components/autocomplete/index.d.ts.map +1 -0
  688. package/storybook-static/kit/components/autocomplete/types.d.ts +19 -0
  689. package/storybook-static/kit/components/autocomplete/types.d.ts.map +1 -0
  690. package/storybook-static/kit/components/login/Login.d.ts +29 -0
  691. package/storybook-static/kit/components/login/Login.d.ts.map +1 -0
  692. package/storybook-static/kit/components/login/index.d.ts +2 -0
  693. package/storybook-static/kit/components/login/index.d.ts.map +1 -0
  694. package/storybook-static/kit/components/monthpicker/MonthPicker.d.ts +32 -0
  695. package/storybook-static/kit/components/monthpicker/MonthPicker.d.ts.map +1 -0
  696. package/storybook-static/kit/components/monthpicker/MonthRangePicker.d.ts +48 -0
  697. package/storybook-static/kit/components/monthpicker/MonthRangePicker.d.ts.map +1 -0
  698. package/storybook-static/kit/layouts/admin/components/AdminLayout.d.ts +17 -0
  699. package/storybook-static/kit/layouts/admin/components/AdminLayout.d.ts.map +1 -0
  700. package/storybook-static/kit/layouts/admin/components/ThemeToggle.d.ts +5 -0
  701. package/storybook-static/kit/layouts/admin/components/ThemeToggle.d.ts.map +1 -0
  702. package/storybook-static/kit/layouts/admin/hooks/menu.d.ts +13 -0
  703. package/storybook-static/kit/layouts/admin/hooks/menu.d.ts.map +1 -0
  704. package/storybook-static/kit/layouts/admin/providers/AdminMenuProvider.d.ts +7 -0
  705. package/storybook-static/kit/layouts/admin/providers/AdminMenuProvider.d.ts.map +1 -0
  706. package/storybook-static/kit/layouts/admin/types/index.d.ts +27 -0
  707. package/storybook-static/kit/layouts/admin/types/index.d.ts.map +1 -0
  708. package/storybook-static/kit/providers/ThemeProvider.d.ts +14 -0
  709. package/storybook-static/kit/providers/ThemeProvider.d.ts.map +1 -0
  710. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  711. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  712. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  713. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  714. package/storybook-static/project.json +1 -0
  715. package/storybook-static/sb-addons/a11y-5/manager-bundle.js +5 -0
  716. package/storybook-static/sb-addons/essentials-backgrounds-1/manager-bundle.js +3 -0
  717. package/storybook-static/sb-addons/essentials-measure-2/manager-bundle.js +3 -0
  718. package/storybook-static/sb-addons/essentials-outline-3/manager-bundle.js +3 -0
  719. package/storybook-static/sb-addons/interactions-4/manager-bundle.js +57 -0
  720. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
  721. package/storybook-static/sb-addons/storysource-6/manager-bundle.js +3 -0
  722. package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
  723. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  724. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  725. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  726. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  727. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  728. package/storybook-static/sb-manager/globals-module-info.js +797 -0
  729. package/storybook-static/sb-manager/globals-runtime.js +69653 -0
  730. package/storybook-static/sb-manager/globals.js +34 -0
  731. package/storybook-static/sb-manager/runtime.js +13181 -0
  732. package/storybook-static/shadcn/hooks/use-mobile.d.ts +2 -0
  733. package/storybook-static/shadcn/hooks/use-mobile.d.ts.map +1 -0
  734. package/storybook-static/shadcn/lib/utils.d.ts +3 -0
  735. package/storybook-static/shadcn/lib/utils.d.ts.map +1 -0
  736. package/storybook-static/shadcn/ui/accordion.d.ts +8 -0
  737. package/storybook-static/shadcn/ui/accordion.d.ts.map +1 -0
  738. package/storybook-static/shadcn/ui/alert-dialog.d.ts +15 -0
  739. package/storybook-static/shadcn/ui/alert-dialog.d.ts.map +1 -0
  740. package/storybook-static/shadcn/ui/alert.d.ts +10 -0
  741. package/storybook-static/shadcn/ui/alert.d.ts.map +1 -0
  742. package/storybook-static/shadcn/ui/aspect-ratio.d.ts +4 -0
  743. package/storybook-static/shadcn/ui/aspect-ratio.d.ts.map +1 -0
  744. package/storybook-static/shadcn/ui/avatar.d.ts +7 -0
  745. package/storybook-static/shadcn/ui/avatar.d.ts.map +1 -0
  746. package/storybook-static/shadcn/ui/badge.d.ts +10 -0
  747. package/storybook-static/shadcn/ui/badge.d.ts.map +1 -0
  748. package/storybook-static/shadcn/ui/breadcrumb.d.ts +12 -0
  749. package/storybook-static/shadcn/ui/breadcrumb.d.ts.map +1 -0
  750. package/storybook-static/shadcn/ui/button.d.ts +11 -0
  751. package/storybook-static/shadcn/ui/button.d.ts.map +1 -0
  752. package/storybook-static/shadcn/ui/calendar.d.ts +9 -0
  753. package/storybook-static/shadcn/ui/calendar.d.ts.map +1 -0
  754. package/storybook-static/shadcn/ui/card.d.ts +10 -0
  755. package/storybook-static/shadcn/ui/card.d.ts.map +1 -0
  756. package/storybook-static/shadcn/ui/carousel.d.ts +20 -0
  757. package/storybook-static/shadcn/ui/carousel.d.ts.map +1 -0
  758. package/storybook-static/shadcn/ui/chart.d.ts +41 -0
  759. package/storybook-static/shadcn/ui/chart.d.ts.map +1 -0
  760. package/storybook-static/shadcn/ui/checkbox.d.ts +5 -0
  761. package/storybook-static/shadcn/ui/checkbox.d.ts.map +1 -0
  762. package/storybook-static/shadcn/ui/collapsible.d.ts +6 -0
  763. package/storybook-static/shadcn/ui/collapsible.d.ts.map +1 -0
  764. package/storybook-static/shadcn/ui/command.d.ts +19 -0
  765. package/storybook-static/shadcn/ui/command.d.ts.map +1 -0
  766. package/storybook-static/shadcn/ui/context-menu.d.ts +26 -0
  767. package/storybook-static/shadcn/ui/context-menu.d.ts.map +1 -0
  768. package/storybook-static/shadcn/ui/dialog.d.ts +16 -0
  769. package/storybook-static/shadcn/ui/dialog.d.ts.map +1 -0
  770. package/storybook-static/shadcn/ui/drawer.d.ts +14 -0
  771. package/storybook-static/shadcn/ui/drawer.d.ts.map +1 -0
  772. package/storybook-static/shadcn/ui/dropdown-menu.d.ts +26 -0
  773. package/storybook-static/shadcn/ui/dropdown-menu.d.ts.map +1 -0
  774. package/storybook-static/shadcn/ui/form.d.ts +25 -0
  775. package/storybook-static/shadcn/ui/form.d.ts.map +1 -0
  776. package/storybook-static/shadcn/ui/hover-card.d.ts +7 -0
  777. package/storybook-static/shadcn/ui/hover-card.d.ts.map +1 -0
  778. package/storybook-static/shadcn/ui/input-otp.d.ts +12 -0
  779. package/storybook-static/shadcn/ui/input-otp.d.ts.map +1 -0
  780. package/storybook-static/shadcn/ui/input.d.ts +4 -0
  781. package/storybook-static/shadcn/ui/input.d.ts.map +1 -0
  782. package/storybook-static/shadcn/ui/label.d.ts +5 -0
  783. package/storybook-static/shadcn/ui/label.d.ts.map +1 -0
  784. package/storybook-static/shadcn/ui/menubar.d.ts +27 -0
  785. package/storybook-static/shadcn/ui/menubar.d.ts.map +1 -0
  786. package/storybook-static/shadcn/ui/navigation-menu.d.ts +15 -0
  787. package/storybook-static/shadcn/ui/navigation-menu.d.ts.map +1 -0
  788. package/storybook-static/shadcn/ui/pagination.d.ts +14 -0
  789. package/storybook-static/shadcn/ui/pagination.d.ts.map +1 -0
  790. package/storybook-static/shadcn/ui/popover.d.ts +8 -0
  791. package/storybook-static/shadcn/ui/popover.d.ts.map +1 -0
  792. package/storybook-static/shadcn/ui/progress.d.ts +5 -0
  793. package/storybook-static/shadcn/ui/progress.d.ts.map +1 -0
  794. package/storybook-static/shadcn/ui/radio-group.d.ts +6 -0
  795. package/storybook-static/shadcn/ui/radio-group.d.ts.map +1 -0
  796. package/storybook-static/shadcn/ui/resizable.d.ts +9 -0
  797. package/storybook-static/shadcn/ui/resizable.d.ts.map +1 -0
  798. package/storybook-static/shadcn/ui/scroll-area.d.ts +6 -0
  799. package/storybook-static/shadcn/ui/scroll-area.d.ts.map +1 -0
  800. package/storybook-static/shadcn/ui/select.d.ts +16 -0
  801. package/storybook-static/shadcn/ui/select.d.ts.map +1 -0
  802. package/storybook-static/shadcn/ui/separator.d.ts +5 -0
  803. package/storybook-static/shadcn/ui/separator.d.ts.map +1 -0
  804. package/storybook-static/shadcn/ui/sheet.d.ts +14 -0
  805. package/storybook-static/shadcn/ui/sheet.d.ts.map +1 -0
  806. package/storybook-static/shadcn/ui/sidebar.d.ts +70 -0
  807. package/storybook-static/shadcn/ui/sidebar.d.ts.map +1 -0
  808. package/storybook-static/shadcn/ui/skeleton.d.ts +3 -0
  809. package/storybook-static/shadcn/ui/skeleton.d.ts.map +1 -0
  810. package/storybook-static/shadcn/ui/slider.d.ts +5 -0
  811. package/storybook-static/shadcn/ui/slider.d.ts.map +1 -0
  812. package/storybook-static/shadcn/ui/sonner.d.ts +4 -0
  813. package/storybook-static/shadcn/ui/sonner.d.ts.map +1 -0
  814. package/storybook-static/shadcn/ui/switch.d.ts +5 -0
  815. package/storybook-static/shadcn/ui/switch.d.ts.map +1 -0
  816. package/storybook-static/shadcn/ui/table.d.ts +11 -0
  817. package/storybook-static/shadcn/ui/table.d.ts.map +1 -0
  818. package/storybook-static/shadcn/ui/tabs.d.ts +8 -0
  819. package/storybook-static/shadcn/ui/tabs.d.ts.map +1 -0
  820. package/storybook-static/shadcn/ui/textarea.d.ts +4 -0
  821. package/storybook-static/shadcn/ui/textarea.d.ts.map +1 -0
  822. package/storybook-static/shadcn/ui/toggle-group.d.ts +8 -0
  823. package/storybook-static/shadcn/ui/toggle-group.d.ts.map +1 -0
  824. package/storybook-static/shadcn/ui/toggle.d.ts +10 -0
  825. package/storybook-static/shadcn/ui/toggle.d.ts.map +1 -0
  826. package/storybook-static/shadcn/ui/tooltip.d.ts +8 -0
  827. package/storybook-static/shadcn/ui/tooltip.d.ts.map +1 -0
  828. package/storybook-static/vite-inject-mocker-entry.js +18 -0
  829. package/tsconfig.json +1 -5
  830. package/tsconfig.tsbuildinfo +1 -0
  831. package/eslint.config.mjs +0 -19
@@ -0,0 +1,398 @@
1
+ import type {
2
+ AuthAdapterConfig,
3
+ AuthSession,
4
+ GraphQLAuthClient,
5
+ RESTAuthClient,
6
+ } from './types';
7
+
8
+ // ============================================================================
9
+ // GraphQL Client Adapter
10
+ // ============================================================================
11
+
12
+ export type GraphQLClientAdapterOptions<
13
+ TUser = unknown,
14
+ TRole extends string = string,
15
+ TPermission extends string = string,
16
+ TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<
17
+ TUser,
18
+ TRole,
19
+ TPermission
20
+ >,
21
+ TCredentials = unknown,
22
+ > = {
23
+ client: GraphQLAuthClient<TSession, TCredentials>;
24
+ resolveUser?: (session: TSession | null) => TUser | null;
25
+ resolveRoles?: (session: TSession | null) => TRole[];
26
+ resolvePermissions?: (session: TSession | null) => TPermission[];
27
+ };
28
+
29
+ /**
30
+ * Creates an auth adapter config for GraphQL clients
31
+ * Works with Apollo Client, urql, graphql-request, etc.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * import { ApolloClient } from '@apollo/client';
36
+ * import { createGraphQLAuthAdapter } from '@k3mart/react-kit/auth2';
37
+ *
38
+ * const apolloClient = new ApolloClient({ ... });
39
+ *
40
+ * const authConfig = createGraphQLAuthAdapter({
41
+ * client: {
42
+ * login: async (credentials) => {
43
+ * const result = await apolloClient.mutate({
44
+ * mutation: LOGIN_MUTATION,
45
+ * variables: credentials,
46
+ * });
47
+ * return result.data.login;
48
+ * },
49
+ * logout: async () => {
50
+ * await apolloClient.mutate({ mutation: LOGOUT_MUTATION });
51
+ * },
52
+ * refresh: async (refreshToken) => {
53
+ * const result = await apolloClient.mutate({
54
+ * mutation: REFRESH_MUTATION,
55
+ * variables: { refreshToken },
56
+ * });
57
+ * return result.data.refresh;
58
+ * },
59
+ * getCurrentUser: async () => {
60
+ * const result = await apolloClient.query({
61
+ * query: GET_CURRENT_USER_QUERY,
62
+ * });
63
+ * return result.data.currentUser;
64
+ * },
65
+ * },
66
+ * });
67
+ * ```
68
+ */
69
+ export function createGraphQLAuthAdapter<
70
+ TUser = unknown,
71
+ TRole extends string = string,
72
+ TPermission extends string = string,
73
+ TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<
74
+ TUser,
75
+ TRole,
76
+ TPermission
77
+ >,
78
+ TCredentials = unknown,
79
+ >(
80
+ options: GraphQLClientAdapterOptions<
81
+ TUser,
82
+ TRole,
83
+ TPermission,
84
+ TSession,
85
+ TCredentials
86
+ >,
87
+ ): Partial<
88
+ AuthAdapterConfig<TUser, TRole, TPermission, TSession, TCredentials>
89
+ > {
90
+ return {
91
+ login: options.client.login,
92
+ logout: options.client.logout,
93
+ refresh: options.client.refresh
94
+ ? async (session: TSession) => {
95
+ if (!session.refreshToken) {
96
+ throw new Error('No refresh token available');
97
+ }
98
+ if (!options.client.refresh) {
99
+ throw new Error('Refresh function not provided');
100
+ }
101
+ return await options.client.refresh(session.refreshToken);
102
+ }
103
+ : undefined,
104
+ loadSession: options.client.getCurrentUser,
105
+ resolveUser: options.resolveUser,
106
+ resolveRoles: options.resolveRoles,
107
+ resolvePermissions: options.resolvePermissions,
108
+ };
109
+ }
110
+
111
+ // ============================================================================
112
+ // REST Client Adapter
113
+ // ============================================================================
114
+
115
+ export type RESTClientAdapterOptions<
116
+ TUser = unknown,
117
+ TRole extends string = string,
118
+ TPermission extends string = string,
119
+ TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<
120
+ TUser,
121
+ TRole,
122
+ TPermission
123
+ >,
124
+ TCredentials = unknown,
125
+ > = {
126
+ client: RESTAuthClient<TSession, TCredentials>;
127
+ resolveUser?: (session: TSession | null) => TUser | null;
128
+ resolveRoles?: (session: TSession | null) => TRole[];
129
+ resolvePermissions?: (session: TSession | null) => TPermission[];
130
+ };
131
+
132
+ /**
133
+ * Creates an auth adapter config for REST API clients
134
+ * Works with fetch, axios, ky, etc.
135
+ *
136
+ * @example
137
+ * ```tsx
138
+ * import axios from 'axios';
139
+ * import { createRESTAuthAdapter } from '@k3mart/react-kit/auth2';
140
+ *
141
+ * const api = axios.create({ baseURL: 'https://api.example.com' });
142
+ *
143
+ * const authConfig = createRESTAuthAdapter({
144
+ * client: {
145
+ * login: async (credentials) => {
146
+ * const response = await api.post('/auth/login', credentials);
147
+ * return response.data;
148
+ * },
149
+ * logout: async () => {
150
+ * await api.post('/auth/logout');
151
+ * },
152
+ * refresh: async (refreshToken) => {
153
+ * const response = await api.post('/auth/refresh', { refreshToken });
154
+ * return response.data;
155
+ * },
156
+ * getCurrentUser: async () => {
157
+ * const response = await api.get('/auth/me');
158
+ * return response.data;
159
+ * },
160
+ * },
161
+ * });
162
+ * ```
163
+ */
164
+ export function createRESTAuthAdapter<
165
+ TUser = unknown,
166
+ TRole extends string = string,
167
+ TPermission extends string = string,
168
+ TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<
169
+ TUser,
170
+ TRole,
171
+ TPermission
172
+ >,
173
+ TCredentials = unknown,
174
+ >(
175
+ options: RESTClientAdapterOptions<
176
+ TUser,
177
+ TRole,
178
+ TPermission,
179
+ TSession,
180
+ TCredentials
181
+ >,
182
+ ): Partial<
183
+ AuthAdapterConfig<TUser, TRole, TPermission, TSession, TCredentials>
184
+ > {
185
+ return {
186
+ login: options.client.login,
187
+ logout: options.client.logout,
188
+ refresh: options.client.refresh
189
+ ? async (session: TSession) => {
190
+ if (!session.refreshToken) {
191
+ throw new Error('No refresh token available');
192
+ }
193
+ if (!options.client.refresh) {
194
+ throw new Error('Refresh function not provided');
195
+ }
196
+ return await options.client.refresh(session.refreshToken);
197
+ }
198
+ : undefined,
199
+ loadSession: options.client.getCurrentUser,
200
+ resolveUser: options.resolveUser,
201
+ resolveRoles: options.resolveRoles,
202
+ resolvePermissions: options.resolvePermissions,
203
+ };
204
+ }
205
+
206
+ // ============================================================================
207
+ // HTTP Interceptor Utilities
208
+ // ============================================================================
209
+
210
+ /**
211
+ * Helper to create an axios interceptor that automatically adds auth token
212
+ *
213
+ * @example
214
+ * ```tsx
215
+ * import axios from 'axios';
216
+ * import { createAxiosAuthInterceptor } from '@k3mart/react-kit/auth2';
217
+ *
218
+ * const api = axios.create({ baseURL: 'https://api.example.com' });
219
+ *
220
+ * createAxiosAuthInterceptor(api, authAdapter);
221
+ * ```
222
+ */
223
+ export function createAxiosAuthInterceptor(
224
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
225
+ axiosInstance: any,
226
+ getToken: () => string | null,
227
+ options?: {
228
+ tokenType?: string;
229
+ onTokenExpired?: () => void;
230
+ refreshToken?: () => Promise<void>;
231
+ },
232
+ ) {
233
+ const tokenType = options?.tokenType ?? 'Bearer';
234
+
235
+ // Request interceptor
236
+ axiosInstance.interceptors.request.use(
237
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
238
+ async (config: any) => {
239
+ const token = getToken();
240
+ if (token) {
241
+ config.headers.Authorization = `${tokenType} ${token}`;
242
+ }
243
+ return config;
244
+ },
245
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
+ (error: any) => Promise.reject(error),
247
+ );
248
+
249
+ // Response interceptor for token refresh
250
+ if (options?.refreshToken) {
251
+ axiosInstance.interceptors.response.use(
252
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
253
+ (response: any) => response,
254
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
255
+ async (error: any) => {
256
+ const originalRequest = error.config;
257
+
258
+ // If token expired and we haven't retried yet
259
+ if (
260
+ error.response?.status === 401 &&
261
+ !originalRequest._retry &&
262
+ options.refreshToken
263
+ ) {
264
+ originalRequest._retry = true;
265
+
266
+ try {
267
+ await options.refreshToken();
268
+ const token = getToken();
269
+ if (token) {
270
+ originalRequest.headers.Authorization = `${tokenType} ${token}`;
271
+ }
272
+ return axiosInstance(originalRequest);
273
+ } catch (refreshError) {
274
+ options.onTokenExpired?.();
275
+ return Promise.reject(refreshError);
276
+ }
277
+ }
278
+
279
+ return Promise.reject(error);
280
+ },
281
+ );
282
+ }
283
+ }
284
+
285
+ /**
286
+ * Helper to create a fetch wrapper with auth token injection
287
+ *
288
+ * @example
289
+ * ```tsx
290
+ * import { createAuthFetch } from '@k3mart/react-kit/auth2';
291
+ *
292
+ * const authenticatedFetch = createAuthFetch(
293
+ * () => authAdapter.getToken(),
294
+ * {
295
+ * onTokenExpired: () => authAdapter.logout(),
296
+ * refreshToken: () => authAdapter.refresh(),
297
+ * }
298
+ * );
299
+ *
300
+ * // Use it like regular fetch
301
+ * const response = await authenticatedFetch('/api/users');
302
+ * ```
303
+ */
304
+ export function createAuthFetch(
305
+ getToken: () => string | null,
306
+ options?: {
307
+ tokenType?: string;
308
+ onTokenExpired?: () => void;
309
+ refreshToken?: () => Promise<void>;
310
+ },
311
+ ): typeof fetch {
312
+ const tokenType = options?.tokenType ?? 'Bearer';
313
+
314
+ return async (
315
+ input: RequestInfo | URL,
316
+ init?: RequestInit,
317
+ ): Promise<Response> => {
318
+ const token = getToken();
319
+ const headers = new Headers(init?.headers);
320
+
321
+ if (token) {
322
+ headers.set('Authorization', `${tokenType} ${token}`);
323
+ }
324
+
325
+ const response = await fetch(input, {
326
+ ...init,
327
+ headers,
328
+ });
329
+
330
+ // Handle token expiration
331
+ if (response.status === 401 && options?.refreshToken) {
332
+ try {
333
+ await options.refreshToken();
334
+ const newToken = getToken();
335
+
336
+ if (newToken) {
337
+ headers.set('Authorization', `${tokenType} ${newToken}`);
338
+ return await fetch(input, {
339
+ ...init,
340
+ headers,
341
+ });
342
+ }
343
+ } catch (error) {
344
+ options.onTokenExpired?.();
345
+ throw error;
346
+ }
347
+ }
348
+
349
+ return response;
350
+ };
351
+ }
352
+
353
+ /**
354
+ * Helper to create Apollo Link with auth token injection
355
+ *
356
+ * @example
357
+ * ```tsx
358
+ * import { ApolloClient, InMemoryCache, from } from '@apollo/client';
359
+ * import { createApolloAuthLink } from '@k3mart/react-kit/auth2';
360
+ *
361
+ * const authLink = createApolloAuthLink(() => authAdapter.getToken());
362
+ *
363
+ * const client = new ApolloClient({
364
+ * link: from([authLink, httpLink]),
365
+ * cache: new InMemoryCache(),
366
+ * });
367
+ * ```
368
+ */
369
+ export function createApolloAuthLink(
370
+ getToken: () => string | null,
371
+ options?: {
372
+ tokenType?: string;
373
+ },
374
+ ) {
375
+ const tokenType = options?.tokenType ?? 'Bearer';
376
+
377
+ // This requires @apollo/client to be installed
378
+ // We'll return a function that creates the link to avoid direct dependency
379
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
380
+ return (ApolloLink: any) => {
381
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
+ return new ApolloLink((operation: any, forward: any) => {
383
+ const token = getToken();
384
+
385
+ if (token) {
386
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
387
+ operation.setContext(({ headers = {} }: any) => ({
388
+ headers: {
389
+ ...headers,
390
+ authorization: `${tokenType} ${token}`,
391
+ },
392
+ }));
393
+ }
394
+
395
+ return forward(operation);
396
+ });
397
+ };
398
+ }
@@ -0,0 +1,221 @@
1
+ import type { ComponentType } from 'react';
2
+ import type {
3
+ CanProps,
4
+ RequireAuthProps,
5
+ WithPermissionOptions,
6
+ } from './types';
7
+ import { useAuthContext } from './AuthProvider';
8
+ import { useCan } from './hooks';
9
+
10
+ // ============================================================================
11
+ // RequireAuth Component
12
+ // ============================================================================
13
+
14
+ /**
15
+ * Component that requires authentication
16
+ * Optionally checks for specific roles and permissions
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * // Basic authentication check
21
+ * <RequireAuth fallback={<Login />}>
22
+ * <Dashboard />
23
+ * </RequireAuth>
24
+ *
25
+ * // With role check
26
+ * <RequireAuth
27
+ * roles="admin"
28
+ * fallback={<Forbidden />}
29
+ * loadingFallback={<Spinner />}
30
+ * >
31
+ * <AdminPanel />
32
+ * </RequireAuth>
33
+ *
34
+ * // With permission check
35
+ * <RequireAuth
36
+ * permissions={['post:edit', 'post:delete']}
37
+ * fallback={<Forbidden />}
38
+ * >
39
+ * <PostEditor />
40
+ * </RequireAuth>
41
+ *
42
+ * // Complex rule
43
+ * <RequireAuth
44
+ * roles={['admin', 'moderator']}
45
+ * permissions={{
46
+ * operator: 'OR',
47
+ * permissions: ['post:edit', 'post:delete']
48
+ * }}
49
+ * requireAll={false}
50
+ * fallback={<Forbidden />}
51
+ * >
52
+ * <ContentManager />
53
+ * </RequireAuth>
54
+ * ```
55
+ */
56
+ export function RequireAuth<
57
+ TRole extends string = string,
58
+ TPermission extends string = string,
59
+ >({
60
+ children,
61
+ fallback = null,
62
+ loadingFallback = null,
63
+ roles,
64
+ permissions,
65
+ requireAll = true,
66
+ }: RequireAuthProps<TRole, TPermission>) {
67
+ const { status, can } = useAuthContext();
68
+
69
+ if (status === 'loading' || status === 'idle') {
70
+ return loadingFallback;
71
+ }
72
+
73
+ if (status !== 'authenticated') {
74
+ return fallback;
75
+ }
76
+
77
+ // If no specific roles/permissions required, just check authentication
78
+ if (!roles && !permissions) {
79
+ return children;
80
+ }
81
+
82
+ // Check role/permission rules
83
+ const allowed = can({ roles, permissions, requireAll });
84
+
85
+ if (!allowed) {
86
+ return fallback;
87
+ }
88
+
89
+ return children;
90
+ }
91
+
92
+ // ============================================================================
93
+ // Can Component
94
+ // ============================================================================
95
+
96
+ /**
97
+ * Component for conditional rendering based on permissions
98
+ * More flexible than RequireAuth - doesn't check authentication status
99
+ *
100
+ * @example
101
+ * ```tsx
102
+ * // Show button only if user can edit
103
+ * <Can permissions="post:edit" fallback={<ReadOnlyView />}>
104
+ * <EditButton />
105
+ * </Can>
106
+ *
107
+ * // Show admin panel if user is admin
108
+ * <Can roles="admin">
109
+ * <AdminPanel />
110
+ * </Can>
111
+ *
112
+ * // Complex permission check
113
+ * <Can
114
+ * roles={['admin', 'moderator']}
115
+ * permissions={{
116
+ * operator: 'OR',
117
+ * permissions: ['post:edit', 'post:delete']
118
+ * }}
119
+ * requireAll={false}
120
+ * >
121
+ * <ManageButton />
122
+ * </Can>
123
+ * ```
124
+ */
125
+ export function Can<
126
+ TRole extends string = string,
127
+ TPermission extends string = string,
128
+ >({
129
+ children,
130
+ fallback = null,
131
+ roles,
132
+ permissions,
133
+ requireAll = true,
134
+ }: CanProps<TRole, TPermission>) {
135
+ const allowed = useCan({ roles, permissions, requireAll });
136
+ if (!allowed) return fallback;
137
+ return children;
138
+ }
139
+
140
+ // ============================================================================
141
+ // Higher-Order Component
142
+ // ============================================================================
143
+
144
+ /**
145
+ * Higher-order component that wraps a component with permission checks
146
+ *
147
+ * @example
148
+ * ```tsx
149
+ * const AdminButton = withPermission(Button, {
150
+ * roles: 'admin'
151
+ * });
152
+ *
153
+ * const EditButton = withPermission(Button, {
154
+ * permissions: 'post:edit'
155
+ * });
156
+ *
157
+ * // Use like regular component
158
+ * <AdminButton onClick={handleAdmin}>Admin Action</AdminButton>
159
+ * <EditButton onClick={handleEdit}>Edit Post</EditButton>
160
+ * ```
161
+ */
162
+ export function withPermission<
163
+ TRole extends string = string,
164
+ TPermission extends string = string,
165
+ TProps extends Record<string, unknown> = Record<string, unknown>,
166
+ >(
167
+ Component: ComponentType<TProps>,
168
+ options: WithPermissionOptions<TRole, TPermission>,
169
+ ): ComponentType<TProps> {
170
+ const WithPermissionWrapper = (props: TProps) => {
171
+ const allowed = useCan(options);
172
+ if (!allowed) return null;
173
+ return <Component {...props} />;
174
+ };
175
+ WithPermissionWrapper.displayName = `WithPermission(${Component.displayName ?? Component.name ?? 'Component'})`;
176
+ return WithPermissionWrapper as ComponentType<TProps>;
177
+ }
178
+
179
+ // ============================================================================
180
+ // Show/Hide Components
181
+ // ============================================================================
182
+
183
+ /**
184
+ * Component that shows children only when authenticated
185
+ */
186
+ export function ShowWhenAuthenticated({
187
+ children,
188
+ }: {
189
+ children: React.ReactNode;
190
+ }) {
191
+ const { status } = useAuthContext();
192
+ return status === 'authenticated' ? children : null;
193
+ }
194
+
195
+ /**
196
+ * Component that shows children only when NOT authenticated
197
+ */
198
+ export function ShowWhenUnauthenticated({
199
+ children,
200
+ }: {
201
+ children: React.ReactNode;
202
+ }) {
203
+ const { status } = useAuthContext();
204
+ return status === 'unauthenticated' ? children : null;
205
+ }
206
+
207
+ /**
208
+ * Component that shows children only while loading
209
+ */
210
+ export function ShowWhenLoading({ children }: { children: React.ReactNode }) {
211
+ const { status } = useAuthContext();
212
+ return status === 'loading' ? children : null;
213
+ }
214
+
215
+ /**
216
+ * Component that shows children only when there's an error
217
+ */
218
+ export function ShowWhenError({ children }: { children: React.ReactNode }) {
219
+ const { status } = useAuthContext();
220
+ return status === 'error' ? children : null;
221
+ }