@alepha/ui 0.18.1 → 0.18.2

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 (187) hide show
  1. package/dist/admin/{AdminApiKeys-C-6_Q-lH.js → AdminApiKeys-BJhIwfD6.js} +17 -38
  2. package/dist/admin/AdminApiKeys-BJhIwfD6.js.map +1 -0
  3. package/dist/admin/{AdminAudits-Bgbf04hO.js → AdminAudits-DzD_4cDt.js} +23 -19
  4. package/dist/admin/AdminAudits-DzD_4cDt.js.map +1 -0
  5. package/dist/admin/AdminDashboard-C92tIc6x.js +67 -0
  6. package/dist/admin/AdminDashboard-C92tIc6x.js.map +1 -0
  7. package/dist/admin/{AdminFiles-B9a7G3cY.js → AdminFiles-DLpfhBkf.js} +3 -7
  8. package/dist/admin/AdminFiles-DLpfhBkf.js.map +1 -0
  9. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js → AdminJobDashboard-KIOkeMgE.js} +2 -2
  10. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js.map → AdminJobDashboard-KIOkeMgE.js.map} +1 -1
  11. package/dist/admin/{AdminJobExecutions-B9cek5dl.js → AdminJobExecutions-D0Yo_PU0.js} +24 -36
  12. package/dist/admin/AdminJobExecutions-D0Yo_PU0.js.map +1 -0
  13. package/dist/admin/{AdminJobRegistry-DFgV3oqx.js → AdminJobRegistry-PFajqaGK.js} +10 -18
  14. package/dist/admin/AdminJobRegistry-PFajqaGK.js.map +1 -0
  15. package/dist/admin/AdminLayout-B1DXZHDn.js +61 -0
  16. package/dist/admin/AdminLayout-B1DXZHDn.js.map +1 -0
  17. package/dist/admin/{AdminParameters-DHw9ATgl.js → AdminParameters-BspPeqp_.js} +2 -2
  18. package/dist/admin/{AdminParameters-DHw9ATgl.js.map → AdminParameters-BspPeqp_.js.map} +1 -1
  19. package/dist/admin/{AdminSessions-BhGJPI3z.js → AdminSessions-BnH5CZQl.js} +48 -53
  20. package/dist/admin/AdminSessions-BnH5CZQl.js.map +1 -0
  21. package/dist/admin/{AdminUserLayout-BdC4Te8m.js → AdminUserLayout-DUbC6-BI.js} +2 -2
  22. package/dist/admin/{AdminUserLayout-BdC4Te8m.js.map → AdminUserLayout-DUbC6-BI.js.map} +1 -1
  23. package/dist/admin/{AdminUserProfile-DAt23fqY.js → AdminUserProfile-DuTUnjdG.js} +3 -3
  24. package/dist/admin/{AdminUserProfile-DAt23fqY.js.map → AdminUserProfile-DuTUnjdG.js.map} +1 -1
  25. package/dist/admin/{AdminUserSessions-1uzcx02z.js → AdminUserSessions-DvZdAGpL.js} +33 -35
  26. package/dist/admin/AdminUserSessions-DvZdAGpL.js.map +1 -0
  27. package/dist/admin/AdminUsers-CR9z0g_5.js +206 -0
  28. package/dist/admin/AdminUsers-CR9z0g_5.js.map +1 -0
  29. package/dist/admin/{AuthLayout-DFJvCvzw.js → AuthLayout-DsUfp9RG.js} +2 -2
  30. package/dist/admin/{AuthLayout-DFJvCvzw.js.map → AuthLayout-DsUfp9RG.js.map} +1 -1
  31. package/dist/admin/{IconGoogle-CSQLPYwX.js → IconGoogle-Ch1m3Uzl.js} +1 -1
  32. package/dist/admin/{IconGoogle-CSQLPYwX.js.map → IconGoogle-Ch1m3Uzl.js.map} +1 -1
  33. package/dist/admin/{Login-BGheURrg.js → Login-DHbYJKwg.js} +3 -3
  34. package/dist/{auth/Login-Denw_UGy.js.map → admin/Login-DHbYJKwg.js.map} +1 -1
  35. package/dist/{auth/Profile-BMX_Ar_s.js → admin/Profile-B2EcIDB9.js} +2 -2
  36. package/dist/{auth/Profile-BMX_Ar_s.js.map → admin/Profile-B2EcIDB9.js.map} +1 -1
  37. package/dist/admin/{Register-Cs10l8vX.js → Register-Z3fxRbUF.js} +3 -3
  38. package/dist/{demo/Register-a70LPgs2.js.map → admin/Register-Z3fxRbUF.js.map} +1 -1
  39. package/dist/admin/{ResetPassword-BwDdfkGH.js → ResetPassword-_Y1qTTKh.js} +2 -2
  40. package/dist/admin/{ResetPassword-BwDdfkGH.js.map → ResetPassword-_Y1qTTKh.js.map} +1 -1
  41. package/dist/admin/{VerifyEmail-DfXHAiQl.js → VerifyEmail-Bg22bwcC.js} +2 -2
  42. package/dist/admin/{VerifyEmail-DfXHAiQl.js.map → VerifyEmail-Bg22bwcC.js.map} +1 -1
  43. package/dist/admin/{core-2xoLiT0o.js → core-BVO_TQxb.js} +1474 -233
  44. package/dist/admin/core-BVO_TQxb.js.map +1 -0
  45. package/dist/admin/index.d.ts +29 -4
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +448 -69
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/auth/{AuthLayout-CAE1pX9s.js → AuthLayout-C161NeF6.js} +2 -2
  50. package/dist/auth/{AuthLayout-CAE1pX9s.js.map → AuthLayout-C161NeF6.js.map} +1 -1
  51. package/dist/auth/{Login-Denw_UGy.js → Login-C7jIqf00.js} +2 -2
  52. package/dist/{admin/Login-BGheURrg.js.map → auth/Login-C7jIqf00.js.map} +1 -1
  53. package/dist/{admin/Profile-B-c9pCPf.js → auth/Profile-BMpXJ0oi.js} +2 -2
  54. package/dist/{demo/Profile-CWqti7FB.js.map → auth/Profile-BMpXJ0oi.js.map} +1 -1
  55. package/dist/auth/{Register-6hi_cpfF.js → Register-2gx8qll-.js} +2 -2
  56. package/dist/auth/{Register-6hi_cpfF.js.map → Register-2gx8qll-.js.map} +1 -1
  57. package/dist/{demo/ResetPassword-DWN0lzr5.js → auth/ResetPassword-DBxt9hKk.js} +2 -2
  58. package/dist/auth/{ResetPassword-CqfTk1FI.js.map → ResetPassword-DBxt9hKk.js.map} +1 -1
  59. package/dist/{demo/VerifyEmail-DZWL72K4.js → auth/VerifyEmail-Z80Ubajk.js} +2 -2
  60. package/dist/auth/{VerifyEmail-nWiSTMjF.js.map → VerifyEmail-Z80Ubajk.js.map} +1 -1
  61. package/dist/auth/{core-niW0sFLv.js → core-DyfeVr5c.js} +1002 -38
  62. package/dist/auth/core-DyfeVr5c.js.map +1 -0
  63. package/dist/auth/index.d.ts +12 -1
  64. package/dist/auth/index.d.ts.map +1 -1
  65. package/dist/auth/index.js +12 -13
  66. package/dist/auth/index.js.map +1 -1
  67. package/dist/core/index.d.ts +95 -14
  68. package/dist/core/index.d.ts.map +1 -1
  69. package/dist/core/index.js +1473 -232
  70. package/dist/core/index.js.map +1 -1
  71. package/dist/demo/{AuthLayout-jLa0aKsI.js → AuthLayout-DN-ClJQk.js} +2 -2
  72. package/dist/demo/{AuthLayout-jLa0aKsI.js.map → AuthLayout-DN-ClJQk.js.map} +1 -1
  73. package/dist/demo/{DemoButton-BmaWZVwf.js → DemoButton-CGUyR9eM.js} +3 -3
  74. package/dist/demo/{DemoButton-BmaWZVwf.js.map → DemoButton-CGUyR9eM.js.map} +1 -1
  75. package/dist/demo/{DemoDataTable-Z9xyV221.js → DemoDataTable-QFG-xXSx.js} +15 -19
  76. package/dist/demo/DemoDataTable-QFG-xXSx.js.map +1 -0
  77. package/dist/demo/{DemoDialog-4ItHLf9t.js → DemoDialog-DW8QEvD1.js} +2 -2
  78. package/dist/demo/{DemoDialog-4ItHLf9t.js.map → DemoDialog-DW8QEvD1.js.map} +1 -1
  79. package/dist/demo/{DemoFlex-EtVq8QfX.js → DemoFlex-CAhLUanT.js} +3 -3
  80. package/dist/demo/{DemoFlex-EtVq8QfX.js.map → DemoFlex-CAhLUanT.js.map} +1 -1
  81. package/dist/demo/{DemoHeading-BS-vGfkI.js → DemoHeading-yIFmNjHB.js} +3 -3
  82. package/dist/demo/{DemoHeading-BS-vGfkI.js.map → DemoHeading-yIFmNjHB.js.map} +1 -1
  83. package/dist/demo/{DemoHome-Clbn8AmS.js → DemoHome-BSGuBHus.js} +2 -2
  84. package/dist/demo/{DemoHome-Clbn8AmS.js.map → DemoHome-BSGuBHus.js.map} +1 -1
  85. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js → DemoJsonViewer-DsA2IpgV.js} +3 -3
  86. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js.map → DemoJsonViewer-DsA2IpgV.js.map} +1 -1
  87. package/dist/demo/{DemoLayout-C56xb5EE.js → DemoLayout-Cy6xjn6P.js} +2 -2
  88. package/dist/demo/{DemoLayout-C56xb5EE.js.map → DemoLayout-Cy6xjn6P.js.map} +1 -1
  89. package/dist/demo/{DemoLogin-BZwpicOS.js → DemoLogin-vqxgTu4P.js} +8 -8
  90. package/dist/demo/{DemoLogin-BZwpicOS.js.map → DemoLogin-vqxgTu4P.js.map} +1 -1
  91. package/dist/demo/{DemoRegister-C7_qc4MJ.js → DemoRegister-YHPvPg77.js} +8 -8
  92. package/dist/demo/{DemoRegister-C7_qc4MJ.js.map → DemoRegister-YHPvPg77.js.map} +1 -1
  93. package/dist/demo/{DemoResetPassword-BI1Ct4Dw.js → DemoResetPassword-mOW18Zlm.js} +8 -8
  94. package/dist/demo/{DemoResetPassword-BI1Ct4Dw.js.map → DemoResetPassword-mOW18Zlm.js.map} +1 -1
  95. package/dist/demo/{DemoSidebar-CcBo4ltC.js → DemoSidebar-od7aLjP_.js} +3 -3
  96. package/dist/demo/{DemoSidebar-CcBo4ltC.js.map → DemoSidebar-od7aLjP_.js.map} +1 -1
  97. package/dist/demo/{DemoText-CzXuUn3g.js → DemoText-DU3JeRS0.js} +3 -3
  98. package/dist/demo/{DemoText-CzXuUn3g.js.map → DemoText-DU3JeRS0.js.map} +1 -1
  99. package/dist/demo/{DemoToast-BgHDhWrX.js → DemoToast-CUJEiPRa.js} +2 -2
  100. package/dist/demo/{DemoToast-BgHDhWrX.js.map → DemoToast-CUJEiPRa.js.map} +1 -1
  101. package/dist/demo/{DemoTypeForm-DDzWoMSV.js → DemoTypeForm-C1dNkahD.js} +3 -3
  102. package/dist/demo/{DemoTypeForm-DDzWoMSV.js.map → DemoTypeForm-C1dNkahD.js.map} +1 -1
  103. package/dist/demo/{DemoVerifyEmail-C_Irdnov.js → DemoVerifyEmail-D9EcXZ38.js} +8 -8
  104. package/dist/demo/{DemoVerifyEmail-C_Irdnov.js.map → DemoVerifyEmail-D9EcXZ38.js.map} +1 -1
  105. package/dist/demo/{Login-hSOU3jZc.js → Login-CoYf_P_F.js} +2 -2
  106. package/dist/demo/{Login-hSOU3jZc.js.map → Login-CoYf_P_F.js.map} +1 -1
  107. package/dist/demo/{Profile-CWqti7FB.js → Profile-BE_Y3co2.js} +2 -2
  108. package/dist/{admin/Profile-B-c9pCPf.js.map → demo/Profile-BE_Y3co2.js.map} +1 -1
  109. package/dist/demo/{Register-a70LPgs2.js → Register-fXHmBpr3.js} +2 -2
  110. package/dist/{admin/Register-Cs10l8vX.js.map → demo/Register-fXHmBpr3.js.map} +1 -1
  111. package/dist/{auth/ResetPassword-CqfTk1FI.js → demo/ResetPassword-CAPj8MO3.js} +2 -2
  112. package/dist/demo/{ResetPassword-DWN0lzr5.js.map → ResetPassword-CAPj8MO3.js.map} +1 -1
  113. package/dist/demo/{Showcase-Dq3MISpd.js → Showcase-BtEU0pY9.js} +2 -2
  114. package/dist/demo/{Showcase-Dq3MISpd.js.map → Showcase-BtEU0pY9.js.map} +1 -1
  115. package/dist/{auth/VerifyEmail-nWiSTMjF.js → demo/VerifyEmail-DFmdCdYs.js} +2 -2
  116. package/dist/demo/{VerifyEmail-DZWL72K4.js.map → VerifyEmail-DFmdCdYs.js.map} +1 -1
  117. package/dist/demo/{auth-d6n3xbug.js → auth-Djd7SKiw.js} +8 -8
  118. package/dist/demo/{auth-d6n3xbug.js.map → auth-Djd7SKiw.js.map} +1 -1
  119. package/dist/demo/{core-RCUw1Q-a.js → core-B7LNjM78.js} +1484 -226
  120. package/dist/demo/core-B7LNjM78.js.map +1 -0
  121. package/dist/demo/index.js +17 -17
  122. package/package.json +3 -3
  123. package/src/admin/{AdminRouter.ts → AdminRouter.tsx} +128 -19
  124. package/src/admin/components/AdminDashboard.tsx +52 -0
  125. package/src/admin/components/AdminLayout.tsx +32 -40
  126. package/src/admin/components/audits/AdminAudits.tsx +22 -16
  127. package/src/admin/components/files/AdminFiles.tsx +1 -6
  128. package/src/admin/components/jobs/AdminJobExecutions.tsx +33 -39
  129. package/src/admin/components/jobs/AdminJobRegistry.tsx +9 -18
  130. package/src/admin/components/keys/AdminApiKeys.tsx +23 -41
  131. package/src/admin/components/sessions/AdminSessions.tsx +71 -71
  132. package/src/admin/components/users/AdminUserSessions.tsx +33 -31
  133. package/src/admin/components/users/AdminUsers.tsx +184 -72
  134. package/src/admin/index.ts +2 -2
  135. package/src/admin/primitives/$uiAdmin.ts +1 -1
  136. package/src/auth/components/buttons/UserButton.tsx +1 -3
  137. package/src/core/atoms/alephaSidebarAtom.ts +1 -1
  138. package/src/core/atoms/alephaThemeListAtom.ts +14 -1
  139. package/src/core/atoms/alephaThemeOverridesAtom.ts +17 -0
  140. package/src/core/atoms/themes/editorial.ts +184 -0
  141. package/src/core/atoms/themes/monochrome.ts +197 -0
  142. package/src/core/atoms/themes/rosePine.ts +208 -0
  143. package/src/core/atoms/themes/softBrutalism.ts +221 -0
  144. package/src/core/atoms/themes/terminal.ts +186 -0
  145. package/src/core/components/Flex.tsx +91 -1
  146. package/src/core/components/Text.tsx +1 -1
  147. package/src/core/components/buttons/ActionButton.tsx +15 -19
  148. package/src/core/components/buttons/DarkModeButton.tsx +3 -3
  149. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  150. package/src/core/components/buttons/OmnibarButton.tsx +1 -2
  151. package/src/core/components/buttons/ThemeButton.tsx +40 -11
  152. package/src/core/components/buttons/ThemeExpertModal.tsx +184 -0
  153. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -2
  154. package/src/core/components/layout/AppBar.tsx +10 -0
  155. package/src/core/components/layout/DashboardShell.tsx +10 -7
  156. package/src/core/components/layout/Sidebar.tsx +60 -52
  157. package/src/core/constants/ui.ts +5 -5
  158. package/src/core/hooks/useTheme.ts +26 -3
  159. package/src/core/index.ts +6 -1
  160. package/src/core/interfaces/AlephaTheme.ts +2 -0
  161. package/src/core/providers/ThemeProvider.ts +108 -8
  162. package/src/core/services/DialogService.tsx +24 -3
  163. package/src/core/styles.css +26 -23
  164. package/src/core/table/components/DataTable.tsx +167 -137
  165. package/src/core/table/components/DataTableFilters.tsx +1 -6
  166. package/src/core/table/components/DataTablePagination.tsx +51 -28
  167. package/src/core/table/components/DataTableToolbar.tsx +9 -4
  168. package/src/core/table/index.ts +1 -0
  169. package/src/core/table/interfaces/types.ts +13 -9
  170. package/src/demo/components/core/DemoDataTable.tsx +15 -19
  171. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +0 -1
  172. package/dist/admin/AdminAudits-Bgbf04hO.js.map +0 -1
  173. package/dist/admin/AdminFiles-B9a7G3cY.js.map +0 -1
  174. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +0 -1
  175. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +0 -1
  176. package/dist/admin/AdminLayout-DHsvWxVB.js +0 -70
  177. package/dist/admin/AdminLayout-DHsvWxVB.js.map +0 -1
  178. package/dist/admin/AdminSessions-BhGJPI3z.js.map +0 -1
  179. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +0 -1
  180. package/dist/admin/AdminUsers-C85c3eiQ.js +0 -121
  181. package/dist/admin/AdminUsers-C85c3eiQ.js.map +0 -1
  182. package/dist/admin/auth-Dr0Cf8I7.js +0 -319
  183. package/dist/admin/auth-Dr0Cf8I7.js.map +0 -1
  184. package/dist/admin/core-2xoLiT0o.js.map +0 -1
  185. package/dist/auth/core-niW0sFLv.js.map +0 -1
  186. package/dist/demo/DemoDataTable-Z9xyV221.js.map +0 -1
  187. package/dist/demo/core-RCUw1Q-a.js.map +0 -1
@@ -1,17 +1,326 @@
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-BVO_TQxb.js";
2
+ import "./IconGoogle-Ch1m3Uzl.js";
3
+ import "./Login-DHbYJKwg.js";
4
+ import "./Register-Z3fxRbUF.js";
5
+ import "./ResetPassword-_Y1qTTKh.js";
6
+ import "./VerifyEmail-Bg22bwcC.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 { 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-DsUfp9RG.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-DHbYJKwg.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-Z3fxRbUF.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-_Y1qTTKh.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-Bg22bwcC.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-B2EcIDB9.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, showLogoutDivider = menuItems.length > 0, icon, 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) items.push({
261
+ label: "Profile",
262
+ icon: /* @__PURE__ */ jsx(IconUser, { size: ui.sizes.icon.md }),
263
+ href: authRouter.path("userProfile")
264
+ });
265
+ if (adminPage && isAdmin) items.push({
266
+ label: "Admin",
267
+ icon: /* @__PURE__ */ jsx(IconSettings, { size: ui.sizes.icon.md }),
268
+ href: authRouter.path("adminLayout")
269
+ });
270
+ items.push(...menuItems);
271
+ if (showLogoutDivider && items.length > 0) items.push({ type: "divider" });
272
+ items.push({
273
+ label: logoutLabel,
274
+ icon: /* @__PURE__ */ jsx(IconLogout, { size: ui.sizes.icon.md }),
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
+ leftSection: hasAvatar ? /* @__PURE__ */ jsx(Avatar, {
283
+ src: `/api/files/${auth.user.picture}`,
284
+ size: 24,
285
+ radius: "xl"
286
+ }) : void 0,
287
+ menu: {
288
+ position: "bottom-end",
289
+ width: 200,
290
+ ...menuConfig,
291
+ items
292
+ },
293
+ children
294
+ });
295
+ };
296
+
297
+ //#endregion
298
+ //#region ../../src/auth/index.ts
299
+ /**
300
+ * Authentication UI components.
301
+ *
302
+ * **Features:**
303
+ * - Login page component
304
+ * - Register page component
305
+ * - Reset password page component
306
+ * - Email verification page component
307
+ * - UserButton for user menu
308
+ *
309
+ * @module alepha.ui.auth
310
+ */
311
+ const AlephaUIAuth = $module({
312
+ name: "alepha.ui.auth",
313
+ services: [
314
+ AlephaUI,
315
+ AlephaReactAuth,
316
+ AlephaReactI18n,
317
+ AuthRouter,
318
+ AuthI18n
319
+ ]
320
+ });
321
+
322
+ //#endregion
323
+ //#region ../../src/admin/AdminRouter.tsx
15
324
  var AdminRouter = class {
16
325
  router = $inject(ReactRouter);
17
326
  authRouter = $inject(AuthRouter);
@@ -23,58 +332,108 @@ var AdminRouter = class {
23
332
  auditCtrl = $client();
24
333
  jobCtrl = $client();
25
334
  apiKeyCtrl = $client();
335
+ adminCookie = $cookie(alephaSidebarAtom, { name: "admin.sidebar" });
26
336
  configFn = () => {
27
- return { sidebarProps: { items: this.getDefaultSidebarItems() } };
337
+ return {
338
+ sidebarProps: { items: this.getDefaultSidebarItems() },
339
+ appBarProps: { items: this.getDefaultAppBarItems() }
340
+ };
28
341
  };
342
+ getDefaultAppBarItems() {
343
+ return [
344
+ {
345
+ type: "burger",
346
+ position: "left"
347
+ },
348
+ {
349
+ element: /* @__PURE__ */ jsx(Breadcrumb, {}),
350
+ position: "left"
351
+ },
352
+ {
353
+ element: /* @__PURE__ */ jsx(UserButton, {}),
354
+ position: "right"
355
+ },
356
+ {
357
+ element: /* @__PURE__ */ jsx(ThemeButton, { expert: true }),
358
+ position: "right"
359
+ },
360
+ {
361
+ element: /* @__PURE__ */ jsx(LanguageButton, {}),
362
+ position: "right"
363
+ },
364
+ {
365
+ type: "dark",
366
+ position: "right"
367
+ }
368
+ ];
369
+ }
29
370
  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(),
371
+ return [
372
+ {
373
+ position: "top",
374
+ type: "search"
375
+ },
376
+ {
377
+ position: "top",
378
+ type: "spacer"
379
+ },
380
+ {
381
+ label: "Dashboard",
382
+ href: "/admin",
383
+ icon: IconLayoutDashboard
384
+ },
385
+ {
386
+ type: "section",
387
+ label: "Security",
388
+ children: [{
389
+ label: "Identity",
390
+ icon: IconLockPassword,
59
391
  children: [
60
392
  {
61
- ...this.router.node(this.adminJobDashboard.name),
62
- label: "Dashboard"
393
+ ...this.router.node(this.adminUsers.name),
394
+ can: () => this.userCtrl.findUsers.can()
63
395
  },
64
- { ...this.router.node(this.adminJobRegistry.name) },
65
- { ...this.router.node(this.adminJobExecutions.name) }
396
+ {
397
+ ...this.router.node(this.adminSessions.name),
398
+ can: () => this.sessionCtrl.findSessions.can()
399
+ },
400
+ {
401
+ ...this.router.node(this.adminApiKeys.name),
402
+ can: () => this.apiKeyCtrl.findApiKeys.can()
403
+ }
66
404
  ]
67
- },
68
- {
405
+ }, {
69
406
  ...this.router.node(this.adminAudits.name),
70
407
  can: () => this.auditCtrl.findAudits.can()
71
- },
72
- {
73
- ...this.router.node(this.adminParameters.name),
74
- can: () => this.paramCtrl.getParameterTree.can()
75
- }
76
- ]
77
- }];
408
+ }]
409
+ },
410
+ {
411
+ type: "section",
412
+ label: "System",
413
+ children: [
414
+ {
415
+ ...this.router.node(this.adminFiles.name),
416
+ can: () => this.fileCtrl.findFiles.can()
417
+ },
418
+ {
419
+ label: "Jobs",
420
+ icon: IconTerminal2,
421
+ children: [
422
+ {
423
+ ...this.router.node(this.adminJobDashboard.name),
424
+ label: "Dashboard"
425
+ },
426
+ { ...this.router.node(this.adminJobRegistry.name) },
427
+ { ...this.router.node(this.adminJobExecutions.name) }
428
+ ]
429
+ },
430
+ {
431
+ ...this.router.node(this.adminParameters.name),
432
+ can: () => this.paramCtrl.getParameterTree.can()
433
+ }
434
+ ]
435
+ }
436
+ ];
78
437
  }
79
438
  adminShellProps() {
80
439
  if (this.configFn) return this.configFn(this);
@@ -86,48 +445,64 @@ var AdminRouter = class {
86
445
  adminLayout = $page({
87
446
  path: "/admin",
88
447
  label: "Admin",
89
- lazy: () => import("./AdminLayout-DHsvWxVB.js"),
448
+ head: {
449
+ title: "Admin Panel",
450
+ titleSeparator: " | "
451
+ },
452
+ lazy: () => import("./AdminLayout-B1DXZHDn.js"),
90
453
  props: () => ({ adminShellProps: this.adminShellProps() }),
91
454
  loader: ({ user, url }) => {
92
455
  if (!user) throw this.onNotAuthorized(url);
93
456
  return {};
94
457
  }
95
458
  });
459
+ adminDashboard = $page({
460
+ icon: IconLayoutDashboard,
461
+ parent: this.adminLayout,
462
+ path: "/",
463
+ label: "Dashboard",
464
+ lazy: () => import("./AdminDashboard-C92tIc6x.js")
465
+ });
96
466
  adminUsers = $page({
97
467
  icon: IconUsers,
98
468
  parent: this.adminLayout,
99
469
  path: "/users",
100
470
  label: "Users",
471
+ head: { title: "Users" },
101
472
  description: "Manage application users and their roles.",
102
- lazy: () => import("./AdminUsers-C85c3eiQ.js"),
473
+ lazy: () => import("./AdminUsers-CR9z0g_5.js"),
103
474
  can: () => this.userCtrl.findUsers.can()
104
475
  });
105
476
  adminUserLayout = $page({
106
477
  parent: this.adminLayout,
107
478
  path: "/users/:userId",
108
- lazy: () => import("./AdminUserLayout-BdC4Te8m.js")
479
+ head: { title: "Users" },
480
+ lazy: () => import("./AdminUserLayout-DUbC6-BI.js")
109
481
  });
110
482
  adminUserProfile = $page({
111
483
  icon: IconUser,
112
484
  parent: this.adminUserLayout,
113
485
  path: "/",
114
486
  label: "Profile",
115
- lazy: () => import("./AdminUserProfile-DAt23fqY.js")
487
+ head: { title: "User Profile" },
488
+ lazy: () => import("./AdminUserProfile-DuTUnjdG.js")
116
489
  });
117
490
  adminUserSessions = $page({
118
491
  icon: IconDevices,
119
492
  parent: this.adminUserLayout,
120
493
  path: "/sessions",
121
494
  label: "Sessions",
122
- lazy: () => import("./AdminUserSessions-1uzcx02z.js")
495
+ head: { title: "User Sessions" },
496
+ lazy: () => import("./AdminUserSessions-DvZdAGpL.js")
123
497
  });
124
498
  adminAudits = $page({
125
499
  icon: IconHistory,
126
500
  parent: this.adminLayout,
127
501
  path: "/audits",
128
502
  label: "Audit Log",
503
+ head: { title: "Audit Logs" },
129
504
  description: "View system-wide audit trail and activity logs.",
130
- lazy: () => import("./AdminAudits-Bgbf04hO.js"),
505
+ lazy: () => import("./AdminAudits-DzD_4cDt.js"),
131
506
  can: () => this.auditCtrl.findAudits.can()
132
507
  });
133
508
  adminSessions = $page({
@@ -136,7 +511,8 @@ var AdminRouter = class {
136
511
  path: "/sessions",
137
512
  label: "Sessions",
138
513
  description: "View and manage all active sessions.",
139
- lazy: () => import("./AdminSessions-BhGJPI3z.js"),
514
+ head: { title: "Sessions" },
515
+ lazy: () => import("./AdminSessions-BnH5CZQl.js"),
140
516
  can: () => this.sessionCtrl.findSessions.can()
141
517
  });
142
518
  adminFiles = $page({
@@ -145,7 +521,8 @@ var AdminRouter = class {
145
521
  path: "/files",
146
522
  label: "Files",
147
523
  description: "Manage uploaded files and storage.",
148
- lazy: () => import("./AdminFiles-B9a7G3cY.js"),
524
+ head: { title: "Files" },
525
+ lazy: () => import("./AdminFiles-DLpfhBkf.js"),
149
526
  can: () => this.fileCtrl.findFiles.can()
150
527
  });
151
528
  adminParameters = $page({
@@ -154,19 +531,20 @@ var AdminRouter = class {
154
531
  path: "/parameters",
155
532
  label: "Parameters",
156
533
  description: "View and manage application parameters.",
157
- lazy: () => import("./AdminParameters-DHw9ATgl.js"),
534
+ lazy: () => import("./AdminParameters-BspPeqp_.js"),
158
535
  can: () => this.paramCtrl.getParameterTree.can(),
536
+ head: { title: "Parameters" },
159
537
  loader: async () => {
160
538
  return { treeData: await this.paramCtrl.getParameterTree({}) };
161
539
  }
162
540
  });
163
541
  adminJobDashboard = $page({
164
- icon: IconTerminal2,
542
+ icon: IconDashboard,
165
543
  parent: this.adminLayout,
166
544
  path: "/jobs",
167
545
  label: "Jobs",
168
546
  description: "Monitor and manage background jobs and scheduled tasks.",
169
- lazy: () => import("./AdminJobDashboard-DaTwf5OY.js"),
547
+ lazy: () => import("./AdminJobDashboard-KIOkeMgE.js"),
170
548
  can: () => this.jobCtrl.getJobRegistry.can()
171
549
  });
172
550
  adminJobRegistry = $page({
@@ -175,7 +553,7 @@ var AdminRouter = class {
175
553
  path: "/jobs/registry",
176
554
  label: "Registry",
177
555
  description: "View all registered job definitions.",
178
- lazy: () => import("./AdminJobRegistry-DFgV3oqx.js"),
556
+ lazy: () => import("./AdminJobRegistry-PFajqaGK.js"),
179
557
  can: () => this.jobCtrl.getJobRegistry.can()
180
558
  });
181
559
  adminJobExecutions = $page({
@@ -184,7 +562,7 @@ var AdminRouter = class {
184
562
  path: "/jobs/executions",
185
563
  label: "Executions",
186
564
  description: "Browse and filter job execution history.",
187
- lazy: () => import("./AdminJobExecutions-B9cek5dl.js"),
565
+ lazy: () => import("./AdminJobExecutions-D0Yo_PU0.js"),
188
566
  can: () => this.jobCtrl.findJobExecutions.can()
189
567
  });
190
568
  adminApiKeys = $page({
@@ -192,8 +570,9 @@ var AdminRouter = class {
192
570
  parent: this.adminLayout,
193
571
  path: "/api-keys",
194
572
  label: "API Keys",
573
+ head: { title: "API Keys" },
195
574
  description: "View and manage API keys for programmatic access.",
196
- lazy: () => import("./AdminApiKeys-C-6_Q-lH.js"),
575
+ lazy: () => import("./AdminApiKeys-BJhIwfD6.js"),
197
576
  can: () => this.apiKeyCtrl.findApiKeys.can()
198
577
  });
199
578
  };