@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
@@ -0,0 +1,237 @@
1
+ import type {
2
+ AuthSession,
3
+ PermissionPolicy,
4
+ PermissionRule,
5
+ WithPermissionOptions,
6
+ } from './types';
7
+ import { useAuthContext } from './AuthProvider';
8
+
9
+ // ============================================================================
10
+ // Core Hooks
11
+ // ============================================================================
12
+
13
+ /**
14
+ * Hook to access the entire auth context
15
+ */
16
+ export function useAuth() {
17
+ return useAuthContext();
18
+ }
19
+
20
+ /**
21
+ * Hook to get the current auth status
22
+ */
23
+ export function useAuthStatus() {
24
+ const { status } = useAuthContext();
25
+ return status;
26
+ }
27
+
28
+ /**
29
+ * Hook to check if user is authenticated
30
+ */
31
+ export function useIsAuthenticated() {
32
+ const { status } = useAuthContext();
33
+ return status === 'authenticated';
34
+ }
35
+
36
+ /**
37
+ * Hook to get the current session
38
+ */
39
+ export function useAuthSession<TSession extends AuthSession>() {
40
+ const { session } = useAuthContext();
41
+ return session as TSession | null;
42
+ }
43
+
44
+ /**
45
+ * Hook to get the current user
46
+ */
47
+ export function useAuthUser<TUser>() {
48
+ const { user } = useAuthContext();
49
+ return user as TUser | null;
50
+ }
51
+
52
+ /**
53
+ * Hook to get user roles
54
+ */
55
+ export function useAuthRoles<TRole extends string = string>() {
56
+ const { roles } = useAuthContext();
57
+ return roles as TRole[];
58
+ }
59
+
60
+ /**
61
+ * Hook to get user permissions
62
+ */
63
+ export function useAuthPermissions<TPermission extends string = string>() {
64
+ const { permissions } = useAuthContext();
65
+ return permissions as TPermission[];
66
+ }
67
+
68
+ /**
69
+ * Hook to get authentication error
70
+ */
71
+ export function useAuthError() {
72
+ const { error } = useAuthContext();
73
+ return error;
74
+ }
75
+
76
+ // ============================================================================
77
+ // Permission Hooks
78
+ // ============================================================================
79
+
80
+ /**
81
+ * Hook to check if user has specific permission(s)
82
+ * Supports permission policies with AND/OR operators
83
+ *
84
+ * @example
85
+ * ```tsx
86
+ * // Check single permission
87
+ * const canEdit = usePermission('post:edit');
88
+ *
89
+ * // Check multiple permissions (all required by default)
90
+ * const canManage = usePermission(['post:edit', 'post:delete']);
91
+ *
92
+ * // Check multiple permissions (any one required)
93
+ * const canModify = usePermission(['post:edit', 'post:delete'], { requireAll: false });
94
+ *
95
+ * // Check with policy
96
+ * const canAccess = usePermission({
97
+ * operator: 'OR',
98
+ * permissions: ['admin:access', 'moderator:access']
99
+ * });
100
+ * ```
101
+ */
102
+ export function usePermission<TPermission extends string = string>(
103
+ permission: TPermission | TPermission[] | PermissionPolicy<TPermission>,
104
+ options?: { requireAll?: boolean },
105
+ ) {
106
+ const { hasPermission } = useAuthContext();
107
+ return hasPermission(permission, options);
108
+ }
109
+
110
+ /**
111
+ * Hook to check if user has specific role(s)
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * // Check single role
116
+ * const isAdmin = useRole('admin');
117
+ *
118
+ * // Check multiple roles (all required by default)
119
+ * const isSuperAdmin = useRole(['admin', 'super']);
120
+ *
121
+ * // Check multiple roles (any one required)
122
+ * const isStaff = useRole(['admin', 'moderator'], { requireAll: false });
123
+ * ```
124
+ */
125
+ export function useRole<TRole extends string = string>(
126
+ roles: TRole | TRole[],
127
+ options?: { requireAll?: boolean },
128
+ ) {
129
+ const { hasRole } = useAuthContext();
130
+ return hasRole(roles, options);
131
+ }
132
+
133
+ /**
134
+ * Hook to check complex permission rules
135
+ * Combines role and permission checks with flexible logic
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * // Check if user has admin role AND edit permission
140
+ * const canAdminEdit = useCan({
141
+ * roles: 'admin',
142
+ * permissions: 'post:edit',
143
+ * requireAll: true
144
+ * });
145
+ *
146
+ * // Check if user has admin role OR edit permission
147
+ * const canAccess = useCan({
148
+ * roles: 'admin',
149
+ * permissions: 'post:edit',
150
+ * requireAll: false
151
+ * });
152
+ *
153
+ * // Complex policy
154
+ * const canManage = useCan({
155
+ * roles: ['admin', 'moderator'],
156
+ * permissions: {
157
+ * operator: 'OR',
158
+ * permissions: ['post:edit', 'post:delete']
159
+ * }
160
+ * });
161
+ * ```
162
+ */
163
+ export function useCan<
164
+ TRole extends string = string,
165
+ TPermission extends string = string,
166
+ >(
167
+ rule:
168
+ | WithPermissionOptions<TRole, TPermission>
169
+ | PermissionRule<TRole, TPermission>,
170
+ ) {
171
+ const { can } = useAuthContext();
172
+ return can(rule as PermissionRule<TRole, TPermission>);
173
+ }
174
+
175
+ // ============================================================================
176
+ // Token Hooks
177
+ // ============================================================================
178
+
179
+ /**
180
+ * Hook to get the current auth token
181
+ */
182
+ export function useAuthToken() {
183
+ const { getToken } = useAuthContext();
184
+ return getToken();
185
+ }
186
+
187
+ /**
188
+ * Hook to check if token is expired
189
+ */
190
+ export function useIsTokenExpired() {
191
+ const { isTokenExpired } = useAuthContext();
192
+ return isTokenExpired();
193
+ }
194
+
195
+ /**
196
+ * Hook to get time until token expiry in milliseconds
197
+ */
198
+ export function useTimeUntilExpiry() {
199
+ const { getTimeUntilExpiry } = useAuthContext();
200
+ return getTimeUntilExpiry();
201
+ }
202
+
203
+ // ============================================================================
204
+ // Action Hooks
205
+ // ============================================================================
206
+
207
+ /**
208
+ * Hook to get the login function
209
+ */
210
+ export function useLogin<TCredentials = unknown>() {
211
+ const { login } = useAuthContext();
212
+ return login as ((credentials: TCredentials) => Promise<unknown>) | undefined;
213
+ }
214
+
215
+ /**
216
+ * Hook to get the logout function
217
+ */
218
+ export function useLogout() {
219
+ const { logout } = useAuthContext();
220
+ return logout;
221
+ }
222
+
223
+ /**
224
+ * Hook to get the refresh function
225
+ */
226
+ export function useRefresh() {
227
+ const { refresh } = useAuthContext();
228
+ return refresh;
229
+ }
230
+
231
+ /**
232
+ * Hook to get the setSession function
233
+ */
234
+ export function useSetSession<TSession extends AuthSession>() {
235
+ const { setSession } = useAuthContext();
236
+ return setSession as (session: TSession | null) => Promise<unknown>;
237
+ }
@@ -0,0 +1,134 @@
1
+ // ============================================================================
2
+ // Core
3
+ // ============================================================================
4
+
5
+ export { createAuthAdapter } from './adapter';
6
+ export { AuthProvider, useAuthContext } from './AuthProvider';
7
+
8
+ // ============================================================================
9
+ // Storage
10
+ // ============================================================================
11
+
12
+ export {
13
+ createStorage,
14
+ createMemoryStorage,
15
+ createBrowserStorage,
16
+ createCookieStorage,
17
+ } from './storage';
18
+
19
+ // ============================================================================
20
+ // Utilities
21
+ // ============================================================================
22
+
23
+ export { createTokenManager } from './token-manager';
24
+ export {
25
+ expandPermissions,
26
+ expandRoles,
27
+ checkPermissions,
28
+ checkRoles,
29
+ evaluatePermissionRule,
30
+ } from './permission-checker';
31
+
32
+ // ============================================================================
33
+ // Client Adapters
34
+ // ============================================================================
35
+
36
+ export {
37
+ createGraphQLAuthAdapter,
38
+ createRESTAuthAdapter,
39
+ createAxiosAuthInterceptor,
40
+ createAuthFetch,
41
+ createApolloAuthLink,
42
+ } from './client-adapters';
43
+
44
+ export type {
45
+ GraphQLClientAdapterOptions,
46
+ RESTClientAdapterOptions,
47
+ } from './client-adapters';
48
+
49
+ // ============================================================================
50
+ // Hooks
51
+ // ============================================================================
52
+
53
+ export {
54
+ useAuth,
55
+ useAuthStatus,
56
+ useIsAuthenticated,
57
+ useAuthSession,
58
+ useAuthUser,
59
+ useAuthRoles,
60
+ useAuthPermissions,
61
+ useAuthError,
62
+ usePermission,
63
+ useRole,
64
+ useCan,
65
+ useAuthToken,
66
+ useIsTokenExpired,
67
+ useTimeUntilExpiry,
68
+ useLogin,
69
+ useLogout,
70
+ useRefresh,
71
+ useSetSession,
72
+ } from './hooks';
73
+
74
+ // ============================================================================
75
+ // Components
76
+ // ============================================================================
77
+
78
+ export {
79
+ RequireAuth,
80
+ Can,
81
+ withPermission,
82
+ ShowWhenAuthenticated,
83
+ ShowWhenUnauthenticated,
84
+ ShowWhenLoading,
85
+ ShowWhenError,
86
+ } from './components';
87
+
88
+ // ============================================================================
89
+ // Types
90
+ // ============================================================================
91
+
92
+ export type {
93
+ // Core types
94
+ AuthStatus,
95
+ TokenType,
96
+ RefreshStrategy,
97
+ AuthSession,
98
+ // Permission types
99
+ PermissionOperator,
100
+ PermissionPolicy,
101
+ PermissionRule,
102
+ PermissionHierarchy,
103
+ RoleHierarchy,
104
+ // State types
105
+ AuthAdapterState,
106
+ AuthAdapterSubscriber,
107
+ // Storage types
108
+ AuthStorage,
109
+ StorageType,
110
+ StorageOptions,
111
+ // Middleware types
112
+ AuthMiddleware,
113
+ // Token manager types
114
+ TokenManager,
115
+ // Adapter types
116
+ AuthAdapterConfig,
117
+ AuthAdapter,
118
+ // Context types
119
+ AuthContextValue,
120
+ // Component prop types
121
+ RequireAuthProps,
122
+ CanProps,
123
+ WithPermissionOptions,
124
+ // Client adapter types
125
+ GraphQLAuthClient,
126
+ RESTAuthClient,
127
+ ClientAdapter,
128
+ // Utility types
129
+ InferSession,
130
+ InferUser,
131
+ InferRole,
132
+ InferPermission,
133
+ InferCredentials,
134
+ } from './types';
@@ -0,0 +1,150 @@
1
+ import type {
2
+ PermissionHierarchy,
3
+ PermissionPolicy,
4
+ PermissionRule,
5
+ RoleHierarchy,
6
+ } from './types';
7
+
8
+ /**
9
+ * Expands permissions based on hierarchy
10
+ * e.g., if user has 'admin' and hierarchy defines admin: ['read', 'write'],
11
+ * user effectively has ['admin', 'read', 'write']
12
+ */
13
+ export function expandPermissions<T extends string>(
14
+ permissions: T[],
15
+ hierarchy?: PermissionHierarchy<T>,
16
+ ): T[] {
17
+ if (!hierarchy) return permissions;
18
+
19
+ const expanded = new Set<T>(permissions);
20
+ const queue = [...permissions];
21
+
22
+ while (queue.length > 0) {
23
+ const current = queue.shift();
24
+ if (!current) continue;
25
+ const children = hierarchy[current];
26
+
27
+ if (children) {
28
+ for (const child of children) {
29
+ if (!expanded.has(child)) {
30
+ expanded.add(child);
31
+ queue.push(child);
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ return Array.from(expanded);
38
+ }
39
+
40
+ /**
41
+ * Expands roles based on hierarchy
42
+ * e.g., if user has 'admin' and hierarchy defines admin: ['moderator', 'user'],
43
+ * user effectively has ['admin', 'moderator', 'user']
44
+ */
45
+ export function expandRoles<T extends string>(
46
+ roles: T[],
47
+ hierarchy?: RoleHierarchy<T>,
48
+ ): T[] {
49
+ if (!hierarchy) return roles;
50
+
51
+ const expanded = new Set<T>(roles);
52
+ const queue = [...roles];
53
+
54
+ while (queue.length > 0) {
55
+ const current = queue.shift();
56
+ if (!current) continue;
57
+ const children = hierarchy[current];
58
+
59
+ if (children) {
60
+ for (const child of children) {
61
+ if (!expanded.has(child)) {
62
+ expanded.add(child);
63
+ queue.push(child);
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ return Array.from(expanded);
70
+ }
71
+
72
+ /**
73
+ * Checks if target permissions match against user permissions
74
+ * Supports both array of permissions and permission policies (AND/OR operations)
75
+ */
76
+ export function checkPermissions<T extends string>(
77
+ userPermissions: T[],
78
+ target: T | T[] | PermissionPolicy<T>,
79
+ options?: { requireAll?: boolean },
80
+ ): boolean {
81
+ // Handle permission policy (with AND/OR operator)
82
+ if (typeof target === 'object' && 'permissions' in target) {
83
+ const policy = target as PermissionPolicy<T>;
84
+ const operator = policy.operator ?? 'AND';
85
+
86
+ if (operator === 'AND') {
87
+ return policy.permissions.every((p) => userPermissions.includes(p));
88
+ } else {
89
+ return policy.permissions.some((p) => userPermissions.includes(p));
90
+ }
91
+ }
92
+
93
+ // Handle simple string or array
94
+ const targets = Array.isArray(target) ? target : [target];
95
+ const requireAll = options?.requireAll ?? true;
96
+
97
+ if (targets.length === 0) return true;
98
+
99
+ return requireAll
100
+ ? targets.every((p) => userPermissions.includes(p))
101
+ : targets.some((p) => userPermissions.includes(p));
102
+ }
103
+
104
+ /**
105
+ * Checks if target roles match against user roles
106
+ */
107
+ export function checkRoles<T extends string>(
108
+ userRoles: T[],
109
+ target: T | T[],
110
+ options?: { requireAll?: boolean },
111
+ ): boolean {
112
+ const targets = Array.isArray(target) ? target : [target];
113
+ const requireAll = options?.requireAll ?? true;
114
+
115
+ if (targets.length === 0) return true;
116
+
117
+ return requireAll
118
+ ? targets.every((r) => userRoles.includes(r))
119
+ : targets.some((r) => userRoles.includes(r));
120
+ }
121
+
122
+ /**
123
+ * Evaluates a permission rule (combination of roles and permissions)
124
+ */
125
+ export function evaluatePermissionRule<
126
+ TRole extends string = string,
127
+ TPermission extends string = string,
128
+ >(
129
+ userRoles: TRole[],
130
+ userPermissions: TPermission[],
131
+ rule: PermissionRule<TRole, TPermission>,
132
+ ): boolean {
133
+ if (!rule.roles && !rule.permissions) {
134
+ return true;
135
+ }
136
+
137
+ const requireAll = rule.requireAll ?? true;
138
+
139
+ const roleAllowed = rule.roles
140
+ ? checkRoles(userRoles, rule.roles, { requireAll })
141
+ : true;
142
+
143
+ const permissionAllowed = rule.permissions
144
+ ? checkPermissions(userPermissions, rule.permissions, { requireAll })
145
+ : true;
146
+
147
+ return requireAll
148
+ ? roleAllowed && permissionAllowed
149
+ : roleAllowed || permissionAllowed;
150
+ }