@tulip-systems/core 0.2.1 → 0.4.0

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 (368) hide show
  1. package/dist/auth/client.d.ts +3 -1
  2. package/dist/auth/client.js +4 -2
  3. package/dist/auth/server.d.ts +2 -2
  4. package/dist/auth/server.js +3 -3
  5. package/dist/auth.d.ts +2 -1
  6. package/dist/auth.js +3 -2
  7. package/dist/commands/client.d.ts +4 -4
  8. package/dist/commands/client.js +4 -4
  9. package/dist/components/client.d.ts +5 -3
  10. package/dist/components/client.js +6 -4
  11. package/dist/components/common/icons.d.ts +5 -2
  12. package/dist/components/common/icons.d.ts.map +1 -1
  13. package/dist/components/common/icons.js +4 -1
  14. package/dist/components/common/icons.js.map +1 -1
  15. package/dist/components/common/status.d.ts +3 -3
  16. package/dist/components/editor/components/content.client.d.ts +2 -2
  17. package/dist/components/editor/components/fixed-menu.client.d.ts +2 -2
  18. package/dist/components/editor/context.client.d.ts +2 -2
  19. package/dist/components/editor/index.client.d.ts +2 -2
  20. package/dist/components/editor/preview.client.d.ts +2 -2
  21. package/dist/components/header/back-button.client.d.ts +2 -2
  22. package/dist/components/header/bottom-bar.client.d.ts +5 -5
  23. package/dist/components/header/bottom-bar.client.d.ts.map +1 -1
  24. package/dist/components/header/bottom-bar.client.js.map +1 -1
  25. package/dist/components/header/breadcrumbs.client.d.ts +7 -7
  26. package/dist/components/header/breadcrumbs.client.js +1 -1
  27. package/dist/components/header/header.client.d.ts +2 -2
  28. package/dist/components/header/mobile-nav-switcher.client.d.ts +2 -2
  29. package/dist/components/header/top-bar.client.d.ts +4 -4
  30. package/dist/components/layouts/admin-content.client.d.ts +13 -0
  31. package/dist/components/layouts/admin-content.client.d.ts.map +1 -0
  32. package/dist/components/layouts/admin-layout.d.ts +8 -0
  33. package/dist/components/layouts/admin-layout.d.ts.map +1 -0
  34. package/dist/components/layouts/admin-layout.js +15 -0
  35. package/dist/components/layouts/admin-layout.js.map +1 -0
  36. package/dist/components/layouts/admin-loading.d.ts +3 -3
  37. package/dist/components/layouts/admin-loading.d.ts.map +1 -1
  38. package/dist/components/layouts/admin-loading.js +2 -2
  39. package/dist/components/layouts/admin-loading.js.map +1 -1
  40. package/dist/components/layouts/empty-page.d.ts +4 -4
  41. package/dist/components/layouts/list-layout.d.ts +2 -2
  42. package/dist/components/layouts/not-found-page.d.ts +4 -3
  43. package/dist/components/layouts/not-found-page.d.ts.map +1 -1
  44. package/dist/components/layouts/not-found-page.js +8 -2
  45. package/dist/components/layouts/not-found-page.js.map +1 -1
  46. package/dist/components/layouts/not-found-section.js +1 -1
  47. package/dist/components/layouts/not-found-section.js.map +1 -1
  48. package/dist/components/layouts/providers.client.d.ts +2 -2
  49. package/dist/components/layouts/root-layout.server.d.ts +2 -2
  50. package/dist/components/layouts/root-layout.server.d.ts.map +1 -1
  51. package/dist/components/layouts/root-loading.d.ts +7 -0
  52. package/dist/components/layouts/root-loading.d.ts.map +1 -0
  53. package/dist/components/layouts/root-loading.js +14 -0
  54. package/dist/components/layouts/root-loading.js.map +1 -0
  55. package/dist/components/layouts/tab-layout.d.ts +2 -2
  56. package/dist/components/lists/data-list.d.ts +5 -5
  57. package/dist/components/lists/data-stack.d.ts +8 -8
  58. package/dist/components/{layouts → navigation}/admin-sidebar-header.client.js +8 -9
  59. package/dist/components/navigation/admin-sidebar-header.client.js.map +1 -0
  60. package/dist/components/navigation/admin-sidebar-paths.client.d.ts +81 -0
  61. package/dist/components/navigation/admin-sidebar-paths.client.d.ts.map +1 -0
  62. package/dist/components/navigation/admin-sidebar-paths.client.js +143 -0
  63. package/dist/components/navigation/admin-sidebar-paths.client.js.map +1 -0
  64. package/dist/components/navigation/admin-sidebar-skeleton.js +31 -0
  65. package/dist/components/navigation/admin-sidebar-skeleton.js.map +1 -0
  66. package/dist/components/server.d.ts +1 -1
  67. package/dist/components/server.js +1 -1
  68. package/dist/components/ui/accordion.d.ts +5 -5
  69. package/dist/components/ui/alert-dialog.d.ts +12 -12
  70. package/dist/components/ui/alert.d.ts +6 -6
  71. package/dist/components/ui/aspect-ratio.d.ts +2 -2
  72. package/dist/components/ui/avatar.client.d.ts +4 -4
  73. package/dist/components/ui/badge.d.ts +4 -4
  74. package/dist/components/ui/breadcrumb.d.ts +8 -8
  75. package/dist/components/ui/button.d.ts +4 -4
  76. package/dist/components/ui/calendar.d.ts +2 -2
  77. package/dist/components/ui/card.d.ts +7 -7
  78. package/dist/components/ui/carousel.d.ts +6 -6
  79. package/dist/components/ui/chart.client.d.ts +5 -5
  80. package/dist/components/ui/checkbox.d.ts +2 -2
  81. package/dist/components/ui/collapsible.client.d.ts +4 -4
  82. package/dist/components/ui/color-picker.client.d.ts +2 -2
  83. package/dist/components/ui/combobox-dropdown.client.d.ts +2 -2
  84. package/dist/components/ui/combobox.client.d.ts +2 -2
  85. package/dist/components/ui/command.d.ts +10 -10
  86. package/dist/components/ui/context-menu.d.ts +16 -16
  87. package/dist/components/ui/dialog.client.d.ts +11 -11
  88. package/dist/components/ui/drawer.client.d.ts +11 -11
  89. package/dist/components/ui/dropdown-menu.d.ts +16 -16
  90. package/dist/components/ui/form.client.d.ts +8 -8
  91. package/dist/components/ui/hover-card.client.d.ts +4 -4
  92. package/dist/components/ui/input.d.ts +2 -2
  93. package/dist/components/ui/label.d.ts +2 -2
  94. package/dist/components/ui/navigation-menu.d.ts +11 -11
  95. package/dist/components/ui/pagination.d.ts +8 -8
  96. package/dist/components/ui/popover.d.ts +5 -5
  97. package/dist/components/ui/progress.client.d.ts +2 -2
  98. package/dist/components/ui/radio-group.d.ts +3 -3
  99. package/dist/components/ui/resizable.client.d.ts +4 -4
  100. package/dist/components/ui/scroll-area.d.ts +3 -3
  101. package/dist/components/ui/select.client.d.ts +11 -11
  102. package/dist/components/ui/separator.d.ts +2 -2
  103. package/dist/components/ui/sheet.client.d.ts +9 -9
  104. package/dist/components/ui/sidebar.client.d.ts +24 -24
  105. package/dist/components/ui/sidebar.client.js +1 -1
  106. package/dist/components/ui/skeleton.d.ts +2 -2
  107. package/dist/components/ui/slider.d.ts +2 -2
  108. package/dist/components/ui/sonner.client.d.ts +2 -2
  109. package/dist/components/ui/sonner.client.js +1 -1
  110. package/dist/components/ui/spinner.js +63 -0
  111. package/dist/components/ui/spinner.js.map +1 -0
  112. package/dist/components/ui/switch.d.ts +2 -2
  113. package/dist/components/ui/tabs.d.ts +5 -5
  114. package/dist/components/ui/textarea.d.ts +2 -2
  115. package/dist/components/ui/time-input.client.d.ts +2 -2
  116. package/dist/components/ui/toggle-group.client.d.ts +3 -3
  117. package/dist/components/ui/toggle.d.ts +4 -4
  118. package/dist/components/ui/tooltip.client.d.ts +5 -5
  119. package/dist/components/ui/tree.client.d.ts +5 -5
  120. package/dist/components/ui/tree.client.d.ts.map +1 -1
  121. package/dist/components.d.ts +6 -5
  122. package/dist/components.js +8 -7
  123. package/dist/config/server.d.ts +2 -3
  124. package/dist/config/server.js +3 -4
  125. package/dist/config.d.ts +3 -2
  126. package/dist/config.js +2 -1
  127. package/dist/lib/client.js +1 -1
  128. package/dist/lib/hooks/use-action.d.ts +2 -2
  129. package/dist/modules/auth/components/allowed.client.js +1 -1
  130. package/dist/modules/auth/components/allowed.client.js.map +1 -1
  131. package/dist/modules/auth/components/auth-layout.server.d.ts +3 -4
  132. package/dist/modules/auth/components/auth-layout.server.d.ts.map +1 -1
  133. package/dist/modules/auth/components/auth-layout.server.js +1 -4
  134. package/dist/modules/auth/components/auth-layout.server.js.map +1 -1
  135. package/dist/modules/auth/components/auth-loading.d.ts +7 -0
  136. package/dist/modules/auth/components/auth-loading.d.ts.map +1 -0
  137. package/dist/modules/auth/components/auth-loading.js +18 -0
  138. package/dist/modules/auth/components/auth-loading.js.map +1 -0
  139. package/dist/modules/auth/components/forget-password-page.client.js +2 -2
  140. package/dist/modules/auth/components/guard.client.js +16 -0
  141. package/dist/modules/auth/components/guard.client.js.map +1 -0
  142. package/dist/modules/auth/components/login-page.client.d.ts +1 -5
  143. package/dist/modules/auth/components/login-page.client.d.ts.map +1 -1
  144. package/dist/modules/auth/components/login-page.client.js +41 -31
  145. package/dist/modules/auth/components/login-page.client.js.map +1 -1
  146. package/dist/modules/auth/components/reset-password-page.client.js +3 -3
  147. package/dist/modules/auth/components/update-password-command.d.ts +1 -1
  148. package/dist/modules/auth/components/update-password-command.js +1 -1
  149. package/dist/modules/auth/handler/client.client.d.ts +48 -48
  150. package/dist/modules/auth/handler/client.client.d.ts.map +1 -1
  151. package/dist/modules/auth/handler/proxy.server.d.ts +13 -0
  152. package/dist/modules/auth/handler/proxy.server.d.ts.map +1 -0
  153. package/dist/modules/auth/handler/proxy.server.js +22 -0
  154. package/dist/modules/auth/handler/proxy.server.js.map +1 -0
  155. package/dist/modules/auth/handler/server.server.js +3 -1
  156. package/dist/modules/auth/handler/server.server.js.map +1 -1
  157. package/dist/modules/auth/hooks/use-permission.d.ts +26 -0
  158. package/dist/modules/auth/hooks/use-permission.d.ts.map +1 -0
  159. package/dist/modules/auth/hooks/{use-permission.client.js → use-permission.js} +5 -3
  160. package/dist/modules/auth/hooks/use-permission.js.map +1 -0
  161. package/dist/modules/auth/hooks/use-session.d.ts +34 -0
  162. package/dist/modules/auth/hooks/use-session.d.ts.map +1 -0
  163. package/dist/modules/auth/hooks/use-session.js +21 -0
  164. package/dist/modules/auth/hooks/use-session.js.map +1 -0
  165. package/dist/modules/auth/lib/helpers.server.d.ts +2 -2
  166. package/dist/modules/auth/lib/helpers.server.d.ts.map +1 -1
  167. package/dist/modules/auth/lib/helpers.server.js +3 -6
  168. package/dist/modules/auth/lib/helpers.server.js.map +1 -1
  169. package/dist/modules/auth/lib/validators.d.ts +4 -4
  170. package/dist/modules/auth/lib/validators.d.ts.map +1 -1
  171. package/dist/modules/auth/lib/validators.js +1 -1
  172. package/dist/modules/auth/lib/validators.js.map +1 -1
  173. package/dist/modules/commands/components/alert-dialog-command.client.d.ts +11 -11
  174. package/dist/modules/commands/components/alert-dialog-command.client.js +1 -1
  175. package/dist/modules/commands/components/click-command.client.d.ts +2 -2
  176. package/dist/modules/commands/components/command-trigger.client.d.ts +4 -4
  177. package/dist/modules/commands/components/command-trigger.client.js +1 -1
  178. package/dist/modules/commands/components/dialog-command.client.d.ts +8 -8
  179. package/dist/modules/commands/components/dialog-command.client.js +1 -1
  180. package/dist/modules/commands/components/dropdown-command.client.d.ts +5 -5
  181. package/dist/modules/commands/components/empty-command.client.d.ts +2 -2
  182. package/dist/modules/commands/components/form-dialog-command.client.d.ts +12 -12
  183. package/dist/modules/commands/components/form-dialog-command.client.js +1 -1
  184. package/dist/modules/commands/hooks/use-command-action.client.js +1 -1
  185. package/dist/modules/commands/hooks/use-command-menu.client.js +1 -1
  186. package/dist/modules/commands/hooks/use-command-menu.client.js.map +1 -1
  187. package/dist/modules/commands/menus/context-menu.client.d.ts +2 -2
  188. package/dist/modules/commands/menus/dropdown-menu.client.d.ts +8 -4
  189. package/dist/modules/commands/menus/dropdown-menu.client.d.ts.map +1 -1
  190. package/dist/modules/commands/menus/dropdown-menu.client.js +9 -1
  191. package/dist/modules/commands/menus/dropdown-menu.client.js.map +1 -1
  192. package/dist/modules/commands/menus/inline-menu.client.d.ts +8 -4
  193. package/dist/modules/commands/menus/inline-menu.client.d.ts.map +1 -1
  194. package/dist/modules/commands/menus/inline-menu.client.js +12 -1
  195. package/dist/modules/commands/menus/inline-menu.client.js.map +1 -1
  196. package/dist/modules/commands/menus/responsive-menu.client.d.ts +2 -1
  197. package/dist/modules/commands/menus/responsive-menu.client.d.ts.map +1 -1
  198. package/dist/modules/commands/menus/responsive-menu.client.js +6 -3
  199. package/dist/modules/commands/menus/responsive-menu.client.js.map +1 -1
  200. package/dist/modules/commands/utils/archive-command.client.d.ts +3 -3
  201. package/dist/modules/commands/utils/delete-command.client.d.ts +2 -2
  202. package/dist/modules/commands/utils/send-mail-command.client.d.ts +2 -2
  203. package/dist/modules/commands/utils/send-mail-command.client.d.ts.map +1 -1
  204. package/dist/modules/commands/utils/send-mail-command.client.js +3 -3
  205. package/dist/modules/config/db/helpers.d.ts +5 -5
  206. package/dist/modules/config/db/helpers.d.ts.map +1 -1
  207. package/dist/modules/config/lib/config.server.d.ts +0 -2
  208. package/dist/modules/config/lib/config.server.d.ts.map +1 -1
  209. package/dist/modules/config/lib/config.server.js.map +1 -1
  210. package/dist/modules/config/lib/resolve.server.d.ts +192 -190
  211. package/dist/modules/config/lib/resolve.server.d.ts.map +1 -1
  212. package/dist/modules/config/paths/helpers.d.ts +11 -0
  213. package/dist/modules/config/paths/helpers.d.ts.map +1 -0
  214. package/dist/modules/config/paths/helpers.js +9 -0
  215. package/dist/modules/config/paths/helpers.js.map +1 -0
  216. package/dist/modules/config/paths/types.d.ts +8 -37
  217. package/dist/modules/config/paths/types.d.ts.map +1 -1
  218. package/dist/modules/config/router/client.server.d.ts +4 -4
  219. package/dist/modules/config/router/client.server.d.ts.map +1 -1
  220. package/dist/modules/config/router/context.server.d.ts +194 -192
  221. package/dist/modules/config/router/context.server.d.ts.map +1 -1
  222. package/dist/modules/config/router/init.server.d.ts +200 -198
  223. package/dist/modules/config/router/init.server.d.ts.map +1 -1
  224. package/dist/modules/data-tables/components/cell/common.client.d.ts +5 -5
  225. package/dist/modules/data-tables/components/cell/common.client.d.ts.map +1 -1
  226. package/dist/modules/data-tables/components/column-header.d.ts +2 -2
  227. package/dist/modules/data-tables/components/filters/combobox.client.d.ts +2 -2
  228. package/dist/modules/data-tables/components/filters/combobox.client.d.ts.map +1 -1
  229. package/dist/modules/data-tables/components/filters/combobox.client.js +1 -1
  230. package/dist/modules/data-tables/components/filters/combobox.client.js.map +1 -1
  231. package/dist/modules/data-tables/components/filters/slider.client.d.ts +2 -2
  232. package/dist/modules/data-tables/components/filters/slider.client.d.ts.map +1 -1
  233. package/dist/modules/data-tables/components/header.d.ts +4 -4
  234. package/dist/modules/data-tables/components/layout.d.ts +2 -2
  235. package/dist/modules/data-tables/components/search-input.client.d.ts +2 -2
  236. package/dist/modules/data-tables/components/search-input.client.d.ts.map +1 -1
  237. package/dist/modules/data-tables/components/skeleton.d.ts +2 -2
  238. package/dist/modules/data-tables/components/table.d.ts +7 -7
  239. package/dist/modules/data-tables/components/toolbar.d.ts +3 -3
  240. package/dist/modules/data-tables/hooks/use-context.client.d.ts +2 -2
  241. package/dist/modules/data-tables/hooks/use-context.client.d.ts.map +1 -1
  242. package/dist/modules/data-tables/lib/filters/resolvers.d.ts +1 -1
  243. package/dist/modules/data-tables/lib/filters/resolvers.d.ts.map +1 -1
  244. package/dist/modules/data-tables/lib/search-params.d.ts +5 -5
  245. package/dist/modules/data-tables/lib/search-params.d.ts.map +1 -1
  246. package/dist/modules/data-tables/lib/types.d.ts +1 -1
  247. package/dist/modules/data-tables/tables/data-table/components/table.d.ts +2 -2
  248. package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.ts +2 -2
  249. package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.ts.map +1 -1
  250. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.d.ts +2 -2
  251. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.d.ts.map +1 -1
  252. package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.d.ts +2 -2
  253. package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.d.ts +3 -3
  254. package/dist/modules/data-tables/tables/inline-table/components/inputs/read-only.d.ts +2 -2
  255. package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.d.ts +2 -2
  256. package/dist/modules/data-tables/tables/inline-table/components/table.d.ts +2 -2
  257. package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.ts +2 -2
  258. package/dist/modules/data-tables/tables/inline-table/hooks/context.client.js +1 -1
  259. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.js +1 -1
  260. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.js.map +1 -1
  261. package/dist/modules/inline-edit/components/combobox-dropdown.client.d.ts +2 -2
  262. package/dist/modules/inline-edit/components/combobox-dropdown.client.d.ts.map +1 -1
  263. package/dist/modules/inline-edit/components/combobox.client.d.ts +2 -2
  264. package/dist/modules/inline-edit/components/combobox.client.d.ts.map +1 -1
  265. package/dist/modules/inline-edit/components/date-input.client.d.ts +2 -2
  266. package/dist/modules/inline-edit/components/date-input.client.js +1 -1
  267. package/dist/modules/inline-edit/components/date-picker.client.d.ts +2 -2
  268. package/dist/modules/inline-edit/components/editor.client.d.ts +2 -2
  269. package/dist/modules/inline-edit/components/input-toggle.client.d.ts +2 -2
  270. package/dist/modules/inline-edit/components/input.client.d.ts +3 -3
  271. package/dist/modules/inline-edit/components/richtext.client.d.ts +2 -2
  272. package/dist/modules/inline-edit/components/select.client.d.ts +6 -6
  273. package/dist/modules/inline-edit/components/switch.client.d.ts +2 -2
  274. package/dist/modules/inline-edit/components/toggle.client.d.ts +2 -2
  275. package/dist/modules/inline-edit/hooks/context.client.d.ts +2 -2
  276. package/dist/modules/inline-edit/hooks/use-inline.client.js +1 -1
  277. package/dist/modules/inline-edit/hooks/use-inline.client.js.map +1 -1
  278. package/dist/modules/uploads/components/button.client.d.ts +2 -2
  279. package/dist/modules/uploads/components/button.client.d.ts.map +1 -1
  280. package/dist/modules/uploads/components/images/grid.client.d.ts +2 -2
  281. package/dist/modules/uploads/components/images/grid.client.d.ts.map +1 -1
  282. package/dist/modules/uploads/components/images/grid.client.js +1 -1
  283. package/dist/modules/uploads/components/images/input.client.d.ts +2 -2
  284. package/dist/modules/uploads/components/images/input.client.d.ts.map +1 -1
  285. package/dist/modules/uploads/components/preview-dialog.client.d.ts +2 -2
  286. package/dist/modules/uploads/components/preview-dialog.client.d.ts.map +1 -1
  287. package/dist/modules/uploads/components/zone.client.d.ts +2 -2
  288. package/dist/modules/uploads/components/zone.client.d.ts.map +1 -1
  289. package/dist/modules/uploads/hooks/use-upload-image.client.js +1 -1
  290. package/dist/modules/uploads/lib/proxy.server.d.ts +1 -1
  291. package/dist/modules/uploads/lib/proxy.server.js +4 -4
  292. package/dist/modules/uploads/lib/route.server.d.ts +1 -1
  293. package/dist/modules/uploads/lib/route.server.js +2 -2
  294. package/dist/modules/uploads/lib/router.server.d.ts +965 -965
  295. package/dist/modules/uploads/lib/router.server.d.ts.map +1 -1
  296. package/dist/modules/uploads/lib/router.server.js +2 -2
  297. package/dist/modules/uploads/lib/schema.d.ts +61 -61
  298. package/dist/modules/uploads/lib/validators.d.ts +56 -56
  299. package/dist/modules/uploads/lib/validators.d.ts.map +1 -1
  300. package/package.json +5 -4
  301. package/src/components/common/icons.tsx +6 -0
  302. package/src/components/entry.client.ts +6 -0
  303. package/src/components/entry.server.ts +1 -1
  304. package/src/components/entry.ts +1 -0
  305. package/src/components/header/bottom-bar.client.tsx +2 -2
  306. package/src/components/layouts/admin-layout.tsx +13 -0
  307. package/src/components/layouts/admin-loading.tsx +1 -1
  308. package/src/components/layouts/not-found-page.tsx +9 -1
  309. package/src/components/layouts/not-found-section.tsx +10 -5
  310. package/src/components/layouts/root-loading.tsx +9 -0
  311. package/src/components/{layouts → navigation}/admin-sidebar-header.client.tsx +11 -6
  312. package/src/components/navigation/admin-sidebar-paths.client.tsx +190 -0
  313. package/src/components/navigation/admin-sidebar-skeleton.tsx +44 -0
  314. package/src/components/navigation/admin-sidebar.client.tsx +123 -0
  315. package/src/components/ui/spinner.tsx +51 -0
  316. package/src/modules/auth/components/allowed.client.tsx +1 -1
  317. package/src/modules/auth/components/auth-layout.server.tsx +2 -10
  318. package/src/modules/auth/components/auth-loading.tsx +11 -0
  319. package/src/modules/auth/components/guard.client.tsx +12 -0
  320. package/src/modules/auth/components/login-page.client.tsx +45 -37
  321. package/src/modules/auth/entry.client.ts +2 -0
  322. package/src/modules/auth/entry.server.ts +1 -1
  323. package/src/modules/auth/entry.ts +1 -0
  324. package/src/modules/auth/handler/proxy.server.ts +28 -0
  325. package/src/modules/auth/handler/server.server.ts +5 -0
  326. package/src/modules/auth/hooks/{use-permission.client.ts → use-permission.ts} +4 -2
  327. package/src/modules/auth/hooks/use-session.ts +18 -0
  328. package/src/modules/auth/lib/helpers.server.ts +1 -5
  329. package/src/modules/auth/lib/validators.ts +1 -1
  330. package/src/modules/commands/hooks/use-command-menu.client.tsx +6 -7
  331. package/src/modules/commands/menus/dropdown-menu.client.tsx +11 -2
  332. package/src/modules/commands/menus/inline-menu.client.tsx +14 -1
  333. package/src/modules/commands/menus/responsive-menu.client.tsx +11 -2
  334. package/src/modules/config/entry.server.ts +1 -2
  335. package/src/modules/config/entry.ts +3 -0
  336. package/src/modules/config/lib/config.server.ts +1 -2
  337. package/src/modules/config/lib/router.server.ts +64 -0
  338. package/src/modules/config/paths/helpers.ts +6 -0
  339. package/src/modules/config/paths/types.ts +26 -38
  340. package/src/modules/data-tables/components/filters/combobox.client.tsx +1 -1
  341. package/src/modules/data-tables/tables/inline-table/hooks/use-input.client.ts +1 -1
  342. package/src/modules/inline-edit/hooks/use-inline.client.tsx +1 -1
  343. package/dist/components/layouts/admin-layout.server.d.ts +0 -14
  344. package/dist/components/layouts/admin-layout.server.d.ts.map +0 -1
  345. package/dist/components/layouts/admin-layout.server.js +0 -26
  346. package/dist/components/layouts/admin-layout.server.js.map +0 -1
  347. package/dist/components/layouts/admin-sidebar-context.client.js +0 -28
  348. package/dist/components/layouts/admin-sidebar-context.client.js.map +0 -1
  349. package/dist/components/layouts/admin-sidebar-header.client.js.map +0 -1
  350. package/dist/components/layouts/admin-sidebar.client.js +0 -51
  351. package/dist/components/layouts/admin-sidebar.client.js.map +0 -1
  352. package/dist/modules/auth/components/allowed.server.d.ts +0 -23
  353. package/dist/modules/auth/components/allowed.server.d.ts.map +0 -1
  354. package/dist/modules/auth/components/allowed.server.js +0 -24
  355. package/dist/modules/auth/components/allowed.server.js.map +0 -1
  356. package/dist/modules/auth/hooks/use-permission.client.js.map +0 -1
  357. package/dist/modules/config/paths/create.server.d.ts +0 -14
  358. package/dist/modules/config/paths/create.server.d.ts.map +0 -1
  359. package/dist/modules/config/paths/create.server.js +0 -12
  360. package/dist/modules/config/paths/create.server.js.map +0 -1
  361. package/dist/modules/config/paths/get.server.js +0 -47
  362. package/dist/modules/config/paths/get.server.js.map +0 -1
  363. package/src/components/layouts/admin-layout.server.tsx +0 -31
  364. package/src/components/layouts/admin-sidebar-context.client.tsx +0 -34
  365. package/src/components/layouts/admin-sidebar.client.tsx +0 -88
  366. package/src/modules/auth/components/allowed.server.tsx +0 -41
  367. package/src/modules/config/paths/create.server.ts +0 -10
  368. package/src/modules/config/paths/get.server.ts +0 -69
@@ -1,15 +1,17 @@
1
1
  import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/ui/breadcrumb.js";
2
- import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./components/ui/popover.js";
2
+ import { ScrollArea, ScrollBar } from "./components/ui/scroll-area.js";
3
3
  import { Button, buttonVariants } from "./components/ui/button.js";
4
4
  import { Input } from "./components/ui/input.js";
5
5
  import { Separator } from "./components/ui/separator.js";
6
+ import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./components/ui/popover.js";
6
7
  import { Toggle, toggleVariants } from "./components/ui/toggle.js";
7
8
  import { Icon, Icons } from "./components/common/icons.js";
8
9
  import { CreateStatusComponentProps, StatusBadge, StatusField, createStatusConfig, createStatusVariants, findStatus } from "./components/common/status.js";
9
- import { AdminLoading } from "./components/layouts/admin-loading.js";
10
+ import { AdminLoadingLayout } from "./components/layouts/admin-loading.js";
10
11
  import { EmptyPage, EmptyPageDescription, EmptyPageProps, EmptyPageTitle } from "./components/layouts/empty-page.js";
11
12
  import { ListLayout } from "./components/layouts/list-layout.js";
12
- import { NotFoundPage } from "./components/layouts/not-found-page.js";
13
+ import { AdminNotFoundPage, NotFoundPage } from "./components/layouts/not-found-page.js";
14
+ import { RootLoading } from "./components/layouts/root-loading.js";
13
15
  import { Tab, TabLayout, TabLayoutProps } from "./components/layouts/tab-layout.js";
14
16
  import { DataList, DataListItem, DataListItemProps, DataListProps, DataListTitle, DataListTitleProps, DataListValue, DataListValueProps } from "./components/lists/data-list.js";
15
17
  import { DataStack, DataStackColumn, DataStackColumnProps, DataStackGrid, DataStackGridProps, DataStackLayout, DataStackLayoutProps, DataStackProps, DataStackRow, DataStackRowProps, DataStackTitle, DataStackTitleProps, DataStackValue, DataStackValueProps } from "./components/lists/data-stack.js";
@@ -29,10 +31,9 @@ import { Label } from "./components/ui/label.js";
29
31
  import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle } from "./components/ui/navigation-menu.js";
30
32
  import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/ui/pagination.js";
31
33
  import { RadioGroup, RadioGroupItem } from "./components/ui/radio-group.js";
32
- import { ScrollArea, ScrollBar } from "./components/ui/scroll-area.js";
33
34
  import { Skeleton } from "./components/ui/skeleton.js";
34
35
  import { Slider } from "./components/ui/slider.js";
35
36
  import { Switch } from "./components/ui/switch.js";
36
37
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/ui/tabs.js";
37
38
  import { Textarea } from "./components/ui/textarea.js";
38
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdminLoading, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreateStatusComponentProps, DataList, DataListItem, DataListItemProps, DataListProps, DataListTitle, DataListTitleProps, DataListValue, DataListValueProps, DataStack, DataStackColumn, DataStackColumnProps, DataStackGrid, DataStackGridProps, DataStackLayout, DataStackLayoutProps, DataStackProps, DataStackRow, DataStackRowProps, DataStackTitle, DataStackTitleProps, DataStackValue, DataStackValueProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyPage, EmptyPageDescription, EmptyPageProps, EmptyPageTitle, Icon, Icons, Input, Label, ListLayout, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFoundPage, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Separator, Skeleton, Slider, StatusBadge, StatusField, Switch, Tab, TabLayout, TabLayoutProps, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, badgeVariants, buttonVariants, createStatusConfig, createStatusVariants, findStatus, navigationMenuTriggerStyle, toggleVariants };
39
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdminLoadingLayout, AdminNotFoundPage, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreateStatusComponentProps, DataList, DataListItem, DataListItemProps, DataListProps, DataListTitle, DataListTitleProps, DataListValue, DataListValueProps, DataStack, DataStackColumn, DataStackColumnProps, DataStackGrid, DataStackGridProps, DataStackLayout, DataStackLayoutProps, DataStackProps, DataStackRow, DataStackRowProps, DataStackTitle, DataStackTitleProps, DataStackValue, DataStackValueProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyPage, EmptyPageDescription, EmptyPageProps, EmptyPageTitle, Icon, Icons, Input, Label, ListLayout, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFoundPage, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, RadioGroup, RadioGroupItem, RootLoading, ScrollArea, ScrollBar, Separator, Skeleton, Slider, StatusBadge, StatusField, Switch, Tab, TabLayout, TabLayoutProps, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, badgeVariants, buttonVariants, createStatusConfig, createStatusVariants, findStatus, navigationMenuTriggerStyle, toggleVariants };
@@ -2,12 +2,17 @@ import { Icons } from "./components/common/icons.js";
2
2
  import { Badge, badgeVariants } from "./components/ui/badge.js";
3
3
  import { StatusBadge, StatusField, createStatusConfig, createStatusVariants, findStatus } from "./components/common/status.js";
4
4
  import { Skeleton } from "./components/ui/skeleton.js";
5
- import { AdminLoading } from "./components/layouts/admin-loading.js";
5
+ import { AdminLoadingLayout } from "./components/layouts/admin-loading.js";
6
6
  import { EmptyPage, EmptyPageDescription, EmptyPageTitle } from "./components/layouts/empty-page.js";
7
7
  import { ListLayout } from "./components/layouts/list-layout.js";
8
8
  import { Button, buttonVariants } from "./components/ui/button.js";
9
- import { NotFoundPage } from "./components/layouts/not-found-page.js";
9
+ import { AdminNotFoundPage, NotFoundPage } from "./components/layouts/not-found-page.js";
10
+ import { RootLoading } from "./components/layouts/root-loading.js";
10
11
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/ui/tabs.js";
12
+ import { Label } from "./components/ui/label.js";
13
+ import { Input } from "./components/ui/input.js";
14
+ import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "./components/ui/context-menu.js";
15
+ import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./components/ui/dropdown-menu.js";
11
16
  import { TabLayout } from "./components/layouts/tab-layout.js";
12
17
  import { DataList, DataListItem, DataListTitle, DataListValue } from "./components/lists/data-list.js";
13
18
  import { DataStack, DataStackColumn, DataStackGrid, DataStackLayout, DataStackRow, DataStackTitle, DataStackValue } from "./components/lists/data-stack.js";
@@ -21,10 +26,6 @@ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }
21
26
  import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "./components/ui/carousel.js";
22
27
  import { Checkbox } from "./components/ui/checkbox.js";
23
28
  import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "./components/ui/command.js";
24
- import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "./components/ui/context-menu.js";
25
- import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./components/ui/dropdown-menu.js";
26
- import { Input } from "./components/ui/input.js";
27
- import { Label } from "./components/ui/label.js";
28
29
  import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle } from "./components/ui/navigation-menu.js";
29
30
  import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/ui/pagination.js";
30
31
  import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./components/ui/popover.js";
@@ -36,4 +37,4 @@ import { Switch } from "./components/ui/switch.js";
36
37
  import { Textarea } from "./components/ui/textarea.js";
37
38
  import { Toggle, toggleVariants } from "./components/ui/toggle.js";
38
39
 
39
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdminLoading, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataList, DataListItem, DataListTitle, DataListValue, DataStack, DataStackColumn, DataStackGrid, DataStackLayout, DataStackRow, DataStackTitle, DataStackValue, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyPage, EmptyPageDescription, EmptyPageTitle, Icons, Input, Label, ListLayout, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFoundPage, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Separator, Skeleton, Slider, StatusBadge, StatusField, Switch, TabLayout, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, badgeVariants, buttonVariants, createStatusConfig, createStatusVariants, findStatus, navigationMenuTriggerStyle, toggleVariants };
40
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdminLoadingLayout, AdminNotFoundPage, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataList, DataListItem, DataListTitle, DataListValue, DataStack, DataStackColumn, DataStackGrid, DataStackLayout, DataStackRow, DataStackTitle, DataStackValue, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyPage, EmptyPageDescription, EmptyPageTitle, Icons, Input, Label, ListLayout, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFoundPage, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, RadioGroup, RadioGroupItem, RootLoading, ScrollArea, ScrollBar, Separator, Skeleton, Slider, StatusBadge, StatusField, Switch, TabLayout, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, badgeVariants, buttonVariants, createStatusConfig, createStatusVariants, findStatus, navigationMenuTriggerStyle, toggleVariants };
@@ -1,8 +1,7 @@
1
1
  import { TulipConfig, defineConfig } from "../modules/config/lib/config.server.js";
2
2
  import { GetTulipParams, GetTulipReturn, getTulip } from "../modules/config/lib/resolve.server.js";
3
- import { createPaths } from "../modules/config/paths/create.server.js";
3
+ import { HydrateClient, createRPCServerClient, getQueryClient } from "../modules/config/router/client.server.js";
4
4
  import { ProtectedRPCContext, RPCContext, createRPCContext } from "../modules/config/router/context.server.js";
5
5
  import { ServerError } from "../modules/config/router/error.server.js";
6
6
  import { initRPC } from "../modules/config/router/init.server.js";
7
- import { HydrateClient, createRPCServerClient, getQueryClient } from "../modules/config/router/client.server.js";
8
- export { GetTulipParams, GetTulipReturn, HydrateClient, ProtectedRPCContext, RPCContext, ServerError, TulipConfig, createPaths, createRPCContext, createRPCServerClient, defineConfig, getQueryClient, getTulip, initRPC };
7
+ export { GetTulipParams, GetTulipReturn, HydrateClient, ProtectedRPCContext, RPCContext, ServerError, TulipConfig, createRPCContext, createRPCServerClient, defineConfig, getQueryClient, getTulip, initRPC };
@@ -1,9 +1,8 @@
1
- import { ServerError } from "../modules/config/router/error.server.js";
2
1
  import { getTulip } from "../modules/config/lib/resolve.server.js";
2
+ import { ServerError } from "../modules/config/router/error.server.js";
3
3
  import { defineConfig } from "../modules/config/lib/config.server.js";
4
- import { createPaths } from "../modules/config/paths/create.server.js";
4
+ import { HydrateClient, createRPCServerClient, getQueryClient } from "../modules/config/router/client.server.js";
5
5
  import { createRPCContext } from "../modules/config/router/context.server.js";
6
6
  import { initRPC } from "../modules/config/router/init.server.js";
7
- import { HydrateClient, createRPCServerClient, getQueryClient } from "../modules/config/router/client.server.js";
8
7
 
9
- export { HydrateClient, ServerError, createPaths, createRPCContext, createRPCServerClient, defineConfig, getQueryClient, getTulip, initRPC };
8
+ export { HydrateClient, ServerError, createRPCContext, createRPCServerClient, defineConfig, getQueryClient, getTulip, initRPC };
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import { Path, PathGroup, PathSubItem, Paths } from "./modules/config/paths/types.js";
1
2
  import { TDatabaseSchema } from "./modules/config/db/types.js";
2
- import { PathConfig, PathGroupInput, PathGroupOutput, PathInput, PathOutput, PathResult, PathSubItemInput, PathSubItemOutput } from "./modules/config/paths/types.js";
3
3
  import { baseColumns } from "./modules/config/db/helpers.js";
4
+ import { createPaths } from "./modules/config/paths/helpers.js";
4
5
  import { createRPCClient } from "./modules/config/router/client.js";
5
6
  import { BulkActionSchema, bulkActionSchema } from "./modules/config/router/validators.js";
6
- export { BulkActionSchema, PathConfig, PathGroupInput, PathGroupOutput, PathInput, PathOutput, PathResult, PathSubItemInput, PathSubItemOutput, TDatabaseSchema, baseColumns, bulkActionSchema, createRPCClient };
7
+ export { BulkActionSchema, Path, PathGroup, PathSubItem, Paths, TDatabaseSchema, baseColumns, bulkActionSchema, createPaths, createRPCClient };
package/dist/config.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { baseColumns } from "./modules/config/db/helpers.js";
2
+ import { createPaths } from "./modules/config/paths/helpers.js";
2
3
  import { createRPCClient } from "./modules/config/router/client.js";
3
4
  import { bulkActionSchema } from "./modules/config/router/validators.js";
4
5
 
5
- export { baseColumns, bulkActionSchema, createRPCClient };
6
+ export { baseColumns, bulkActionSchema, createPaths, createRPCClient };
@@ -1,5 +1,5 @@
1
1
  import { IndicatorContext, IndicatorContextProvider, useIndicator } from "./hooks/use-indicator.js";
2
- import { useIsMobile } from "./hooks/use-mobile.client.js";
3
2
  import { useAction } from "./hooks/use-action.js";
3
+ import { useIsMobile } from "./hooks/use-mobile.client.js";
4
4
 
5
5
  export { IndicatorContext, IndicatorContextProvider, useAction, useIndicator, useIsMobile };
@@ -1,4 +1,4 @@
1
- import * as _tanstack_react_query0 from "@tanstack/react-query";
1
+ import * as _tanstack_react_query1 from "@tanstack/react-query";
2
2
  import { DefaultError, MutationFunctionContext, UseMutationOptions } from "@tanstack/react-query";
3
3
  import "client-only";
4
4
 
@@ -12,7 +12,7 @@ import "client-only";
12
12
  */
13
13
  declare function useAction<TData = unknown, TError = DefaultError, TVariables = void, TContext = MutationFunctionContext>(options?: UseMutationOptions<TData, TError, TVariables, TContext> & {
14
14
  onRedirect?: () => void;
15
- }): _tanstack_react_query0.UseMutationResult<TData, TError, TVariables, TContext>;
15
+ }): _tanstack_react_query1.UseMutationResult<TData, TError, TVariables, TContext>;
16
16
  //#endregion
17
17
  export { useAction };
18
18
  //# sourceMappingURL=use-action.d.ts.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
 
4
- import { usePermission } from "../hooks/use-permission.client.js";
4
+ import { usePermission } from "../hooks/use-permission.js";
5
5
  import { Fragment, jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/modules/auth/components/allowed.client.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"allowed.client.js","names":[],"sources":["../../../../src/modules/auth/components/allowed.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { JSX } from \"react\";\nimport { usePermission } from \"../hooks/use-permission.client\";\nimport { type Permission } from \"../lib/permissions\";\n\n/**\n * Allowed\n */\ntype AllowedProps = {\n permission: Permission;\n fallback?: JSX.Element | string;\n children: React.ReactNode;\n};\n\nexport function Allowed({ permission, fallback, children }: AllowedProps) {\n const { data } = usePermission(permission);\n\n if (data?.success) return <>{children}</>;\n\n return <>{fallback}</>;\n}\n"],"mappings":";;;;;;;AAeA,SAAgB,QAAQ,EAAE,YAAY,UAAU,YAA0B;CACxE,MAAM,EAAE,SAAS,cAAc,WAAW;AAE1C,KAAI,MAAM,QAAS,QAAO,gCAAG,WAAY;AAEzC,QAAO,0CAAG,WAAY"}
1
+ {"version":3,"file":"allowed.client.js","names":[],"sources":["../../../../src/modules/auth/components/allowed.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { JSX } from \"react\";\nimport { usePermission } from \"../hooks/use-permission\";\nimport { type Permission } from \"../lib/permissions\";\n\n/**\n * Allowed\n */\ntype AllowedProps = {\n permission: Permission;\n fallback?: JSX.Element | string;\n children: React.ReactNode;\n};\n\nexport function Allowed({ permission, fallback, children }: AllowedProps) {\n const { data } = usePermission(permission);\n\n if (data?.success) return <>{children}</>;\n\n return <>{fallback}</>;\n}\n"],"mappings":";;;;;;;AAeA,SAAgB,QAAQ,EAAE,YAAY,UAAU,YAA0B;CACxE,MAAM,EAAE,SAAS,cAAc,WAAW;AAE1C,KAAI,MAAM,QAAS,QAAO,gCAAG,WAAY;AAEzC,QAAO,0CAAG,WAAY"}
@@ -1,11 +1,10 @@
1
- import { TDatabaseSchema } from "../../config/db/types.js";
2
- import { GetTulipParams } from "../../config/lib/resolve.server.js";
3
1
  import * as react_jsx_runtime99 from "react/jsx-runtime";
4
2
  import { PropsWithChildren } from "react";
5
- import "server-cli-only";
6
3
 
7
4
  //#region src/modules/auth/components/auth-layout.server.d.ts
8
- declare function AuthLayout<TSchema extends TDatabaseSchema>(props: PropsWithChildren<GetTulipParams<TSchema>>): Promise<react_jsx_runtime99.JSX.Element>;
5
+ declare function AuthLayout(props: PropsWithChildren<{
6
+ name: string;
7
+ }>): Promise<react_jsx_runtime99.JSX.Element>;
9
8
  //#endregion
10
9
  export { AuthLayout };
11
10
  //# sourceMappingURL=auth-layout.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-layout.server.d.ts","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAQsB,2BAA2B,wBACxC,kBAAkB,eAAe,YAAS,QAAA,mBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"auth-layout.server.d.ts","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":[],"mappings":";;;;iBAIsB,UAAA,QAAkB;;KAAmC,QAAA,mBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,12 +1,9 @@
1
- import { getTulip } from "../../config/lib/resolve.server.js";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
3
2
  import Link from "next/link";
4
- import "server-cli-only";
5
3
  import Image from "next/image";
6
4
 
7
5
  //#region src/modules/auth/components/auth-layout.server.tsx
8
6
  async function AuthLayout(props) {
9
- const { general } = await getTulip(props);
10
7
  return /* @__PURE__ */ jsxs("div", {
11
8
  className: "container relative mx-auto grid h-[100dvh] flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0",
12
9
  children: [/* @__PURE__ */ jsxs("div", {
@@ -21,7 +18,7 @@ async function AuthLayout(props) {
21
18
  /* @__PURE__ */ jsx(Link, {
22
19
  href: "/",
23
20
  className: "relative z-20 flex items-center text-lg font-bold",
24
- children: general.name
21
+ children: props.name
25
22
  }),
26
23
  /* @__PURE__ */ jsx("div", {
27
24
  className: "relative z-20 mt-auto",
@@ -1 +1 @@
1
- {"version":3,"file":"auth-layout.server.js","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":["import \"server-cli-only\";\n\nimport { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport { getTulip, GetTulipParams } from \"@/modules/config/lib/resolve.server\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { PropsWithChildren } from \"react\";\n\nexport async function AuthLayout<TSchema extends TDatabaseSchema>(\n props: PropsWithChildren<GetTulipParams<TSchema>>,\n) {\n const { general } = await getTulip(props);\n\n return (\n <div className=\"container relative mx-auto grid h-[100dvh] flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0\">\n <div className=\"bg-muted relative hidden h-full flex-col p-10 text-white lg:flex dark:border-r\">\n <Image src=\"/images/auth-background.jpeg\" alt=\"Background\" className=\"object-cover\" fill />\n\n <Link href=\"/\" className=\"relative z-20 flex items-center text-lg font-bold\">\n {general.name}\n </Link>\n\n <div className=\"relative z-20 mt-auto\">\n <blockquote className=\"space-y-2 text-sm\">Developed by NewCode</blockquote>\n </div>\n </div>\n\n {props.children}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAQA,eAAsB,WACpB,OACA;CACA,MAAM,EAAE,YAAY,MAAM,SAAS,MAAM;AAEzC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAM,KAAI;KAA+B,KAAI;KAAa,WAAU;KAAe;MAAO;IAE3F,oBAAC;KAAK,MAAK;KAAI,WAAU;eACtB,QAAQ;MACJ;IAEP,oBAAC;KAAI,WAAU;eACb,oBAAC;MAAW,WAAU;gBAAoB;OAAiC;MACvE;;IACF,EAEL,MAAM;GACH"}
1
+ {"version":3,"file":"auth-layout.server.js","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":["import Image from \"next/image\";\nimport Link from \"next/link\";\nimport { PropsWithChildren } from \"react\";\n\nexport async function AuthLayout(props: PropsWithChildren<{ name: string }>) {\n return (\n <div className=\"container relative mx-auto grid h-[100dvh] flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0\">\n <div className=\"bg-muted relative hidden h-full flex-col p-10 text-white lg:flex dark:border-r\">\n <Image src=\"/images/auth-background.jpeg\" alt=\"Background\" className=\"object-cover\" fill />\n\n <Link href=\"/\" className=\"relative z-20 flex items-center text-lg font-bold\">\n {props.name}\n </Link>\n\n <div className=\"relative z-20 mt-auto\">\n <blockquote className=\"space-y-2 text-sm\">Developed by NewCode</blockquote>\n </div>\n </div>\n\n {props.children}\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,eAAsB,WAAW,OAA4C;AAC3E,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAM,KAAI;KAA+B,KAAI;KAAa,WAAU;KAAe;MAAO;IAE3F,oBAAC;KAAK,MAAK;KAAI,WAAU;eACtB,MAAM;MACF;IAEP,oBAAC;KAAI,WAAU;eACb,oBAAC;MAAW,WAAU;gBAAoB;OAAiC;MACvE;;IACF,EAEL,MAAM;GACH"}
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime376 from "react/jsx-runtime";
2
+
3
+ //#region src/modules/auth/components/auth-loading.d.ts
4
+ declare function AuthLoading(): react_jsx_runtime376.JSX.Element;
5
+ //#endregion
6
+ export { AuthLoading };
7
+ //# sourceMappingURL=auth-loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-loading.d.ts","names":[],"sources":["../../../../src/modules/auth/components/auth-loading.tsx"],"sourcesContent":[],"mappings":";;;iBAEgB,WAAA,CAAA,GAAW,oBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { Skeleton } from "../../../components/ui/skeleton.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+
4
+ //#region src/modules/auth/components/auth-loading.tsx
5
+ function AuthLoading() {
6
+ return /* @__PURE__ */ jsxs("div", {
7
+ className: "mx-auto flex w-full flex-col gap-4 sm:w-[350px]",
8
+ children: [
9
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-full" }),
10
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-48 w-full" }),
11
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-12 w-full" })
12
+ ]
13
+ });
14
+ }
15
+
16
+ //#endregion
17
+ export { AuthLoading };
18
+ //# sourceMappingURL=auth-loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-loading.js","names":[],"sources":["../../../../src/modules/auth/components/auth-loading.tsx"],"sourcesContent":["import { Skeleton } from \"@/components/ui/skeleton\";\n\nexport function AuthLoading() {\n return (\n <div className=\"mx-auto flex w-full flex-col gap-4 sm:w-[350px]\">\n <Skeleton className=\"h-7 w-full\" />\n <Skeleton className=\"h-48 w-full\" />\n <Skeleton className=\"h-12 w-full\" />\n </div>\n );\n}\n"],"mappings":";;;;AAEA,SAAgB,cAAc;AAC5B,QACE,qBAAC;EAAI,WAAU;;GACb,oBAAC,YAAS,WAAU,eAAe;GACnC,oBAAC,YAAS,WAAU,gBAAgB;GACpC,oBAAC,YAAS,WAAU,gBAAgB;;GAChC"}
@@ -4,14 +4,14 @@
4
4
  import { Icons } from "../../../components/common/icons.js";
5
5
  import { Button } from "../../../components/ui/button.js";
6
6
  import { authClient } from "../handler/client.client.js";
7
- import { Input } from "../../../components/ui/input.js";
8
7
  import { Form as Form$1, FormControl, FormField, FormItem, FormMessage } from "../../../components/ui/form.client.js";
8
+ import { Input } from "../../../components/ui/input.js";
9
9
  import { forgotPasswordSchema } from "../lib/validators.js";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import React from "react";
12
- import { toast } from "sonner";
13
12
  import { useForm } from "react-hook-form";
14
13
  import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
14
+ import { toast } from "sonner";
15
15
 
16
16
  //#region src/modules/auth/components/forget-password-page.client.tsx
17
17
  function ForgetPasswordPage() {
@@ -0,0 +1,16 @@
1
+ "use client";
2
+
3
+
4
+ import { useSession } from "../hooks/use-session.js";
5
+ import { Fragment, jsx } from "react/jsx-runtime";
6
+ import { redirect } from "next/navigation";
7
+
8
+ //#region src/modules/auth/components/guard.client.tsx
9
+ function AuthGuard({ children }) {
10
+ if (!useSession().data) redirect("/auth/login");
11
+ return /* @__PURE__ */ jsx(Fragment, { children });
12
+ }
13
+
14
+ //#endregion
15
+ export { AuthGuard };
16
+ //# sourceMappingURL=guard.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.client.js","names":[],"sources":["../../../../src/modules/auth/components/guard.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { redirect } from \"next/navigation\";\nimport { PropsWithChildren } from \"react\";\nimport { useSession } from \"../hooks/use-session\";\n\nexport function AuthGuard({ children }: PropsWithChildren) {\n const session = useSession();\n if (!session.data) redirect(\"/auth/login\");\n\n return <>{children}</>;\n}\n"],"mappings":";;;;;;;;AAMA,SAAgB,UAAU,EAAE,YAA+B;AAEzD,KAAI,CADY,YAAY,CACf,KAAM,UAAS,cAAc;AAE1C,QAAO,gCAAG,WAAY"}
@@ -1,11 +1,7 @@
1
1
  import * as react_jsx_runtime102 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/modules/auth/components/login-page.client.d.ts
4
- declare function LoginPage(props: {
5
- searchParams: Promise<{
6
- callbackURL?: string;
7
- }>;
8
- }): react_jsx_runtime102.JSX.Element;
4
+ declare function LoginPage(): react_jsx_runtime102.JSX.Element;
9
5
  //#endregion
10
6
  export { LoginPage };
11
7
  //# sourceMappingURL=login-page.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login-page.client.d.ts","names":[],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":[],"mappings":";;;iBAgBgB,SAAA;gBAAiC;;EAAjC,CAAA,CAAA;CAAS,CAAA,EAA2D,oBAAA,CAAA,GAAA,CAAA,OAA3D"}
1
+ {"version":3,"file":"login-page.client.d.ts","names":[],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":[],"mappings":";;;iBAiBgB,SAAA,CAAA,GAAS,oBAAA,CAAA,GAAA,CAAA"}
@@ -4,22 +4,55 @@
4
4
  import { Icons } from "../../../components/common/icons.js";
5
5
  import { Button } from "../../../components/ui/button.js";
6
6
  import { authClient } from "../handler/client.client.js";
7
- import { Input } from "../../../components/ui/input.js";
8
7
  import { Form as Form$1, FormControl, FormField, FormItem, FormMessage } from "../../../components/ui/form.client.js";
8
+ import { Input } from "../../../components/ui/input.js";
9
9
  import { loginSchema } from "../lib/validators.js";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
- import React, { use } from "react";
12
11
  import Link from "next/link";
13
- import { useRouter } from "next/navigation";
14
- import { toast } from "sonner";
12
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
15
13
  import { useForm } from "react-hook-form";
16
14
  import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
15
+ import { toast } from "sonner";
16
+ import { useRouter } from "next/navigation";
17
+ import { parseAsString, useQueryState } from "nuqs";
17
18
 
18
19
  //#region src/modules/auth/components/login-page.client.tsx
19
- function LoginPage(props) {
20
- const { callbackURL } = use(props.searchParams);
20
+ function LoginPage() {
21
+ const queryClient = useQueryClient();
22
+ const [callbackURL] = useQueryState("callbackURL", parseAsString);
21
23
  const router = useRouter();
22
- const [isPending, startTransition$1] = React.useTransition();
24
+ const { mutate, isPending } = useMutation({
25
+ mutationFn: async (data) => {
26
+ const result = await authClient.signIn.email(data);
27
+ if (result.error) throw result.error;
28
+ const session = await authClient.getSession();
29
+ if (session.error) throw session.error;
30
+ queryClient.setQueryData(["session"], session.data);
31
+ return result.data;
32
+ },
33
+ onSuccess: () => {
34
+ router.push(callbackURL ?? "/admin");
35
+ toast.success("Succesvol ingelogd");
36
+ },
37
+ onError: (err) => {
38
+ console.error("Login error: ", err);
39
+ if ("status" in err) {
40
+ if (err.status === 401) {
41
+ toast.error("Ongeldige email of wachtwoord");
42
+ return;
43
+ }
44
+ if (err.status === 403) {
45
+ toast.error("Account is geblokkeerd");
46
+ return;
47
+ }
48
+ if (err.status === 429) {
49
+ toast.error("Te veel login pogingen");
50
+ return;
51
+ }
52
+ }
53
+ toast.error("Er is iets misgegaan");
54
+ }
55
+ });
23
56
  const form = useForm({
24
57
  resolver: standardSchemaResolver(loginSchema),
25
58
  defaultValues: {
@@ -45,30 +78,7 @@ function LoginPage(props) {
45
78
  ...form,
46
79
  children: /* @__PURE__ */ jsxs("form", {
47
80
  className: "space-y-6",
48
- onSubmit: form.handleSubmit((data) => startTransition$1(async () => {
49
- await authClient.signIn.email(data, {
50
- onSuccess: () => {
51
- router.replace(callbackURL ?? "/");
52
- toast.success("Succesvol ingelogd");
53
- },
54
- onError: ({ error }) => {
55
- console.error("Login error: ", error);
56
- if (error.status === 401) {
57
- toast.error("Ongeldige email of wachtwoord");
58
- return;
59
- }
60
- if (error.status === 403) {
61
- toast.error("Account is geblokkeerd");
62
- return;
63
- }
64
- if (error.status === 429) {
65
- toast.error("Te veel login pogingen");
66
- return;
67
- }
68
- toast.error("Er is iets misgegaan");
69
- }
70
- });
71
- })),
81
+ onSubmit: form.handleSubmit((data) => mutate(data)),
72
82
  children: [/* @__PURE__ */ jsxs("div", {
73
83
  className: "flex flex-col gap-3",
74
84
  children: [/* @__PURE__ */ jsx(FormField, {
@@ -1 +1 @@
1
- {"version":3,"file":"login-page.client.js","names":["startTransition","Form"],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport React, { use } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport * as z from \"zod\";\nimport { authClient } from \"../handler/client.client\";\nimport { loginSchema } from \"../lib/validators\";\n\nexport function LoginPage(props: { searchParams: Promise<{ callbackURL?: string }> }) {\n const { callbackURL } = use(props.searchParams);\n\n const router = useRouter();\n\n const [isPending, startTransition] = React.useTransition();\n\n const form = useForm<z.infer<typeof loginSchema>>({\n resolver: standardSchemaResolver(loginSchema),\n defaultValues: { email: \"\", password: \"\" },\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl font-semibold tracking-tight\">Login</h1>\n <p className=\"text-muted-foreground text-sm\">\n Schrijf je email en wachtwoord in om in te loggen.\n </p>\n </div>\n\n <Form {...form}>\n <form\n className=\"space-y-6\"\n onSubmit={form.handleSubmit((data) =>\n startTransition(async () => {\n await authClient.signIn.email(data, {\n onSuccess: () => {\n router.replace(callbackURL ?? \"/\");\n toast.success(\"Succesvol ingelogd\");\n },\n onError: ({ error }) => {\n console.error(\"Login error: \", error);\n\n if (error.status === 401) {\n toast.error(\"Ongeldige email of wachtwoord\");\n return;\n }\n\n if (error.status === 403) {\n toast.error(\"Account is geblokkeerd\");\n return;\n }\n\n if (error.status === 429) {\n toast.error(\"Te veel login pogingen\");\n return;\n }\n\n toast.error(\"Er is iets misgegaan\");\n },\n });\n }),\n )}\n >\n <div className=\"flex flex-col gap-3\">\n <FormField\n control={form.control}\n name=\"email\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input placeholder=\"email@example.be\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"password\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input type=\"password\" placeholder=\"********\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n\n <Button disabled={form.formState.disabled} className=\"w-full\">\n {isPending && <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />}\n Inloggen\n </Button>\n </form>\n </Form>\n\n <p className=\"text-muted-foreground px-8 text-center text-sm\">\n <Link\n href=\"/auth/forget-password\"\n className=\"hover:text-primary underline underline-offset-4\"\n >\n Wachtwoord vergeten\n </Link>\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,SAAgB,UAAU,OAA4D;CACpF,MAAM,EAAE,gBAAgB,IAAI,MAAM,aAAa;CAE/C,MAAM,SAAS,WAAW;CAE1B,MAAM,CAAC,WAAWA,qBAAmB,MAAM,eAAe;CAE1D,MAAM,OAAO,QAAqC;EAChD,UAAU,uBAAuB,YAAY;EAC7C,eAAe;GAAE,OAAO;GAAI,UAAU;GAAI;EAC1C,UAAU;EACX,CAAC;AAEF,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAwC;MAAU,EAChE,oBAAC;KAAE,WAAU;eAAgC;MAEzC;KACA;GAEN,oBAACC;IAAK,GAAI;cACR,qBAAC;KACC,WAAU;KACV,UAAU,KAAK,cAAc,SAC3BD,kBAAgB,YAAY;AAC1B,YAAM,WAAW,OAAO,MAAM,MAAM;OAClC,iBAAiB;AACf,eAAO,QAAQ,eAAe,IAAI;AAClC,cAAM,QAAQ,qBAAqB;;OAErC,UAAU,EAAE,YAAY;AACtB,gBAAQ,MAAM,iBAAiB,MAAM;AAErC,YAAI,MAAM,WAAW,KAAK;AACxB,eAAM,MAAM,gCAAgC;AAC5C;;AAGF,YAAI,MAAM,WAAW,KAAK;AACxB,eAAM,MAAM,yBAAyB;AACrC;;AAGF,YAAI,MAAM,WAAW,KAAK;AACxB,eAAM,MAAM,yBAAyB;AACrC;;AAGF,cAAM,MAAM,uBAAuB;;OAEtC,CAAC;OACF,CACH;gBAED,qBAAC;MAAI,WAAU;iBACb,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;QAAM,aAAY;QAAmB,GAAI;SAAS,GACvC,EACd,oBAAC,gBAAc,IACN;QAEb,EAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;QAAM,MAAK;QAAW,aAAY;QAAW,GAAI;SAAS,GAC/C,EACd,oBAAC,gBAAc,IACN;QAEb;OACE,EAEN,qBAAC;MAAO,UAAU,KAAK,UAAU;MAAU,WAAU;iBAClD,aAAa,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EAAC;OAE/D;MACJ;KACF;GAEP,oBAAC;IAAE,WAAU;cACX,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACL;;GACA"}
1
+ {"version":3,"file":"login-page.client.js","names":["Form"],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { parseAsString, useQueryState } from \"nuqs\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport * as z from \"zod\";\nimport { authClient } from \"../handler/client.client\";\nimport { loginSchema } from \"../lib/validators\";\n\nexport function LoginPage() {\n const queryClient = useQueryClient();\n const [callbackURL] = useQueryState(\"callbackURL\", parseAsString);\n\n const router = useRouter();\n\n const { mutate, isPending } = useMutation({\n mutationFn: async (data: z.infer<typeof loginSchema>) => {\n const result = await authClient.signIn.email(data);\n if (result.error) throw result.error;\n\n const session = await authClient.getSession();\n if (session.error) throw session.error;\n\n queryClient.setQueryData([\"session\"], session.data);\n\n return result.data;\n },\n onSuccess: () => {\n router.push(callbackURL ?? \"/admin\");\n toast.success(\"Succesvol ingelogd\");\n },\n onError: (err) => {\n console.error(\"Login error: \", err);\n\n if (\"status\" in err) {\n if (err.status === 401) {\n toast.error(\"Ongeldige email of wachtwoord\");\n return;\n }\n\n if (err.status === 403) {\n toast.error(\"Account is geblokkeerd\");\n return;\n }\n\n if (err.status === 429) {\n toast.error(\"Te veel login pogingen\");\n return;\n }\n }\n\n toast.error(\"Er is iets misgegaan\");\n },\n });\n\n const form = useForm<z.infer<typeof loginSchema>>({\n resolver: standardSchemaResolver(loginSchema),\n defaultValues: { email: \"\", password: \"\" },\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl font-semibold tracking-tight\">Login</h1>\n <p className=\"text-muted-foreground text-sm\">\n Schrijf je email en wachtwoord in om in te loggen.\n </p>\n </div>\n\n <Form {...form}>\n <form className=\"space-y-6\" onSubmit={form.handleSubmit((data) => mutate(data))}>\n <div className=\"flex flex-col gap-3\">\n <FormField\n control={form.control}\n name=\"email\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input placeholder=\"email@example.be\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"password\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input type=\"password\" placeholder=\"********\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n\n <Button disabled={form.formState.disabled} className=\"w-full\">\n {isPending && <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />}\n Inloggen\n </Button>\n </form>\n </Form>\n\n <p className=\"text-muted-foreground px-8 text-center text-sm\">\n <Link\n href=\"/auth/forget-password\"\n className=\"hover:text-primary underline underline-offset-4\"\n >\n Wachtwoord vergeten\n </Link>\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,SAAgB,YAAY;CAC1B,MAAM,cAAc,gBAAgB;CACpC,MAAM,CAAC,eAAe,cAAc,eAAe,cAAc;CAEjE,MAAM,SAAS,WAAW;CAE1B,MAAM,EAAE,QAAQ,cAAc,YAAY;EACxC,YAAY,OAAO,SAAsC;GACvD,MAAM,SAAS,MAAM,WAAW,OAAO,MAAM,KAAK;AAClD,OAAI,OAAO,MAAO,OAAM,OAAO;GAE/B,MAAM,UAAU,MAAM,WAAW,YAAY;AAC7C,OAAI,QAAQ,MAAO,OAAM,QAAQ;AAEjC,eAAY,aAAa,CAAC,UAAU,EAAE,QAAQ,KAAK;AAEnD,UAAO,OAAO;;EAEhB,iBAAiB;AACf,UAAO,KAAK,eAAe,SAAS;AACpC,SAAM,QAAQ,qBAAqB;;EAErC,UAAU,QAAQ;AAChB,WAAQ,MAAM,iBAAiB,IAAI;AAEnC,OAAI,YAAY,KAAK;AACnB,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,gCAAgC;AAC5C;;AAGF,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,yBAAyB;AACrC;;AAGF,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,yBAAyB;AACrC;;;AAIJ,SAAM,MAAM,uBAAuB;;EAEtC,CAAC;CAEF,MAAM,OAAO,QAAqC;EAChD,UAAU,uBAAuB,YAAY;EAC7C,eAAe;GAAE,OAAO;GAAI,UAAU;GAAI;EAC1C,UAAU;EACX,CAAC;AAEF,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAwC;MAAU,EAChE,oBAAC;KAAE,WAAU;eAAgC;MAEzC;KACA;GAEN,oBAACA;IAAK,GAAI;cACR,qBAAC;KAAK,WAAU;KAAY,UAAU,KAAK,cAAc,SAAS,OAAO,KAAK,CAAC;gBAC7E,qBAAC;MAAI,WAAU;iBACb,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;QAAM,aAAY;QAAmB,GAAI;SAAS,GACvC,EACd,oBAAC,gBAAc,IACN;QAEb,EAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;QAAM,MAAK;QAAW,aAAY;QAAW,GAAI;SAAS,GAC/C,EACd,oBAAC,gBAAc,IACN;QAEb;OACE,EAEN,qBAAC;MAAO,UAAU,KAAK,UAAU;MAAU,WAAU;iBAClD,aAAa,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EAAC;OAE/D;MACJ;KACF;GAEP,oBAAC;IAAE,WAAU;cACX,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACL;;GACA"}
@@ -4,15 +4,15 @@
4
4
  import { Icons } from "../../../components/common/icons.js";
5
5
  import { Button } from "../../../components/ui/button.js";
6
6
  import { authClient } from "../handler/client.client.js";
7
- import { Input } from "../../../components/ui/input.js";
8
7
  import { Form as Form$1, FormControl, FormField, FormItem, FormLabel, FormMessage } from "../../../components/ui/form.client.js";
8
+ import { Input } from "../../../components/ui/input.js";
9
9
  import { resetPasswordSchema } from "../lib/validators.js";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import React, { use } from "react";
12
- import { useRouter } from "next/navigation";
13
- import { toast } from "sonner";
14
12
  import { useForm } from "react-hook-form";
15
13
  import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
14
+ import { toast } from "sonner";
15
+ import { useRouter } from "next/navigation";
16
16
 
17
17
  //#region src/modules/auth/components/reset-password-page.client.tsx
18
18
  function ResetPasswordPage(params) {
@@ -1,5 +1,5 @@
1
- import { CommandFormDialogTrigger } from "../../commands/components/form-dialog-command.client.js";
2
1
  import { UpdatePasswordSchema } from "../lib/validators.js";
2
+ import { CommandFormDialogTrigger } from "../../commands/components/form-dialog-command.client.js";
3
3
  import * as react_jsx_runtime104 from "react/jsx-runtime";
4
4
  import React from "react";
5
5
 
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
 
3
3
 
4
- import { Input } from "../../../components/ui/input.js";
5
4
  import { Form as Form$1, FormControl, FormField, FormItem, FormLabel, FormMessage } from "../../../components/ui/form.client.js";
5
+ import { Input } from "../../../components/ui/input.js";
6
6
  import { updatePasswordSchema } from "../lib/validators.js";
7
7
  import { CommandFormDialog, CommandFormDialogCancel, CommandFormDialogContent, CommandFormDialogFooter, CommandFormDialogHeader, CommandFormDialogSubmit, CommandFormDialogTitle, CommandFormDialogTrigger } from "../../commands/components/form-dialog-command.client.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";