@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.
- package/dist/admin/{AdminApiKeys-GMORg-1l.js → AdminApiKeys-CoTOTfgU.js} +4 -3
- package/dist/admin/{AdminApiKeys-GMORg-1l.js.map → AdminApiKeys-CoTOTfgU.js.map} +1 -1
- package/dist/admin/{AdminAudits-pkWrjq1Z.js → AdminAudits-BmsxFbDa.js} +4 -3
- package/dist/admin/{AdminAudits-pkWrjq1Z.js.map → AdminAudits-BmsxFbDa.js.map} +1 -1
- package/dist/admin/{AdminFiles-WeQbsCsl.js → AdminFiles-BBB8knca.js} +4 -3
- package/dist/admin/{AdminFiles-WeQbsCsl.js.map → AdminFiles-BBB8knca.js.map} +1 -1
- package/dist/admin/{AdminJobs-B-q9iGO3.js → AdminJobs-C604joTz.js} +4 -3
- package/dist/admin/{AdminJobs-B-q9iGO3.js.map → AdminJobs-C604joTz.js.map} +1 -1
- package/dist/admin/{AdminLayout-BqZiXx4H.js → AdminLayout-CsjvpeD1.js} +6 -9
- package/dist/admin/AdminLayout-CsjvpeD1.js.map +1 -0
- package/dist/admin/{AdminNotifications-Ds5Un0NJ.js → AdminNotifications-LwR6RKrx.js} +4 -3
- package/dist/admin/{AdminNotifications-Ds5Un0NJ.js.map → AdminNotifications-LwR6RKrx.js.map} +1 -1
- package/dist/admin/AdminParameters-B_83Vie9.js +767 -0
- package/dist/admin/AdminParameters-B_83Vie9.js.map +1 -0
- package/dist/admin/{AdminSessions-DzIOxM3b.js → AdminSessions-CWnPosdd.js} +4 -3
- package/dist/admin/{AdminSessions-DzIOxM3b.js.map → AdminSessions-CWnPosdd.js.map} +1 -1
- package/dist/admin/{AdminUserAudits-CiUPN2BC.js → AdminUserAudits-nHv636E_.js} +4 -3
- package/dist/admin/{AdminUserAudits-CiUPN2BC.js.map → AdminUserAudits-nHv636E_.js.map} +1 -1
- package/dist/admin/{AdminUserCreate-BwQKr4xE.js → AdminUserCreate-CjYD3Kjc.js} +4 -3
- package/dist/admin/{AdminUserCreate-BwQKr4xE.js.map → AdminUserCreate-CjYD3Kjc.js.map} +1 -1
- package/dist/admin/{AdminUserDetails-uqtC5aJ1.js → AdminUserDetails-Ccq-LsZ0.js} +4 -3
- package/dist/admin/{AdminUserDetails-uqtC5aJ1.js.map → AdminUserDetails-Ccq-LsZ0.js.map} +1 -1
- package/dist/admin/{AdminUserLayout-CiPay35T.js → AdminUserLayout-7s41DiF_.js} +6 -7
- package/dist/admin/AdminUserLayout-7s41DiF_.js.map +1 -0
- package/dist/admin/{AdminUserSessions-DAE8Nf1F.js → AdminUserSessions-Ds3ODq_d.js} +4 -3
- package/dist/admin/{AdminUserSessions-DAE8Nf1F.js.map → AdminUserSessions-Ds3ODq_d.js.map} +1 -1
- package/dist/admin/{AdminUserSettings-EbahaV2a.js → AdminUserSettings-CGh4gROo.js} +4 -3
- package/dist/admin/{AdminUserSettings-EbahaV2a.js.map → AdminUserSettings-CGh4gROo.js.map} +1 -1
- package/dist/admin/{AdminUsers-Dcjh0KNW.js → AdminUsers-CvPiBzQK.js} +4 -3
- package/dist/admin/{AdminUsers-Dcjh0KNW.js.map → AdminUsers-CvPiBzQK.js.map} +1 -1
- package/dist/admin/index.d.ts +22 -10
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +47 -48
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/rolldown-runtime-CjeV3_4I.js +18 -0
- package/dist/auth/{AuthLayout-Dj5K4SIN.js → AuthLayout-CdJcrPs4.js} +2 -3
- package/dist/auth/{AuthLayout-Dj5K4SIN.js.map → AuthLayout-CdJcrPs4.js.map} +1 -1
- package/dist/{demo/IconGoogle-CbBF8Hqq.js → auth/IconGoogle-Bm18QD2q.js} +2 -4
- package/dist/auth/{IconGoogle-DpSlPZ1u.js.map → IconGoogle-Bm18QD2q.js.map} +1 -1
- package/dist/auth/{Login-BBqTosqZ.js → Login-DS_OqA0G.js} +7 -6
- package/dist/auth/Login-DS_OqA0G.js.map +1 -0
- package/dist/auth/{Profile-Bxj8Nwom.js → Profile-Di7N7HZL.js} +2 -3
- package/dist/auth/{Profile-Bxj8Nwom.js.map → Profile-Di7N7HZL.js.map} +1 -1
- package/dist/auth/{Register-Ce675Crg.js → Register-BRR2_gux.js} +7 -6
- package/dist/auth/Register-BRR2_gux.js.map +1 -0
- package/dist/auth/{ResetPassword-DWdt7c40.js → ResetPassword-oQu72lod.js} +4 -3
- package/dist/auth/{ResetPassword-DWdt7c40.js.map → ResetPassword-oQu72lod.js.map} +1 -1
- package/dist/auth/{VerifyEmail-CI4JwByV.js → VerifyEmail-DC6HPZjd.js} +4 -3
- package/dist/auth/{VerifyEmail-CI4JwByV.js.map → VerifyEmail-DC6HPZjd.js.map} +1 -1
- package/dist/auth/index.d.ts +14 -14
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +13 -13
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/rolldown-runtime-CjeV3_4I.js +18 -0
- package/dist/core/index.d.ts +147 -68
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +349 -287
- package/dist/core/index.js.map +1 -1
- package/dist/demo/{DemoDataTable-CguplbR7.js → DemoDataTable-DCsJq8v5.js} +4 -5
- package/dist/demo/DemoDataTable-DCsJq8v5.js.map +1 -0
- package/dist/demo/{DemoHome-Cce2bWmg.js → DemoHome-DpRrPlBC.js} +4 -3
- package/dist/demo/{DemoHome-Cce2bWmg.js.map → DemoHome-DpRrPlBC.js.map} +1 -1
- package/dist/demo/{DemoJsonViewer-Dgdk3Txb.js → DemoJsonViewer-zeucGKHV.js} +6 -5
- package/dist/demo/DemoJsonViewer-zeucGKHV.js.map +1 -0
- package/dist/demo/{DemoLayout-B20TEuhV.js → DemoLayout-PhgbAAiQ.js} +6 -5
- package/dist/demo/DemoLayout-PhgbAAiQ.js.map +1 -0
- package/dist/demo/{DemoLogin-CvCG2WVh.js → DemoLogin-DSzP0Lkv.js} +8 -10
- package/dist/demo/DemoLogin-DSzP0Lkv.js.map +1 -0
- package/dist/demo/{DemoRegister-CmeHbOAs.js → DemoRegister-DavFBsCz.js} +8 -10
- package/dist/demo/DemoRegister-DavFBsCz.js.map +1 -0
- package/dist/demo/{DemoResetPassword-CKO5iA_6.js → DemoResetPassword-BS2rIAQK.js} +5 -7
- package/dist/demo/DemoResetPassword-BS2rIAQK.js.map +1 -0
- package/dist/demo/{DemoSidebar-MVmQKfMt.js → DemoSidebar-zNkUmHRl.js} +4 -5
- package/dist/demo/DemoSidebar-zNkUmHRl.js.map +1 -0
- package/dist/demo/{DemoTypeForm-w-qtfRlC.js → DemoTypeForm-B9q7oT0b.js} +4 -5
- package/dist/demo/DemoTypeForm-B9q7oT0b.js.map +1 -0
- package/dist/demo/{DemoVerifyEmail-C8FFJT5A.js → DemoVerifyEmail-Bi4SdWz0.js} +5 -7
- package/dist/demo/DemoVerifyEmail-Bi4SdWz0.js.map +1 -0
- package/dist/{auth/IconGoogle-DpSlPZ1u.js → demo/IconGoogle-CTeZyrek.js} +2 -4
- package/dist/demo/{IconGoogle-CbBF8Hqq.js.map → IconGoogle-CTeZyrek.js.map} +1 -1
- package/dist/demo/{Showcase-CQrMWars.js → Showcase-C9btr_SJ.js} +3 -5
- package/dist/demo/Showcase-C9btr_SJ.js.map +1 -0
- package/dist/demo/index.d.ts +2 -2
- package/dist/demo/index.d.ts.map +1 -1
- package/dist/demo/index.js +15 -15
- package/dist/demo/rolldown-runtime-CjeV3_4I.js +18 -0
- package/package.json +5 -3
- package/src/admin/AdminRouter.ts +15 -24
- package/src/admin/components/AdminLayout.tsx +6 -9
- package/src/admin/components/parameters/AdminParameters.tsx +154 -76
- package/src/admin/components/parameters/ParameterDetails.tsx +153 -93
- package/src/admin/components/parameters/ParameterEmptyState.tsx +27 -0
- package/src/admin/components/parameters/ParameterHistory.tsx +15 -20
- package/src/admin/components/parameters/ParameterTree.tsx +280 -104
- package/src/admin/components/parameters/types.ts +3 -3
- package/src/admin/primitives/$uiAdmin.ts +2 -2
- package/src/auth/AuthRouter.ts +1 -0
- package/src/core/components/buttons/ActionButton.tsx +4 -15
- package/src/core/components/buttons/DarkModeButton.tsx +8 -4
- package/src/core/components/buttons/ToggleSidebarButton.tsx +3 -5
- package/src/core/components/form/Control.tsx +10 -32
- package/src/core/components/form/ControlArray.tsx +200 -89
- package/src/core/components/form/TypeForm.browser.spec.tsx +727 -0
- package/src/core/components/layout/AlephaMantineProvider.tsx +1 -0
- package/src/core/components/layout/Breadcrumb.tsx +91 -0
- package/src/core/components/layout/{AdminShell.tsx → DashboardShell.tsx} +77 -32
- package/src/core/components/layout/Sidebar.tsx +58 -18
- package/src/core/constants/ui.ts +1 -1
- package/src/core/helpers/renderIcon.tsx +5 -2
- package/src/core/index.ts +9 -5
- package/src/core/styles.css +7 -7
- package/src/core/utils/string.ts +28 -4
- package/src/demo/components/DemoLayout.tsx +6 -2
- package/dist/admin/AdminApiKeys-DsmGnHNh.js +0 -3
- package/dist/admin/AdminAudits-8SM96viT.js +0 -3
- package/dist/admin/AdminFiles-B56ocq4H.js +0 -3
- package/dist/admin/AdminJobs-CED1syCn.js +0 -3
- package/dist/admin/AdminLayout-BqZiXx4H.js.map +0 -1
- package/dist/admin/AdminNotifications-B0B1rdc4.js +0 -3
- package/dist/admin/AdminParameters-BU3lATdJ.js +0 -3
- package/dist/admin/AdminParameters-CfDUpc78.js +0 -575
- package/dist/admin/AdminParameters-CfDUpc78.js.map +0 -1
- package/dist/admin/AdminSessions-BDGK2MS6.js +0 -3
- package/dist/admin/AdminUserAudits-Cj79gENT.js +0 -3
- package/dist/admin/AdminUserCreate-Cq-mUmBs.js +0 -3
- package/dist/admin/AdminUserDetails-DRjVAPFd.js +0 -3
- package/dist/admin/AdminUserLayout-CGzmHHby.js +0 -3
- package/dist/admin/AdminUserLayout-CiPay35T.js.map +0 -1
- package/dist/admin/AdminUserSessions-DcdzuNZ9.js +0 -3
- package/dist/admin/AdminUserSettings-D7V6-ceX.js +0 -3
- package/dist/admin/AdminUsers-D9nyzGqQ.js +0 -3
- package/dist/auth/Login-BBqTosqZ.js.map +0 -1
- package/dist/auth/Login-CoU63mMR.js +0 -4
- package/dist/auth/Register-BV_oa_AK.js +0 -4
- package/dist/auth/Register-Ce675Crg.js.map +0 -1
- package/dist/auth/ResetPassword-D5wC8GAA.js +0 -3
- package/dist/auth/VerifyEmail-DAfqVm5s.js +0 -3
- package/dist/demo/DemoDataTable-CguplbR7.js.map +0 -1
- package/dist/demo/DemoHome-DC9qkMNe.js +0 -3
- package/dist/demo/DemoJsonViewer-DIssGVlJ.js +0 -4
- package/dist/demo/DemoJsonViewer-Dgdk3Txb.js.map +0 -1
- package/dist/demo/DemoLayout-B20TEuhV.js.map +0 -1
- package/dist/demo/DemoLayout-DSRyf4qJ.js +0 -3
- package/dist/demo/DemoLogin-CvCG2WVh.js.map +0 -1
- package/dist/demo/DemoRegister-CmeHbOAs.js.map +0 -1
- package/dist/demo/DemoResetPassword-CKO5iA_6.js.map +0 -1
- package/dist/demo/DemoSidebar-MVmQKfMt.js.map +0 -1
- package/dist/demo/DemoTypeForm-w-qtfRlC.js.map +0 -1
- package/dist/demo/DemoVerifyEmail-C8FFJT5A.js.map +0 -1
- 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 {
|
|
166
|
-
//# sourceMappingURL=AdminUserSettings-
|
|
166
|
+
export { AdminUserSettings_exports as n, AdminUserSettings as t };
|
|
167
|
+
//# sourceMappingURL=AdminUserSettings-CGh4gROo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminUserSettings-
|
|
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 {
|
|
119
|
-
//# sourceMappingURL=AdminUsers-
|
|
119
|
+
export { AdminUsers_exports as n, AdminUsers as t };
|
|
120
|
+
//# sourceMappingURL=AdminUsers-CvPiBzQK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminUsers-
|
|
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"}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DashboardShellProps, SidebarNode } from "@alepha/ui";
|
|
2
2
|
import { AuthRouter } from "@alepha/ui/auth";
|
|
3
|
-
import * as
|
|
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 {
|
|
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
|
|
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) =>
|
|
30
|
+
configFn?: (adminRouter: AdminRouter) => DashboardShellProps;
|
|
31
31
|
getDefaultSidebarItems(): SidebarNode[];
|
|
32
|
-
protected 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,
|
|
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
|
-
|
|
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) =>
|
|
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:
|
|
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":";;;;;;;;;;;;;;;;;cA6Ba,WAAA;EAAA,mBACQ,MAAA,EAAM,WAAA,CAAA,WAAA;EAAA,mBACN,UAAA,EAAU,UAAA;EAAA,mBACV,IAAA,EAAI,SAAA;EAAA,mBACJ,QAAA,EAAQ,oBAAA,CAAA,iBAAA,CAAA,mBAAA;EAAA,mBACR,WAAA,EAAW,oBAAA,CAAA,iBAAA,CAAA,sBAAA;EAAA,mBACX,gBAAA,EAAgB,oBAAA,CAAA,iBAAA,CAAA,2BAAA;EAAA,mBAChB,QAAA,EAAQ,oBAAA,CAAA,iBAAA,CAAA,cAAA;EAAA,mBACR,
|
|
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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"}
|
package/dist/admin/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
9
|
-
import { t as
|
|
10
|
-
import { t as
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
14
|
-
import { t as
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
210
|
-
lazy: () => import("./AdminParameters-
|
|
211
|
-
can: () => this.
|
|
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-
|
|
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-
|
|
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,
|
|
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
|
package/dist/admin/index.js.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,IAAa,cAAb,MAAyB;CACvB,AAAmB,SAAS,QAAQ,YAAyB;CAC7D,AAAmB,aAAa,QAAQ,WAAW;CACnD,AAAmB,OAAO,QAAQ,UAAU;CAC5C,AAAmB,WAAW,SAA8B;CAC5D,AAAmB,cAAc,SAAiC;CAClE,AAAmB,mBAAmB,SAAsC;CAC5E,AAAmB,WAAW,SAAyB;CACvD,AAAmB,YAAY,SAAmC;CAClE,AAAmB,YAAY,SAA+B;CAC9D,AAAmB,UAAU,SAA6B;CAC1D,AAAmB,aAAa,SAAgC;CAEhE,AAAO,iBAAqE;AAC1E,SAAO;GACL,kBAAkB;GAClB,cAAc,EACZ,OAAO,KAAK,wBAAwB,EACrC;GACF;;CAGH,AAAO,yBAAwC;AAC7C,SAAO;GACL;IACE,MAAM;IACN,OAAO;IACP,UAAU;KACR;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,WAAW,KAAK;MACzC,WAAW,KAAK,SAAS,UAAU,KAAK;MACzC;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,cAAc,KAAK;MAC5C,WAAW,KAAK,YAAY,aAAa,KAAK;MAC/C;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,aAAa,KAAK;MAC3C,WAAW,KAAK,WAAW,YAAY,KAAK;MAC7C;KACF;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,GAAG,KAAK,OAAO,KAAK,KAAK,mBAAmB,KAAK;MACjD,WAAW,KAAK,iBAAiB,kBAAkB,KAAK;MACzD;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,UAAU,KAAK;MACxC,WAAW,KAAK,QAAQ,QAAQ,KAAK;MACtC;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,YAAY,KAAK;MAC1C,WAAW,KAAK,UAAU,WAAW,KAAK;MAC3C;KACD;MACE,GAAG,KAAK,OAAO,KAAK,KAAK,gBAAgB,KAAK;MAC9C,WAAW,KAAK,UAAU,iBAAiB,KAAK;MACjD;KACF;IACF;GACD;IAAE,MAAM;IAAU,UAAU;IAAU;GACvC;;CAGH,AAAU,kBAAuC;AAC/C,MAAI,KAAK,SACP,QAAO,KAAK,SAAS,KAAK;AAE5B,SAAO,EAAE;;CAGX,AAAU,gBAAgB,KAAU;AAClC,SAAO,IAAI,YACT,KAAK,OAAO,KAAK,KAAK,WAAW,MAAM,MAAM,EAC3C,OAAO,EACL,GAAG,IAAI,UACR,EACF,CAAC,CACH;;CAOH,AAAgB,cAAc,MAAM;EAClC,MAAM;EACN,OAAO;EACP,WAAW,KAAK,KAAK,IAAI,UAAU;EACnC,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,AAAgB,aAAa,MAAM;EACjC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,UAAU,KAAK;EACzC,CAAC;CAEF,AAAgB,kBAAkB,MAAM;EACtC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,WAAW,KAAK;EAC1C,CAAC;CAEF,AAAgB,kBAAkB,MAAM;EACtC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,QAAQ,KAAK;EACvC,CAAC;CAEF,AAAgB,mBAAmB,MAAM;EACvC,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,AAAgB,oBAAoB,MAAM;EACxC,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,AAAgB,oBAAoB,MAAM;EACxC,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,AAAgB,kBAAkB,MAAM;EACtC,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACnB,WAAW,KAAK,UAAU,WAAW,KAAK;EAC3C,CAAC;CAMF,AAAgB,cAAc,MAAM;EAClC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,UAAU,WAAW,KAAK;EAC3C,CAAC;CAMF,AAAgB,gBAAgB,MAAM;EACpC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,YAAY,aAAa,KAAK;EAC/C,CAAC;CAMF,AAAgB,qBAAqB,MAAM;EACzC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,iBAAiB,kBAAkB,KAAK;EACzD,CAAC;CAMF,AAAgB,aAAa,MAAM;EACjC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,SAAS,UAAU,KAAK;EACzC,CAAC;CAMF,AAAgB,kBAAkB,MAAM;EACtC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,UAAU,iBAAiB,KAAK;EAChD,QAAQ,YAAY;AAElB,UAAO,EAAE,UADQ,MAAM,KAAK,UAAU,iBAAiB,EAAE,CAAC,EACvC;;EAEtB,CAAC;CAMF,AAAgB,YAAY,MAAM;EAChC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,QAAQ,QAAQ,KAAK;EACtC,CAAC;CAMF,AAAgB,eAAe,MAAM;EACnC,MAAM;EACN,QAAQ,KAAK;EACb,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY,OAAO;EACnB,WAAW,KAAK,WAAW,YAAY,KAAK;EAC7C,CAAC;;;;;ACxSJ,MAAM,2BAA2B;AAC/B,QACE,oBAAC;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,qBAAC;GAAM,OAAM;GAAS,KAAI;;IACxB,oBAAC;KACC,MAAM;KACN,QAAQ;KACR,OAAM;MACN;IACF,oBAAC;KAAK,GAAE;eAAS;MAA8B;IAC/C,oBAAC;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAI1C;;IACD;GACH;;;;;;;;ACbX,MAAa,YAAY,WAAqD;CAC5E,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,cAAc,OAAO,OAAO,YAAY;AAE9C,KAAI,OACF,aAAY,WAAW;AAGzB,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;ACyCT,MAAa,gBAAgB,QAAQ;CACnC,MAAM;CACN,UAAU;EAAC;EAAU;EAAc;EAAY;CAC/C,WAAW,WAAW;AACpB,SAAO,KAAK,YAAY;;CAE3B,CAAC"}
|
|
@@ -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 {
|
|
23
|
-
//# sourceMappingURL=AuthLayout-
|
|
21
|
+
export { AuthLayout as default };
|
|
22
|
+
//# sourceMappingURL=AuthLayout-CdJcrPs4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout-
|
|
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"}
|