@alepha/ui 0.19.0 → 0.19.1

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 (151) hide show
  1. package/dist/admin/{AdminApiKeys-Bt1PjO6o.js → AdminApiKeys-C2ze85eD.js} +2 -2
  2. package/dist/admin/{AdminApiKeys-Bt1PjO6o.js.map → AdminApiKeys-C2ze85eD.js.map} +1 -1
  3. package/dist/admin/{AdminAudits-C7c1CN4c.js → AdminAudits-BIj81e4k.js} +2 -2
  4. package/dist/admin/{AdminAudits-C7c1CN4c.js.map → AdminAudits-BIj81e4k.js.map} +1 -1
  5. package/dist/admin/{AdminDashboard-C3RXpTp6.js → AdminDashboard-PMVzrwSu.js} +2 -2
  6. package/dist/admin/{AdminDashboard-C3RXpTp6.js.map → AdminDashboard-PMVzrwSu.js.map} +1 -1
  7. package/dist/admin/AdminFiles-Bq03BLt-.js +189 -0
  8. package/dist/admin/AdminFiles-Bq03BLt-.js.map +1 -0
  9. package/dist/admin/{AdminJobExecutions-D-G8RIlr.js → AdminJobs-D1_QGCDy.js} +400 -356
  10. package/dist/admin/AdminJobs-D1_QGCDy.js.map +1 -0
  11. package/dist/admin/{AdminLayout-BmZ9mtXh.js → AdminLayout-BNiwiw2D.js} +2 -2
  12. package/dist/admin/{AdminLayout-BmZ9mtXh.js.map → AdminLayout-BNiwiw2D.js.map} +1 -1
  13. package/dist/admin/{AdminNotifications-DHdzksww.js → AdminNotifications-DSKQtUfn.js} +84 -122
  14. package/dist/admin/AdminNotifications-DSKQtUfn.js.map +1 -0
  15. package/dist/admin/{AdminParameters-CyZQSXnN.js → AdminParameters-CoB7EhyM.js} +2 -2
  16. package/dist/admin/{AdminParameters-CyZQSXnN.js.map → AdminParameters-CoB7EhyM.js.map} +1 -1
  17. package/dist/admin/{AdminSessions--xwELDSO.js → AdminSessions-DFbFcrJQ.js} +2 -2
  18. package/dist/admin/{AdminSessions--xwELDSO.js.map → AdminSessions-DFbFcrJQ.js.map} +1 -1
  19. package/dist/admin/{AdminUserLayout-DvBTG5gd.js → AdminUserLayout-fSfi3KMm.js} +3 -3
  20. package/dist/admin/{AdminUserLayout-DvBTG5gd.js.map → AdminUserLayout-fSfi3KMm.js.map} +1 -1
  21. package/dist/admin/{AdminUserProfile-CzsPBl6Z.js → AdminUserProfile-_C-h8vUK.js} +3 -3
  22. package/dist/admin/{AdminUserProfile-CzsPBl6Z.js.map → AdminUserProfile-_C-h8vUK.js.map} +1 -1
  23. package/dist/admin/{AdminUserSessions-C-aUnhVN.js → AdminUserSessions-KpJHIeQo.js} +2 -2
  24. package/dist/admin/{AdminUserSessions-C-aUnhVN.js.map → AdminUserSessions-KpJHIeQo.js.map} +1 -1
  25. package/dist/admin/{AdminUsers-BYwei5sj.js → AdminUsers-DcVrzdQP.js} +2 -2
  26. package/dist/admin/{AdminUsers-BYwei5sj.js.map → AdminUsers-DcVrzdQP.js.map} +1 -1
  27. package/dist/admin/{AuthLayout-CkPGLJku.js → AuthLayout-CazfLzcf.js} +2 -2
  28. package/dist/admin/{AuthLayout-CkPGLJku.js.map → AuthLayout-CazfLzcf.js.map} +1 -1
  29. package/dist/admin/{Login-DSBqNsZc.js → Login-CaMjUrDP.js} +2 -2
  30. package/dist/admin/{Login-DSBqNsZc.js.map → Login-CaMjUrDP.js.map} +1 -1
  31. package/dist/admin/{Profile-CDRjJo0P.js → Profile-Ca4fZX15.js} +2 -2
  32. package/dist/{auth/Profile-Cy93pNTw.js.map → admin/Profile-Ca4fZX15.js.map} +1 -1
  33. package/dist/admin/{Register-4QGFOnfh.js → Register-C5DyKWPO.js} +2 -2
  34. package/dist/{demo/Register-KKZwr_lL.js.map → admin/Register-C5DyKWPO.js.map} +1 -1
  35. package/dist/admin/{ResetPassword-Gxc9L_mY.js → ResetPassword-BA5sAgXo.js} +2 -2
  36. package/dist/{auth/ResetPassword-B61QPlQi.js.map → admin/ResetPassword-BA5sAgXo.js.map} +1 -1
  37. package/dist/admin/{VerifyEmail-D7G5NnaN.js → VerifyEmail-DKNXROj_.js} +2 -2
  38. package/dist/{auth/VerifyEmail-CqBJ11id.js.map → admin/VerifyEmail-DKNXROj_.js.map} +1 -1
  39. package/dist/admin/{adminUserAtom-DCi4wf-v.js → adminUserAtom-BLNc7XbT.js} +1 -1
  40. package/dist/admin/{adminUserAtom-DCi4wf-v.js.map → adminUserAtom-BLNc7XbT.js.map} +1 -1
  41. package/dist/admin/{core-D1AbU50V.js → core-CJCEx18C.js} +111 -4
  42. package/dist/admin/core-CJCEx18C.js.map +1 -0
  43. package/dist/admin/index.d.ts +21 -3
  44. package/dist/admin/index.d.ts.map +1 -1
  45. package/dist/admin/index.js +29 -58
  46. package/dist/admin/index.js.map +1 -1
  47. package/dist/auth/{AuthLayout-CfRKcTqP.js → AuthLayout-vXPcCVzp.js} +2 -2
  48. package/dist/auth/{AuthLayout-CfRKcTqP.js.map → AuthLayout-vXPcCVzp.js.map} +1 -1
  49. package/dist/auth/{Login-DJyweoPS.js → Login-Dg08QR20.js} +2 -2
  50. package/dist/{demo/Login-CqG1iJbn.js.map → auth/Login-Dg08QR20.js.map} +1 -1
  51. package/dist/{demo/Profile-C0ojJCaG.js → auth/Profile-Bb5O1yeh.js} +2 -2
  52. package/dist/{admin/Profile-CDRjJo0P.js.map → auth/Profile-Bb5O1yeh.js.map} +1 -1
  53. package/dist/auth/{Register-CSqzzitW.js → Register-B2AN71NC.js} +2 -2
  54. package/dist/auth/{Register-CSqzzitW.js.map → Register-B2AN71NC.js.map} +1 -1
  55. package/dist/{demo/ResetPassword-DMrLFEtr.js → auth/ResetPassword-BLxwzbDj.js} +2 -2
  56. package/dist/{admin/ResetPassword-Gxc9L_mY.js.map → auth/ResetPassword-BLxwzbDj.js.map} +1 -1
  57. package/dist/auth/{VerifyEmail-CqBJ11id.js → VerifyEmail-CSDOk3Zm.js} +2 -2
  58. package/dist/{demo/VerifyEmail-BFCAFz6T.js.map → auth/VerifyEmail-CSDOk3Zm.js.map} +1 -1
  59. package/dist/auth/{core-C6D3pazL.js → core-DuGkjPiU.js} +2 -1
  60. package/dist/auth/core-DuGkjPiU.js.map +1 -0
  61. package/dist/auth/index.d.ts +20 -0
  62. package/dist/auth/index.d.ts.map +1 -1
  63. package/dist/auth/index.js +11 -11
  64. package/dist/core/index.d.ts +69 -17
  65. package/dist/core/index.d.ts.map +1 -1
  66. package/dist/core/index.js +110 -8
  67. package/dist/core/index.js.map +1 -1
  68. package/dist/demo/{AuthLayout-Dq5tSLSc.js → AuthLayout-DPsOOG4u.js} +2 -2
  69. package/dist/demo/{AuthLayout-Dq5tSLSc.js.map → AuthLayout-DPsOOG4u.js.map} +1 -1
  70. package/dist/demo/{DemoButton-_Ws2w-J0.js → DemoButton-wzcqGk4u.js} +3 -3
  71. package/dist/demo/{DemoButton-_Ws2w-J0.js.map → DemoButton-wzcqGk4u.js.map} +1 -1
  72. package/dist/demo/{DemoControlSelect-ChP4ZOpQ.js → DemoControlSelect-CMWvQ6Gm.js} +3 -3
  73. package/dist/demo/{DemoControlSelect-ChP4ZOpQ.js.map → DemoControlSelect-CMWvQ6Gm.js.map} +1 -1
  74. package/dist/demo/{DemoDataTable-Hwf_UUni.js → DemoDataTable-CHsAP3e2.js} +3 -3
  75. package/dist/demo/{DemoDataTable-Hwf_UUni.js.map → DemoDataTable-CHsAP3e2.js.map} +1 -1
  76. package/dist/demo/{DemoDialog-B01OMVRd.js → DemoDialog-Co2IePxX.js} +2 -2
  77. package/dist/demo/{DemoDialog-B01OMVRd.js.map → DemoDialog-Co2IePxX.js.map} +1 -1
  78. package/dist/demo/{DemoFlex-870PEl0V.js → DemoFlex-OEwQt5do.js} +3 -3
  79. package/dist/demo/{DemoFlex-870PEl0V.js.map → DemoFlex-OEwQt5do.js.map} +1 -1
  80. package/dist/demo/DemoHeading-Db-XkQIK.js +69 -0
  81. package/dist/demo/DemoHeading-Db-XkQIK.js.map +1 -0
  82. package/dist/demo/{DemoHome-DRbL2eGf.js → DemoHome-Cyp29ygy.js} +2 -2
  83. package/dist/demo/{DemoHome-DRbL2eGf.js.map → DemoHome-Cyp29ygy.js.map} +1 -1
  84. package/dist/demo/{DemoJsonViewer-DoABiqBW.js → DemoJsonViewer-DXtCeMzH.js} +3 -3
  85. package/dist/demo/{DemoJsonViewer-DoABiqBW.js.map → DemoJsonViewer-DXtCeMzH.js.map} +1 -1
  86. package/dist/demo/{DemoLayout-CN_PDCX2.js → DemoLayout-hh9VmZQP.js} +2 -2
  87. package/dist/demo/{DemoLayout-CN_PDCX2.js.map → DemoLayout-hh9VmZQP.js.map} +1 -1
  88. package/dist/demo/{DemoLogin-B5x-ug3Q.js → DemoLogin-DX7mnmkh.js} +13 -8
  89. package/dist/demo/{DemoLogin-B5x-ug3Q.js.map → DemoLogin-DX7mnmkh.js.map} +1 -1
  90. package/dist/demo/{DemoRegister-Q6sg2xuV.js → DemoRegister-DVcZl04m.js} +13 -8
  91. package/dist/demo/{DemoRegister-Q6sg2xuV.js.map → DemoRegister-DVcZl04m.js.map} +1 -1
  92. package/dist/demo/{DemoResetPassword-DrqZfmEw.js → DemoResetPassword-CPENlZH5.js} +13 -8
  93. package/dist/demo/{DemoResetPassword-DrqZfmEw.js.map → DemoResetPassword-CPENlZH5.js.map} +1 -1
  94. package/dist/demo/{DemoSidebar-CfKS6w1o.js → DemoSidebar-CGu7DZeM.js} +3 -3
  95. package/dist/demo/{DemoSidebar-CfKS6w1o.js.map → DemoSidebar-CGu7DZeM.js.map} +1 -1
  96. package/dist/demo/{DemoText-pT6Gi5b5.js → DemoText-DYUJ7bY_.js} +3 -3
  97. package/dist/demo/{DemoText-pT6Gi5b5.js.map → DemoText-DYUJ7bY_.js.map} +1 -1
  98. package/dist/demo/{DemoToast-I13NBzQQ.js → DemoToast-CgdnZNvx.js} +2 -2
  99. package/dist/demo/{DemoToast-I13NBzQQ.js.map → DemoToast-CgdnZNvx.js.map} +1 -1
  100. package/dist/demo/{DemoTypeForm-BqzcrtvN.js → DemoTypeForm-Pims-cGa.js} +3 -3
  101. package/dist/demo/{DemoTypeForm-BqzcrtvN.js.map → DemoTypeForm-Pims-cGa.js.map} +1 -1
  102. package/dist/demo/{DemoVerifyEmail-HwD8xfQw.js → DemoVerifyEmail-C7B3xxch.js} +8 -8
  103. package/dist/demo/{DemoVerifyEmail-HwD8xfQw.js.map → DemoVerifyEmail-C7B3xxch.js.map} +1 -1
  104. package/dist/demo/{Login-CqG1iJbn.js → Login-pwMF4TUj.js} +2 -2
  105. package/dist/{auth/Login-DJyweoPS.js.map → demo/Login-pwMF4TUj.js.map} +1 -1
  106. package/dist/{auth/Profile-Cy93pNTw.js → demo/Profile-BliZapZS.js} +2 -2
  107. package/dist/demo/{Profile-C0ojJCaG.js.map → Profile-BliZapZS.js.map} +1 -1
  108. package/dist/demo/{Register-KKZwr_lL.js → Register-CiwAT7Hy.js} +2 -2
  109. package/dist/{admin/Register-4QGFOnfh.js.map → demo/Register-CiwAT7Hy.js.map} +1 -1
  110. package/dist/{auth/ResetPassword-B61QPlQi.js → demo/ResetPassword-l9Vg4JE-.js} +2 -2
  111. package/dist/demo/{ResetPassword-DMrLFEtr.js.map → ResetPassword-l9Vg4JE-.js.map} +1 -1
  112. package/dist/demo/{Showcase-D49Wud2v.js → Showcase-CX6bDgwe.js} +2 -2
  113. package/dist/demo/{Showcase-D49Wud2v.js.map → Showcase-CX6bDgwe.js.map} +1 -1
  114. package/dist/demo/{VerifyEmail-BFCAFz6T.js → VerifyEmail-CAB-OS7i.js} +2 -2
  115. package/dist/{admin/VerifyEmail-D7G5NnaN.js.map → demo/VerifyEmail-CAB-OS7i.js.map} +1 -1
  116. package/dist/demo/{auth-D9qTZzCa.js → auth-uegJAdKu.js} +8 -8
  117. package/dist/demo/{auth-D9qTZzCa.js.map → auth-uegJAdKu.js.map} +1 -1
  118. package/dist/demo/{core-DRtQklr3.js → core-B4LVHzPn.js} +111 -9
  119. package/dist/demo/core-B4LVHzPn.js.map +1 -0
  120. package/dist/demo/index.js +19 -19
  121. package/dist/demo/index.js.map +1 -1
  122. package/package.json +6 -9
  123. package/src/admin/AdminRouter.tsx +5 -37
  124. package/src/admin/components/files/AdminFiles.tsx +123 -1
  125. package/src/admin/components/jobs/{AdminJobExecutions.tsx → AdminJobs.tsx} +450 -317
  126. package/src/admin/components/notifications/AdminNotifications.tsx +11 -25
  127. package/src/core/components/Section.tsx +109 -0
  128. package/src/core/components/SectionHeader.tsx +106 -0
  129. package/src/core/index.ts +4 -1
  130. package/src/core/table/components/DataTable.tsx +5 -1
  131. package/src/demo/DemoRouter.ts +1 -1
  132. package/src/demo/components/auth/DemoLogin.tsx +5 -0
  133. package/src/demo/components/auth/DemoRegister.tsx +5 -0
  134. package/src/demo/components/auth/DemoResetPassword.tsx +5 -0
  135. package/src/demo/components/core/DemoHeading.tsx +56 -3
  136. package/dist/admin/AdminFiles-31ivR6Wq.js +0 -110
  137. package/dist/admin/AdminFiles-31ivR6Wq.js.map +0 -1
  138. package/dist/admin/AdminJobDashboard-BABLe7hL.js +0 -402
  139. package/dist/admin/AdminJobDashboard-BABLe7hL.js.map +0 -1
  140. package/dist/admin/AdminJobExecutions-D-G8RIlr.js.map +0 -1
  141. package/dist/admin/AdminJobRegistry-oIS3K9NX.js +0 -269
  142. package/dist/admin/AdminJobRegistry-oIS3K9NX.js.map +0 -1
  143. package/dist/admin/AdminNotifications-DHdzksww.js.map +0 -1
  144. package/dist/admin/core-D1AbU50V.js.map +0 -1
  145. package/dist/auth/core-C6D3pazL.js.map +0 -1
  146. package/dist/demo/DemoHeading-C1YR27fz.js +0 -17
  147. package/dist/demo/DemoHeading-C1YR27fz.js.map +0 -1
  148. package/dist/demo/core-DRtQklr3.js.map +0 -1
  149. package/src/admin/components/jobs/AdminJobDashboard.tsx +0 -380
  150. package/src/admin/components/jobs/AdminJobRegistry.tsx +0 -301
  151. package/src/core/components/Heading.tsx +0 -19
@@ -672,6 +672,11 @@ declare class AuthRouter {
672
672
  requireNumbers: boolean;
673
673
  requireSpecialCharacters: boolean;
674
674
  };
675
+ loginRateLimit: {
676
+ ipMaxAttempts: number;
677
+ accountMaxAttempts: number;
678
+ windowMs: number;
679
+ };
675
680
  };
676
681
  authenticationMethods: {
677
682
  type: "OAUTH2" | "OIDC" | "CREDENTIALS";
@@ -709,6 +714,11 @@ declare class AuthRouter {
709
714
  requireNumbers: boolean;
710
715
  requireSpecialCharacters: boolean;
711
716
  };
717
+ loginRateLimit: {
718
+ ipMaxAttempts: number;
719
+ accountMaxAttempts: number;
720
+ windowMs: number;
721
+ };
712
722
  };
713
723
  authenticationMethods: {
714
724
  type: "OAUTH2" | "OIDC" | "CREDENTIALS";
@@ -746,6 +756,11 @@ declare class AuthRouter {
746
756
  requireNumbers: boolean;
747
757
  requireSpecialCharacters: boolean;
748
758
  };
759
+ loginRateLimit: {
760
+ ipMaxAttempts: number;
761
+ accountMaxAttempts: number;
762
+ windowMs: number;
763
+ };
749
764
  };
750
765
  authenticationMethods: {
751
766
  type: "OAUTH2" | "OIDC" | "CREDENTIALS";
@@ -785,6 +800,11 @@ declare class AuthRouter {
785
800
  requireNumbers: boolean;
786
801
  requireSpecialCharacters: boolean;
787
802
  };
803
+ loginRateLimit: {
804
+ ipMaxAttempts: number;
805
+ accountMaxAttempts: number;
806
+ windowMs: number;
807
+ };
788
808
  };
789
809
  authenticationMethods: {
790
810
  type: "OAUTH2" | "OIDC" | "CREDENTIALS";
@@ -889,9 +909,7 @@ declare class AdminRouter {
889
909
  children: any[];
890
910
  }[];
891
911
  }, {}>;
892
- readonly adminJobDashboard: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
893
- readonly adminJobRegistry: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
894
- readonly adminJobExecutions: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
912
+ readonly adminJobs: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
895
913
  readonly adminApiKeys: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
896
914
  readonly adminNotifications: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
897
915
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeOverridesAtom.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/DashboardShell.tsx","../../src/core/form/utils/parseInput.ts","../../src/core/form/components/ControlArray.tsx","../../src/core/form/components/ControlNumber.tsx","../../src/core/form/components/ControlObject.tsx","../../src/core/form/components/ControlSelect.tsx","../../src/core/form/components/Control.tsx","../../src/core/form/index.ts","../../src/core/index.ts","../../src/auth/AuthRouter.ts","../../src/admin/AdminRouter.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeOverridesAtom.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/DashboardShell.tsx","../../src/core/form/utils/parseInput.ts","../../src/core/form/components/ControlArray.tsx","../../src/core/form/components/ControlNumber.tsx","../../src/core/form/components/ControlObject.tsx","../../src/core/form/components/ControlSelect.tsx","../../src/core/form/components/Control.tsx","../../src/core/form/index.ts","../../src/core/index.ts","../../src/auth/AuthRouter.ts","../../src/admin/AdminRouter.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- import { _ as ActionButton, c as Breadcrumbs, h as LanguageButton, p as ThemeButton, t as AlephaUI, v as ui, x as alephaSidebarAtom } from "./core-D1AbU50V.js";
1
+ import { S as alephaSidebarAtom, g as LanguageButton, l as Breadcrumbs, m as ThemeButton, t as AlephaUI, v as ActionButton, y as ui } from "./core-CJCEx18C.js";
2
2
  import "./IconGoogle-8Nkx6yax.js";
3
- import "./Login-DSBqNsZc.js";
4
- import "./Register-4QGFOnfh.js";
5
- import "./ResetPassword-Gxc9L_mY.js";
6
- import "./VerifyEmail-D7G5NnaN.js";
3
+ import "./Login-CaMjUrDP.js";
4
+ import "./Register-C5DyKWPO.js";
5
+ import "./ResetPassword-BA5sAgXo.js";
6
+ import "./VerifyEmail-DKNXROj_.js";
7
7
  import { $context, $inject, $module, AlephaError, t } from "alepha";
8
8
  import { $dictionary, AlephaReactI18n } from "alepha/react/i18n";
9
9
  import { $cookie } from "alepha/server/cookies";
10
10
  import { Avatar } from "@mantine/core";
11
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";
12
+ import { IconBell, IconDevices, IconFile, IconHistory, IconKey, IconLayoutDashboard, IconLockPassword, IconLogin2, IconLogout, IconLogout2, IconMailCheck, IconPasswordUser, IconSettings, IconTerminal2, IconUser, IconUserPlus, IconUsers } from "@tabler/icons-react";
13
13
  import { $page, ReactPageProvider, ReactRouter, Redirection, useRouter } from "alepha/react/router";
14
14
  import { useClient, useInject } from "alepha/react";
15
15
  import { $secure } from "alepha/security";
@@ -146,7 +146,7 @@ var AuthRouter = class {
146
146
  authLayout = $page({
147
147
  label: "Auth",
148
148
  path: "/auth",
149
- lazy: () => import("./AuthLayout-CkPGLJku.js"),
149
+ lazy: () => import("./AuthLayout-CazfLzcf.js"),
150
150
  children: () => [
151
151
  this.login,
152
152
  this.register,
@@ -161,7 +161,7 @@ var AuthRouter = class {
161
161
  description: "Sign in to your account",
162
162
  path: "/login",
163
163
  schema: { query: realmQuerySchema },
164
- lazy: () => import("./Login-DSBqNsZc.js").then((n) => n.t),
164
+ lazy: () => import("./Login-CaMjUrDP.js").then((n) => n.t),
165
165
  loader: async ({ query, user }) => {
166
166
  if (user) throw new Redirection(query.r || "/");
167
167
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -173,7 +173,7 @@ var AuthRouter = class {
173
173
  description: "Create a new account",
174
174
  path: "/register",
175
175
  schema: { query: realmQuerySchema },
176
- lazy: () => import("./Register-4QGFOnfh.js").then((n) => n.t),
176
+ lazy: () => import("./Register-C5DyKWPO.js").then((n) => n.t),
177
177
  loader: async ({ query, user }) => {
178
178
  if (user) throw new Redirection(query.r || "/");
179
179
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -185,7 +185,7 @@ var AuthRouter = class {
185
185
  description: "Reset your account password",
186
186
  path: "/reset-password",
187
187
  schema: { query: realmQuerySchema },
188
- lazy: () => import("./ResetPassword-Gxc9L_mY.js").then((n) => n.t),
188
+ lazy: () => import("./ResetPassword-BA5sAgXo.js").then((n) => n.t),
189
189
  loader: async ({ query, user }) => {
190
190
  if (user) throw new Redirection(query.r || "/");
191
191
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -200,7 +200,7 @@ var AuthRouter = class {
200
200
  email: t.optional(t.string()),
201
201
  token: t.optional(t.string())
202
202
  }) },
203
- lazy: () => import("./VerifyEmail-D7G5NnaN.js").then((n) => n.t)
203
+ lazy: () => import("./VerifyEmail-DKNXROj_.js").then((n) => n.t)
204
204
  });
205
205
  logout = $page({
206
206
  icon: IconLogout2,
@@ -220,7 +220,7 @@ var AuthRouter = class {
220
220
  description: "View your profile",
221
221
  path: "/profile",
222
222
  can: () => !!this.auth.user,
223
- lazy: () => import("./Profile-CDRjJo0P.js")
223
+ lazy: () => import("./Profile-Ca4fZX15.js")
224
224
  });
225
225
  async loadRealmConfig(realmName) {
226
226
  try {
@@ -416,18 +416,7 @@ var AdminRouter = class {
416
416
  ...this.router.node(this.adminFiles.name),
417
417
  can: () => this.fileCtrl.findFiles.can()
418
418
  },
419
- {
420
- label: "Jobs",
421
- icon: IconTerminal2,
422
- children: [
423
- {
424
- ...this.router.node(this.adminJobDashboard.name),
425
- label: "Dashboard"
426
- },
427
- { ...this.router.node(this.adminJobRegistry.name) },
428
- { ...this.router.node(this.adminJobExecutions.name) }
429
- ]
430
- },
419
+ { ...this.router.node(this.adminJobs.name) },
431
420
  {
432
421
  ...this.router.node(this.adminNotifications.name),
433
422
  can: () => this.notificationCtrl.findNotifications.can()
@@ -455,7 +444,7 @@ var AdminRouter = class {
455
444
  titleSeparator: " | "
456
445
  },
457
446
  use: [$secure({ permissions: ["admin:access"] })],
458
- lazy: () => import("./AdminLayout-BmZ9mtXh.js"),
447
+ lazy: () => import("./AdminLayout-BNiwiw2D.js"),
459
448
  props: () => ({ adminShellProps: this.adminShellProps() }),
460
449
  loader: ({ user, url }) => {
461
450
  if (!user) throw this.onNotAuthorized(url);
@@ -467,7 +456,7 @@ var AdminRouter = class {
467
456
  parent: this.adminLayout,
468
457
  path: "/",
469
458
  label: "Dashboard",
470
- lazy: () => import("./AdminDashboard-C3RXpTp6.js")
459
+ lazy: () => import("./AdminDashboard-PMVzrwSu.js")
471
460
  });
472
461
  adminUsers = $page({
473
462
  icon: IconUsers,
@@ -476,7 +465,7 @@ var AdminRouter = class {
476
465
  label: "Users",
477
466
  head: { title: "Users" },
478
467
  description: "Manage application users and their roles.",
479
- lazy: () => import("./AdminUsers-BYwei5sj.js"),
468
+ lazy: () => import("./AdminUsers-DcVrzdQP.js"),
480
469
  can: () => this.userCtrl.findUsers.can()
481
470
  });
482
471
  adminUserLayout = $page({
@@ -484,7 +473,7 @@ var AdminRouter = class {
484
473
  path: "/users/:userId",
485
474
  head: { title: "Users" },
486
475
  schema: { params: t.object({ userId: t.text() }) },
487
- lazy: () => import("./AdminUserLayout-DvBTG5gd.js"),
476
+ lazy: () => import("./AdminUserLayout-fSfi3KMm.js"),
488
477
  loader: async ({ params }) => {
489
478
  return { user: await this.userCtrl.getUser({ params: { id: params.userId } }) };
490
479
  }
@@ -495,7 +484,7 @@ var AdminRouter = class {
495
484
  path: "/",
496
485
  label: "Profile",
497
486
  head: { title: "User Profile" },
498
- lazy: () => import("./AdminUserProfile-CzsPBl6Z.js")
487
+ lazy: () => import("./AdminUserProfile-_C-h8vUK.js")
499
488
  });
500
489
  adminUserSessions = $page({
501
490
  icon: IconDevices,
@@ -503,7 +492,7 @@ var AdminRouter = class {
503
492
  path: "/sessions",
504
493
  label: "Sessions",
505
494
  head: { title: "User Sessions" },
506
- lazy: () => import("./AdminUserSessions-C-aUnhVN.js")
495
+ lazy: () => import("./AdminUserSessions-KpJHIeQo.js")
507
496
  });
508
497
  adminAudits = $page({
509
498
  icon: IconHistory,
@@ -512,7 +501,7 @@ var AdminRouter = class {
512
501
  label: "Audit Log",
513
502
  head: { title: "Audit Logs" },
514
503
  description: "View system-wide audit trail and activity logs.",
515
- lazy: () => import("./AdminAudits-C7c1CN4c.js"),
504
+ lazy: () => import("./AdminAudits-BIj81e4k.js"),
516
505
  can: () => this.auditCtrl.findAudits.can()
517
506
  });
518
507
  adminSessions = $page({
@@ -522,7 +511,7 @@ var AdminRouter = class {
522
511
  label: "Sessions",
523
512
  description: "View and manage all active sessions.",
524
513
  head: { title: "Sessions" },
525
- lazy: () => import("./AdminSessions--xwELDSO.js"),
514
+ lazy: () => import("./AdminSessions-DFbFcrJQ.js"),
526
515
  can: () => this.sessionCtrl.findSessions.can()
527
516
  });
528
517
  adminFiles = $page({
@@ -532,7 +521,7 @@ var AdminRouter = class {
532
521
  label: "Files",
533
522
  description: "Manage uploaded files and storage.",
534
523
  head: { title: "Files" },
535
- lazy: () => import("./AdminFiles-31ivR6Wq.js"),
524
+ lazy: () => import("./AdminFiles-Bq03BLt-.js"),
536
525
  can: () => this.fileCtrl.findFiles.can()
537
526
  });
538
527
  adminParameters = $page({
@@ -541,40 +530,22 @@ var AdminRouter = class {
541
530
  path: "/parameters",
542
531
  label: "Parameters",
543
532
  description: "View and manage application parameters.",
544
- lazy: () => import("./AdminParameters-CyZQSXnN.js"),
533
+ lazy: () => import("./AdminParameters-CoB7EhyM.js"),
545
534
  can: () => this.paramCtrl.getParameterTree.can(),
546
535
  head: { title: "Parameters" },
547
536
  loader: async () => {
548
537
  return { treeData: await this.paramCtrl.getParameterTree({}) };
549
538
  }
550
539
  });
551
- adminJobDashboard = $page({
552
- icon: IconDashboard,
540
+ adminJobs = $page({
541
+ icon: IconTerminal2,
553
542
  parent: this.adminLayout,
554
543
  path: "/jobs",
555
544
  label: "Jobs",
556
- description: "Monitor and manage background jobs and scheduled tasks.",
557
- lazy: () => import("./AdminJobDashboard-BABLe7hL.js"),
545
+ description: "Monitor and manage background jobs.",
546
+ lazy: () => import("./AdminJobs-D1_QGCDy.js"),
558
547
  can: () => this.jobCtrl.getJobRegistry.can()
559
548
  });
560
- adminJobRegistry = $page({
561
- icon: IconListDetails,
562
- parent: this.adminLayout,
563
- path: "/jobs/registry",
564
- label: "Registry",
565
- description: "View all registered job definitions.",
566
- lazy: () => import("./AdminJobRegistry-oIS3K9NX.js"),
567
- can: () => this.jobCtrl.getJobRegistry.can()
568
- });
569
- adminJobExecutions = $page({
570
- icon: IconClock,
571
- parent: this.adminLayout,
572
- path: "/jobs/executions",
573
- label: "Executions",
574
- description: "Browse and filter job execution history.",
575
- lazy: () => import("./AdminJobExecutions-D-G8RIlr.js"),
576
- can: () => this.jobCtrl.findJobExecutions.can()
577
- });
578
549
  adminApiKeys = $page({
579
550
  icon: IconKey,
580
551
  parent: this.adminLayout,
@@ -582,7 +553,7 @@ var AdminRouter = class {
582
553
  label: "API Keys",
583
554
  head: { title: "API Keys" },
584
555
  description: "View and manage API keys for programmatic access.",
585
- lazy: () => import("./AdminApiKeys-Bt1PjO6o.js"),
556
+ lazy: () => import("./AdminApiKeys-C2ze85eD.js"),
586
557
  can: () => this.apiKeyCtrl.findApiKeys.can()
587
558
  });
588
559
  adminNotifications = $page({
@@ -592,7 +563,7 @@ var AdminRouter = class {
592
563
  label: "Notifications",
593
564
  description: "View sent notifications and their delivery status.",
594
565
  head: { title: "Notifications" },
595
- lazy: () => import("./AdminNotifications-DHdzksww.js"),
566
+ lazy: () => import("./AdminNotifications-DSKQtUfn.js"),
596
567
  can: () => this.notificationCtrl.findNotifications.can()
597
568
  });
598
569
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/index.ts","../../src/admin/AdminRouter.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, Redirection } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n authLayout = $page({\n label: \"Auth\",\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Custom label for the login button when user is not authenticated\n */\n loginLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n\n /**\n * If true, the profile link will not be shown in the menu even if a userProfile page exists and the user is authenticated.\n */\n skipProfile?: boolean;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n loginLabel,\n menuConfig,\n icon,\n skipProfile = false,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"default\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={icon === null ? undefined : (icon ?? IconLogin2)}\n href={authRouter.path(\"login\")}\n >\n {loginLabel ?? children}\n </ActionButton>\n );\n }\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected && !skipProfile) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.sm} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = icon === undefined && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={\n hasAvatar ? undefined : icon === null ? undefined : (icon ?? IconUser)\n }\n px={8}\n menu={{\n menuProps: {\n withArrow: true,\n arrowSize: 12,\n },\n position: \"bottom\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {hasAvatar ? (\n <Avatar src={`/api/files/${auth.user.picture}`} size={24} radius=\"xl\" />\n ) : undefined}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport type { VerifyEmailStep } from \"./components/VerifyEmail.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\nexport * from \"./primitives/$uiAuth.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n","import {\n type AppBarItem,\n alephaSidebarAtom,\n Breadcrumbs,\n type DashboardShellProps,\n LanguageButton,\n type SidebarNode,\n ThemeButton,\n} from \"@alepha/ui\";\nimport { AuthRouter, UserButton } from \"@alepha/ui/auth\";\nimport {\n IconBell,\n IconClock,\n IconDashboard,\n IconDevices,\n IconFile,\n IconHistory,\n IconKey,\n IconLayoutDashboard,\n IconListDetails,\n IconLockPassword,\n IconSettings,\n IconTerminal2,\n IconUser,\n IconUsers,\n} from \"@tabler/icons-react\";\nimport { $inject, t } from \"alepha\";\nimport type { AdminAuditController } from \"alepha/api/audits\";\nimport type { FileController } from \"alepha/api/files\";\nimport type { AdminJobController } from \"alepha/api/jobs\";\nimport type { AdminApiKeyController } from \"alepha/api/keys\";\nimport type { AdminNotificationController } from \"alepha/api/notifications\";\nimport type { AdminParameterController } from \"alepha/api/parameters\";\nimport type {\n AdminSessionController,\n AdminUserController,\n} from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, ReactRouter, Redirection } from \"alepha/react/router\";\nimport { $secure } from \"alepha/security\";\nimport { $cookie } from \"alepha/server/cookies\";\nimport { $client } from \"alepha/server/links\";\n\nexport class AdminRouter {\n protected readonly router = $inject(ReactRouter<AdminRouter>);\n protected readonly authRouter = $inject(AuthRouter);\n protected readonly auth = $inject(ReactAuth);\n protected readonly userCtrl = $client<AdminUserController>();\n protected readonly sessionCtrl = $client<AdminSessionController>();\n\n protected readonly fileCtrl = $client<FileController>();\n protected readonly paramCtrl = $client<AdminParameterController>();\n protected readonly auditCtrl = $client<AdminAuditController>();\n protected readonly jobCtrl = $client<AdminJobController>();\n protected readonly apiKeyCtrl = $client<AdminApiKeyController>();\n protected readonly notificationCtrl = $client<AdminNotificationController>();\n\n public readonly adminCookie = $cookie(alephaSidebarAtom, {\n name: \"admin.sidebar\",\n });\n\n public configFn?: (adminRouter: AdminRouter) => DashboardShellProps = () => {\n return {\n sidebarProps: {\n items: this.getDefaultSidebarItems(),\n },\n appBarProps: {\n items: this.getDefaultAppBarItems(),\n },\n };\n };\n\n public getDefaultAppBarItems(): AppBarItem[] {\n return [\n {\n type: \"burger\",\n position: \"left\",\n },\n {\n element: <Breadcrumbs />,\n position: \"left\",\n },\n {\n element: <UserButton />,\n position: \"right\",\n },\n {\n element: <ThemeButton expert />,\n position: \"right\",\n },\n {\n element: <LanguageButton />,\n position: \"right\",\n },\n {\n type: \"dark\",\n position: \"right\",\n },\n ];\n }\n\n public getDefaultSidebarItems(): SidebarNode[] {\n return [\n {\n position: \"top\",\n type: \"search\",\n },\n {\n position: \"top\",\n type: \"spacer\",\n },\n {\n label: \"Dashboard\",\n href: \"/admin\",\n icon: IconLayoutDashboard,\n },\n {\n type: \"section\",\n label: \"Security\",\n children: [\n {\n label: \"Identity\",\n icon: IconLockPassword,\n children: [\n {\n ...this.router.node(this.adminUsers.name),\n can: () => this.userCtrl.findUsers.can(),\n },\n {\n ...this.router.node(this.adminSessions.name),\n can: () => this.sessionCtrl.findSessions.can(),\n },\n {\n ...this.router.node(this.adminApiKeys.name),\n can: () => this.apiKeyCtrl.findApiKeys.can(),\n },\n ],\n },\n {\n ...this.router.node(this.adminAudits.name),\n can: () => this.auditCtrl.findAudits.can(),\n },\n ],\n },\n {\n type: \"section\",\n label: \"System\",\n children: [\n {\n ...this.router.node(this.adminFiles.name),\n can: () => this.fileCtrl.findFiles.can(),\n },\n {\n label: \"Jobs\",\n icon: IconTerminal2,\n children: [\n {\n ...this.router.node(this.adminJobDashboard.name),\n label: \"Dashboard\",\n },\n { ...this.router.node(this.adminJobRegistry.name) },\n { ...this.router.node(this.adminJobExecutions.name) },\n ],\n },\n {\n ...this.router.node(this.adminNotifications.name),\n can: () => this.notificationCtrl.findNotifications.can(),\n },\n {\n ...this.router.node(this.adminParameters.name),\n can: () => this.paramCtrl.getParameterTree.can(),\n },\n ],\n },\n ];\n }\n\n protected adminShellProps(): DashboardShellProps {\n if (this.configFn) {\n return this.configFn(this);\n }\n return {};\n }\n\n protected onNotAuthorized(url: URL) {\n return new Redirection(\n this.router.path(this.authRouter.login.name, {\n query: {\n r: url.pathname,\n },\n }),\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Layout\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminLayout = $page({\n path: \"/admin\",\n label: \"Admin\",\n head: {\n title: \"Admin Panel\",\n titleSeparator: \" | \",\n },\n use: [\n $secure({\n permissions: [\"admin:access\"],\n }),\n ],\n lazy: () => import(\"./components/AdminLayout.tsx\"),\n props: () => ({\n adminShellProps: this.adminShellProps(),\n }),\n loader: ({ user, url }) => {\n if (!user) {\n throw this.onNotAuthorized(url);\n }\n return {};\n },\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Dashboard\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminDashboard = $page({\n icon: IconLayoutDashboard,\n parent: this.adminLayout,\n path: \"/\",\n label: \"Dashboard\",\n lazy: () => import(\"./components/AdminDashboard.tsx\"),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Users\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminUsers = $page({\n icon: IconUsers,\n parent: this.adminLayout,\n path: \"/users\",\n label: \"Users\",\n head: {\n title: \"Users\",\n },\n description: \"Manage application users and their roles.\",\n lazy: () => import(\"./components/users/AdminUsers.tsx\"),\n can: () => this.userCtrl.findUsers.can(),\n });\n\n public readonly adminUserLayout = $page({\n parent: this.adminLayout,\n path: \"/users/:userId\",\n head: {\n title: \"Users\",\n },\n schema: {\n params: t.object({\n userId: t.text(),\n }),\n },\n lazy: () => import(\"./components/users/AdminUserLayout.tsx\"),\n loader: async ({ params }) => {\n const user = await this.userCtrl.getUser({\n params: { id: params.userId },\n });\n return { user };\n },\n });\n\n public readonly adminUserProfile = $page({\n icon: IconUser,\n parent: this.adminUserLayout,\n path: \"/\",\n label: \"Profile\",\n head: {\n title: \"User Profile\",\n },\n lazy: () => import(\"./components/users/AdminUserProfile.tsx\"),\n });\n\n public readonly adminUserSessions = $page({\n icon: IconDevices,\n parent: this.adminUserLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n head: {\n title: \"User Sessions\",\n },\n lazy: () => import(\"./components/users/AdminUserSessions.tsx\"),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Audits (Global)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminAudits = $page({\n icon: IconHistory,\n parent: this.adminLayout,\n path: \"/audits\",\n label: \"Audit Log\",\n head: {\n title: \"Audit Logs\",\n },\n description: \"View system-wide audit trail and activity logs.\",\n lazy: () => import(\"./components/audits/AdminAudits.tsx\"),\n can: () => this.auditCtrl.findAudits.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Sessions\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminSessions = $page({\n icon: IconDevices,\n parent: this.adminLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n description: \"View and manage all active sessions.\",\n head: {\n title: \"Sessions\",\n },\n lazy: () => import(\"./components/sessions/AdminSessions.tsx\"),\n can: () => this.sessionCtrl.findSessions.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Files\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminFiles = $page({\n icon: IconFile,\n parent: this.adminLayout,\n path: \"/files\",\n label: \"Files\",\n description: \"Manage uploaded files and storage.\",\n head: {\n title: \"Files\",\n },\n lazy: () => import(\"./components/files/AdminFiles.tsx\"),\n can: () => this.fileCtrl.findFiles.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Parameters\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminParameters = $page({\n icon: IconSettings,\n parent: this.adminLayout,\n path: \"/parameters\",\n label: \"Parameters\",\n description: \"View and manage application parameters.\",\n lazy: () => import(\"./components/parameters/AdminParameters.tsx\"),\n can: () => this.paramCtrl.getParameterTree.can(),\n head: {\n title: \"Parameters\",\n },\n loader: async () => {\n const treeData = await this.paramCtrl.getParameterTree({});\n return { treeData };\n },\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Jobs\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminJobDashboard = $page({\n icon: IconDashboard,\n parent: this.adminLayout,\n path: \"/jobs\",\n label: \"Jobs\",\n description: \"Monitor and manage background jobs and scheduled tasks.\",\n lazy: () => import(\"./components/jobs/AdminJobDashboard.tsx\"),\n can: () => this.jobCtrl.getJobRegistry.can(),\n });\n\n public readonly adminJobRegistry = $page({\n icon: IconListDetails,\n parent: this.adminLayout,\n path: \"/jobs/registry\",\n label: \"Registry\",\n description: \"View all registered job definitions.\",\n lazy: () => import(\"./components/jobs/AdminJobRegistry.tsx\"),\n can: () => this.jobCtrl.getJobRegistry.can(),\n });\n\n public readonly adminJobExecutions = $page({\n icon: IconClock,\n parent: this.adminLayout,\n path: \"/jobs/executions\",\n label: \"Executions\",\n description: \"Browse and filter job execution history.\",\n lazy: () => import(\"./components/jobs/AdminJobExecutions.tsx\"),\n can: () => this.jobCtrl.findJobExecutions.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // API Keys\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminApiKeys = $page({\n icon: IconKey,\n parent: this.adminLayout,\n path: \"/api-keys\",\n label: \"API Keys\",\n head: {\n title: \"API Keys\",\n },\n description: \"View and manage API keys for programmatic access.\",\n lazy: () => import(\"./components/keys/AdminApiKeys.tsx\"),\n can: () => this.apiKeyCtrl.findApiKeys.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Notifications\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminNotifications = $page({\n icon: IconBell,\n parent: this.adminLayout,\n path: \"/notifications\",\n label: \"Notifications\",\n description: \"View sent notifications and their delivery status.\",\n head: {\n title: \"Notifications\",\n },\n lazy: () => import(\"./components/notifications/AdminNotifications.tsx\"),\n can: () => this.notificationCtrl.findNotifications.can(),\n });\n}\n","import type { DashboardShellProps } from \"@alepha/ui\";\nimport { $context } from \"alepha\";\nimport { AdminRouter } from \"../AdminRouter.tsx\";\n\n/**\n * Register Admin UI components and get the AdminRouter instance.\n */\nexport const $uiAdmin = (optsFn?: (a: AdminRouter) => DashboardShellProps) => {\n const { alepha } = $context();\n const adminRouter = alepha.inject(AdminRouter);\n\n if (optsFn) {\n adminRouter.configFn = optsFn;\n }\n\n return adminRouter;\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { AlephaUIAuth } from \"@alepha/ui/auth\";\nimport { $module } from \"alepha\";\nimport { AdminRouter } from \"./AdminRouter.tsx\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { AdminRouter } from \"./AdminRouter.tsx\";\nexport * from \"./primitives/$uiAdmin.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Admin panel UI components.\n *\n * **Features:**\n * - AdminLayout for admin pages\n * - AdminUsers with user list, create, details, settings, sessions, audits\n * - AdminFiles for file management\n * - AdminJobs for job monitoring\n\n * - AdminParameters for configuration management\n * - AdminSessions for session management\n * - AdminAudits for audit log viewing\n * - AdminVerifications for verification management\n *\n * @module alepha.ui.admin\n */\nexport const AlephaUIAdmin = $module({\n name: \"alepha.ui.admin\",\n services: [AlephaUI, AlephaUIAuth, AdminRouter],\n register: (alepha) => {\n alepha.with(AdminRouter);\n },\n});\n\n// ---------------------------------------------------------------------------------------------------------------------\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,IAAa,WAAb,MAAsB;CACpB,KAAK,YAAY;EACf,MAAM;EACN,aAAa,EACX,SAAS;GACP,aAAa;GACb,mBAAmB;GACnB,SAAS;GACT,aAAa;GACb,qBAAqB;GACrB,gBAAgB;GAChB,aAAa;GACb,eAAe;GACf,YAAY;GACZ,YAAY;GACZ,eAAe;GACf,uBAAuB;GACvB,sBAAsB;GACtB,YAAY;GACZ,gBAAgB;GAChB,qBAAqB;GACrB,gBAAgB;GAChB,kBAAkB;GAClB,eAAe;GACf,eAAe;GACf,kBAAkB;GAClB,yBAAyB;GACzB,kBACE;GACF,sBAAsB;GACtB,qBAAqB;GACrB,2BACE;GACF,mBAAmB;GACnB,mBAAmB;GACnB,sBAAsB;GACtB,oBAAoB;GACpB,oBAAoB;GACpB,oBAAoB;GACpB,yBACE;GACF,uBAAuB;GACvB,uBAAuB;GACvB,wBAAwB;GACxB,yBAAyB;GACzB,+BAA+B;GAC/B,0BAA0B;GAC1B,8BAA8B;GAC9B,6BAA6B;GAC7B,sBAAsB;GACtB,2BAA2B;GAC3B,qBAAqB;GACrB,uBACE;GACF,kBAAkB;GAClB,sBAAsB;GACtB,uBACE;GACF,oBAAoB;GACpB,mBACE;GACF,0BACE;GACF,mBAAmB;GACnB,yBAAyB;GAC1B,EACF;EACF,CAAC;CAEF,KAAK,YAAY,EACf,aAAa,EACX,SAAS;EACP,aAAa;EACb,mBAAmB;EACnB,SAAS;EACT,aAAa;EACb,qBAAqB;EACrB,gBAAgB;EAChB,aAAa;EACb,eAAe;EACf,YAAY;EACZ,YAAY;EACZ,eAAe;EACf,uBAAuB;EACvB,sBAAsB;EACtB,YAAY;EACZ,gBAAgB;EAChB,qBAAqB;EACrB,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,yBAAyB;EACzB,kBACE;EACF,sBAAsB;EACtB,qBAAqB;EACrB,2BACE;EACF,mBAAmB;EACnB,mBAAmB;EACnB,sBAAsB;EACtB,oBAAoB;EACpB,oBAAoB;EACpB,oBAAoB;EACpB,yBACE;EACF,uBAAuB;EACvB,uBACE;EACF,wBAAwB;EACxB,yBAAyB;EACzB,+BAA+B;EAC/B,0BAA0B;EAC1B,8BAA8B;EAC9B,6BAA6B;EAC7B,sBACE;EACF,2BAA2B;EAC3B,qBAAqB;EACrB,uBACE;EACF,kBAAkB;EAClB,sBAAsB;EACtB,uBACE;EACF,oBAAoB;EACpB,mBACE;EACF,0BACE;EACF,mBAAmB;EACnB,yBAAyB;EAC1B,EACF,GACF,CAAC;;;;;;;ACzHJ,MAAM,mBAAmB,EAAE,OAAO;CAChC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,qCAAqC,CAAC,CAAC;CAC7E,OAAO,EAAE,SACP,EAAE,OAAO,EAAE,aAAa,yCAAyC,CAAC,CACnE;CACF,CAAC;AAEF,IAAa,aAAb,MAAwB;CACtB,cAAiC,SAA0B;CAC3D,OAA0B,QAAQ,UAAU;CAE5C,aAAa,MAAM;EACjB,OAAO;EACP,MAAM;EACN,YAAY,OAAO;EACnB,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,QAAQ,MAAM;EACZ,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,QAAQ,EACN,OAAO,kBACR;EACD,YAAY,OAAO,uBAAA,MAAA,MAAA,EAAA,EAAA;EACnB,QAAQ,OAAO,EAAE,OAAO,WAAW;AACjC,OAAI,KACF,OAAM,IAAI,YAAY,MAAM,KAAK,IAAI;AAEvC,UAAO,EACL,aAAa,MAAM,KAAK,gBAAgB,MAAM,MAAM,EACrD;;EAEJ,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,QAAQ,EACN,OAAO,kBACR;EACD,YAAY,OAAO,0BAAA,MAAA,MAAA,EAAA,EAAA;EACnB,QAAQ,OAAO,EAAE,OAAO,WAAW;AACjC,OAAI,KACF,OAAM,IAAI,YAAY,MAAM,KAAK,IAAI;AAEvC,UAAO,EACL,aAAa,MAAM,KAAK,gBAAgB,MAAM,MAAM,EACrD;;EAEJ,CAAC;CAEF,gBAAgB,MAAM;EACpB,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,QAAQ,EACN,OAAO,kBACR;EACD,YAAY,OAAO,+BAAA,MAAA,MAAA,EAAA,EAAA;EACnB,QAAQ,OAAO,EAAE,OAAO,WAAW;AACjC,OAAI,KACF,OAAM,IAAI,YAAY,MAAM,KAAK,IAAI;AAEvC,UAAO,EACL,aAAa,MAAM,KAAK,gBAAgB,MAAM,MAAM,EACrD;;EAEJ,CAAC;CAEF,cAAc,MAAM;EAClB,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,QAAQ,EACN,OAAO,EAAE,OAAO;GACd,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;GAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;GAC9B,CAAC,EACH;EACD,YAAY,OAAO,6BAAA,MAAA,MAAA,EAAA,EAAA;EACpB,CAAC;CAEF,SAAS,MAAM;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,iBAAiB;EACjB,cAAc;AACZ,QAAK,KAAK,QAAQ;AAClB,UAAO,EAAE;;EAEZ,CAAC;CAEF,UAAU,MAAM;EACd,MAAM;EACN,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,WAAW,CAAC,CAAC,KAAK,KAAK;EACvB,YAAY,OAAO;EACpB,CAAC;CAEF,MAAgB,gBAAgB,WAAoB;AAClD,MAAI;AACF,UAAO,MAAM,KAAK,YAAY,eAAe,EAC3C,OAAO,EAAE,WAAW,EACrB,CAAC;WACK,GAAG;AACV,OAAI,aAAa,YACf,OAAM,IAAI,YACR,uFACA,EACD;AAEH,SAAM;;;;;;AC5FZ,MAAM,cAAc,UAA2B;CAC7C,MAAM,EACJ,YAAY,EAAE,EACd,cAAc,YACd,YACA,YACA,MACA,cAAc,OACd,UACA,GAAG,gBACD;AAEJ,aAAY,YAAY;CAExB,MAAM,gBAAgB,WAAgC;CACtD,MAAM,QAAQ,UAAU,kBAAkB;CAE1C,MAAM,OAAO,SAIT;CAEJ,MAAM,cAAc,CAAC,CAAC,KAAK;CAC3B,MAAM,UAAU,eAAe,cAAc,UAAU,KAAK;CAC5D,MAAM,WAAW,MAAM,UAAU,CAAC,MAAM,OAAO,GAAG,SAAS,cAAc;CACzE,MAAM,YAAY,MAAM,UAAU,CAAC,MAAM,OAAO,GAAG,SAAS,cAAc;CAC1E,MAAM,aAAa,WAAuB;AAE1C,KAAI,CAAC,KAAK,KACR,QACE,oBAAC,cAAD;EACE,GAAI;EACJ,MAAM,SAAS,OAAO,KAAA,IAAa,QAAQ;EAC3C,MAAM,WAAW,KAAK,QAAQ;YAE7B,cAAc;EACF,CAAA;CAInB,MAAM,QAA0B,EAAE;AAGlC,KAAI,KAAK,KAAK,SAAS,KAAK,KAAK,SAC/B,OAAM,KAAK;EACT,MAAM;EACN,OAAO,KAAK,KAAK;EAClB,CAAC;AAIJ,KAAI,YAAY,eAAe,CAAC,YAC9B,OAAM,KAAK;EACT,OAAO;EACP,MAAM,oBAAC,UAAD,EAAU,MAAM,GAAG,MAAM,KAAK,IAAM,CAAA;EAC1C,MAAM,WAAW,KAAK,cAAc;EACrC,CAAC;AAIJ,KAAI,aAAa,QACf,OAAM,KAAK;EACT,OAAO;EACP,MAAM,oBAAC,cAAD,EAAc,MAAM,GAAG,MAAM,KAAK,IAAM,CAAA;EAC9C,MAAM,WAAW,KAAK,cAAc;EACrC,CAAC;AAIJ,OAAM,KAAK,GAAG,UAAU;AAGxB,KAAI,MAAM,SAAS,EACjB,OAAM,KAAK,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAM,KAAK;EACT,OAAO;EACP,MAAM,oBAAC,YAAD,EAAY,MAAM,GAAG,MAAM,KAAK,IAAM,CAAA;EAC5C,OAAO;EACP,eAAe,KAAK,QAAQ;EAC7B,CAAC;CAGF,MAAM,YAAY,SAAS,KAAA,KAAa,KAAK,KAAK;AAElD,QACE,oBAAC,cAAD;EACE,GAAI;EACJ,MACE,YAAY,KAAA,IAAY,SAAS,OAAO,KAAA,IAAa,QAAQ;EAE/D,IAAI;EACJ,MAAM;GACJ,WAAW;IACT,WAAW;IACX,WAAW;IACZ;GACD,UAAU;GACV,OAAO;GACP,GAAG;GACH;GACD;YAEA,YACC,oBAAC,QAAD;GAAQ,KAAK,cAAc,KAAK,KAAK;GAAW,MAAM;GAAI,QAAO;GAAO,CAAA,GACtE,KAAA;EACS,CAAA;;;;;;;;;;;;;;;;AClInB,MAAa,eAAe,QAAQ;CAClC,MAAM;CACN,UAAU;EAAC;EAAU;EAAiB;EAAiB;EAAY;EAAS;CAC7E,CAAC;;;ACOF,IAAa,cAAb,MAAyB;CACvB,SAA4B,QAAQ,YAAyB;CAC7D,aAAgC,QAAQ,WAAW;CACnD,OAA0B,QAAQ,UAAU;CAC5C,WAA8B,SAA8B;CAC5D,cAAiC,SAAiC;CAElE,WAA8B,SAAyB;CACvD,YAA+B,SAAmC;CAClE,YAA+B,SAA+B;CAC9D,UAA6B,SAA6B;CAC1D,aAAgC,SAAgC;CAChE,mBAAsC,SAAsC;CAE5E,cAA8B,QAAQ,mBAAmB,EACvD,MAAM,iBACP,CAAC;CAEF,iBAA4E;AAC1E,SAAO;GACL,cAAc,EACZ,OAAO,KAAK,wBAAwB,EACrC;GACD,aAAa,EACX,OAAO,KAAK,uBAAuB,EACpC;GACF;;CAGH,wBAA6C;AAC3C,SAAO;GACL;IACE,MAAM;IACN,UAAU;IACX;GACD;IACE,SAAS,oBAAC,aAAD,EAAe,CAAA;IACxB,UAAU;IACX;GACD;IACE,SAAS,oBAAC,YAAD,EAAc,CAAA;IACvB,UAAU;IACX;GACD;IACE,SAAS,oBAAC,aAAD,EAAa,QAAA,MAAS,CAAA;IAC/B,UAAU;IACX;GACD;IACE,SAAS,oBAAC,gBAAD,EAAkB,CAAA;IAC3B,UAAU;IACX;GACD;IACE,MAAM;IACN,UAAU;IACX;GACF;;CAGH,yBAA+C;AAC7C,SAAO;GACL;IACE,UAAU;IACV,MAAM;IACP;GACD;IACE,UAAU;IACV,MAAM;IACP;GACD;IACE,OAAO;IACP,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,OAAO;IACP,UAAU,CACR;KACE,OAAO;KACP,MAAM;KACN,UAAU;MACR;OACE,GAAG,KAAK,OAAO,KAAK,KAAK,WAAW,KAAK;OACzC,WAAW,KAAK,SAAS,UAAU,KAAK;OACzC;MACD;OACE,GAAG,KAAK,OAAO,KAAK,KAAK,cAAc,KAAK;OAC5C,WAAW,KAAK,YAAY,aAAa,KAAK;OAC/C;MACD;OACE,GAAG,KAAK,OAAO,KAAK,KAAK,aAAa,KAAK;OAC3C,WAAW,KAAK,WAAW,YAAY,KAAK;OAC7C;MACF;KACF,EACD;KACE,GAAG,KAAK,OAAO,KAAK,KAAK,YAAY,KAAK;KAC1C,WAAW,KAAK,UAAU,WAAW,KAAK;KAC3C,CACF;IACF;GACD;IACE,MAAM;IACN,OAAO;IACP,UAAU;KACR;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,WAAW,KAAK;MACzC,WAAW,KAAK,SAAS,UAAU,KAAK;MACzC;KACD;MACE,OAAO;MACP,MAAM;MACN,UAAU;OACR;QACE,GAAG,KAAK,OAAO,KAAK,KAAK,kBAAkB,KAAK;QAChD,OAAO;QACR;OACD,EAAE,GAAG,KAAK,OAAO,KAAK,KAAK,iBAAiB,KAAK,EAAE;OACnD,EAAE,GAAG,KAAK,OAAO,KAAK,KAAK,mBAAmB,KAAK,EAAE;OACtD;MACF;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,mBAAmB,KAAK;MACjD,WAAW,KAAK,iBAAiB,kBAAkB,KAAK;MACzD;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,gBAAgB,KAAK;MAC9C,WAAW,KAAK,UAAU,iBAAiB,KAAK;MACjD;KACF;IACF;GACF;;CAGH,kBAAiD;AAC/C,MAAI,KAAK,SACP,QAAO,KAAK,SAAS,KAAK;AAE5B,SAAO,EAAE;;CAGX,gBAA0B,KAAU;AAClC,SAAO,IAAI,YACT,KAAK,OAAO,KAAK,KAAK,WAAW,MAAM,MAAM,EAC3C,OAAO,EACL,GAAG,IAAI,UACR,EACF,CAAC,CACH;;CAOH,cAA8B,MAAM;EAClC,MAAM;EACN,OAAO;EACP,MAAM;GACJ,OAAO;GACP,gBAAgB;GACjB;EACD,KAAK,CACH,QAAQ,EACN,aAAa,CAAC,eAAe,EAC9B,CAAC,CACH;EACD,YAAY,OAAO;EACnB,cAAc,EACZ,iBAAiB,KAAK,iBAAiB,EACxC;EACD,SAAS,EAAE,MAAM,UAAU;AACzB,OAAI,CAAC,KACH,OAAM,KAAK,gBAAgB,IAAI;AAEjC,UAAO,EAAE;;EAEZ,CAAC;CAMF,iBAAiC,MAAM;EACrC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAMF,aAA6B,MAAM;EACjC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,MAAM,EACJ,OAAO,SACR;EACD,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,UAAU,KAAK;EACzC,CAAC;CAEF,kBAAkC,MAAM;EACtC,QAAQ,KAAK;EACb,MAAM;EACN,MAAM,EACJ,OAAO,SACR;EACD,QAAQ,EACN,QAAQ,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EACjB,CAAC,EACH;EACD,YAAY,OAAO;EACnB,QAAQ,OAAO,EAAE,aAAa;AAI5B,UAAO,EAAE,MAHI,MAAM,KAAK,SAAS,QAAQ,EACvC,QAAQ,EAAE,IAAI,OAAO,QAAQ,EAC9B,CAAC,EACa;;EAElB,CAAC;CAEF,mBAAmC,MAAM;EACvC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,MAAM,EACJ,OAAO,gBACR;EACD,YAAY,OAAO;EACpB,CAAC;CAEF,oBAAoC,MAAM;EACxC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,MAAM,EACJ,OAAO,iBACR;EACD,YAAY,OAAO;EACpB,CAAC;CAMF,cAA8B,MAAM;EAClC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,MAAM,EACJ,OAAO,cACR;EACD,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,UAAU,WAAW,KAAK;EAC3C,CAAC;CAMF,gBAAgC,MAAM;EACpC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM,EACJ,OAAO,YACR;EACD,YAAY,OAAO;EACnB,WAAW,KAAK,YAAY,aAAa,KAAK;EAC/C,CAAC;CAMF,aAA6B,MAAM;EACjC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM,EACJ,OAAO,SACR;EACD,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,UAAU,KAAK;EACzC,CAAC;CAMF,kBAAkC,MAAM;EACtC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,UAAU,iBAAiB,KAAK;EAChD,MAAM,EACJ,OAAO,cACR;EACD,QAAQ,YAAY;AAElB,UAAO,EAAE,UADQ,MAAM,KAAK,UAAU,iBAAiB,EAAE,CAAC,EACvC;;EAEtB,CAAC;CAMF,oBAAoC,MAAM;EACxC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,QAAQ,eAAe,KAAK;EAC7C,CAAC;CAEF,mBAAmC,MAAM;EACvC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,QAAQ,eAAe,KAAK;EAC7C,CAAC;CAEF,qBAAqC,MAAM;EACzC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,QAAQ,kBAAkB,KAAK;EAChD,CAAC;CAMF,eAA+B,MAAM;EACnC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,MAAM,EACJ,OAAO,YACR;EACD,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,WAAW,YAAY,KAAK;EAC7C,CAAC;CAMF,qBAAqC,MAAM;EACzC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM,EACJ,OAAO,iBACR;EACD,YAAY,OAAO;EACnB,WAAW,KAAK,iBAAiB,kBAAkB,KAAK;EACzD,CAAC;;;;;;;ACxaJ,MAAa,YAAY,WAAqD;CAC5E,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,cAAc,OAAO,OAAO,YAAY;AAE9C,KAAI,OACF,aAAY,WAAW;AAGzB,QAAO;;;;;;;;;;;;;;;;;;;;ACaT,MAAa,gBAAgB,QAAQ;CACnC,MAAM;CACN,UAAU;EAAC;EAAU;EAAc;EAAY;CAC/C,WAAW,WAAW;AACpB,SAAO,KAAK,YAAY;;CAE3B,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/index.ts","../../src/admin/AdminRouter.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, Redirection } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n authLayout = $page({\n label: \"Auth\",\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Custom label for the login button when user is not authenticated\n */\n loginLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n\n /**\n * If true, the profile link will not be shown in the menu even if a userProfile page exists and the user is authenticated.\n */\n skipProfile?: boolean;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n loginLabel,\n menuConfig,\n icon,\n skipProfile = false,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"default\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={icon === null ? undefined : (icon ?? IconLogin2)}\n href={authRouter.path(\"login\")}\n >\n {loginLabel ?? children}\n </ActionButton>\n );\n }\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected && !skipProfile) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.sm} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = icon === undefined && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={\n hasAvatar ? undefined : icon === null ? undefined : (icon ?? IconUser)\n }\n px={8}\n menu={{\n menuProps: {\n withArrow: true,\n arrowSize: 12,\n },\n position: \"bottom\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {hasAvatar ? (\n <Avatar src={`/api/files/${auth.user.picture}`} size={24} radius=\"xl\" />\n ) : undefined}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport type { VerifyEmailStep } from \"./components/VerifyEmail.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\nexport * from \"./primitives/$uiAuth.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n","import {\n type AppBarItem,\n alephaSidebarAtom,\n Breadcrumbs,\n type DashboardShellProps,\n LanguageButton,\n type SidebarNode,\n ThemeButton,\n} from \"@alepha/ui\";\nimport { AuthRouter, UserButton } from \"@alepha/ui/auth\";\nimport {\n IconBell,\n IconDevices,\n IconFile,\n IconHistory,\n IconKey,\n IconLayoutDashboard,\n IconLockPassword,\n IconSettings,\n IconTerminal2,\n IconUser,\n IconUsers,\n} from \"@tabler/icons-react\";\nimport { $inject, t } from \"alepha\";\nimport type { AdminAuditController } from \"alepha/api/audits\";\nimport type { FileController } from \"alepha/api/files\";\nimport type { AdminJobController } from \"alepha/api/jobs\";\nimport type { AdminApiKeyController } from \"alepha/api/keys\";\nimport type { AdminNotificationController } from \"alepha/api/notifications\";\nimport type { AdminParameterController } from \"alepha/api/parameters\";\nimport type {\n AdminSessionController,\n AdminUserController,\n} from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, ReactRouter, Redirection } from \"alepha/react/router\";\nimport { $secure } from \"alepha/security\";\nimport { $cookie } from \"alepha/server/cookies\";\nimport { $client } from \"alepha/server/links\";\n\nexport class AdminRouter {\n protected readonly router = $inject(ReactRouter<AdminRouter>);\n protected readonly authRouter = $inject(AuthRouter);\n protected readonly auth = $inject(ReactAuth);\n protected readonly userCtrl = $client<AdminUserController>();\n protected readonly sessionCtrl = $client<AdminSessionController>();\n\n protected readonly fileCtrl = $client<FileController>();\n protected readonly paramCtrl = $client<AdminParameterController>();\n protected readonly auditCtrl = $client<AdminAuditController>();\n protected readonly jobCtrl = $client<AdminJobController>();\n protected readonly apiKeyCtrl = $client<AdminApiKeyController>();\n protected readonly notificationCtrl = $client<AdminNotificationController>();\n\n public readonly adminCookie = $cookie(alephaSidebarAtom, {\n name: \"admin.sidebar\",\n });\n\n public configFn?: (adminRouter: AdminRouter) => DashboardShellProps = () => {\n return {\n sidebarProps: {\n items: this.getDefaultSidebarItems(),\n },\n appBarProps: {\n items: this.getDefaultAppBarItems(),\n },\n };\n };\n\n public getDefaultAppBarItems(): AppBarItem[] {\n return [\n {\n type: \"burger\",\n position: \"left\",\n },\n {\n element: <Breadcrumbs />,\n position: \"left\",\n },\n {\n element: <UserButton />,\n position: \"right\",\n },\n {\n element: <ThemeButton expert />,\n position: \"right\",\n },\n {\n element: <LanguageButton />,\n position: \"right\",\n },\n {\n type: \"dark\",\n position: \"right\",\n },\n ];\n }\n\n public getDefaultSidebarItems(): SidebarNode[] {\n return [\n {\n position: \"top\",\n type: \"search\",\n },\n {\n position: \"top\",\n type: \"spacer\",\n },\n {\n label: \"Dashboard\",\n href: \"/admin\",\n icon: IconLayoutDashboard,\n },\n {\n type: \"section\",\n label: \"Security\",\n children: [\n {\n label: \"Identity\",\n icon: IconLockPassword,\n children: [\n {\n ...this.router.node(this.adminUsers.name),\n can: () => this.userCtrl.findUsers.can(),\n },\n {\n ...this.router.node(this.adminSessions.name),\n can: () => this.sessionCtrl.findSessions.can(),\n },\n {\n ...this.router.node(this.adminApiKeys.name),\n can: () => this.apiKeyCtrl.findApiKeys.can(),\n },\n ],\n },\n {\n ...this.router.node(this.adminAudits.name),\n can: () => this.auditCtrl.findAudits.can(),\n },\n ],\n },\n {\n type: \"section\",\n label: \"System\",\n children: [\n {\n ...this.router.node(this.adminFiles.name),\n can: () => this.fileCtrl.findFiles.can(),\n },\n {\n ...this.router.node(this.adminJobs.name),\n },\n {\n ...this.router.node(this.adminNotifications.name),\n can: () => this.notificationCtrl.findNotifications.can(),\n },\n {\n ...this.router.node(this.adminParameters.name),\n can: () => this.paramCtrl.getParameterTree.can(),\n },\n ],\n },\n ];\n }\n\n protected adminShellProps(): DashboardShellProps {\n if (this.configFn) {\n return this.configFn(this);\n }\n return {};\n }\n\n protected onNotAuthorized(url: URL) {\n return new Redirection(\n this.router.path(this.authRouter.login.name, {\n query: {\n r: url.pathname,\n },\n }),\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Layout\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminLayout = $page({\n path: \"/admin\",\n label: \"Admin\",\n head: {\n title: \"Admin Panel\",\n titleSeparator: \" | \",\n },\n use: [\n $secure({\n permissions: [\"admin:access\"],\n }),\n ],\n lazy: () => import(\"./components/AdminLayout.tsx\"),\n props: () => ({\n adminShellProps: this.adminShellProps(),\n }),\n loader: ({ user, url }) => {\n if (!user) {\n throw this.onNotAuthorized(url);\n }\n return {};\n },\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Dashboard\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminDashboard = $page({\n icon: IconLayoutDashboard,\n parent: this.adminLayout,\n path: \"/\",\n label: \"Dashboard\",\n lazy: () => import(\"./components/AdminDashboard.tsx\"),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Users\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminUsers = $page({\n icon: IconUsers,\n parent: this.adminLayout,\n path: \"/users\",\n label: \"Users\",\n head: {\n title: \"Users\",\n },\n description: \"Manage application users and their roles.\",\n lazy: () => import(\"./components/users/AdminUsers.tsx\"),\n can: () => this.userCtrl.findUsers.can(),\n });\n\n public readonly adminUserLayout = $page({\n parent: this.adminLayout,\n path: \"/users/:userId\",\n head: {\n title: \"Users\",\n },\n schema: {\n params: t.object({\n userId: t.text(),\n }),\n },\n lazy: () => import(\"./components/users/AdminUserLayout.tsx\"),\n loader: async ({ params }) => {\n const user = await this.userCtrl.getUser({\n params: { id: params.userId },\n });\n return { user };\n },\n });\n\n public readonly adminUserProfile = $page({\n icon: IconUser,\n parent: this.adminUserLayout,\n path: \"/\",\n label: \"Profile\",\n head: {\n title: \"User Profile\",\n },\n lazy: () => import(\"./components/users/AdminUserProfile.tsx\"),\n });\n\n public readonly adminUserSessions = $page({\n icon: IconDevices,\n parent: this.adminUserLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n head: {\n title: \"User Sessions\",\n },\n lazy: () => import(\"./components/users/AdminUserSessions.tsx\"),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Audits (Global)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminAudits = $page({\n icon: IconHistory,\n parent: this.adminLayout,\n path: \"/audits\",\n label: \"Audit Log\",\n head: {\n title: \"Audit Logs\",\n },\n description: \"View system-wide audit trail and activity logs.\",\n lazy: () => import(\"./components/audits/AdminAudits.tsx\"),\n can: () => this.auditCtrl.findAudits.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Sessions\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminSessions = $page({\n icon: IconDevices,\n parent: this.adminLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n description: \"View and manage all active sessions.\",\n head: {\n title: \"Sessions\",\n },\n lazy: () => import(\"./components/sessions/AdminSessions.tsx\"),\n can: () => this.sessionCtrl.findSessions.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Files\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminFiles = $page({\n icon: IconFile,\n parent: this.adminLayout,\n path: \"/files\",\n label: \"Files\",\n description: \"Manage uploaded files and storage.\",\n head: {\n title: \"Files\",\n },\n lazy: () => import(\"./components/files/AdminFiles.tsx\"),\n can: () => this.fileCtrl.findFiles.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Parameters\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminParameters = $page({\n icon: IconSettings,\n parent: this.adminLayout,\n path: \"/parameters\",\n label: \"Parameters\",\n description: \"View and manage application parameters.\",\n lazy: () => import(\"./components/parameters/AdminParameters.tsx\"),\n can: () => this.paramCtrl.getParameterTree.can(),\n head: {\n title: \"Parameters\",\n },\n loader: async () => {\n const treeData = await this.paramCtrl.getParameterTree({});\n return { treeData };\n },\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Jobs\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminJobs = $page({\n icon: IconTerminal2,\n parent: this.adminLayout,\n path: \"/jobs\",\n label: \"Jobs\",\n description: \"Monitor and manage background jobs.\",\n lazy: () => import(\"./components/jobs/AdminJobs.tsx\"),\n can: () => this.jobCtrl.getJobRegistry.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // API Keys\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminApiKeys = $page({\n icon: IconKey,\n parent: this.adminLayout,\n path: \"/api-keys\",\n label: \"API Keys\",\n head: {\n title: \"API Keys\",\n },\n description: \"View and manage API keys for programmatic access.\",\n lazy: () => import(\"./components/keys/AdminApiKeys.tsx\"),\n can: () => this.apiKeyCtrl.findApiKeys.can(),\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Notifications\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminNotifications = $page({\n icon: IconBell,\n parent: this.adminLayout,\n path: \"/notifications\",\n label: \"Notifications\",\n description: \"View sent notifications and their delivery status.\",\n head: {\n title: \"Notifications\",\n },\n lazy: () => import(\"./components/notifications/AdminNotifications.tsx\"),\n can: () => this.notificationCtrl.findNotifications.can(),\n });\n}\n","import type { DashboardShellProps } from \"@alepha/ui\";\nimport { $context } from \"alepha\";\nimport { AdminRouter } from \"../AdminRouter.tsx\";\n\n/**\n * Register Admin UI components and get the AdminRouter instance.\n */\nexport const $uiAdmin = (optsFn?: (a: AdminRouter) => DashboardShellProps) => {\n const { alepha } = $context();\n const adminRouter = alepha.inject(AdminRouter);\n\n if (optsFn) {\n adminRouter.configFn = optsFn;\n }\n\n return adminRouter;\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { AlephaUIAuth } from \"@alepha/ui/auth\";\nimport { $module } from \"alepha\";\nimport { AdminRouter } from \"./AdminRouter.tsx\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { AdminRouter } from \"./AdminRouter.tsx\";\nexport * from \"./primitives/$uiAdmin.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Admin panel UI components.\n *\n * **Features:**\n * - AdminLayout for admin pages\n * - AdminUsers with user list, create, details, settings, sessions, audits\n * - AdminFiles for file management\n * - AdminJobs for job monitoring\n\n * - AdminParameters for configuration management\n * - AdminSessions for session management\n * - AdminAudits for audit log viewing\n * - AdminVerifications for verification management\n *\n * @module alepha.ui.admin\n */\nexport const AlephaUIAdmin = $module({\n name: \"alepha.ui.admin\",\n services: [AlephaUI, AlephaUIAuth, AdminRouter],\n register: (alepha) => {\n alepha.with(AdminRouter);\n },\n});\n\n// ---------------------------------------------------------------------------------------------------------------------\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { o as AlephaMantineProvider } from "./core-C6D3pazL.js";
1
+ import { o as AlephaMantineProvider } from "./core-DuGkjPiU.js";
2
2
  import { Flex } from "@mantine/core";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { NestedView } from "alepha/react/router";
@@ -18,4 +18,4 @@ const AuthLayout = () => {
18
18
  //#endregion
19
19
  export { AuthLayout as default };
20
20
 
21
- //# sourceMappingURL=AuthLayout-CfRKcTqP.js.map
21
+ //# sourceMappingURL=AuthLayout-vXPcCVzp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthLayout-CfRKcTqP.js","names":[],"sources":["../../src/auth/components/AuthLayout.tsx"],"sourcesContent":["import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport { NestedView } from \"alepha/react/router\";\n\nconst AuthLayout = () => {\n return (\n <AlephaMantineProvider omnibar={false}>\n <Flex flex={1} align={\"center\"} h={\"100vh\"} justify={\"center\"}>\n <NestedView />\n </Flex>\n </AlephaMantineProvider>\n );\n};\n\nexport default AuthLayout;\n"],"mappings":";;;;;AAIA,MAAM,mBAAmB;AACvB,QACE,oBAAC,uBAAD;EAAuB,SAAS;YAC9B,oBAAC,MAAD;GAAM,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,YAAD,EAAc,CAAA;GACT,CAAA;EACe,CAAA"}
1
+ {"version":3,"file":"AuthLayout-vXPcCVzp.js","names":[],"sources":["../../src/auth/components/AuthLayout.tsx"],"sourcesContent":["import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport { NestedView } from \"alepha/react/router\";\n\nconst AuthLayout = () => {\n return (\n <AlephaMantineProvider omnibar={false}>\n <Flex flex={1} align={\"center\"} h={\"100vh\"} justify={\"center\"}>\n <NestedView />\n </Flex>\n </AlephaMantineProvider>\n );\n};\n\nexport default AuthLayout;\n"],"mappings":";;;;;AAIA,MAAM,mBAAmB;AACvB,QACE,oBAAC,uBAAD;EAAuB,SAAS;YAC9B,oBAAC,MAAD;GAAM,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,YAAD,EAAc,CAAA;GACT,CAAA;EACe,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
- import { i as ActionButton, n as capitalize, r as Control } from "./core-C6D3pazL.js";
2
+ import { i as ActionButton, n as capitalize, r as Control } from "./core-DuGkjPiU.js";
3
3
  import { n as IconGithub, t as IconGoogle } from "./IconGoogle-8Nkx6yax.js";
4
4
  import { AlephaError, t } from "alepha";
5
5
  import { FormValidationError, useForm } from "alepha/react/form";
@@ -271,4 +271,4 @@ const leftSection = (name) => {
271
271
  //#endregion
272
272
  export { Login_exports as n, Login as t };
273
273
 
274
- //# sourceMappingURL=Login-DJyweoPS.js.map
274
+ //# sourceMappingURL=Login-Dg08QR20.js.map