@alepha/ui 0.16.1 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/admin/{AdminApiKeys-GMORg-1l.js → AdminApiKeys-CoTOTfgU.js} +4 -3
  2. package/dist/admin/{AdminApiKeys-GMORg-1l.js.map → AdminApiKeys-CoTOTfgU.js.map} +1 -1
  3. package/dist/admin/{AdminAudits-pkWrjq1Z.js → AdminAudits-BmsxFbDa.js} +4 -3
  4. package/dist/admin/{AdminAudits-pkWrjq1Z.js.map → AdminAudits-BmsxFbDa.js.map} +1 -1
  5. package/dist/admin/{AdminFiles-WeQbsCsl.js → AdminFiles-BBB8knca.js} +4 -3
  6. package/dist/admin/{AdminFiles-WeQbsCsl.js.map → AdminFiles-BBB8knca.js.map} +1 -1
  7. package/dist/admin/{AdminJobs-B-q9iGO3.js → AdminJobs-C604joTz.js} +4 -3
  8. package/dist/admin/{AdminJobs-B-q9iGO3.js.map → AdminJobs-C604joTz.js.map} +1 -1
  9. package/dist/admin/{AdminLayout-BqZiXx4H.js → AdminLayout-CsjvpeD1.js} +6 -9
  10. package/dist/admin/AdminLayout-CsjvpeD1.js.map +1 -0
  11. package/dist/admin/{AdminNotifications-Ds5Un0NJ.js → AdminNotifications-LwR6RKrx.js} +4 -3
  12. package/dist/admin/{AdminNotifications-Ds5Un0NJ.js.map → AdminNotifications-LwR6RKrx.js.map} +1 -1
  13. package/dist/admin/AdminParameters-B_83Vie9.js +767 -0
  14. package/dist/admin/AdminParameters-B_83Vie9.js.map +1 -0
  15. package/dist/admin/{AdminSessions-DzIOxM3b.js → AdminSessions-CWnPosdd.js} +4 -3
  16. package/dist/admin/{AdminSessions-DzIOxM3b.js.map → AdminSessions-CWnPosdd.js.map} +1 -1
  17. package/dist/admin/{AdminUserAudits-CiUPN2BC.js → AdminUserAudits-nHv636E_.js} +4 -3
  18. package/dist/admin/{AdminUserAudits-CiUPN2BC.js.map → AdminUserAudits-nHv636E_.js.map} +1 -1
  19. package/dist/admin/{AdminUserCreate-BwQKr4xE.js → AdminUserCreate-CjYD3Kjc.js} +4 -3
  20. package/dist/admin/{AdminUserCreate-BwQKr4xE.js.map → AdminUserCreate-CjYD3Kjc.js.map} +1 -1
  21. package/dist/admin/{AdminUserDetails-uqtC5aJ1.js → AdminUserDetails-Ccq-LsZ0.js} +4 -3
  22. package/dist/admin/{AdminUserDetails-uqtC5aJ1.js.map → AdminUserDetails-Ccq-LsZ0.js.map} +1 -1
  23. package/dist/admin/{AdminUserLayout-CiPay35T.js → AdminUserLayout-7s41DiF_.js} +6 -7
  24. package/dist/admin/AdminUserLayout-7s41DiF_.js.map +1 -0
  25. package/dist/admin/{AdminUserSessions-DAE8Nf1F.js → AdminUserSessions-Ds3ODq_d.js} +4 -3
  26. package/dist/admin/{AdminUserSessions-DAE8Nf1F.js.map → AdminUserSessions-Ds3ODq_d.js.map} +1 -1
  27. package/dist/admin/{AdminUserSettings-EbahaV2a.js → AdminUserSettings-CGh4gROo.js} +4 -3
  28. package/dist/admin/{AdminUserSettings-EbahaV2a.js.map → AdminUserSettings-CGh4gROo.js.map} +1 -1
  29. package/dist/admin/{AdminUsers-Dcjh0KNW.js → AdminUsers-CvPiBzQK.js} +4 -3
  30. package/dist/admin/{AdminUsers-Dcjh0KNW.js.map → AdminUsers-CvPiBzQK.js.map} +1 -1
  31. package/dist/admin/index.d.ts +22 -10
  32. package/dist/admin/index.d.ts.map +1 -1
  33. package/dist/admin/index.js +47 -48
  34. package/dist/admin/index.js.map +1 -1
  35. package/dist/admin/rolldown-runtime-CjeV3_4I.js +18 -0
  36. package/dist/auth/{AuthLayout-Dj5K4SIN.js → AuthLayout-CdJcrPs4.js} +2 -3
  37. package/dist/auth/{AuthLayout-Dj5K4SIN.js.map → AuthLayout-CdJcrPs4.js.map} +1 -1
  38. package/dist/{demo/IconGoogle-CbBF8Hqq.js → auth/IconGoogle-Bm18QD2q.js} +2 -4
  39. package/dist/auth/{IconGoogle-DpSlPZ1u.js.map → IconGoogle-Bm18QD2q.js.map} +1 -1
  40. package/dist/auth/{Login-BBqTosqZ.js → Login-DS_OqA0G.js} +7 -6
  41. package/dist/auth/Login-DS_OqA0G.js.map +1 -0
  42. package/dist/auth/{Profile-Bxj8Nwom.js → Profile-Di7N7HZL.js} +2 -3
  43. package/dist/auth/{Profile-Bxj8Nwom.js.map → Profile-Di7N7HZL.js.map} +1 -1
  44. package/dist/auth/{Register-Ce675Crg.js → Register-BRR2_gux.js} +7 -6
  45. package/dist/auth/Register-BRR2_gux.js.map +1 -0
  46. package/dist/auth/{ResetPassword-DWdt7c40.js → ResetPassword-oQu72lod.js} +4 -3
  47. package/dist/auth/{ResetPassword-DWdt7c40.js.map → ResetPassword-oQu72lod.js.map} +1 -1
  48. package/dist/auth/{VerifyEmail-CI4JwByV.js → VerifyEmail-DC6HPZjd.js} +4 -3
  49. package/dist/auth/{VerifyEmail-CI4JwByV.js.map → VerifyEmail-DC6HPZjd.js.map} +1 -1
  50. package/dist/auth/index.d.ts +14 -14
  51. package/dist/auth/index.d.ts.map +1 -1
  52. package/dist/auth/index.js +13 -13
  53. package/dist/auth/index.js.map +1 -1
  54. package/dist/auth/rolldown-runtime-CjeV3_4I.js +18 -0
  55. package/dist/core/index.d.ts +147 -68
  56. package/dist/core/index.d.ts.map +1 -1
  57. package/dist/core/index.js +349 -287
  58. package/dist/core/index.js.map +1 -1
  59. package/dist/demo/{DemoDataTable-CguplbR7.js → DemoDataTable-DCsJq8v5.js} +4 -5
  60. package/dist/demo/DemoDataTable-DCsJq8v5.js.map +1 -0
  61. package/dist/demo/{DemoHome-Cce2bWmg.js → DemoHome-DpRrPlBC.js} +4 -3
  62. package/dist/demo/{DemoHome-Cce2bWmg.js.map → DemoHome-DpRrPlBC.js.map} +1 -1
  63. package/dist/demo/{DemoJsonViewer-Dgdk3Txb.js → DemoJsonViewer-zeucGKHV.js} +6 -5
  64. package/dist/demo/DemoJsonViewer-zeucGKHV.js.map +1 -0
  65. package/dist/demo/{DemoLayout-B20TEuhV.js → DemoLayout-PhgbAAiQ.js} +6 -5
  66. package/dist/demo/DemoLayout-PhgbAAiQ.js.map +1 -0
  67. package/dist/demo/{DemoLogin-CvCG2WVh.js → DemoLogin-DSzP0Lkv.js} +8 -10
  68. package/dist/demo/DemoLogin-DSzP0Lkv.js.map +1 -0
  69. package/dist/demo/{DemoRegister-CmeHbOAs.js → DemoRegister-DavFBsCz.js} +8 -10
  70. package/dist/demo/DemoRegister-DavFBsCz.js.map +1 -0
  71. package/dist/demo/{DemoResetPassword-CKO5iA_6.js → DemoResetPassword-BS2rIAQK.js} +5 -7
  72. package/dist/demo/DemoResetPassword-BS2rIAQK.js.map +1 -0
  73. package/dist/demo/{DemoSidebar-MVmQKfMt.js → DemoSidebar-zNkUmHRl.js} +4 -5
  74. package/dist/demo/DemoSidebar-zNkUmHRl.js.map +1 -0
  75. package/dist/demo/{DemoTypeForm-w-qtfRlC.js → DemoTypeForm-B9q7oT0b.js} +4 -5
  76. package/dist/demo/DemoTypeForm-B9q7oT0b.js.map +1 -0
  77. package/dist/demo/{DemoVerifyEmail-C8FFJT5A.js → DemoVerifyEmail-Bi4SdWz0.js} +5 -7
  78. package/dist/demo/DemoVerifyEmail-Bi4SdWz0.js.map +1 -0
  79. package/dist/{auth/IconGoogle-DpSlPZ1u.js → demo/IconGoogle-CTeZyrek.js} +2 -4
  80. package/dist/demo/{IconGoogle-CbBF8Hqq.js.map → IconGoogle-CTeZyrek.js.map} +1 -1
  81. package/dist/demo/{Showcase-CQrMWars.js → Showcase-C9btr_SJ.js} +3 -5
  82. package/dist/demo/Showcase-C9btr_SJ.js.map +1 -0
  83. package/dist/demo/index.d.ts +2 -2
  84. package/dist/demo/index.d.ts.map +1 -1
  85. package/dist/demo/index.js +15 -15
  86. package/dist/demo/rolldown-runtime-CjeV3_4I.js +18 -0
  87. package/package.json +5 -3
  88. package/src/admin/AdminRouter.ts +15 -24
  89. package/src/admin/components/AdminLayout.tsx +6 -9
  90. package/src/admin/components/parameters/AdminParameters.tsx +154 -76
  91. package/src/admin/components/parameters/ParameterDetails.tsx +153 -93
  92. package/src/admin/components/parameters/ParameterEmptyState.tsx +27 -0
  93. package/src/admin/components/parameters/ParameterHistory.tsx +15 -20
  94. package/src/admin/components/parameters/ParameterTree.tsx +280 -104
  95. package/src/admin/components/parameters/types.ts +3 -3
  96. package/src/admin/primitives/$uiAdmin.ts +2 -2
  97. package/src/auth/AuthRouter.ts +1 -0
  98. package/src/core/components/buttons/ActionButton.tsx +4 -15
  99. package/src/core/components/buttons/DarkModeButton.tsx +8 -4
  100. package/src/core/components/buttons/ToggleSidebarButton.tsx +3 -5
  101. package/src/core/components/form/Control.tsx +10 -32
  102. package/src/core/components/form/ControlArray.tsx +200 -89
  103. package/src/core/components/form/TypeForm.browser.spec.tsx +727 -0
  104. package/src/core/components/layout/AlephaMantineProvider.tsx +1 -0
  105. package/src/core/components/layout/Breadcrumb.tsx +91 -0
  106. package/src/core/components/layout/{AdminShell.tsx → DashboardShell.tsx} +77 -32
  107. package/src/core/components/layout/Sidebar.tsx +58 -18
  108. package/src/core/constants/ui.ts +1 -1
  109. package/src/core/helpers/renderIcon.tsx +5 -2
  110. package/src/core/index.ts +9 -5
  111. package/src/core/styles.css +7 -7
  112. package/src/core/utils/string.ts +28 -4
  113. package/src/demo/components/DemoLayout.tsx +6 -2
  114. package/dist/admin/AdminApiKeys-DsmGnHNh.js +0 -3
  115. package/dist/admin/AdminAudits-8SM96viT.js +0 -3
  116. package/dist/admin/AdminFiles-B56ocq4H.js +0 -3
  117. package/dist/admin/AdminJobs-CED1syCn.js +0 -3
  118. package/dist/admin/AdminLayout-BqZiXx4H.js.map +0 -1
  119. package/dist/admin/AdminNotifications-B0B1rdc4.js +0 -3
  120. package/dist/admin/AdminParameters-BU3lATdJ.js +0 -3
  121. package/dist/admin/AdminParameters-CfDUpc78.js +0 -575
  122. package/dist/admin/AdminParameters-CfDUpc78.js.map +0 -1
  123. package/dist/admin/AdminSessions-BDGK2MS6.js +0 -3
  124. package/dist/admin/AdminUserAudits-Cj79gENT.js +0 -3
  125. package/dist/admin/AdminUserCreate-Cq-mUmBs.js +0 -3
  126. package/dist/admin/AdminUserDetails-DRjVAPFd.js +0 -3
  127. package/dist/admin/AdminUserLayout-CGzmHHby.js +0 -3
  128. package/dist/admin/AdminUserLayout-CiPay35T.js.map +0 -1
  129. package/dist/admin/AdminUserSessions-DcdzuNZ9.js +0 -3
  130. package/dist/admin/AdminUserSettings-D7V6-ceX.js +0 -3
  131. package/dist/admin/AdminUsers-D9nyzGqQ.js +0 -3
  132. package/dist/auth/Login-BBqTosqZ.js.map +0 -1
  133. package/dist/auth/Login-CoU63mMR.js +0 -4
  134. package/dist/auth/Register-BV_oa_AK.js +0 -4
  135. package/dist/auth/Register-Ce675Crg.js.map +0 -1
  136. package/dist/auth/ResetPassword-D5wC8GAA.js +0 -3
  137. package/dist/auth/VerifyEmail-DAfqVm5s.js +0 -3
  138. package/dist/demo/DemoDataTable-CguplbR7.js.map +0 -1
  139. package/dist/demo/DemoHome-DC9qkMNe.js +0 -3
  140. package/dist/demo/DemoJsonViewer-DIssGVlJ.js +0 -4
  141. package/dist/demo/DemoJsonViewer-Dgdk3Txb.js.map +0 -1
  142. package/dist/demo/DemoLayout-B20TEuhV.js.map +0 -1
  143. package/dist/demo/DemoLayout-DSRyf4qJ.js +0 -3
  144. package/dist/demo/DemoLogin-CvCG2WVh.js.map +0 -1
  145. package/dist/demo/DemoRegister-CmeHbOAs.js.map +0 -1
  146. package/dist/demo/DemoResetPassword-CKO5iA_6.js.map +0 -1
  147. package/dist/demo/DemoSidebar-MVmQKfMt.js.map +0 -1
  148. package/dist/demo/DemoTypeForm-w-qtfRlC.js.map +0 -1
  149. package/dist/demo/DemoVerifyEmail-C8FFJT5A.js.map +0 -1
  150. package/dist/demo/Showcase-CQrMWars.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-CjeV3_4I.js";
1
2
  import { ActionButton, Flex, Text } from "@alepha/ui";
2
3
  import { IconAlertCircle, IconCheck, IconMail, IconTrash } from "@tabler/icons-react";
3
4
  import { useRouter, useRouterState } from "alepha/react/router";
@@ -7,6 +8,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import { useEffect, useState } from "react";
8
9
 
9
10
  //#region ../../src/admin/components/users/AdminUserSettings.tsx
11
+ var AdminUserSettings_exports = /* @__PURE__ */ __exportAll({ default: () => AdminUserSettings });
10
12
  const AdminUserSettings = (props) => {
11
13
  const router = useRouter();
12
14
  const state = useRouterState();
@@ -159,8 +161,7 @@ const AdminUserSettings = (props) => {
159
161
  })]
160
162
  });
161
163
  };
162
- var AdminUserSettings_default = AdminUserSettings;
163
164
 
164
165
  //#endregion
165
- export { AdminUserSettings_default as t };
166
- //# sourceMappingURL=AdminUserSettings-EbahaV2a.js.map
166
+ export { AdminUserSettings_exports as n, AdminUserSettings as t };
167
+ //# sourceMappingURL=AdminUserSettings-CGh4gROo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminUserSettings-EbahaV2a.js","names":[],"sources":["../../src/admin/components/users/AdminUserSettings.tsx"],"sourcesContent":["import { ActionButton, Flex, Text } from \"@alepha/ui\";\nimport { Alert, Card, Group, Loader, Stack } from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconCheck,\n IconMail,\n IconTrash,\n} from \"@tabler/icons-react\";\nimport type {\n AdminUserController,\n UserController,\n UserEntity,\n} from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useRouter, useRouterState } from \"alepha/react/router\";\nimport { useEffect, useState } from \"react\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\nexport interface AdminUserSettingsProps {\n userRealmName?: string;\n}\n\nconst AdminUserSettings = (props: AdminUserSettingsProps) => {\n const router = useRouter<AdminRouter>();\n const state = useRouterState();\n const adminClient = useClient<AdminUserController>();\n const userClient = useClient<UserController>();\n const userId = state.params.userId as string;\n\n const [user, setUser] = useState<UserEntity | null>(null);\n const [loading, setLoading] = useState(true);\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [verifyLoading, setVerifyLoading] = useState(false);\n const [verifySuccess, setVerifySuccess] = useState(false);\n\n useEffect(() => {\n const loadUser = async () => {\n try {\n const data = await adminClient.getUser({\n params: { id: userId },\n query: { userRealmName: props.userRealmName },\n });\n setUser(data);\n } finally {\n setLoading(false);\n }\n };\n\n loadUser();\n }, [userId]);\n\n const handleDelete = async () => {\n if (!confirm(\"Are you sure you want to delete this user?\")) {\n return;\n }\n\n setDeleteLoading(true);\n try {\n await adminClient.deleteUser({\n params: { id: userId },\n query: { userRealmName: props.userRealmName },\n });\n await router.push(\"adminUsers\");\n } finally {\n setDeleteLoading(false);\n }\n };\n\n const handleTriggerEmailVerification = async () => {\n if (!user?.email) return;\n\n setVerifyLoading(true);\n setVerifySuccess(false);\n try {\n await userClient.requestEmailVerification({\n query: {\n userRealmName: props.userRealmName,\n method: \"link\",\n verifyUrl: `${window.location.origin}/auth/verify-email`,\n },\n body: { email: user.email },\n });\n setVerifySuccess(true);\n } finally {\n setVerifyLoading(false);\n }\n };\n\n if (loading) {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Loader />\n </Flex>\n );\n }\n\n if (!user) {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Text c=\"dimmed\">User not found</Text>\n </Flex>\n );\n }\n\n return (\n <Flex flex={1} direction=\"column\" gap=\"md\">\n {user.email && !user.emailVerified && (\n <Card withBorder p=\"lg\">\n <Stack gap=\"md\">\n <Text size=\"lg\" fw={500}>\n Email Verification\n </Text>\n\n <Alert variant=\"light\" color=\"yellow\" icon={<IconMail />}>\n <Text size=\"sm\">\n This user's email ({user.email}) is not verified. You can send a\n verification link to the user.\n </Text>\n </Alert>\n\n {verifySuccess && (\n <Alert variant=\"light\" color=\"green\" icon={<IconCheck />}>\n <Text size=\"sm\">\n Verification link sent successfully to {user.email}.\n </Text>\n </Alert>\n )}\n\n <Group>\n <ActionButton\n leftSection={<IconMail size={16} />}\n loading={verifyLoading}\n onClick={handleTriggerEmailVerification}\n >\n Send Verification Link\n </ActionButton>\n </Group>\n </Stack>\n </Card>\n )}\n\n <Card withBorder p=\"lg\">\n <Stack gap=\"md\">\n <Text size=\"lg\" fw={500} c=\"red\">\n Danger Zone\n </Text>\n\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">\n Deleting this user will permanently remove their account and all\n associated data. This action cannot be undone.\n </Text>\n </Alert>\n\n <Group>\n <ActionButton\n color=\"red\"\n leftSection={<IconTrash size={16} />}\n loading={deleteLoading}\n onClick={handleDelete}\n >\n Delete User\n </ActionButton>\n </Group>\n </Stack>\n </Card>\n </Flex>\n );\n};\n\nexport default AdminUserSettings;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdminUserSettings-CGh4gROo.js","names":[],"sources":["../../src/admin/components/users/AdminUserSettings.tsx"],"sourcesContent":["import { ActionButton, Flex, Text } from \"@alepha/ui\";\nimport { Alert, Card, Group, Loader, Stack } from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconCheck,\n IconMail,\n IconTrash,\n} from \"@tabler/icons-react\";\nimport type {\n AdminUserController,\n UserController,\n UserEntity,\n} from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useRouter, useRouterState } from \"alepha/react/router\";\nimport { useEffect, useState } from \"react\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\nexport interface AdminUserSettingsProps {\n userRealmName?: string;\n}\n\nconst AdminUserSettings = (props: AdminUserSettingsProps) => {\n const router = useRouter<AdminRouter>();\n const state = useRouterState();\n const adminClient = useClient<AdminUserController>();\n const userClient = useClient<UserController>();\n const userId = state.params.userId as string;\n\n const [user, setUser] = useState<UserEntity | null>(null);\n const [loading, setLoading] = useState(true);\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [verifyLoading, setVerifyLoading] = useState(false);\n const [verifySuccess, setVerifySuccess] = useState(false);\n\n useEffect(() => {\n const loadUser = async () => {\n try {\n const data = await adminClient.getUser({\n params: { id: userId },\n query: { userRealmName: props.userRealmName },\n });\n setUser(data);\n } finally {\n setLoading(false);\n }\n };\n\n loadUser();\n }, [userId]);\n\n const handleDelete = async () => {\n if (!confirm(\"Are you sure you want to delete this user?\")) {\n return;\n }\n\n setDeleteLoading(true);\n try {\n await adminClient.deleteUser({\n params: { id: userId },\n query: { userRealmName: props.userRealmName },\n });\n await router.push(\"adminUsers\");\n } finally {\n setDeleteLoading(false);\n }\n };\n\n const handleTriggerEmailVerification = async () => {\n if (!user?.email) return;\n\n setVerifyLoading(true);\n setVerifySuccess(false);\n try {\n await userClient.requestEmailVerification({\n query: {\n userRealmName: props.userRealmName,\n method: \"link\",\n verifyUrl: `${window.location.origin}/auth/verify-email`,\n },\n body: { email: user.email },\n });\n setVerifySuccess(true);\n } finally {\n setVerifyLoading(false);\n }\n };\n\n if (loading) {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Loader />\n </Flex>\n );\n }\n\n if (!user) {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Text c=\"dimmed\">User not found</Text>\n </Flex>\n );\n }\n\n return (\n <Flex flex={1} direction=\"column\" gap=\"md\">\n {user.email && !user.emailVerified && (\n <Card withBorder p=\"lg\">\n <Stack gap=\"md\">\n <Text size=\"lg\" fw={500}>\n Email Verification\n </Text>\n\n <Alert variant=\"light\" color=\"yellow\" icon={<IconMail />}>\n <Text size=\"sm\">\n This user's email ({user.email}) is not verified. You can send a\n verification link to the user.\n </Text>\n </Alert>\n\n {verifySuccess && (\n <Alert variant=\"light\" color=\"green\" icon={<IconCheck />}>\n <Text size=\"sm\">\n Verification link sent successfully to {user.email}.\n </Text>\n </Alert>\n )}\n\n <Group>\n <ActionButton\n leftSection={<IconMail size={16} />}\n loading={verifyLoading}\n onClick={handleTriggerEmailVerification}\n >\n Send Verification Link\n </ActionButton>\n </Group>\n </Stack>\n </Card>\n )}\n\n <Card withBorder p=\"lg\">\n <Stack gap=\"md\">\n <Text size=\"lg\" fw={500} c=\"red\">\n Danger Zone\n </Text>\n\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">\n Deleting this user will permanently remove their account and all\n associated data. This action cannot be undone.\n </Text>\n </Alert>\n\n <Group>\n <ActionButton\n color=\"red\"\n leftSection={<IconTrash size={16} />}\n loading={deleteLoading}\n onClick={handleDelete}\n >\n Delete User\n </ActionButton>\n </Group>\n </Stack>\n </Card>\n </Flex>\n );\n};\n\nexport default AdminUserSettings;\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-CjeV3_4I.js";
1
2
  import { DataTable, Text } from "@alepha/ui";
2
3
  import { t } from "alepha";
3
4
  import { IconCheck, IconUsersPlus, IconX } from "@tabler/icons-react";
@@ -9,6 +10,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
10
  import { users } from "alepha/api/users";
10
11
 
11
12
  //#region ../../src/admin/components/users/AdminUsers.tsx
13
+ var AdminUsers_exports = /* @__PURE__ */ __exportAll({ default: () => AdminUsers });
12
14
  const AdminUsers = (props) => {
13
15
  const client = useClient();
14
16
  const router = useRouter();
@@ -112,8 +114,7 @@ const AdminUsers = (props) => {
112
114
  })
113
115
  });
114
116
  };
115
- var AdminUsers_default = AdminUsers;
116
117
 
117
118
  //#endregion
118
- export { AdminUsers_default as t };
119
- //# sourceMappingURL=AdminUsers-Dcjh0KNW.js.map
119
+ export { AdminUsers_exports as n, AdminUsers as t };
120
+ //# sourceMappingURL=AdminUsers-CvPiBzQK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminUsers-Dcjh0KNW.js","names":["Flex"],"sources":["../../src/admin/components/users/AdminUsers.tsx"],"sourcesContent":["import { DataTable, Text } from \"@alepha/ui\";\nimport { Badge, Flex, Group } from \"@mantine/core\";\nimport { IconCheck, IconUsersPlus, IconX } from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport {\n type AdminUserController,\n type UserEntity,\n users,\n} from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter } from \"alepha/react/router\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\nexport interface AdminUsersProps {\n userRealmName?: string;\n}\n\nconst AdminUsers = (props: AdminUsersProps) => {\n const client = useClient<AdminUserController>();\n const router = useRouter<AdminRouter>();\n const { l } = useI18n();\n\n const filters = t.object({\n query: t.optional(\n t.string({\n $control: {\n query: t.omit(users.schema, [\"id\", \"version\"]),\n },\n }),\n ),\n });\n\n return (\n <Flex flex={1} direction=\"column\">\n <DataTable<UserEntity, typeof filters>\n submitOnInit\n actions={[\n {\n icon: IconUsersPlus,\n href: router.path(\"adminUserCreate\"),\n label: \"Create User\",\n },\n ]}\n defaultSize={10}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 3,\n }}\n tableProps={{\n horizontalSpacing: \"xs\",\n verticalSpacing: \"xs\",\n striped: false,\n highlightOnHover: true,\n }}\n onFilterChange={(key, value, form) => {\n if (key === \"query\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n const baseProps: Record<string, any> = {\n style: { cursor: \"pointer\" },\n onClick: () =>\n router.push(\"adminUserDetails\", {\n params: { userId: item.id },\n }),\n };\n\n if (!item.enabled) {\n baseProps.opacity = 0.5;\n }\n\n return baseProps;\n }}\n items={async (filters) => {\n const response = await client.findUsers({\n query: {\n ...filters,\n userRealmName: props.userRealmName,\n },\n });\n\n return response as Page<UserEntity>;\n }}\n columns={{\n username: {\n label: \"Username\",\n value: (item) => (\n <Text size=\"sm\" fw={500}>\n {item.username || \"-\"}\n </Text>\n ),\n },\n email: {\n label: \"Email\",\n value: (item) => (\n <Group gap=\"xs\">\n <Text size=\"sm\">{item.email || \"-\"}</Text>\n {item.email && (\n <Badge\n size=\"xs\"\n variant=\"light\"\n color={item.emailVerified ? \"green\" : \"gray\"}\n leftSection={\n item.emailVerified ? (\n <IconCheck size={10} />\n ) : (\n <IconX size={10} />\n )\n }\n >\n {item.emailVerified ? \"Verified\" : \"Unverified\"}\n </Badge>\n )}\n </Group>\n ),\n },\n roles: {\n label: \"Roles\",\n value: (item) => (\n <Group gap={4}>\n {item.roles.map((role: string) => (\n <Badge key={role} size=\"xs\" variant=\"outline\">\n {role}\n </Badge>\n ))}\n </Group>\n ),\n },\n enabled: {\n label: \"Status\",\n fit: true,\n value: (item) => (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color={item.enabled ? \"green\" : \"red\"}\n >\n {item.enabled ? \"Active\" : \"Disabled\"}\n </Badge>\n ),\n },\n createdAt: {\n label: \"Created\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.createdAt, { date: \"fromNow\" })}\n </Text>\n ),\n },\n }}\n />\n </Flex>\n );\n};\n\nexport default AdminUsers;\n"],"mappings":";;;;;;;;;;;AAkBA,MAAM,cAAc,UAA2B;CAC7C,MAAM,SAAS,WAAgC;CAC/C,MAAM,SAAS,WAAwB;CACvC,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,UAAU,EAAE,OAAO,EACvB,OAAO,EAAE,SACP,EAAE,OAAO,EACP,UAAU,EACR,OAAO,EAAE,KAAK,MAAM,QAAQ,CAAC,MAAM,UAAU,CAAC,EAC/C,EACF,CAAC,CACH,EACF,CAAC;AAEF,QACE,oBAACA;EAAK,MAAM;EAAG,WAAU;YACvB,oBAAC;GACC;GACA,SAAS,CACP;IACE,MAAM;IACN,MAAM,OAAO,KAAK,kBAAkB;IACpC,OAAO;IACR,CACF;GACD,aAAa;GACb,eAAe;IACb,kBAAkB;IAClB,SAAS;IACV;GACD,YAAY;IACV,mBAAmB;IACnB,iBAAiB;IACjB,SAAS;IACT,kBAAkB;IACnB;GACD,iBAAiB,KAAK,OAAO,SAAS;AACpC,QAAI,QAAQ,QACV,QAAO,KAAK,QAAQ;;GAGf;GACT,eAAe,SAAS;IACtB,MAAM,YAAiC;KACrC,OAAO,EAAE,QAAQ,WAAW;KAC5B,eACE,OAAO,KAAK,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC5B,CAAC;KACL;AAED,QAAI,CAAC,KAAK,QACR,WAAU,UAAU;AAGtB,WAAO;;GAET,OAAO,OAAO,YAAY;AAQxB,WAPiB,MAAM,OAAO,UAAU,EACtC,OAAO;KACL,GAAG;KACH,eAAe,MAAM;KACtB,EACF,CAAC;;GAIJ,SAAS;IACP,UAAU;KACR,OAAO;KACP,QAAQ,SACN,oBAAC;MAAK,MAAK;MAAK,IAAI;gBACjB,KAAK,YAAY;OACb;KAEV;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,qBAAC;MAAM,KAAI;iBACT,oBAAC;OAAK,MAAK;iBAAM,KAAK,SAAS;QAAW,EACzC,KAAK,SACJ,oBAAC;OACC,MAAK;OACL,SAAQ;OACR,OAAO,KAAK,gBAAgB,UAAU;OACtC,aACE,KAAK,gBACH,oBAAC,aAAU,MAAM,KAAM,GAEvB,oBAAC,SAAM,MAAM,KAAM;iBAItB,KAAK,gBAAgB,aAAa;QAC7B;OAEJ;KAEX;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,oBAAC;MAAM,KAAK;gBACT,KAAK,MAAM,KAAK,SACf,oBAAC;OAAiB,MAAK;OAAK,SAAQ;iBACjC;SADS,KAEJ,CACR;OACI;KAEX;IACD,SAAS;KACP,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MACC,MAAK;MACL,SAAQ;MACR,OAAO,KAAK,UAAU,UAAU;gBAE/B,KAAK,UAAU,WAAW;OACrB;KAEX;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG;;AAIX,yBAAe"}
1
+ {"version":3,"file":"AdminUsers-CvPiBzQK.js","names":["Flex"],"sources":["../../src/admin/components/users/AdminUsers.tsx"],"sourcesContent":["import { DataTable, Text } from \"@alepha/ui\";\nimport { Badge, Flex, Group } from \"@mantine/core\";\nimport { IconCheck, IconUsersPlus, IconX } from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport {\n type AdminUserController,\n type UserEntity,\n users,\n} from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter } from \"alepha/react/router\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\nexport interface AdminUsersProps {\n userRealmName?: string;\n}\n\nconst AdminUsers = (props: AdminUsersProps) => {\n const client = useClient<AdminUserController>();\n const router = useRouter<AdminRouter>();\n const { l } = useI18n();\n\n const filters = t.object({\n query: t.optional(\n t.string({\n $control: {\n query: t.omit(users.schema, [\"id\", \"version\"]),\n },\n }),\n ),\n });\n\n return (\n <Flex flex={1} direction=\"column\">\n <DataTable<UserEntity, typeof filters>\n submitOnInit\n actions={[\n {\n icon: IconUsersPlus,\n href: router.path(\"adminUserCreate\"),\n label: \"Create User\",\n },\n ]}\n defaultSize={10}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 3,\n }}\n tableProps={{\n horizontalSpacing: \"xs\",\n verticalSpacing: \"xs\",\n striped: false,\n highlightOnHover: true,\n }}\n onFilterChange={(key, value, form) => {\n if (key === \"query\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n const baseProps: Record<string, any> = {\n style: { cursor: \"pointer\" },\n onClick: () =>\n router.push(\"adminUserDetails\", {\n params: { userId: item.id },\n }),\n };\n\n if (!item.enabled) {\n baseProps.opacity = 0.5;\n }\n\n return baseProps;\n }}\n items={async (filters) => {\n const response = await client.findUsers({\n query: {\n ...filters,\n userRealmName: props.userRealmName,\n },\n });\n\n return response as Page<UserEntity>;\n }}\n columns={{\n username: {\n label: \"Username\",\n value: (item) => (\n <Text size=\"sm\" fw={500}>\n {item.username || \"-\"}\n </Text>\n ),\n },\n email: {\n label: \"Email\",\n value: (item) => (\n <Group gap=\"xs\">\n <Text size=\"sm\">{item.email || \"-\"}</Text>\n {item.email && (\n <Badge\n size=\"xs\"\n variant=\"light\"\n color={item.emailVerified ? \"green\" : \"gray\"}\n leftSection={\n item.emailVerified ? (\n <IconCheck size={10} />\n ) : (\n <IconX size={10} />\n )\n }\n >\n {item.emailVerified ? \"Verified\" : \"Unverified\"}\n </Badge>\n )}\n </Group>\n ),\n },\n roles: {\n label: \"Roles\",\n value: (item) => (\n <Group gap={4}>\n {item.roles.map((role: string) => (\n <Badge key={role} size=\"xs\" variant=\"outline\">\n {role}\n </Badge>\n ))}\n </Group>\n ),\n },\n enabled: {\n label: \"Status\",\n fit: true,\n value: (item) => (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color={item.enabled ? \"green\" : \"red\"}\n >\n {item.enabled ? \"Active\" : \"Disabled\"}\n </Badge>\n ),\n },\n createdAt: {\n label: \"Created\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.createdAt, { date: \"fromNow\" })}\n </Text>\n ),\n },\n }}\n />\n </Flex>\n );\n};\n\nexport default AdminUsers;\n"],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,cAAc,UAA2B;CAC7C,MAAM,SAAS,WAAgC;CAC/C,MAAM,SAAS,WAAwB;CACvC,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,UAAU,EAAE,OAAO,EACvB,OAAO,EAAE,SACP,EAAE,OAAO,EACP,UAAU,EACR,OAAO,EAAE,KAAK,MAAM,QAAQ,CAAC,MAAM,UAAU,CAAC,EAC/C,EACF,CAAC,CACH,EACF,CAAC;AAEF,QACE,oBAACA;EAAK,MAAM;EAAG,WAAU;YACvB,oBAAC;GACC;GACA,SAAS,CACP;IACE,MAAM;IACN,MAAM,OAAO,KAAK,kBAAkB;IACpC,OAAO;IACR,CACF;GACD,aAAa;GACb,eAAe;IACb,kBAAkB;IAClB,SAAS;IACV;GACD,YAAY;IACV,mBAAmB;IACnB,iBAAiB;IACjB,SAAS;IACT,kBAAkB;IACnB;GACD,iBAAiB,KAAK,OAAO,SAAS;AACpC,QAAI,QAAQ,QACV,QAAO,KAAK,QAAQ;;GAGf;GACT,eAAe,SAAS;IACtB,MAAM,YAAiC;KACrC,OAAO,EAAE,QAAQ,WAAW;KAC5B,eACE,OAAO,KAAK,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC5B,CAAC;KACL;AAED,QAAI,CAAC,KAAK,QACR,WAAU,UAAU;AAGtB,WAAO;;GAET,OAAO,OAAO,YAAY;AAQxB,WAPiB,MAAM,OAAO,UAAU,EACtC,OAAO;KACL,GAAG;KACH,eAAe,MAAM;KACtB,EACF,CAAC;;GAIJ,SAAS;IACP,UAAU;KACR,OAAO;KACP,QAAQ,SACN,oBAAC;MAAK,MAAK;MAAK,IAAI;gBACjB,KAAK,YAAY;OACb;KAEV;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,qBAAC;MAAM,KAAI;iBACT,oBAAC;OAAK,MAAK;iBAAM,KAAK,SAAS;QAAW,EACzC,KAAK,SACJ,oBAAC;OACC,MAAK;OACL,SAAQ;OACR,OAAO,KAAK,gBAAgB,UAAU;OACtC,aACE,KAAK,gBACH,oBAAC,aAAU,MAAM,KAAM,GAEvB,oBAAC,SAAM,MAAM,KAAM;iBAItB,KAAK,gBAAgB,aAAa;QAC7B;OAEJ;KAEX;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,oBAAC;MAAM,KAAK;gBACT,KAAK,MAAM,KAAK,SACf,oBAAC;OAAiB,MAAK;OAAK,SAAQ;iBACjC;SADS,KAEJ,CACR;OACI;KAEX;IACD,SAAS;KACP,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MACC,MAAK;MACL,SAAQ;MACR,OAAO,KAAK,UAAU,UAAU;gBAE/B,KAAK,UAAU,WAAW;OACrB;KAEX;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG"}
@@ -1,6 +1,6 @@
1
- import { AdminShellProps, SidebarNode } from "@alepha/ui";
1
+ import { DashboardShellProps, SidebarNode } from "@alepha/ui";
2
2
  import { AuthRouter } from "@alepha/ui/auth";
3
- import * as alepha0 from "alepha";
3
+ import * as alepha from "alepha";
4
4
  import { ReactAuth } from "alepha/react/auth";
5
5
  import * as alepha_react_router0 from "alepha/react/router";
6
6
  import { ReactRouter, Redirection } from "alepha/react/router";
@@ -12,7 +12,7 @@ import { AdminSessionController, AdminUserController } from "alepha/api/users";
12
12
  import { AdminAuditController } from "alepha/api/audits";
13
13
  import { AdminApiKeyController } from "alepha/api/keys";
14
14
  import { AdminNotificationController } from "alepha/api/notifications";
15
- import { AdminConfigController } from "alepha/api/parameters";
15
+ import { AdminParameterController, ParameterTreeNode } from "alepha/api/parameters";
16
16
 
17
17
  //#region ../../src/admin/AdminRouter.d.ts
18
18
  declare class AdminRouter {
@@ -23,13 +23,13 @@ declare class AdminRouter {
23
23
  protected readonly sessionCtrl: alepha_server_links0.HttpVirtualClient<AdminSessionController>;
24
24
  protected readonly notificationCtrl: alepha_server_links0.HttpVirtualClient<AdminNotificationController>;
25
25
  protected readonly fileCtrl: alepha_server_links0.HttpVirtualClient<FileController>;
26
- protected readonly configCtrl: alepha_server_links0.HttpVirtualClient<AdminConfigController>;
26
+ protected readonly paramCtrl: alepha_server_links0.HttpVirtualClient<AdminParameterController>;
27
27
  protected readonly auditCtrl: alepha_server_links0.HttpVirtualClient<AdminAuditController>;
28
28
  protected readonly jobCtrl: alepha_server_links0.HttpVirtualClient<AdminJobController>;
29
29
  protected readonly apiKeyCtrl: alepha_server_links0.HttpVirtualClient<AdminApiKeyController>;
30
- configFn?: (adminRouter: AdminRouter) => AdminShellProps;
30
+ configFn?: (adminRouter: AdminRouter) => DashboardShellProps;
31
31
  getDefaultSidebarItems(): SidebarNode[];
32
- protected adminShellProps(): AdminShellProps;
32
+ protected adminShellProps(): DashboardShellProps;
33
33
  protected onNotAuthorized(url: URL): Redirection;
34
34
  readonly adminLayout: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, {}, alepha_react_router0.TPropsParentDefault>;
35
35
  readonly adminUsers: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
@@ -43,7 +43,14 @@ declare class AdminRouter {
43
43
  readonly adminSessions: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
44
44
  readonly adminNotifications: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
45
45
  readonly adminFiles: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
46
- readonly adminParameters: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
46
+ readonly adminParameters: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, {
47
+ treeData: {
48
+ name: string;
49
+ path: string;
50
+ children: any[];
51
+ isLeaf: boolean;
52
+ }[];
53
+ }, {}>;
47
54
  readonly adminJobs: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
48
55
  readonly adminApiKeys: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, {}>;
49
56
  }
@@ -67,7 +74,12 @@ declare const AdminApiKeys: () => react_jsx_runtime0.JSX.Element;
67
74
  declare const AdminNotifications: () => react_jsx_runtime0.JSX.Element;
68
75
  //#endregion
69
76
  //#region ../../src/admin/components/parameters/AdminParameters.d.ts
70
- declare const AdminParameters: () => react_jsx_runtime0.JSX.Element;
77
+ interface AdminParametersProps {
78
+ treeData: ParameterTreeNode[];
79
+ }
80
+ declare const AdminParameters: ({
81
+ treeData: initialTreeData
82
+ }: AdminParametersProps) => react_jsx_runtime0.JSX.Element;
71
83
  //#endregion
72
84
  //#region ../../src/admin/components/sessions/AdminSessions.d.ts
73
85
  interface AdminSessionsProps {
@@ -124,7 +136,7 @@ declare const AdminVerifications: () => react_jsx_runtime0.JSX.Element;
124
136
  /**
125
137
  * Register Admin UI components and get the AdminRouter instance.
126
138
  */
127
- declare const $uiAdmin: (optsFn?: (a: AdminRouter) => AdminShellProps) => AdminRouter;
139
+ declare const $uiAdmin: (optsFn?: (a: AdminRouter) => DashboardShellProps) => AdminRouter;
128
140
  //#endregion
129
141
  //#region ../../src/admin/index.d.ts
130
142
  /**
@@ -147,7 +159,7 @@ declare const $uiAdmin: (optsFn?: (a: AdminRouter) => AdminShellProps) => AdminR
147
159
  *
148
160
  * @module alepha.ui.admin
149
161
  */
150
- declare const AlephaUIAdmin: alepha0.Service<alepha0.Module>;
162
+ declare const AlephaUIAdmin: alepha.Service<alepha.Module>;
151
163
  //#endregion
152
164
  export { $uiAdmin, AdminApiKeys, AdminAudits, AdminFiles, AdminJobs, AdminNotifications, AdminParameters, AdminRouter, AdminSessions, AdminUserAudits, AdminUserCreate, AdminUserDetails, AdminUserLayout, AdminUserSessions, AdminUserSettings, AdminUsers, AdminVerifications, AlephaUIAdmin };
153
165
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/admin/AdminRouter.ts","../../src/admin/components/audits/AdminAudits.tsx","../../src/admin/components/files/AdminFiles.tsx","../../src/admin/components/jobs/AdminJobs.tsx","../../src/admin/components/keys/AdminApiKeys.tsx","../../src/admin/components/notifications/AdminNotifications.tsx","../../src/admin/components/parameters/AdminParameters.tsx","../../src/admin/components/sessions/AdminSessions.tsx","../../src/admin/components/users/AdminUserAudits.tsx","../../src/admin/components/users/AdminUserCreate.tsx","../../src/admin/components/users/AdminUserDetails.tsx","../../src/admin/components/users/AdminUserLayout.tsx","../../src/admin/components/users/AdminUserSessions.tsx","../../src/admin/components/users/AdminUserSettings.tsx","../../src/admin/components/users/AdminUsers.tsx","../../src/admin/components/verifications/AdminVerifications.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/admin/AdminRouter.ts","../../src/admin/components/audits/AdminAudits.tsx","../../src/admin/components/files/AdminFiles.tsx","../../src/admin/components/jobs/AdminJobs.tsx","../../src/admin/components/keys/AdminApiKeys.tsx","../../src/admin/components/notifications/AdminNotifications.tsx","../../src/admin/components/parameters/AdminParameters.tsx","../../src/admin/components/sessions/AdminSessions.tsx","../../src/admin/components/users/AdminUserAudits.tsx","../../src/admin/components/users/AdminUserCreate.tsx","../../src/admin/components/users/AdminUserDetails.tsx","../../src/admin/components/users/AdminUserLayout.tsx","../../src/admin/components/users/AdminUserSessions.tsx","../../src/admin/components/users/AdminUserSettings.tsx","../../src/admin/components/users/AdminUsers.tsx","../../src/admin/components/verifications/AdminVerifications.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { t as AdminAudits_default } from "./AdminAudits-pkWrjq1Z.js";
2
- import { t as AdminFiles_default } from "./AdminFiles-WeQbsCsl.js";
3
- import { t as AdminJobs_default } from "./AdminJobs-B-q9iGO3.js";
4
- import { t as AdminApiKeys_default } from "./AdminApiKeys-GMORg-1l.js";
5
- import { t as AdminNotifications_default } from "./AdminNotifications-Ds5Un0NJ.js";
6
- import { t as AdminParameters_default } from "./AdminParameters-CfDUpc78.js";
7
- import { t as AdminSessions_default } from "./AdminSessions-DzIOxM3b.js";
8
- import { t as AdminUserAudits_default } from "./AdminUserAudits-CiUPN2BC.js";
9
- import { t as AdminUserCreate_default } from "./AdminUserCreate-BwQKr4xE.js";
10
- import { t as AdminUserDetails_default } from "./AdminUserDetails-uqtC5aJ1.js";
11
- import { t as AdminUserLayout_default } from "./AdminUserLayout-CiPay35T.js";
12
- import { t as AdminUserSessions_default } from "./AdminUserSessions-DAE8Nf1F.js";
13
- import { t as AdminUserSettings_default } from "./AdminUserSettings-EbahaV2a.js";
14
- import { t as AdminUsers_default } from "./AdminUsers-Dcjh0KNW.js";
1
+ import { t as AdminAudits } from "./AdminAudits-BmsxFbDa.js";
2
+ import { t as AdminFiles } from "./AdminFiles-BBB8knca.js";
3
+ import { t as AdminJobs } from "./AdminJobs-C604joTz.js";
4
+ import { t as AdminApiKeys } from "./AdminApiKeys-CoTOTfgU.js";
5
+ import { t as AdminNotifications } from "./AdminNotifications-LwR6RKrx.js";
6
+ import { t as AdminParameters } from "./AdminParameters-B_83Vie9.js";
7
+ import { t as AdminSessions } from "./AdminSessions-CWnPosdd.js";
8
+ import { t as AdminUserAudits } from "./AdminUserAudits-nHv636E_.js";
9
+ import { t as AdminUserCreate } from "./AdminUserCreate-CjYD3Kjc.js";
10
+ import { t as AdminUserDetails } from "./AdminUserDetails-Ccq-LsZ0.js";
11
+ import { t as AdminUserLayout } from "./AdminUserLayout-7s41DiF_.js";
12
+ import { t as AdminUserSessions } from "./AdminUserSessions-Ds3ODq_d.js";
13
+ import { t as AdminUserSettings } from "./AdminUserSettings-CGh4gROo.js";
14
+ import { t as AdminUsers } from "./AdminUsers-CvPiBzQK.js";
15
15
  import { AlephaUI, Flex, Text } from "@alepha/ui";
16
16
  import { AlephaUIAuth, AuthRouter } from "@alepha/ui/auth";
17
17
  import { $context, $inject, $module } from "alepha";
@@ -31,7 +31,7 @@ var AdminRouter = class {
31
31
  sessionCtrl = $client();
32
32
  notificationCtrl = $client();
33
33
  fileCtrl = $client();
34
- configCtrl = $client();
34
+ paramCtrl = $client();
35
35
  auditCtrl = $client();
36
36
  jobCtrl = $client();
37
37
  apiKeyCtrl = $client();
@@ -44,8 +44,8 @@ var AdminRouter = class {
44
44
  getDefaultSidebarItems() {
45
45
  return [
46
46
  {
47
+ type: "section",
47
48
  label: "Identity",
48
- icon: IconUsers,
49
49
  children: [
50
50
  {
51
51
  ...this.router.node(this.adminUsers.name),
@@ -62,20 +62,17 @@ var AdminRouter = class {
62
62
  ]
63
63
  },
64
64
  {
65
- label: "Content",
66
- icon: IconFile,
67
- children: [{
68
- ...this.router.node(this.adminFiles.name),
69
- can: () => this.fileCtrl.findFiles.can()
70
- }, {
71
- ...this.router.node(this.adminNotifications.name),
72
- can: () => this.notificationCtrl.findNotifications.can()
73
- }]
74
- },
75
- {
65
+ type: "section",
76
66
  label: "System",
77
- icon: IconSettings,
78
67
  children: [
68
+ {
69
+ ...this.router.node(this.adminFiles.name),
70
+ can: () => this.fileCtrl.findFiles.can()
71
+ },
72
+ {
73
+ ...this.router.node(this.adminNotifications.name),
74
+ can: () => this.notificationCtrl.findNotifications.can()
75
+ },
79
76
  {
80
77
  ...this.router.node(this.adminJobs.name),
81
78
  can: () => this.jobCtrl.getJobs.can()
@@ -86,7 +83,7 @@ var AdminRouter = class {
86
83
  },
87
84
  {
88
85
  ...this.router.node(this.adminParameters.name),
89
- can: () => this.configCtrl.getConfigTree.can()
86
+ can: () => this.paramCtrl.getParameterTree.can()
90
87
  }
91
88
  ]
92
89
  },
@@ -107,7 +104,7 @@ var AdminRouter = class {
107
104
  path: "/admin",
108
105
  label: "Admin",
109
106
  can: () => this.auth.can("admin:*"),
110
- lazy: () => import("./AdminLayout-BqZiXx4H.js"),
107
+ lazy: () => import("./AdminLayout-CsjvpeD1.js"),
111
108
  props: () => ({ adminShellProps: this.adminShellProps() }),
112
109
  loader: ({ user, url }) => {
113
110
  if (!user) throw this.onNotAuthorized(url);
@@ -120,7 +117,7 @@ var AdminRouter = class {
120
117
  path: "/users",
121
118
  label: "Users",
122
119
  description: "Manage application users and their roles.",
123
- lazy: () => import("./AdminUsers-D9nyzGqQ.js"),
120
+ lazy: () => import("./AdminUsers-CvPiBzQK.js").then((n) => n.n),
124
121
  can: () => this.userCtrl.findUsers.can()
125
122
  });
126
123
  adminUserCreate = $page({
@@ -129,7 +126,7 @@ var AdminRouter = class {
129
126
  path: "/users/create",
130
127
  label: "Create User",
131
128
  description: "Create a new user account",
132
- lazy: () => import("./AdminUserCreate-Cq-mUmBs.js"),
129
+ lazy: () => import("./AdminUserCreate-CjYD3Kjc.js").then((n) => n.n),
133
130
  can: () => this.userCtrl.createUser.can()
134
131
  });
135
132
  adminUserLayout = $page({
@@ -137,32 +134,32 @@ var AdminRouter = class {
137
134
  parent: this.adminLayout,
138
135
  path: "/users/:userId",
139
136
  label: "User",
140
- lazy: () => import("./AdminUserLayout-CGzmHHby.js"),
137
+ lazy: () => import("./AdminUserLayout-7s41DiF_.js").then((n) => n.n),
141
138
  can: () => this.userCtrl.getUser.can()
142
139
  });
143
140
  adminUserDetails = $page({
144
141
  parent: this.adminUserLayout,
145
142
  path: "/details",
146
143
  label: "Details",
147
- lazy: () => import("./AdminUserDetails-DRjVAPFd.js")
144
+ lazy: () => import("./AdminUserDetails-Ccq-LsZ0.js").then((n) => n.n)
148
145
  });
149
146
  adminUserSessions = $page({
150
147
  parent: this.adminUserLayout,
151
148
  path: "/sessions",
152
149
  label: "Sessions",
153
- lazy: () => import("./AdminUserSessions-DcdzuNZ9.js")
150
+ lazy: () => import("./AdminUserSessions-Ds3ODq_d.js").then((n) => n.n)
154
151
  });
155
152
  adminUserSettings = $page({
156
153
  parent: this.adminUserLayout,
157
154
  path: "/settings",
158
155
  label: "Settings",
159
- lazy: () => import("./AdminUserSettings-D7V6-ceX.js")
156
+ lazy: () => import("./AdminUserSettings-CGh4gROo.js").then((n) => n.n)
160
157
  });
161
158
  adminUserAudits = $page({
162
159
  parent: this.adminUserLayout,
163
160
  path: "/audits",
164
161
  label: "Audit Log",
165
- lazy: () => import("./AdminUserAudits-Cj79gENT.js"),
162
+ lazy: () => import("./AdminUserAudits-nHv636E_.js").then((n) => n.n),
166
163
  can: () => this.auditCtrl.findByUser.can()
167
164
  });
168
165
  adminAudits = $page({
@@ -171,7 +168,7 @@ var AdminRouter = class {
171
168
  path: "/audits",
172
169
  label: "Audit Log",
173
170
  description: "View system-wide audit trail and activity logs.",
174
- lazy: () => import("./AdminAudits-8SM96viT.js"),
171
+ lazy: () => import("./AdminAudits-BmsxFbDa.js").then((n) => n.n),
175
172
  can: () => this.auditCtrl.findAudits.can()
176
173
  });
177
174
  adminSessions = $page({
@@ -180,7 +177,7 @@ var AdminRouter = class {
180
177
  path: "/sessions",
181
178
  label: "Sessions",
182
179
  description: "View and manage all active sessions.",
183
- lazy: () => import("./AdminSessions-BDGK2MS6.js"),
180
+ lazy: () => import("./AdminSessions-CWnPosdd.js").then((n) => n.n),
184
181
  can: () => this.sessionCtrl.findSessions.can()
185
182
  });
186
183
  adminNotifications = $page({
@@ -189,7 +186,7 @@ var AdminRouter = class {
189
186
  path: "/notifications",
190
187
  label: "Notifications",
191
188
  description: "View notification history and status.",
192
- lazy: () => import("./AdminNotifications-B0B1rdc4.js"),
189
+ lazy: () => import("./AdminNotifications-LwR6RKrx.js").then((n) => n.n),
193
190
  can: () => this.notificationCtrl.findNotifications.can()
194
191
  });
195
192
  adminFiles = $page({
@@ -198,7 +195,7 @@ var AdminRouter = class {
198
195
  path: "/files",
199
196
  label: "Files",
200
197
  description: "Manage uploaded files and storage.",
201
- lazy: () => import("./AdminFiles-B56ocq4H.js"),
198
+ lazy: () => import("./AdminFiles-BBB8knca.js").then((n) => n.n),
202
199
  can: () => this.fileCtrl.findFiles.can()
203
200
  });
204
201
  adminParameters = $page({
@@ -206,9 +203,12 @@ var AdminRouter = class {
206
203
  parent: this.adminLayout,
207
204
  path: "/parameters",
208
205
  label: "Parameters",
209
- description: "View and manage application configuration parameters.",
210
- lazy: () => import("./AdminParameters-BU3lATdJ.js"),
211
- can: () => this.configCtrl.getConfigTree.can()
206
+ description: "View and manage application parameters.",
207
+ lazy: () => import("./AdminParameters-B_83Vie9.js").then((n) => n.n),
208
+ can: () => this.paramCtrl.getParameterTree.can(),
209
+ loader: async () => {
210
+ return { treeData: await this.paramCtrl.getParameterTree({}) };
211
+ }
212
212
  });
213
213
  adminJobs = $page({
214
214
  icon: IconTerminal2,
@@ -216,7 +216,7 @@ var AdminRouter = class {
216
216
  path: "/jobs",
217
217
  label: "Jobs",
218
218
  description: "Monitor and manage background jobs and scheduled tasks.",
219
- lazy: () => import("./AdminJobs-CED1syCn.js"),
219
+ lazy: () => import("./AdminJobs-C604joTz.js").then((n) => n.n),
220
220
  can: () => this.jobCtrl.getJobs.can()
221
221
  });
222
222
  adminApiKeys = $page({
@@ -225,7 +225,7 @@ var AdminRouter = class {
225
225
  path: "/api-keys",
226
226
  label: "API Keys",
227
227
  description: "View and manage API keys for programmatic access.",
228
- lazy: () => import("./AdminApiKeys-DsmGnHNh.js"),
228
+ lazy: () => import("./AdminApiKeys-CoTOTfgU.js").then((n) => n.n),
229
229
  can: () => this.apiKeyCtrl.findApiKeys.can()
230
230
  });
231
231
  };
@@ -261,7 +261,6 @@ const AdminVerifications = () => {
261
261
  })
262
262
  });
263
263
  };
264
- var AdminVerifications_default = AdminVerifications;
265
264
 
266
265
  //#endregion
267
266
  //#region ../../src/admin/primitives/$uiAdmin.ts
@@ -310,5 +309,5 @@ const AlephaUIAdmin = $module({
310
309
  });
311
310
 
312
311
  //#endregion
313
- export { $uiAdmin, AdminApiKeys_default as AdminApiKeys, AdminAudits_default as AdminAudits, AdminFiles_default as AdminFiles, AdminJobs_default as AdminJobs, AdminNotifications_default as AdminNotifications, AdminParameters_default as AdminParameters, AdminRouter, AdminSessions_default as AdminSessions, AdminUserAudits_default as AdminUserAudits, AdminUserCreate_default as AdminUserCreate, AdminUserDetails_default as AdminUserDetails, AdminUserLayout_default as AdminUserLayout, AdminUserSessions_default as AdminUserSessions, AdminUserSettings_default as AdminUserSettings, AdminUsers_default as AdminUsers, AdminVerifications_default as AdminVerifications, AlephaUIAdmin };
312
+ export { $uiAdmin, AdminApiKeys, AdminAudits, AdminFiles, AdminJobs, AdminNotifications, AdminParameters, AdminRouter, AdminSessions, AdminUserAudits, AdminUserCreate, AdminUserDetails, AdminUserLayout, AdminUserSessions, AdminUserSettings, AdminUsers, AdminVerifications, AlephaUIAdmin };
314
313
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/admin/AdminRouter.ts","../../src/admin/components/verifications/AdminVerifications.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"sourcesContent":["import type { AdminShellProps, SidebarNode } from \"@alepha/ui\";\nimport { AuthRouter } from \"@alepha/ui/auth\";\nimport {\n IconBell,\n IconDevices,\n IconFile,\n IconHistory,\n IconKey,\n IconPlus,\n IconSettings,\n IconTerminal2,\n IconUser,\n IconUsers,\n} from \"@tabler/icons-react\";\nimport { $inject } 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 { AdminConfigController } 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 { $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 protected readonly notificationCtrl = $client<AdminNotificationController>();\n protected readonly fileCtrl = $client<FileController>();\n protected readonly configCtrl = $client<AdminConfigController>();\n protected readonly auditCtrl = $client<AdminAuditController>();\n protected readonly jobCtrl = $client<AdminJobController>();\n protected readonly apiKeyCtrl = $client<AdminApiKeyController>();\n\n public configFn?: (adminRouter: AdminRouter) => AdminShellProps = () => {\n return {\n sidebarResizable: true,\n sidebarProps: {\n items: this.getDefaultSidebarItems(),\n },\n };\n };\n\n public getDefaultSidebarItems(): SidebarNode[] {\n return [\n // Identity & Access\n {\n label: \"Identity\",\n icon: IconUsers,\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 // Content & Storage\n {\n label: \"Content\",\n icon: IconFile,\n children: [\n {\n ...this.router.node(this.adminFiles.name),\n can: () => this.fileCtrl.findFiles.can(),\n },\n {\n ...this.router.node(this.adminNotifications.name),\n can: () => this.notificationCtrl.findNotifications.can(),\n },\n ],\n },\n\n // System\n {\n label: \"System\",\n icon: IconSettings,\n children: [\n {\n ...this.router.node(this.adminJobs.name),\n can: () => this.jobCtrl.getJobs.can(),\n },\n {\n ...this.router.node(this.adminAudits.name),\n can: () => this.auditCtrl.findAudits.can(),\n },\n {\n ...this.router.node(this.adminParameters.name),\n can: () => this.configCtrl.getConfigTree.can(),\n },\n ],\n },\n\n // Bottom\n { type: \"toggle\", position: \"bottom\" },\n ];\n }\n\n protected adminShellProps(): AdminShellProps {\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 can: () => this.auth.can(\"admin:*\"),\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 // Users\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminUsers = $page({\n icon: IconUsers,\n parent: this.adminLayout,\n path: \"/users\",\n label: \"Users\",\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 adminUserCreate = $page({\n icon: IconPlus,\n parent: this.adminLayout,\n path: \"/users/create\",\n label: \"Create User\",\n description: \"Create a new user account\",\n lazy: () => import(\"./components/users/AdminUserCreate.tsx\"),\n can: () => this.userCtrl.createUser.can(),\n });\n\n public readonly adminUserLayout = $page({\n icon: IconUser,\n parent: this.adminLayout,\n path: \"/users/:userId\",\n label: \"User\",\n lazy: () => import(\"./components/users/AdminUserLayout.tsx\"),\n can: () => this.userCtrl.getUser.can(),\n });\n\n public readonly adminUserDetails = $page({\n parent: this.adminUserLayout,\n path: \"/details\",\n label: \"Details\",\n lazy: () => import(\"./components/users/AdminUserDetails.tsx\"),\n });\n\n public readonly adminUserSessions = $page({\n parent: this.adminUserLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n lazy: () => import(\"./components/users/AdminUserSessions.tsx\"),\n });\n\n public readonly adminUserSettings = $page({\n parent: this.adminUserLayout,\n path: \"/settings\",\n label: \"Settings\",\n lazy: () => import(\"./components/users/AdminUserSettings.tsx\"),\n });\n\n public readonly adminUserAudits = $page({\n parent: this.adminUserLayout,\n path: \"/audits\",\n label: \"Audit Log\",\n lazy: () => import(\"./components/users/AdminUserAudits.tsx\"),\n can: () => this.auditCtrl.findByUser.can(),\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 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 lazy: () => import(\"./components/sessions/AdminSessions.tsx\"),\n can: () => this.sessionCtrl.findSessions.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 notification history and status.\",\n lazy: () => import(\"./components/notifications/AdminNotifications.tsx\"),\n can: () => this.notificationCtrl.findNotifications.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 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 configuration parameters.\",\n lazy: () => import(\"./components/parameters/AdminParameters.tsx\"),\n can: () => this.configCtrl.getConfigTree.can(),\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 and scheduled tasks.\",\n lazy: () => import(\"./components/jobs/AdminJobs.tsx\"),\n can: () => this.jobCtrl.getJobs.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 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","import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconShieldCheck } from \"@tabler/icons-react\";\n\nconst AdminVerifications = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconShieldCheck\n size={48}\n stroke={1.5}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text c=\"dimmed\">Verification Management</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Verifications are automatically managed by the system. Email and SMS\n verification codes are generated and validated through the\n verification API endpoints.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminVerifications;\n","import type { AdminShellProps } from \"@alepha/ui\";\nimport { $context } from \"alepha\";\nimport { AdminRouter } from \"../AdminRouter.ts\";\n\n/**\n * Register Admin UI components and get the AdminRouter instance.\n */\nexport const $uiAdmin = (optsFn?: (a: AdminRouter) => AdminShellProps) => {\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.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { AdminRouter } from \"./AdminRouter.ts\";\n// Audits\nexport { default as AdminAudits } from \"./components/audits/AdminAudits.tsx\";\n// Files\nexport { default as AdminFiles } from \"./components/files/AdminFiles.tsx\";\n// Jobs\nexport { default as AdminJobs } from \"./components/jobs/AdminJobs.tsx\";\n// API Keys\nexport { default as AdminApiKeys } from \"./components/keys/AdminApiKeys.tsx\";\n// Notifications\nexport { default as AdminNotifications } from \"./components/notifications/AdminNotifications.tsx\";\n// Parameters\nexport { default as AdminParameters } from \"./components/parameters/AdminParameters.tsx\";\n// Sessions\nexport { default as AdminSessions } from \"./components/sessions/AdminSessions.tsx\";\n// Users\nexport { default as AdminUserAudits } from \"./components/users/AdminUserAudits.tsx\";\nexport { default as AdminUserCreate } from \"./components/users/AdminUserCreate.tsx\";\nexport { default as AdminUserDetails } from \"./components/users/AdminUserDetails.tsx\";\nexport { default as AdminUserLayout } from \"./components/users/AdminUserLayout.tsx\";\nexport { default as AdminUserSessions } from \"./components/users/AdminUserSessions.tsx\";\nexport { default as AdminUserSettings } from \"./components/users/AdminUserSettings.tsx\";\nexport { default as AdminUsers } from \"./components/users/AdminUsers.tsx\";\n// Verifications\nexport { default as AdminVerifications } from \"./components/verifications/AdminVerifications.tsx\";\nexport * from \"./primitives/$uiAdmin.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | Stability | Since | Runtime |\n * |-----------|-------|---------|\n * | 2 - beta | 0.12.0 | node, bun, workerd, browser|\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 * - AdminNotifications for notification management\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
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/admin/AdminRouter.ts","../../src/admin/components/verifications/AdminVerifications.tsx","../../src/admin/primitives/$uiAdmin.ts","../../src/admin/index.ts"],"sourcesContent":["import type { DashboardShellProps, SidebarNode } from \"@alepha/ui\";\nimport { AuthRouter } from \"@alepha/ui/auth\";\nimport {\n IconBell,\n IconDevices,\n IconFile,\n IconHistory,\n IconKey,\n IconPlus,\n IconSettings,\n IconTerminal2,\n IconUser,\n IconUsers,\n} from \"@tabler/icons-react\";\nimport { $inject } 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 { $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 protected readonly notificationCtrl = $client<AdminNotificationController>();\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\n public configFn?: (adminRouter: AdminRouter) => DashboardShellProps = () => {\n return {\n sidebarResizable: true,\n sidebarProps: {\n items: this.getDefaultSidebarItems(),\n },\n };\n };\n\n public getDefaultSidebarItems(): SidebarNode[] {\n return [\n {\n type: \"section\",\n label: \"Identity\",\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 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.adminNotifications.name),\n can: () => this.notificationCtrl.findNotifications.can(),\n },\n {\n ...this.router.node(this.adminJobs.name),\n can: () => this.jobCtrl.getJobs.can(),\n },\n {\n ...this.router.node(this.adminAudits.name),\n can: () => this.auditCtrl.findAudits.can(),\n },\n {\n ...this.router.node(this.adminParameters.name),\n can: () => this.paramCtrl.getParameterTree.can(),\n },\n ],\n },\n { type: \"toggle\", position: \"bottom\" },\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 can: () => this.auth.can(\"admin:*\"),\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 // Users\n // ─────────────────────────────────────────────────────────────────────────────\n\n public readonly adminUsers = $page({\n icon: IconUsers,\n parent: this.adminLayout,\n path: \"/users\",\n label: \"Users\",\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 adminUserCreate = $page({\n icon: IconPlus,\n parent: this.adminLayout,\n path: \"/users/create\",\n label: \"Create User\",\n description: \"Create a new user account\",\n lazy: () => import(\"./components/users/AdminUserCreate.tsx\"),\n can: () => this.userCtrl.createUser.can(),\n });\n\n public readonly adminUserLayout = $page({\n icon: IconUser,\n parent: this.adminLayout,\n path: \"/users/:userId\",\n label: \"User\",\n lazy: () => import(\"./components/users/AdminUserLayout.tsx\"),\n can: () => this.userCtrl.getUser.can(),\n });\n\n public readonly adminUserDetails = $page({\n parent: this.adminUserLayout,\n path: \"/details\",\n label: \"Details\",\n lazy: () => import(\"./components/users/AdminUserDetails.tsx\"),\n });\n\n public readonly adminUserSessions = $page({\n parent: this.adminUserLayout,\n path: \"/sessions\",\n label: \"Sessions\",\n lazy: () => import(\"./components/users/AdminUserSessions.tsx\"),\n });\n\n public readonly adminUserSettings = $page({\n parent: this.adminUserLayout,\n path: \"/settings\",\n label: \"Settings\",\n lazy: () => import(\"./components/users/AdminUserSettings.tsx\"),\n });\n\n public readonly adminUserAudits = $page({\n parent: this.adminUserLayout,\n path: \"/audits\",\n label: \"Audit Log\",\n lazy: () => import(\"./components/users/AdminUserAudits.tsx\"),\n can: () => this.auditCtrl.findByUser.can(),\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 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 lazy: () => import(\"./components/sessions/AdminSessions.tsx\"),\n can: () => this.sessionCtrl.findSessions.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 notification history and status.\",\n lazy: () => import(\"./components/notifications/AdminNotifications.tsx\"),\n can: () => this.notificationCtrl.findNotifications.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 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 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 and scheduled tasks.\",\n lazy: () => import(\"./components/jobs/AdminJobs.tsx\"),\n can: () => this.jobCtrl.getJobs.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 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","import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconShieldCheck } from \"@tabler/icons-react\";\n\nconst AdminVerifications = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconShieldCheck\n size={48}\n stroke={1.5}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text c=\"dimmed\">Verification Management</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Verifications are automatically managed by the system. Email and SMS\n verification codes are generated and validated through the\n verification API endpoints.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminVerifications;\n","import type { DashboardShellProps } from \"@alepha/ui\";\nimport { $context } from \"alepha\";\nimport { AdminRouter } from \"../AdminRouter.ts\";\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.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { AdminRouter } from \"./AdminRouter.ts\";\n// Audits\nexport { default as AdminAudits } from \"./components/audits/AdminAudits.tsx\";\n// Files\nexport { default as AdminFiles } from \"./components/files/AdminFiles.tsx\";\n// Jobs\nexport { default as AdminJobs } from \"./components/jobs/AdminJobs.tsx\";\n// API Keys\nexport { default as AdminApiKeys } from \"./components/keys/AdminApiKeys.tsx\";\n// Notifications\nexport { default as AdminNotifications } from \"./components/notifications/AdminNotifications.tsx\";\n// Parameters\nexport { default as AdminParameters } from \"./components/parameters/AdminParameters.tsx\";\n// Sessions\nexport { default as AdminSessions } from \"./components/sessions/AdminSessions.tsx\";\n// Users\nexport { default as AdminUserAudits } from \"./components/users/AdminUserAudits.tsx\";\nexport { default as AdminUserCreate } from \"./components/users/AdminUserCreate.tsx\";\nexport { default as AdminUserDetails } from \"./components/users/AdminUserDetails.tsx\";\nexport { default as AdminUserLayout } from \"./components/users/AdminUserLayout.tsx\";\nexport { default as AdminUserSessions } from \"./components/users/AdminUserSessions.tsx\";\nexport { default as AdminUserSettings } from \"./components/users/AdminUserSettings.tsx\";\nexport { default as AdminUsers } from \"./components/users/AdminUsers.tsx\";\n// Verifications\nexport { default as AdminVerifications } from \"./components/verifications/AdminVerifications.tsx\";\nexport * from \"./primitives/$uiAdmin.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | Stability | Since | Runtime |\n * |-----------|-------|---------|\n * | 2 - beta | 0.12.0 | node, bun, workerd, browser|\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 * - AdminNotifications for notification management\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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"}
@@ -0,0 +1,18 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (!no_symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __exportAll as t };
@@ -16,8 +16,7 @@ const AuthLayout = () => {
16
16
  })
17
17
  });
18
18
  };
19
- var AuthLayout_default = AuthLayout;
20
19
 
21
20
  //#endregion
22
- export { AuthLayout_default as default };
23
- //# sourceMappingURL=AuthLayout-Dj5K4SIN.js.map
21
+ export { AuthLayout as default };
22
+ //# sourceMappingURL=AuthLayout-CdJcrPs4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthLayout-Dj5K4SIN.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;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe;;AAI5B,yBAAe"}
1
+ {"version":3,"file":"AuthLayout-CdJcrPs4.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;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe"}