@alepha/ui 0.18.1 → 0.18.3

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 (280) hide show
  1. package/dist/admin/{AdminApiKeys-C-6_Q-lH.js → AdminApiKeys-Dy_k-4Vd.js} +17 -38
  2. package/dist/admin/AdminApiKeys-Dy_k-4Vd.js.map +1 -0
  3. package/dist/admin/{AdminAudits-Bgbf04hO.js → AdminAudits-CKiFMSSU.js} +23 -19
  4. package/dist/admin/AdminAudits-CKiFMSSU.js.map +1 -0
  5. package/dist/admin/AdminDashboard-PhC_dZqo.js +67 -0
  6. package/dist/admin/AdminDashboard-PhC_dZqo.js.map +1 -0
  7. package/dist/admin/{AdminFiles-B9a7G3cY.js → AdminFiles-DFTjijGp.js} +3 -7
  8. package/dist/admin/AdminFiles-DFTjijGp.js.map +1 -0
  9. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js → AdminJobDashboard-BL8gGPDp.js} +2 -2
  10. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js.map → AdminJobDashboard-BL8gGPDp.js.map} +1 -1
  11. package/dist/admin/{AdminJobExecutions-B9cek5dl.js → AdminJobExecutions-D9E-CS-U.js} +24 -36
  12. package/dist/admin/AdminJobExecutions-D9E-CS-U.js.map +1 -0
  13. package/dist/admin/{AdminJobRegistry-DFgV3oqx.js → AdminJobRegistry-Ci9ue1zC.js} +10 -18
  14. package/dist/admin/AdminJobRegistry-Ci9ue1zC.js.map +1 -0
  15. package/dist/admin/AdminLayout-I6TlUMPc.js +61 -0
  16. package/dist/admin/AdminLayout-I6TlUMPc.js.map +1 -0
  17. package/dist/admin/AdminNotifications-ZPHCYrv7.js +542 -0
  18. package/dist/admin/AdminNotifications-ZPHCYrv7.js.map +1 -0
  19. package/dist/admin/{AdminParameters-DHw9ATgl.js → AdminParameters-CqgvhRsb.js} +120 -105
  20. package/dist/admin/AdminParameters-CqgvhRsb.js.map +1 -0
  21. package/dist/admin/{AdminSessions-BhGJPI3z.js → AdminSessions-Bz5NRuoW.js} +48 -53
  22. package/dist/admin/AdminSessions-Bz5NRuoW.js.map +1 -0
  23. package/dist/admin/{AdminUserLayout-BdC4Te8m.js → AdminUserLayout-lXT6I0Qq.js} +14 -8
  24. package/dist/admin/AdminUserLayout-lXT6I0Qq.js.map +1 -0
  25. package/dist/admin/{AdminUserProfile-DAt23fqY.js → AdminUserProfile-vFBLoJ3h.js} +3 -3
  26. package/dist/admin/{AdminUserProfile-DAt23fqY.js.map → AdminUserProfile-vFBLoJ3h.js.map} +1 -1
  27. package/dist/admin/{AdminUserSessions-1uzcx02z.js → AdminUserSessions-CT_YDim0.js} +33 -35
  28. package/dist/admin/AdminUserSessions-CT_YDim0.js.map +1 -0
  29. package/dist/admin/AdminUsers-D1UfGya9.js +206 -0
  30. package/dist/admin/AdminUsers-D1UfGya9.js.map +1 -0
  31. package/dist/admin/{AuthLayout-DFJvCvzw.js → AuthLayout-_frhdgOO.js} +2 -2
  32. package/dist/admin/{AuthLayout-DFJvCvzw.js.map → AuthLayout-_frhdgOO.js.map} +1 -1
  33. package/dist/admin/{IconGoogle-CSQLPYwX.js → IconGoogle-Ch1m3Uzl.js} +1 -1
  34. package/dist/admin/{IconGoogle-CSQLPYwX.js.map → IconGoogle-Ch1m3Uzl.js.map} +1 -1
  35. package/dist/admin/Login-xtNmQtGh.js +275 -0
  36. package/dist/admin/Login-xtNmQtGh.js.map +1 -0
  37. package/dist/{auth/Profile-BMX_Ar_s.js → admin/Profile-_AtPUwAP.js} +31 -27
  38. package/dist/admin/Profile-_AtPUwAP.js.map +1 -0
  39. package/dist/admin/{Register-Cs10l8vX.js → Register-JcCjHUUn.js} +199 -143
  40. package/dist/admin/Register-JcCjHUUn.js.map +1 -0
  41. package/dist/admin/{ResetPassword-BwDdfkGH.js → ResetPassword-CwGBPLJO.js} +7 -7
  42. package/dist/admin/ResetPassword-CwGBPLJO.js.map +1 -0
  43. package/dist/admin/{VerifyEmail-DfXHAiQl.js → VerifyEmail-hNxWejWf.js} +23 -8
  44. package/dist/admin/VerifyEmail-hNxWejWf.js.map +1 -0
  45. package/dist/admin/{core-2xoLiT0o.js → core-CYaRQ8O-.js} +2082 -688
  46. package/dist/admin/core-CYaRQ8O-.js.map +1 -0
  47. package/dist/admin/index.d.ts +112 -48
  48. package/dist/admin/index.d.ts.map +1 -1
  49. package/dist/admin/index.js +467 -69
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/auth/{AuthLayout-CAE1pX9s.js → AuthLayout-AvLlcLjS.js} +2 -2
  52. package/dist/auth/{AuthLayout-CAE1pX9s.js.map → AuthLayout-AvLlcLjS.js.map} +1 -1
  53. package/dist/auth/Login-BA1E8IZl.js +275 -0
  54. package/dist/auth/Login-BA1E8IZl.js.map +1 -0
  55. package/dist/{admin/Profile-B-c9pCPf.js → auth/Profile-YcWdeuFz.js} +31 -27
  56. package/dist/auth/Profile-YcWdeuFz.js.map +1 -0
  57. package/dist/auth/{Register-6hi_cpfF.js → Register-CPhEO5MG.js} +198 -142
  58. package/dist/auth/Register-CPhEO5MG.js.map +1 -0
  59. package/dist/{demo/ResetPassword-DWN0lzr5.js → auth/ResetPassword-DCtGcneA.js} +7 -7
  60. package/dist/auth/ResetPassword-DCtGcneA.js.map +1 -0
  61. package/dist/{demo/VerifyEmail-DZWL72K4.js → auth/VerifyEmail-DkH7NBfn.js} +23 -8
  62. package/dist/auth/VerifyEmail-DkH7NBfn.js.map +1 -0
  63. package/dist/auth/{core-niW0sFLv.js → core-D5jIAVF2.js} +1385 -329
  64. package/dist/auth/core-D5jIAVF2.js.map +1 -0
  65. package/dist/auth/index.d.ts +105 -49
  66. package/dist/auth/index.d.ts.map +1 -1
  67. package/dist/auth/index.js +29 -26
  68. package/dist/auth/index.js.map +1 -1
  69. package/dist/core/index.d.ts +210 -74
  70. package/dist/core/index.d.ts.map +1 -1
  71. package/dist/core/index.js +2247 -834
  72. package/dist/core/index.js.map +1 -1
  73. package/dist/demo/{AuthLayout-jLa0aKsI.js → AuthLayout-Brri4A-L.js} +2 -2
  74. package/dist/demo/{AuthLayout-jLa0aKsI.js.map → AuthLayout-Brri4A-L.js.map} +1 -1
  75. package/dist/demo/DemoButton-wiCxZZ_L.js +182 -0
  76. package/dist/demo/DemoButton-wiCxZZ_L.js.map +1 -0
  77. package/dist/demo/DemoControlSelect-D7ILObVg.js +305 -0
  78. package/dist/demo/DemoControlSelect-D7ILObVg.js.map +1 -0
  79. package/dist/demo/DemoDataTable-DZ5Y8pFX.js +362 -0
  80. package/dist/demo/DemoDataTable-DZ5Y8pFX.js.map +1 -0
  81. package/dist/demo/{DemoDialog-4ItHLf9t.js → DemoDialog-CUWdLHim.js} +2 -2
  82. package/dist/demo/{DemoDialog-4ItHLf9t.js.map → DemoDialog-CUWdLHim.js.map} +1 -1
  83. package/dist/demo/{DemoFlex-EtVq8QfX.js → DemoFlex-a8OhMMvq.js} +3 -3
  84. package/dist/demo/{DemoFlex-EtVq8QfX.js.map → DemoFlex-a8OhMMvq.js.map} +1 -1
  85. package/dist/demo/{DemoHeading-BS-vGfkI.js → DemoHeading-C13OVDfS.js} +3 -3
  86. package/dist/demo/{DemoHeading-BS-vGfkI.js.map → DemoHeading-C13OVDfS.js.map} +1 -1
  87. package/dist/demo/{DemoHome-Clbn8AmS.js → DemoHome-D_De3UiT.js} +2 -2
  88. package/dist/demo/{DemoHome-Clbn8AmS.js.map → DemoHome-D_De3UiT.js.map} +1 -1
  89. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js → DemoJsonViewer-B50s9aGM.js} +3 -3
  90. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js.map → DemoJsonViewer-B50s9aGM.js.map} +1 -1
  91. package/dist/demo/{DemoLayout-C56xb5EE.js → DemoLayout-CHU8WTwO.js} +14 -5
  92. package/dist/demo/DemoLayout-CHU8WTwO.js.map +1 -0
  93. package/dist/demo/{DemoLogin-BZwpicOS.js → DemoLogin-BBlrWpml.js} +49 -32
  94. package/dist/demo/DemoLogin-BBlrWpml.js.map +1 -0
  95. package/dist/demo/{DemoRegister-C7_qc4MJ.js → DemoRegister-BuNE3_-f.js} +49 -50
  96. package/dist/demo/DemoRegister-BuNE3_-f.js.map +1 -0
  97. package/dist/demo/{DemoResetPassword-BI1Ct4Dw.js → DemoResetPassword-D_IjjjOJ.js} +12 -16
  98. package/dist/demo/DemoResetPassword-D_IjjjOJ.js.map +1 -0
  99. package/dist/demo/{DemoSidebar-CcBo4ltC.js → DemoSidebar-Giy2HRBD.js} +3 -3
  100. package/dist/demo/{DemoSidebar-CcBo4ltC.js.map → DemoSidebar-Giy2HRBD.js.map} +1 -1
  101. package/dist/demo/{DemoText-CzXuUn3g.js → DemoText-ubcw-vog.js} +3 -3
  102. package/dist/demo/{DemoText-CzXuUn3g.js.map → DemoText-ubcw-vog.js.map} +1 -1
  103. package/dist/demo/{DemoToast-BgHDhWrX.js → DemoToast-9die_dYT.js} +2 -2
  104. package/dist/demo/{DemoToast-BgHDhWrX.js.map → DemoToast-9die_dYT.js.map} +1 -1
  105. package/dist/demo/{DemoTypeForm-DDzWoMSV.js → DemoTypeForm-D_d6OVKL.js} +8 -4
  106. package/dist/demo/DemoTypeForm-D_d6OVKL.js.map +1 -0
  107. package/dist/demo/DemoVerifyEmail-B43KlF4F.js +34 -0
  108. package/dist/demo/DemoVerifyEmail-B43KlF4F.js.map +1 -0
  109. package/dist/demo/Login-C12N4oGs.js +275 -0
  110. package/dist/demo/Login-C12N4oGs.js.map +1 -0
  111. package/dist/demo/{Profile-CWqti7FB.js → Profile-DS5q4vOh.js} +31 -27
  112. package/dist/demo/Profile-DS5q4vOh.js.map +1 -0
  113. package/dist/demo/{Register-a70LPgs2.js → Register-B4hLBeEv.js} +198 -142
  114. package/dist/demo/Register-B4hLBeEv.js.map +1 -0
  115. package/dist/{auth/ResetPassword-CqfTk1FI.js → demo/ResetPassword-D8g9ha1N.js} +7 -7
  116. package/dist/demo/ResetPassword-D8g9ha1N.js.map +1 -0
  117. package/dist/demo/{Showcase-Dq3MISpd.js → Showcase-D6Fxt4X4.js} +64 -65
  118. package/dist/demo/Showcase-D6Fxt4X4.js.map +1 -0
  119. package/dist/{auth/VerifyEmail-nWiSTMjF.js → demo/VerifyEmail-BjDo0cZA.js} +23 -8
  120. package/dist/demo/VerifyEmail-BjDo0cZA.js.map +1 -0
  121. package/dist/demo/{auth-d6n3xbug.js → auth-ByVTreDl.js} +8 -8
  122. package/dist/demo/{auth-d6n3xbug.js.map → auth-ByVTreDl.js.map} +1 -1
  123. package/dist/demo/{core-RCUw1Q-a.js → core-DFgB3yU4.js} +2182 -756
  124. package/dist/demo/core-DFgB3yU4.js.map +1 -0
  125. package/dist/demo/index.d.ts +1 -0
  126. package/dist/demo/index.d.ts.map +1 -1
  127. package/dist/demo/index.js +24 -18
  128. package/dist/demo/index.js.map +1 -1
  129. package/package.json +7 -7
  130. package/src/admin/{AdminRouter.ts → AdminRouter.tsx} +150 -18
  131. package/src/admin/components/AdminDashboard.tsx +52 -0
  132. package/src/admin/components/AdminLayout.tsx +32 -40
  133. package/src/admin/components/audits/AdminAudits.tsx +22 -16
  134. package/src/admin/components/files/AdminFiles.tsx +1 -6
  135. package/src/admin/components/jobs/AdminJobExecutions.tsx +33 -39
  136. package/src/admin/components/jobs/AdminJobRegistry.tsx +9 -18
  137. package/src/admin/components/keys/AdminApiKeys.tsx +23 -41
  138. package/src/admin/components/notifications/AdminNotifications.tsx +519 -0
  139. package/src/admin/components/parameters/ParameterDetails.tsx +12 -270
  140. package/src/admin/components/parameters/ParameterDetailsConfigForm.tsx +238 -0
  141. package/src/admin/components/parameters/ParameterDetailsLoading.tsx +24 -0
  142. package/src/admin/components/parameters/ParameterHistory.tsx +10 -11
  143. package/src/admin/components/parameters/ParameterTree.tsx +28 -184
  144. package/src/admin/components/parameters/ParameterTreeNode.tsx +151 -0
  145. package/src/admin/components/sessions/AdminSessions.tsx +71 -71
  146. package/src/admin/components/shared/AdminResourceHeader.tsx +2 -25
  147. package/src/admin/components/shared/AdminResourceHeaderMenuItem.tsx +37 -0
  148. package/src/admin/components/shared/AdminResourceTabs.tsx +2 -26
  149. package/src/admin/components/shared/AdminResourceTabsItem.tsx +36 -0
  150. package/src/admin/components/users/AdminUserSessions.tsx +33 -31
  151. package/src/admin/components/users/AdminUsers.tsx +184 -72
  152. package/src/admin/index.ts +2 -2
  153. package/src/admin/primitives/$uiAdmin.ts +1 -1
  154. package/src/auth/components/Login.tsx +188 -121
  155. package/src/auth/components/Profile.tsx +1 -22
  156. package/src/auth/components/ProfileField.tsx +39 -0
  157. package/src/auth/components/Register.tsx +215 -158
  158. package/src/auth/components/ResetPassword.tsx +7 -11
  159. package/src/auth/components/VerifyEmail.tsx +35 -10
  160. package/src/auth/components/buttons/UserButton.tsx +20 -24
  161. package/src/auth/index.ts +1 -0
  162. package/src/core/atoms/alephaSidebarAtom.ts +1 -1
  163. package/src/core/atoms/alephaThemeListAtom.ts +14 -1
  164. package/src/core/atoms/alephaThemeOverridesAtom.ts +17 -0
  165. package/src/core/atoms/themes/editorial.ts +184 -0
  166. package/src/core/atoms/themes/monochrome.ts +197 -0
  167. package/src/core/atoms/themes/rosePine.ts +208 -0
  168. package/src/core/atoms/themes/softBrutalism.ts +221 -0
  169. package/src/core/atoms/themes/terminal.ts +186 -0
  170. package/src/core/components/Flex.tsx +101 -1
  171. package/src/core/components/Text.tsx +1 -1
  172. package/src/core/components/buttons/ActionButton.tsx +109 -87
  173. package/src/core/components/buttons/DarkModeButton.tsx +3 -3
  174. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  175. package/src/core/components/buttons/OmnibarButton.tsx +1 -2
  176. package/src/core/components/buttons/ThemeButton.tsx +40 -11
  177. package/src/core/components/buttons/ThemeExpertModal.tsx +184 -0
  178. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -2
  179. package/src/core/components/data/DetailDrawer.tsx +102 -96
  180. package/src/core/components/data/DetailList.tsx +2 -1
  181. package/src/core/components/layout/AppBar.tsx +10 -0
  182. package/src/core/components/layout/Breadcrumb.tsx +3 -6
  183. package/src/core/components/layout/DashboardShell.tsx +28 -11
  184. package/src/core/components/layout/Sidebar.tsx +18 -235
  185. package/src/core/components/layout/SidebarCollapsedItem.tsx +91 -0
  186. package/src/core/components/layout/SidebarItem.tsx +146 -0
  187. package/src/core/components/layout/index.ts +3 -1
  188. package/src/core/constants/ui.ts +5 -5
  189. package/src/core/form/components/Control.tsx +31 -29
  190. package/src/core/form/components/ControlArray.tsx +13 -39
  191. package/src/core/form/components/ControlDate.tsx +10 -21
  192. package/src/core/form/components/ControlNumber.tsx +4 -33
  193. package/src/core/form/components/ControlQueryBuilder.tsx +12 -175
  194. package/src/core/form/components/ControlQueryBuilderHelp.tsx +165 -0
  195. package/src/core/form/components/ControlSelect.browser.spec.tsx +343 -0
  196. package/src/core/form/components/ControlSelect.tsx +294 -92
  197. package/src/core/form/components/TypeForm.browser.spec.tsx +3 -3
  198. package/src/core/form/components/TypeForm.tsx +5 -2
  199. package/src/core/form/index.ts +8 -1
  200. package/src/core/form/utils/parseInput.ts +7 -3
  201. package/src/core/hooks/useTheme.ts +26 -3
  202. package/src/core/index.ts +9 -2
  203. package/src/core/interfaces/AlephaTheme.ts +2 -0
  204. package/src/core/json/components/JsonViewer.tsx +103 -319
  205. package/src/core/json/components/JsonViewerCopyButton.tsx +46 -0
  206. package/src/core/json/components/JsonViewerRowNode.tsx +120 -0
  207. package/src/core/json/components/JsonViewerShared.ts +76 -0
  208. package/src/core/providers/ThemeProvider.ts +108 -8
  209. package/src/core/services/DialogService.tsx +24 -3
  210. package/src/core/styles.css +33 -20
  211. package/src/core/table/components/ColumnPicker.tsx +3 -3
  212. package/src/core/table/components/DataTable.tsx +233 -143
  213. package/src/core/table/components/DataTableFilters.tsx +6 -16
  214. package/src/core/table/components/DataTablePagination.tsx +58 -29
  215. package/src/core/table/components/DataTableToolbar.tsx +16 -7
  216. package/src/core/table/components/FilterPicker.tsx +3 -3
  217. package/src/core/table/index.ts +1 -0
  218. package/src/core/table/interfaces/types.ts +42 -9
  219. package/src/core/utils/icons.tsx +2 -2
  220. package/src/demo/DemoRouter.ts +8 -1
  221. package/src/demo/components/DemoLayout.tsx +12 -2
  222. package/src/demo/components/auth/DemoLogin.tsx +35 -28
  223. package/src/demo/components/auth/DemoRegister.tsx +35 -49
  224. package/src/demo/components/auth/DemoResetPassword.tsx +5 -9
  225. package/src/demo/components/auth/DemoVerifyEmail.tsx +7 -6
  226. package/src/demo/components/core/DemoButton.tsx +123 -103
  227. package/src/demo/components/core/DemoControlSelect.tsx +325 -0
  228. package/src/demo/components/core/DemoDataTable.tsx +255 -241
  229. package/src/demo/components/core/DemoTypeForm.tsx +7 -2
  230. package/src/demo/components/shared/MacWindow.tsx +5 -11
  231. package/src/demo/components/shared/Showcase.tsx +28 -42
  232. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +0 -1
  233. package/dist/admin/AdminAudits-Bgbf04hO.js.map +0 -1
  234. package/dist/admin/AdminFiles-B9a7G3cY.js.map +0 -1
  235. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +0 -1
  236. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +0 -1
  237. package/dist/admin/AdminLayout-DHsvWxVB.js +0 -70
  238. package/dist/admin/AdminLayout-DHsvWxVB.js.map +0 -1
  239. package/dist/admin/AdminParameters-DHw9ATgl.js.map +0 -1
  240. package/dist/admin/AdminSessions-BhGJPI3z.js.map +0 -1
  241. package/dist/admin/AdminUserLayout-BdC4Te8m.js.map +0 -1
  242. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +0 -1
  243. package/dist/admin/AdminUsers-C85c3eiQ.js +0 -121
  244. package/dist/admin/AdminUsers-C85c3eiQ.js.map +0 -1
  245. package/dist/admin/Login-BGheURrg.js +0 -219
  246. package/dist/admin/Login-BGheURrg.js.map +0 -1
  247. package/dist/admin/Profile-B-c9pCPf.js.map +0 -1
  248. package/dist/admin/Register-Cs10l8vX.js.map +0 -1
  249. package/dist/admin/ResetPassword-BwDdfkGH.js.map +0 -1
  250. package/dist/admin/VerifyEmail-DfXHAiQl.js.map +0 -1
  251. package/dist/admin/auth-Dr0Cf8I7.js +0 -319
  252. package/dist/admin/auth-Dr0Cf8I7.js.map +0 -1
  253. package/dist/admin/core-2xoLiT0o.js.map +0 -1
  254. package/dist/auth/Login-Denw_UGy.js +0 -219
  255. package/dist/auth/Login-Denw_UGy.js.map +0 -1
  256. package/dist/auth/Profile-BMX_Ar_s.js.map +0 -1
  257. package/dist/auth/Register-6hi_cpfF.js.map +0 -1
  258. package/dist/auth/ResetPassword-CqfTk1FI.js.map +0 -1
  259. package/dist/auth/VerifyEmail-nWiSTMjF.js.map +0 -1
  260. package/dist/auth/core-niW0sFLv.js.map +0 -1
  261. package/dist/demo/DemoButton-BmaWZVwf.js +0 -178
  262. package/dist/demo/DemoButton-BmaWZVwf.js.map +0 -1
  263. package/dist/demo/DemoDataTable-Z9xyV221.js +0 -362
  264. package/dist/demo/DemoDataTable-Z9xyV221.js.map +0 -1
  265. package/dist/demo/DemoLayout-C56xb5EE.js.map +0 -1
  266. package/dist/demo/DemoLogin-BZwpicOS.js.map +0 -1
  267. package/dist/demo/DemoRegister-C7_qc4MJ.js.map +0 -1
  268. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js.map +0 -1
  269. package/dist/demo/DemoTypeForm-DDzWoMSV.js.map +0 -1
  270. package/dist/demo/DemoVerifyEmail-C_Irdnov.js +0 -30
  271. package/dist/demo/DemoVerifyEmail-C_Irdnov.js.map +0 -1
  272. package/dist/demo/Login-hSOU3jZc.js +0 -219
  273. package/dist/demo/Login-hSOU3jZc.js.map +0 -1
  274. package/dist/demo/Profile-CWqti7FB.js.map +0 -1
  275. package/dist/demo/Register-a70LPgs2.js.map +0 -1
  276. package/dist/demo/ResetPassword-DWN0lzr5.js.map +0 -1
  277. package/dist/demo/Showcase-Dq3MISpd.js.map +0 -1
  278. package/dist/demo/VerifyEmail-DZWL72K4.js.map +0 -1
  279. package/dist/demo/core-RCUw1Q-a.js.map +0 -1
  280. package/src/demo/styles.css +0 -0
@@ -1,17 +1,330 @@
1
- import { t as AlephaUI } from "./core-2xoLiT0o.js";
2
- import { r as AuthRouter, t as AlephaUIAuth } from "./auth-Dr0Cf8I7.js";
3
- import "./IconGoogle-CSQLPYwX.js";
4
- import "./Login-BGheURrg.js";
5
- import "./Register-Cs10l8vX.js";
6
- import "./ResetPassword-BwDdfkGH.js";
7
- import "./VerifyEmail-DfXHAiQl.js";
8
- import { $context, $inject, $module } from "alepha";
9
- import { IconClock, IconDevices, IconFile, IconHistory, IconKey, IconListDetails, IconSettings, IconTerminal2, IconUser, IconUsers } from "@tabler/icons-react";
10
- import { $page, ReactRouter, Redirection } from "alepha/react/router";
11
- import { ReactAuth } from "alepha/react/auth";
1
+ import { _ as ActionButton, c as Breadcrumb, h as LanguageButton, p as ThemeButton, t as AlephaUI, v as ui, x as alephaSidebarAtom } from "./core-CYaRQ8O-.js";
2
+ import "./IconGoogle-Ch1m3Uzl.js";
3
+ import "./Login-xtNmQtGh.js";
4
+ import "./Register-JcCjHUUn.js";
5
+ import "./ResetPassword-CwGBPLJO.js";
6
+ import "./VerifyEmail-hNxWejWf.js";
7
+ import { $context, $inject, $module, AlephaError, t } from "alepha";
8
+ import { $dictionary, AlephaReactI18n } from "alepha/react/i18n";
9
+ import { $cookie } from "alepha/server/cookies";
10
+ import { Avatar } from "@mantine/core";
11
+ import { jsx } from "react/jsx-runtime";
12
+ import { IconBell, IconClock, IconDashboard, IconDevices, IconFile, IconHistory, IconKey, IconLayoutDashboard, IconListDetails, IconLockPassword, IconLogin2, IconLogout, IconLogout2, IconMailCheck, IconPasswordUser, IconSettings, IconTerminal2, IconUser, IconUserPlus, IconUsers } from "@tabler/icons-react";
13
+ import { $page, ReactPageProvider, ReactRouter, Redirection, useRouter } from "alepha/react/router";
14
+ import { useClient, useInject } from "alepha/react";
15
+ import { AlephaReactAuth, ReactAuth, useAuth } from "alepha/react/auth";
12
16
  import { $client } from "alepha/server/links";
13
17
 
14
- //#region ../../src/admin/AdminRouter.ts
18
+ //#region ../../src/auth/AuthI18n.ts
19
+ var AuthI18n = class {
20
+ en = $dictionary({
21
+ name: "alepha.ui.auth.en",
22
+ lazy: () => ({ default: {
23
+ loginSignIn: "Sign in",
24
+ loginContinueWith: "Continue with $1",
25
+ loginOr: "OR",
26
+ loginCancel: "Cancel",
27
+ loginForgotPassword: "Forgot password?",
28
+ loginNoAccount: "Don't have an account?",
29
+ loginSignUp: "Sign up",
30
+ loginUsername: "Username",
31
+ loginEmail: "Email",
32
+ loginPhone: "Phone number",
33
+ loginPassword: "Password",
34
+ registerCreateAccount: "Create account",
35
+ registerContinueWith: "Continue with $1",
36
+ registerOr: "OR",
37
+ registerCancel: "Cancel",
38
+ registerHaveAccount: "Already have an account?",
39
+ registerSignIn: "Sign in",
40
+ registerUsername: "Username",
41
+ registerEmail: "Email",
42
+ registerPhone: "Phone number",
43
+ registerPassword: "Password",
44
+ registerConfirmPassword: "Confirm password",
45
+ registerDisabled: "Registration is not available. Please contact your administrator.",
46
+ registerBackToSignIn: "Back to sign in",
47
+ registerVerifyTitle: "Verify your account",
48
+ registerVerifyDescription: "Please enter the verification code(s) sent to you.",
49
+ registerEmailCode: "Email verification code",
50
+ registerPhoneCode: "Phone verification code",
51
+ registerVerifySubmit: "Complete Registration",
52
+ registerVerifyBack: "Back to registration",
53
+ resetPasswordTitle: "Reset password",
54
+ resetPasswordEmail: "Email",
55
+ resetPasswordEnterEmail: "Enter your email address to reset your password",
56
+ resetPasswordSendCode: "Send verification code",
57
+ resetPasswordCodeSent: "We've sent a verification code to your email.",
58
+ resetPasswordEnterCode: "Enter the 6-digit code",
59
+ resetPasswordResendCode: "Resend code",
60
+ resetPasswordEnterNewPassword: "Create your new password",
61
+ resetPasswordNewPassword: "New password",
62
+ resetPasswordConfirmPassword: "Confirm password",
63
+ resetPasswordSetNewPassword: "Set new password",
64
+ resetPasswordSuccess: "Your password has been reset successfully.",
65
+ resetPasswordBackToSignIn: "Back to sign in",
66
+ resetPasswordCancel: "Cancel",
67
+ resetPasswordDisabled: "Password reset is not available. Please contact your administrator.",
68
+ verifyEmailTitle: "Email Verification",
69
+ verifyEmailVerifying: "Verifying your email...",
70
+ verifyEmailPleaseWait: "Please wait while we verify your email address.",
71
+ verifyEmailSuccess: "Your email has been verified successfully.",
72
+ verifyEmailFailed: "Failed to verify your email. The link may have expired or is invalid.",
73
+ verifyEmailMissingParams: "Invalid verification link. Email and token are required.",
74
+ verifyEmailSignIn: "Sign in to your account",
75
+ verifyEmailBackToSignIn: "Back to sign in"
76
+ } })
77
+ });
78
+ fr = $dictionary({ lazy: () => ({ default: {
79
+ loginSignIn: "Se connecter",
80
+ loginContinueWith: "Continuer avec $1",
81
+ loginOr: "OU",
82
+ loginCancel: "Annuler",
83
+ loginForgotPassword: "Mot de passe oublié ?",
84
+ loginNoAccount: "Vous n'avez pas de compte ?",
85
+ loginSignUp: "S'inscrire",
86
+ loginUsername: "Nom d'utilisateur",
87
+ loginEmail: "E-mail",
88
+ loginPhone: "Numéro de téléphone",
89
+ loginPassword: "Mot de passe",
90
+ registerCreateAccount: "Créer un compte",
91
+ registerContinueWith: "Continuer avec $1",
92
+ registerOr: "OU",
93
+ registerCancel: "Annuler",
94
+ registerHaveAccount: "Vous avez déjà un compte ?",
95
+ registerSignIn: "Se connecter",
96
+ registerUsername: "Nom d'utilisateur",
97
+ registerEmail: "E-mail",
98
+ registerPhone: "Numéro de téléphone",
99
+ registerPassword: "Mot de passe",
100
+ registerConfirmPassword: "Confirmer le mot de passe",
101
+ registerDisabled: "L'inscription n'est pas disponible. Veuillez contacter votre administrateur.",
102
+ registerBackToSignIn: "Retour à la connexion",
103
+ registerVerifyTitle: "Vérifiez votre compte",
104
+ registerVerifyDescription: "Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.",
105
+ registerEmailCode: "Code de vérification par e-mail",
106
+ registerPhoneCode: "Code de vérification par téléphone",
107
+ registerVerifySubmit: "Terminer l'inscription",
108
+ registerVerifyBack: "Retour à l'inscription",
109
+ resetPasswordTitle: "Réinitialiser le mot de passe",
110
+ resetPasswordEmail: "E-mail",
111
+ resetPasswordEnterEmail: "Entrez votre adresse e-mail pour réinitialiser votre mot de passe",
112
+ resetPasswordSendCode: "Envoyer le code de vérification",
113
+ resetPasswordCodeSent: "Nous avons envoyé un code de vérification à votre e-mail.",
114
+ resetPasswordEnterCode: "Entrez le code à 6 chiffres",
115
+ resetPasswordResendCode: "Renvoyer le code",
116
+ resetPasswordEnterNewPassword: "Créez votre nouveau mot de passe",
117
+ resetPasswordNewPassword: "Nouveau mot de passe",
118
+ resetPasswordConfirmPassword: "Confirmer le mot de passe",
119
+ resetPasswordSetNewPassword: "Définir le nouveau mot de passe",
120
+ resetPasswordSuccess: "Votre mot de passe a été réinitialisé avec succès.",
121
+ resetPasswordBackToSignIn: "Retour à la connexion",
122
+ resetPasswordCancel: "Annuler",
123
+ resetPasswordDisabled: "La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.",
124
+ verifyEmailTitle: "Vérification de l'e-mail",
125
+ verifyEmailVerifying: "Vérification de votre e-mail...",
126
+ verifyEmailPleaseWait: "Veuillez patienter pendant que nous vérifions votre adresse e-mail.",
127
+ verifyEmailSuccess: "Votre e-mail a été vérifié avec succès.",
128
+ verifyEmailFailed: "Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.",
129
+ verifyEmailMissingParams: "Lien de vérification invalide. L'e-mail et le jeton sont requis.",
130
+ verifyEmailSignIn: "Se connecter à votre compte",
131
+ verifyEmailBackToSignIn: "Retour à la connexion"
132
+ } }) });
133
+ };
134
+
135
+ //#endregion
136
+ //#region ../../src/auth/AuthRouter.ts
137
+ /**
138
+ * Schema for realm query parameter used across auth pages.
139
+ */
140
+ const realmQuerySchema = t.object({
141
+ r: t.optional(t.string({ description: "Redirect URL after authentication" })),
142
+ realm: t.optional(t.string({ description: "User realm name for multi-tenant auth" }))
143
+ });
144
+ var AuthRouter = class {
145
+ realmClient = $client();
146
+ auth = $inject(ReactAuth);
147
+ authLayout = $page({
148
+ label: "Auth",
149
+ path: "/auth",
150
+ lazy: () => import("./AuthLayout-_frhdgOO.js"),
151
+ children: () => [
152
+ this.login,
153
+ this.register,
154
+ this.resetPassword,
155
+ this.verifyEmail,
156
+ this.profile
157
+ ]
158
+ });
159
+ login = $page({
160
+ icon: IconLogin2,
161
+ label: "Sign In",
162
+ description: "Sign in to your account",
163
+ path: "/login",
164
+ schema: { query: realmQuerySchema },
165
+ lazy: () => import("./Login-xtNmQtGh.js").then((n) => n.t),
166
+ loader: async ({ query, user }) => {
167
+ if (user) throw new Redirection(query.r || "/");
168
+ return { realmConfig: await this.loadRealmConfig(query.realm) };
169
+ }
170
+ });
171
+ register = $page({
172
+ icon: IconUserPlus,
173
+ label: "Register",
174
+ description: "Create a new account",
175
+ path: "/register",
176
+ schema: { query: realmQuerySchema },
177
+ lazy: () => import("./Register-JcCjHUUn.js").then((n) => n.t),
178
+ loader: async ({ query, user }) => {
179
+ if (user) throw new Redirection(query.r || "/");
180
+ return { realmConfig: await this.loadRealmConfig(query.realm) };
181
+ }
182
+ });
183
+ resetPassword = $page({
184
+ icon: IconPasswordUser,
185
+ label: "Reset Password",
186
+ description: "Reset your account password",
187
+ path: "/reset-password",
188
+ schema: { query: realmQuerySchema },
189
+ lazy: () => import("./ResetPassword-CwGBPLJO.js").then((n) => n.t),
190
+ loader: async ({ query, user }) => {
191
+ if (user) throw new Redirection(query.r || "/");
192
+ return { realmConfig: await this.loadRealmConfig(query.realm) };
193
+ }
194
+ });
195
+ verifyEmail = $page({
196
+ icon: IconMailCheck,
197
+ label: "Verify Email",
198
+ description: "Verify your email address",
199
+ path: "/verify-email",
200
+ schema: { query: t.object({
201
+ email: t.optional(t.string()),
202
+ token: t.optional(t.string())
203
+ }) },
204
+ lazy: () => import("./VerifyEmail-hNxWejWf.js").then((n) => n.t)
205
+ });
206
+ logout = $page({
207
+ icon: IconLogout2,
208
+ label: "Sign Out",
209
+ description: "Sign out of your account",
210
+ path: "/logout",
211
+ component: () => null,
212
+ loader: () => {
213
+ this.auth.logout();
214
+ return {};
215
+ }
216
+ });
217
+ profile = $page({
218
+ name: "userProfile",
219
+ icon: IconUser,
220
+ label: "Profile",
221
+ description: "View your profile",
222
+ path: "/profile",
223
+ can: () => !!this.auth.user,
224
+ lazy: () => import("./Profile-_AtPUwAP.js")
225
+ });
226
+ async loadRealmConfig(realmName) {
227
+ try {
228
+ return await this.realmClient.getRealmConfig({ query: { realmName } });
229
+ } catch (e) {
230
+ if (e instanceof AlephaError) throw new AlephaError("Missing Realm Configuration - Did you forget to add '$realm()' to your application?", e);
231
+ throw e;
232
+ }
233
+ }
234
+ };
235
+
236
+ //#endregion
237
+ //#region ../../src/auth/components/buttons/UserButton.tsx
238
+ const UserButton = (props) => {
239
+ const { menuItems = [], logoutLabel = "Sign out", loginLabel, menuConfig, icon, skipProfile = false, children, ...buttonProps } = props;
240
+ buttonProps.variant ??= "default";
241
+ const adminUserCtrl = useClient();
242
+ const pages = useInject(ReactPageProvider);
243
+ const auth = useAuth();
244
+ const isConnected = !!auth.user;
245
+ const isAdmin = isConnected && adminUserCtrl.findUsers.can();
246
+ const userPage = pages.getPages().find((it) => it.name === "userProfile");
247
+ const adminPage = pages.getPages().find((it) => it.name === "adminLayout");
248
+ const authRouter = useRouter();
249
+ if (!auth.user) return /* @__PURE__ */ jsx(ActionButton, {
250
+ ...buttonProps,
251
+ icon: icon === null ? void 0 : icon ?? IconLogin2,
252
+ href: authRouter.path("login"),
253
+ children: loginLabel ?? children
254
+ });
255
+ const items = [];
256
+ if (auth.user.email && auth.user.username) items.push({
257
+ type: "label",
258
+ label: auth.user.email
259
+ });
260
+ if (userPage && isConnected && !skipProfile) items.push({
261
+ label: "Profile",
262
+ icon: /* @__PURE__ */ jsx(IconUser, { size: ui.sizes.icon.sm }),
263
+ href: authRouter.path("userProfile")
264
+ });
265
+ if (adminPage && isAdmin) items.push({
266
+ label: "Admin",
267
+ icon: /* @__PURE__ */ jsx(IconSettings, { size: ui.sizes.icon.sm }),
268
+ href: authRouter.path("adminLayout")
269
+ });
270
+ items.push(...menuItems);
271
+ if (items.length > 0) items.push({ type: "divider" });
272
+ items.push({
273
+ label: logoutLabel,
274
+ icon: /* @__PURE__ */ jsx(IconLogout, { size: ui.sizes.icon.sm }),
275
+ color: "red",
276
+ onClick: () => auth.logout()
277
+ });
278
+ const hasAvatar = icon === void 0 && auth.user.picture;
279
+ return /* @__PURE__ */ jsx(ActionButton, {
280
+ ...buttonProps,
281
+ icon: hasAvatar ? void 0 : icon === null ? void 0 : icon ?? IconUser,
282
+ px: 8,
283
+ menu: {
284
+ menuProps: {
285
+ withArrow: true,
286
+ arrowSize: 12
287
+ },
288
+ position: "bottom",
289
+ width: 200,
290
+ ...menuConfig,
291
+ items
292
+ },
293
+ children: hasAvatar ? /* @__PURE__ */ jsx(Avatar, {
294
+ src: `/api/files/${auth.user.picture}`,
295
+ size: 24,
296
+ radius: "xl"
297
+ }) : void 0
298
+ });
299
+ };
300
+
301
+ //#endregion
302
+ //#region ../../src/auth/index.ts
303
+ /**
304
+ * Authentication UI components.
305
+ *
306
+ * **Features:**
307
+ * - Login page component
308
+ * - Register page component
309
+ * - Reset password page component
310
+ * - Email verification page component
311
+ * - UserButton for user menu
312
+ *
313
+ * @module alepha.ui.auth
314
+ */
315
+ const AlephaUIAuth = $module({
316
+ name: "alepha.ui.auth",
317
+ services: [
318
+ AlephaUI,
319
+ AlephaReactAuth,
320
+ AlephaReactI18n,
321
+ AuthRouter,
322
+ AuthI18n
323
+ ]
324
+ });
325
+
326
+ //#endregion
327
+ //#region ../../src/admin/AdminRouter.tsx
15
328
  var AdminRouter = class {
16
329
  router = $inject(ReactRouter);
17
330
  authRouter = $inject(AuthRouter);
@@ -23,58 +336,113 @@ var AdminRouter = class {
23
336
  auditCtrl = $client();
24
337
  jobCtrl = $client();
25
338
  apiKeyCtrl = $client();
339
+ notificationCtrl = $client();
340
+ adminCookie = $cookie(alephaSidebarAtom, { name: "admin.sidebar" });
26
341
  configFn = () => {
27
- return { sidebarProps: { items: this.getDefaultSidebarItems() } };
342
+ return {
343
+ sidebarProps: { items: this.getDefaultSidebarItems() },
344
+ appBarProps: { items: this.getDefaultAppBarItems() }
345
+ };
28
346
  };
347
+ getDefaultAppBarItems() {
348
+ return [
349
+ {
350
+ type: "burger",
351
+ position: "left"
352
+ },
353
+ {
354
+ element: /* @__PURE__ */ jsx(Breadcrumb, {}),
355
+ position: "left"
356
+ },
357
+ {
358
+ element: /* @__PURE__ */ jsx(UserButton, {}),
359
+ position: "right"
360
+ },
361
+ {
362
+ element: /* @__PURE__ */ jsx(ThemeButton, { expert: true }),
363
+ position: "right"
364
+ },
365
+ {
366
+ element: /* @__PURE__ */ jsx(LanguageButton, {}),
367
+ position: "right"
368
+ },
369
+ {
370
+ type: "dark",
371
+ position: "right"
372
+ }
373
+ ];
374
+ }
29
375
  getDefaultSidebarItems() {
30
- return [{
31
- type: "section",
32
- label: "Identity",
33
- children: [
34
- {
35
- ...this.router.node(this.adminUsers.name),
36
- can: () => this.userCtrl.findUsers.can()
37
- },
38
- {
39
- ...this.router.node(this.adminSessions.name),
40
- can: () => this.sessionCtrl.findSessions.can()
41
- },
42
- {
43
- ...this.router.node(this.adminApiKeys.name),
44
- can: () => this.apiKeyCtrl.findApiKeys.can()
45
- }
46
- ]
47
- }, {
48
- type: "section",
49
- label: "System",
50
- children: [
51
- {
52
- ...this.router.node(this.adminFiles.name),
53
- can: () => this.fileCtrl.findFiles.can()
54
- },
55
- {
56
- ...this.router.node(this.adminJobDashboard.name),
57
- href: void 0,
58
- can: () => this.jobCtrl.getJobRegistry.can(),
376
+ return [
377
+ {
378
+ position: "top",
379
+ type: "search"
380
+ },
381
+ {
382
+ position: "top",
383
+ type: "spacer"
384
+ },
385
+ {
386
+ label: "Dashboard",
387
+ href: "/admin",
388
+ icon: IconLayoutDashboard
389
+ },
390
+ {
391
+ type: "section",
392
+ label: "Security",
393
+ children: [{
394
+ label: "Identity",
395
+ icon: IconLockPassword,
59
396
  children: [
60
397
  {
61
- ...this.router.node(this.adminJobDashboard.name),
62
- label: "Dashboard"
398
+ ...this.router.node(this.adminUsers.name),
399
+ can: () => this.userCtrl.findUsers.can()
400
+ },
401
+ {
402
+ ...this.router.node(this.adminSessions.name),
403
+ can: () => this.sessionCtrl.findSessions.can()
63
404
  },
64
- { ...this.router.node(this.adminJobRegistry.name) },
65
- { ...this.router.node(this.adminJobExecutions.name) }
405
+ {
406
+ ...this.router.node(this.adminApiKeys.name),
407
+ can: () => this.apiKeyCtrl.findApiKeys.can()
408
+ }
66
409
  ]
67
- },
68
- {
410
+ }, {
69
411
  ...this.router.node(this.adminAudits.name),
70
412
  can: () => this.auditCtrl.findAudits.can()
71
- },
72
- {
73
- ...this.router.node(this.adminParameters.name),
74
- can: () => this.paramCtrl.getParameterTree.can()
75
- }
76
- ]
77
- }];
413
+ }]
414
+ },
415
+ {
416
+ type: "section",
417
+ label: "System",
418
+ children: [
419
+ {
420
+ ...this.router.node(this.adminFiles.name),
421
+ can: () => this.fileCtrl.findFiles.can()
422
+ },
423
+ {
424
+ label: "Jobs",
425
+ icon: IconTerminal2,
426
+ children: [
427
+ {
428
+ ...this.router.node(this.adminJobDashboard.name),
429
+ label: "Dashboard"
430
+ },
431
+ { ...this.router.node(this.adminJobRegistry.name) },
432
+ { ...this.router.node(this.adminJobExecutions.name) }
433
+ ]
434
+ },
435
+ {
436
+ ...this.router.node(this.adminNotifications.name),
437
+ can: () => this.notificationCtrl.findNotifications.can()
438
+ },
439
+ {
440
+ ...this.router.node(this.adminParameters.name),
441
+ can: () => this.paramCtrl.getParameterTree.can()
442
+ }
443
+ ]
444
+ }
445
+ ];
78
446
  }
79
447
  adminShellProps() {
80
448
  if (this.configFn) return this.configFn(this);
@@ -86,48 +454,64 @@ var AdminRouter = class {
86
454
  adminLayout = $page({
87
455
  path: "/admin",
88
456
  label: "Admin",
89
- lazy: () => import("./AdminLayout-DHsvWxVB.js"),
457
+ head: {
458
+ title: "Admin Panel",
459
+ titleSeparator: " | "
460
+ },
461
+ lazy: () => import("./AdminLayout-I6TlUMPc.js"),
90
462
  props: () => ({ adminShellProps: this.adminShellProps() }),
91
463
  loader: ({ user, url }) => {
92
464
  if (!user) throw this.onNotAuthorized(url);
93
465
  return {};
94
466
  }
95
467
  });
468
+ adminDashboard = $page({
469
+ icon: IconLayoutDashboard,
470
+ parent: this.adminLayout,
471
+ path: "/",
472
+ label: "Dashboard",
473
+ lazy: () => import("./AdminDashboard-PhC_dZqo.js")
474
+ });
96
475
  adminUsers = $page({
97
476
  icon: IconUsers,
98
477
  parent: this.adminLayout,
99
478
  path: "/users",
100
479
  label: "Users",
480
+ head: { title: "Users" },
101
481
  description: "Manage application users and their roles.",
102
- lazy: () => import("./AdminUsers-C85c3eiQ.js"),
482
+ lazy: () => import("./AdminUsers-D1UfGya9.js"),
103
483
  can: () => this.userCtrl.findUsers.can()
104
484
  });
105
485
  adminUserLayout = $page({
106
486
  parent: this.adminLayout,
107
487
  path: "/users/:userId",
108
- lazy: () => import("./AdminUserLayout-BdC4Te8m.js")
488
+ head: { title: "Users" },
489
+ lazy: () => import("./AdminUserLayout-lXT6I0Qq.js")
109
490
  });
110
491
  adminUserProfile = $page({
111
492
  icon: IconUser,
112
493
  parent: this.adminUserLayout,
113
494
  path: "/",
114
495
  label: "Profile",
115
- lazy: () => import("./AdminUserProfile-DAt23fqY.js")
496
+ head: { title: "User Profile" },
497
+ lazy: () => import("./AdminUserProfile-vFBLoJ3h.js")
116
498
  });
117
499
  adminUserSessions = $page({
118
500
  icon: IconDevices,
119
501
  parent: this.adminUserLayout,
120
502
  path: "/sessions",
121
503
  label: "Sessions",
122
- lazy: () => import("./AdminUserSessions-1uzcx02z.js")
504
+ head: { title: "User Sessions" },
505
+ lazy: () => import("./AdminUserSessions-CT_YDim0.js")
123
506
  });
124
507
  adminAudits = $page({
125
508
  icon: IconHistory,
126
509
  parent: this.adminLayout,
127
510
  path: "/audits",
128
511
  label: "Audit Log",
512
+ head: { title: "Audit Logs" },
129
513
  description: "View system-wide audit trail and activity logs.",
130
- lazy: () => import("./AdminAudits-Bgbf04hO.js"),
514
+ lazy: () => import("./AdminAudits-CKiFMSSU.js"),
131
515
  can: () => this.auditCtrl.findAudits.can()
132
516
  });
133
517
  adminSessions = $page({
@@ -136,7 +520,8 @@ var AdminRouter = class {
136
520
  path: "/sessions",
137
521
  label: "Sessions",
138
522
  description: "View and manage all active sessions.",
139
- lazy: () => import("./AdminSessions-BhGJPI3z.js"),
523
+ head: { title: "Sessions" },
524
+ lazy: () => import("./AdminSessions-Bz5NRuoW.js"),
140
525
  can: () => this.sessionCtrl.findSessions.can()
141
526
  });
142
527
  adminFiles = $page({
@@ -145,7 +530,8 @@ var AdminRouter = class {
145
530
  path: "/files",
146
531
  label: "Files",
147
532
  description: "Manage uploaded files and storage.",
148
- lazy: () => import("./AdminFiles-B9a7G3cY.js"),
533
+ head: { title: "Files" },
534
+ lazy: () => import("./AdminFiles-DFTjijGp.js"),
149
535
  can: () => this.fileCtrl.findFiles.can()
150
536
  });
151
537
  adminParameters = $page({
@@ -154,19 +540,20 @@ var AdminRouter = class {
154
540
  path: "/parameters",
155
541
  label: "Parameters",
156
542
  description: "View and manage application parameters.",
157
- lazy: () => import("./AdminParameters-DHw9ATgl.js"),
543
+ lazy: () => import("./AdminParameters-CqgvhRsb.js"),
158
544
  can: () => this.paramCtrl.getParameterTree.can(),
545
+ head: { title: "Parameters" },
159
546
  loader: async () => {
160
547
  return { treeData: await this.paramCtrl.getParameterTree({}) };
161
548
  }
162
549
  });
163
550
  adminJobDashboard = $page({
164
- icon: IconTerminal2,
551
+ icon: IconDashboard,
165
552
  parent: this.adminLayout,
166
553
  path: "/jobs",
167
554
  label: "Jobs",
168
555
  description: "Monitor and manage background jobs and scheduled tasks.",
169
- lazy: () => import("./AdminJobDashboard-DaTwf5OY.js"),
556
+ lazy: () => import("./AdminJobDashboard-BL8gGPDp.js"),
170
557
  can: () => this.jobCtrl.getJobRegistry.can()
171
558
  });
172
559
  adminJobRegistry = $page({
@@ -175,7 +562,7 @@ var AdminRouter = class {
175
562
  path: "/jobs/registry",
176
563
  label: "Registry",
177
564
  description: "View all registered job definitions.",
178
- lazy: () => import("./AdminJobRegistry-DFgV3oqx.js"),
565
+ lazy: () => import("./AdminJobRegistry-Ci9ue1zC.js"),
179
566
  can: () => this.jobCtrl.getJobRegistry.can()
180
567
  });
181
568
  adminJobExecutions = $page({
@@ -184,7 +571,7 @@ var AdminRouter = class {
184
571
  path: "/jobs/executions",
185
572
  label: "Executions",
186
573
  description: "Browse and filter job execution history.",
187
- lazy: () => import("./AdminJobExecutions-B9cek5dl.js"),
574
+ lazy: () => import("./AdminJobExecutions-D9E-CS-U.js"),
188
575
  can: () => this.jobCtrl.findJobExecutions.can()
189
576
  });
190
577
  adminApiKeys = $page({
@@ -192,10 +579,21 @@ var AdminRouter = class {
192
579
  parent: this.adminLayout,
193
580
  path: "/api-keys",
194
581
  label: "API Keys",
582
+ head: { title: "API Keys" },
195
583
  description: "View and manage API keys for programmatic access.",
196
- lazy: () => import("./AdminApiKeys-C-6_Q-lH.js"),
584
+ lazy: () => import("./AdminApiKeys-Dy_k-4Vd.js"),
197
585
  can: () => this.apiKeyCtrl.findApiKeys.can()
198
586
  });
587
+ adminNotifications = $page({
588
+ icon: IconBell,
589
+ parent: this.adminLayout,
590
+ path: "/notifications",
591
+ label: "Notifications",
592
+ description: "View sent notifications and their delivery status.",
593
+ head: { title: "Notifications" },
594
+ lazy: () => import("./AdminNotifications-ZPHCYrv7.js"),
595
+ can: () => this.notificationCtrl.findNotifications.can()
596
+ });
199
597
  };
200
598
 
201
599
  //#endregion