@alepha/ui 0.15.3 → 0.15.5

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 (99) hide show
  1. package/dist/admin/AdminApiKeys-DsmGnHNh.js +3 -0
  2. package/dist/admin/AdminApiKeys-GMORg-1l.js +442 -0
  3. package/dist/admin/AdminApiKeys-GMORg-1l.js.map +1 -0
  4. package/dist/admin/AdminAudits-8SM96viT.js +3 -0
  5. package/dist/admin/{AdminAudits-Oh7iAfQa.js → AdminAudits-pkWrjq1Z.js} +2 -2
  6. package/dist/admin/{AdminAudits-Oh7iAfQa.js.map → AdminAudits-pkWrjq1Z.js.map} +1 -1
  7. package/dist/admin/AdminFiles-B56ocq4H.js +3 -0
  8. package/dist/admin/{AdminFiles-Cu8GHgQ3.js → AdminFiles-WeQbsCsl.js} +2 -2
  9. package/dist/admin/{AdminFiles-Cu8GHgQ3.js.map → AdminFiles-WeQbsCsl.js.map} +1 -1
  10. package/dist/admin/AdminJobs-B-q9iGO3.js +697 -0
  11. package/dist/admin/AdminJobs-B-q9iGO3.js.map +1 -0
  12. package/dist/admin/AdminJobs-CED1syCn.js +3 -0
  13. package/dist/admin/AdminLayout-BX4FIpXv.css +143 -0
  14. package/dist/admin/AdminLayout-BX4FIpXv.css.map +1 -0
  15. package/dist/admin/{AdminLayout-QJLIesuG.js → AdminLayout-BqZiXx4H.js} +3 -2
  16. package/dist/admin/AdminLayout-BqZiXx4H.js.map +1 -0
  17. package/dist/admin/AdminNotifications-B0B1rdc4.js +3 -0
  18. package/dist/admin/{AdminNotifications-CgYkBuG_.js → AdminNotifications-Ds5Un0NJ.js} +2 -2
  19. package/dist/admin/{AdminNotifications-CgYkBuG_.js.map → AdminNotifications-Ds5Un0NJ.js.map} +1 -1
  20. package/dist/admin/{AdminParameters-Cl-R0nXt.js → AdminParameters-BU3lATdJ.js} +1 -1
  21. package/dist/admin/{AdminParameters-hjNG_KXb.js → AdminParameters-CfDUpc78.js} +4 -4
  22. package/dist/admin/{AdminParameters-hjNG_KXb.js.map → AdminParameters-CfDUpc78.js.map} +1 -1
  23. package/dist/admin/AdminSessions-BDGK2MS6.js +3 -0
  24. package/dist/admin/{AdminSessions-Bey9cuy1.js → AdminSessions-DzIOxM3b.js} +2 -2
  25. package/dist/admin/{AdminSessions-Bey9cuy1.js.map → AdminSessions-DzIOxM3b.js.map} +1 -1
  26. package/dist/admin/{AdminUserAudits-C7AN9jx7.js → AdminUserAudits-CiUPN2BC.js} +2 -2
  27. package/dist/admin/{AdminUserAudits-C7AN9jx7.js.map → AdminUserAudits-CiUPN2BC.js.map} +1 -1
  28. package/dist/admin/{AdminUserAudits-Cp_ERd2g.js → AdminUserAudits-Cj79gENT.js} +1 -1
  29. package/dist/admin/{AdminUserCreate-BVIm4JdN.js → AdminUserCreate-BwQKr4xE.js} +2 -2
  30. package/dist/admin/{AdminUserCreate-BVIm4JdN.js.map → AdminUserCreate-BwQKr4xE.js.map} +1 -1
  31. package/dist/admin/{AdminUserCreate-C1aInRDk.js → AdminUserCreate-Cq-mUmBs.js} +1 -1
  32. package/dist/admin/{AdminUserDetails-Dcn3OwMC.js → AdminUserDetails-DRjVAPFd.js} +1 -1
  33. package/dist/admin/{AdminUserDetails-yM4x8JE6.js → AdminUserDetails-uqtC5aJ1.js} +2 -2
  34. package/dist/admin/{AdminUserDetails-yM4x8JE6.js.map → AdminUserDetails-uqtC5aJ1.js.map} +1 -1
  35. package/dist/admin/{AdminUserLayout-gb-nbggz.js → AdminUserLayout-CGzmHHby.js} +1 -1
  36. package/dist/admin/{AdminUserLayout-BnfBC1gD.js → AdminUserLayout-CiPay35T.js} +2 -2
  37. package/dist/admin/{AdminUserLayout-BnfBC1gD.js.map → AdminUserLayout-CiPay35T.js.map} +1 -1
  38. package/dist/admin/{AdminUserSessions-kmkXG-xf.js → AdminUserSessions-DAE8Nf1F.js} +2 -2
  39. package/dist/admin/{AdminUserSessions-kmkXG-xf.js.map → AdminUserSessions-DAE8Nf1F.js.map} +1 -1
  40. package/dist/admin/AdminUserSessions-DcdzuNZ9.js +3 -0
  41. package/dist/admin/AdminUserSettings-D7V6-ceX.js +3 -0
  42. package/dist/admin/{AdminUserSettings-DZ9iWhJW.js → AdminUserSettings-EbahaV2a.js} +2 -2
  43. package/dist/admin/{AdminUserSettings-DZ9iWhJW.js.map → AdminUserSettings-EbahaV2a.js.map} +1 -1
  44. package/dist/admin/AdminUsers-D9nyzGqQ.js +3 -0
  45. package/dist/admin/{AdminUsers-D6Y5K8Am.js → AdminUsers-Dcjh0KNW.js} +2 -2
  46. package/dist/admin/{AdminUsers-D6Y5K8Am.js.map → AdminUsers-Dcjh0KNW.js.map} +1 -1
  47. package/dist/admin/index.d.ts +39 -51
  48. package/dist/admin/index.d.ts.map +1 -1
  49. package/dist/admin/index.js +52 -169
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/auth/AuthLayout-BaD7RD2h.css +143 -0
  52. package/dist/auth/AuthLayout-BaD7RD2h.css.map +1 -0
  53. package/dist/auth/AuthLayout-Dj5K4SIN.js.map +1 -1
  54. package/dist/auth/index.d.ts +9 -1
  55. package/dist/auth/index.d.ts.map +1 -1
  56. package/dist/auth/index.js +1 -2
  57. package/dist/auth/index.js.map +1 -1
  58. package/dist/core/index.d.ts +13 -21
  59. package/dist/core/index.d.ts.map +1 -1
  60. package/dist/core/index.js +26 -38
  61. package/dist/core/index.js.map +1 -1
  62. package/dist/demo/{DemoLogin-S-b15cmE.js → DemoLogin-CvCG2WVh.js} +3 -1
  63. package/dist/demo/{DemoLogin-S-b15cmE.js.map → DemoLogin-CvCG2WVh.js.map} +1 -1
  64. package/dist/demo/{DemoRegister-B29MdAaZ.js → DemoRegister-CmeHbOAs.js} +3 -1
  65. package/dist/demo/{DemoRegister-B29MdAaZ.js.map → DemoRegister-CmeHbOAs.js.map} +1 -1
  66. package/dist/demo/{DemoResetPassword-CPTy88iK.js → DemoResetPassword-CKO5iA_6.js} +3 -1
  67. package/dist/demo/{DemoResetPassword-CPTy88iK.js.map → DemoResetPassword-CKO5iA_6.js.map} +1 -1
  68. package/dist/demo/index.js +3 -3
  69. package/package.json +3 -3
  70. package/src/admin/AdminRouter.ts +34 -0
  71. package/src/admin/components/AdminLayout.tsx +2 -0
  72. package/src/admin/components/jobs/AdminJobs.tsx +733 -119
  73. package/src/admin/components/keys/AdminApiKeys.tsx +537 -0
  74. package/src/admin/components/parameters/AdminParameters.tsx +2 -3
  75. package/src/admin/index.ts +3 -5
  76. package/src/auth/AuthRouter.ts +1 -2
  77. package/src/auth/components/AuthLayout.tsx +1 -0
  78. package/src/core/components/buttons/ActionButton.tsx +15 -2
  79. package/src/core/components/buttons/DarkModeButton.css +6 -0
  80. package/src/core/components/buttons/DarkModeButton.tsx +18 -71
  81. package/src/core/components/buttons/LanguageButton.tsx +2 -7
  82. package/src/core/components/buttons/ThemeButton.tsx +2 -6
  83. package/src/core/components/layout/AdminShell.tsx +17 -1
  84. package/src/core/components/layout/AppBar.tsx +5 -8
  85. package/src/core/index.ts +0 -1
  86. package/src/core/styles.css +1 -0
  87. package/src/demo/components/auth/DemoLogin.tsx +2 -0
  88. package/src/demo/components/auth/DemoRegister.tsx +2 -0
  89. package/src/demo/components/auth/DemoResetPassword.tsx +2 -0
  90. package/dist/admin/AdminAudits-BU-p1g7A.js +0 -3
  91. package/dist/admin/AdminFiles-Bg9feLFH.js +0 -3
  92. package/dist/admin/AdminLayout-BfeFXiul.js +0 -3
  93. package/dist/admin/AdminLayout-QJLIesuG.js.map +0 -1
  94. package/dist/admin/AdminNotifications-DmfGPqHe.js +0 -3
  95. package/dist/admin/AdminSessions-Cn4_jB04.js +0 -3
  96. package/dist/admin/AdminUserSessions-rvA0ztxn.js +0 -3
  97. package/dist/admin/AdminUserSettings-Dg-wTRzN.js +0 -3
  98. package/dist/admin/AdminUsers-RCaxccEW.js +0 -3
  99. package/src/admin/MainRouter.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/admin/AdminRouter.ts","../../src/admin/MainRouter.ts","../../src/admin/components/jobs/AdminJobs.tsx","../../src/admin/components/verifications/AdminVerifications.tsx","../../src/admin/index.ts"],"sourcesContent":["import type { AdminShellProps } from \"@alepha/ui\";\nimport { AuthRouter } from \"@alepha/ui/auth\";\nimport {\n IconBell,\n IconDevices,\n IconFile,\n IconHistory,\n IconPlus,\n IconSettings,\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 { 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\n protected adminShellProps(): AdminShellProps {\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.userCtrl.findUsers.can(),\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","import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { AuthRouter } from \"@alepha/ui/auth\";\nimport { $inject } from \"alepha\";\nimport { $page } from \"alepha/react/router\";\nimport { AdminRouter } from \"./AdminRouter.ts\";\n\n/**\n * Main application router that combines Auth and Admin routers.\n *\n * We assume that the main application router will always have Admin and Auth routers.\n *\n * This is basically a convenience class to avoid having to inject these routers everywhere.\n * Code is lightweight enough that we can just copy it if needed.\n */\nexport class MainRouter {\n auth = $inject(AuthRouter);\n admin = $inject(AdminRouter);\n\n layout = $page({\n component: AlephaMantineProvider,\n children: () => [this.auth.layout, this.admin.adminLayout],\n });\n}\n","import { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge } from \"@mantine/core\";\nimport {\n IconCheck,\n IconClock,\n IconPlayerPlay,\n IconX,\n} from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport {\n type AdminJobController,\n type JobExecutionEntity,\n jobExecutions,\n} from \"alepha/api/jobs\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\n\nconst AdminJobs = () => {\n const client = useClient<AdminJobController>();\n const { l } = useI18n();\n\n const filters = t.object({\n job: t.optional(\n t.string({\n $control: {\n query: t.pick(jobExecutions.schema, [\"job\"]),\n },\n }),\n ),\n status: t.optional(t.enum([\"STARTED\", \"FAILED\", \"COMPLETED\"])),\n });\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"COMPLETED\":\n return \"green\";\n case \"FAILED\":\n return \"red\";\n case \"STARTED\":\n return \"blue\";\n default:\n return \"gray\";\n }\n };\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case \"COMPLETED\":\n return <IconCheck size={12} />;\n case \"FAILED\":\n return <IconX size={12} />;\n case \"STARTED\":\n return <IconPlayerPlay size={12} />;\n default:\n return <IconClock size={12} />;\n }\n };\n\n const formatDuration = (\n start: Date | string,\n end?: Date | string | null,\n ): string => {\n const startTime = new Date(start).getTime();\n const endTime = end ? new Date(end).getTime() : Date.now();\n const duration = endTime - startTime;\n\n if (duration < 1000) return `${duration}ms`;\n if (duration < 60000) return `${(duration / 1000).toFixed(1)}s`;\n return `${Math.floor(duration / 60000)}m ${Math.floor((duration % 60000) / 1000)}s`;\n };\n\n return (\n <Flex flex={1} direction={\"column\"}>\n <DataTable<JobExecutionEntity, typeof filters>\n submitOnInit\n defaultSize={10}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 3,\n }}\n tableProps={{\n horizontalSpacing: \"xs\",\n verticalSpacing: \"xs\",\n }}\n onFilterChange={(key, _value, form) => {\n if (key === \"job\" || key === \"status\") {\n return form.submit();\n }\n }}\n filters={filters}\n items={async (filters) => {\n const response = await client.getJobExecutions({\n query: filters,\n });\n\n return response as Page<JobExecutionEntity>;\n }}\n columns={{\n job: {\n label: \"Job\",\n value: (item) => (\n <Text size=\"sm\" fw={500}>\n {item.job}\n </Text>\n ),\n },\n status: {\n label: \"Status\",\n fit: true,\n value: (item) => (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color={getStatusColor(item.status)}\n leftSection={getStatusIcon(item.status)}\n >\n {item.status}\n </Badge>\n ),\n },\n duration: {\n label: \"Duration\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\" ff=\"monospace\">\n {formatDuration(item.createdAt, item.finishedAt)}\n </Text>\n ),\n },\n error: {\n label: \"Error\",\n value: (item) =>\n item.error ? (\n <Text size=\"xs\" c=\"red\" lineClamp={1}>\n {item.error}\n </Text>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n -\n </Text>\n ),\n },\n createdAt: {\n label: \"Started\",\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 AdminJobs;\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 { AlephaUI } from \"@alepha/ui\";\nimport { AlephaUIAuth } from \"@alepha/ui/auth\";\nimport { $context, $module } from \"alepha\";\nimport { AdminRouter } from \"./AdminRouter.ts\";\nimport { MainRouter } from \"./MainRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { AdminRouter } from \"./AdminRouter.ts\";\n// Layout\nexport { default as AdminLayout } from \"./components/AdminLayout.tsx\";\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// 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 { MainRouter } from \"./MainRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | rare | experimental |\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, MainRouter],\n register: (alepha) => {\n alepha.with(AdminRouter);\n },\n});\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Register Admin UI components and get the AdminRouter instance.\n */\nexport const $uiAdmin = () => {\n const { alepha } = $context();\n return alepha.inject(AdminRouter);\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/index.ts"],"sourcesContent":["import type { AdminShellProps } 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 protected adminShellProps(): AdminShellProps {\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.userCtrl.findUsers.can(),\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 { AlephaUI } from \"@alepha/ui\";\nimport { AlephaUIAuth } from \"@alepha/ui/auth\";\nimport { $context, $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\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | rare | experimental |\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\n/**\n * Register Admin UI components and get the AdminRouter instance.\n */\nexport const $uiAdmin = () => {\n const { alepha } = $context();\n return alepha.inject(AdminRouter);\n};\n"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /* Dark Mode Toggle - SSR-safe icon switching */
2
+
3
+ [data-mantine-color-scheme="light"] .alepha-light-hidden,
4
+ [data-mantine-color-scheme="dark"] .alepha-dark-hidden {
5
+ display: none;
6
+ }
7
+
8
+
9
+ :root {
10
+ --alepha-background-light: var(--mantine-color-gray-1);
11
+ --alepha-background-dark: var(--mantine-color-dark-9);
12
+ --alepha-background: var(--alepha-background-light);
13
+
14
+ --alepha-surface-light: var(--mantine-color-gray-0);
15
+ --alepha-surface-dark: var(--mantine-color-dark-8);
16
+ --alepha-surface: var(--alepha-surface-light);
17
+
18
+ --alepha-elevated-light: var(--mantine-color-white);
19
+ --alepha-elevated-hover-light: #f6f5f5;
20
+ --alepha-elevated-dark: var(--mantine-color-dark-7);
21
+ --alepha-elevated-hover-dark: var(--mantine-color-dark-6);
22
+ --alepha-elevated: var(--alepha-elevated-light);
23
+ --alepha-elevated-hover: var(--alepha-elevated-hover-light);
24
+
25
+ --alepha-border: var(--mantine-color-default-border);
26
+
27
+ --alepha-text-light: #000000;
28
+ --alepha-text-dark: #ffffff;
29
+ --alepha-text-muted: #6c757d;
30
+ --alepha-text: var(--alepha-text-light);
31
+ }
32
+
33
+ #root {
34
+ display: flex;
35
+ background-color: var(--alepha-background);
36
+ color: var(--alepha-text);
37
+ min-height: 100dvh;
38
+ }
39
+
40
+ /* ------------------------------------------------------------------------------------------------------------------ */
41
+
42
+ [data-mantine-color-scheme="dark"] {
43
+ --alepha-surface: var(--alepha-surface-dark);
44
+ --alepha-elevated: var(--alepha-elevated-dark);
45
+ --alepha-elevated-hover: var(--alepha-elevated-hover-dark);
46
+ --alepha-background: var(--alepha-background-dark);
47
+ --alepha-text: var(--alepha-text-dark);
48
+ }
49
+
50
+ /* ------------------------------------------------------------------------------------------------------------------ */
51
+
52
+ .overflow-auto {
53
+ overflow: auto;
54
+ scrollbar-color: var(--alepha-text-muted) transparent;
55
+ scrollbar-width: thin;
56
+ }
57
+
58
+ /* Sidebar scroll area - subtle scrollbar that appears on hover */
59
+ .alepha-sidebar-scroll {
60
+ overflow-y: auto;
61
+ overflow-x: hidden;
62
+ scrollbar-width: thin;
63
+ scrollbar-color: transparent transparent;
64
+ }
65
+
66
+ .alepha-sidebar-scroll:hover {
67
+ scrollbar-color: var(--mantine-color-gray-4) transparent;
68
+ }
69
+
70
+ [data-mantine-color-scheme="dark"] .alepha-sidebar-scroll:hover {
71
+ scrollbar-color: var(--mantine-color-dark-4) transparent;
72
+ }
73
+
74
+ /* WebKit scrollbar styling */
75
+ .alepha-sidebar-scroll::-webkit-scrollbar {
76
+ width: 6px;
77
+ }
78
+
79
+ .alepha-sidebar-scroll::-webkit-scrollbar-track {
80
+ background: transparent;
81
+ }
82
+
83
+ .alepha-sidebar-scroll::-webkit-scrollbar-thumb {
84
+ background: transparent;
85
+ border-radius: 3px;
86
+ }
87
+
88
+ .alepha-sidebar-scroll:hover::-webkit-scrollbar-thumb {
89
+ background: var(--mantine-color-gray-4);
90
+ }
91
+
92
+ [data-mantine-color-scheme="dark"]
93
+ .alepha-sidebar-scroll:hover::-webkit-scrollbar-thumb {
94
+ background: var(--mantine-color-dark-4);
95
+ }
96
+
97
+ /* ------------------------------------------------------------------------------------------------------------------ */
98
+ /* Sidebar Transitions */
99
+
100
+ .alepha-sidebar-navbar {
101
+ transition: width 0.2s ease-in-out;
102
+ }
103
+
104
+ .alepha-sidebar-navbar[data-resizing="true"] {
105
+ transition: none;
106
+ }
107
+
108
+ .alepha-sidebar-main {
109
+ transition: padding-left 0.2s ease-in-out;
110
+ }
111
+
112
+ .alepha-sidebar-main[data-resizing="true"] {
113
+ transition: none;
114
+ }
115
+
116
+ /* ------------------------------------------------------------------------------------------------------------------ */
117
+ /* Modal Customizations */
118
+
119
+ /* Custom modal scale animation */
120
+ @keyframes modalScaleIn {
121
+ from {
122
+ opacity: 0;
123
+ transform: scale(0.9);
124
+ }
125
+ to {
126
+ opacity: 1;
127
+ transform: scale(1);
128
+ }
129
+ }
130
+
131
+ @keyframes modalScaleOut {
132
+ from {
133
+ opacity: 1;
134
+ transform: scale(1);
135
+ }
136
+ to {
137
+ opacity: 0;
138
+ transform: scale(0.95);
139
+ }
140
+ }
141
+
142
+
143
+ /*# sourceMappingURL=AuthLayout-BaD7RD2h.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthLayout-BaD7RD2h.css","names":[],"sources":["../../../../src/core/components/buttons/DarkModeButton.css","../../../../src/core/styles.css"],"sourcesContent":["/* Dark Mode Toggle - SSR-safe icon switching */\n\n[data-mantine-color-scheme=\"light\"] .alepha-light-hidden,\n[data-mantine-color-scheme=\"dark\"] .alepha-dark-hidden {\n display: none;\n}\n","@import \"@mantine/core/styles.css\";\n@import \"@mantine/nprogress/styles.css\";\n@import \"@mantine/spotlight/styles.css\";\n@import \"@mantine/dates/styles.css\";\n@import \"@mantine/notifications/styles.css\";\n@import \"./components/buttons/DarkModeButton.css\";\n\n:root {\n --alepha-background-light: var(--mantine-color-gray-1);\n --alepha-background-dark: var(--mantine-color-dark-9);\n --alepha-background: var(--alepha-background-light);\n\n --alepha-surface-light: var(--mantine-color-gray-0);\n --alepha-surface-dark: var(--mantine-color-dark-8);\n --alepha-surface: var(--alepha-surface-light);\n\n --alepha-elevated-light: var(--mantine-color-white);\n --alepha-elevated-hover-light: #f6f5f5;\n --alepha-elevated-dark: var(--mantine-color-dark-7);\n --alepha-elevated-hover-dark: var(--mantine-color-dark-6);\n --alepha-elevated: var(--alepha-elevated-light);\n --alepha-elevated-hover: var(--alepha-elevated-hover-light);\n\n --alepha-border: var(--mantine-color-default-border);\n\n --alepha-text-light: #000000;\n --alepha-text-dark: #ffffff;\n --alepha-text-muted: #6c757d;\n --alepha-text: var(--alepha-text-light);\n}\n\n#root {\n display: flex;\n background-color: var(--alepha-background);\n color: var(--alepha-text);\n min-height: 100dvh;\n}\n\n/* ------------------------------------------------------------------------------------------------------------------ */\n\n[data-mantine-color-scheme=\"dark\"] {\n --alepha-surface: var(--alepha-surface-dark);\n --alepha-elevated: var(--alepha-elevated-dark);\n --alepha-elevated-hover: var(--alepha-elevated-hover-dark);\n --alepha-background: var(--alepha-background-dark);\n --alepha-text: var(--alepha-text-dark);\n}\n\n/* ------------------------------------------------------------------------------------------------------------------ */\n\n.overflow-auto {\n overflow: auto;\n scrollbar-color: var(--alepha-text-muted) transparent;\n scrollbar-width: thin;\n}\n\n/* Sidebar scroll area - subtle scrollbar that appears on hover */\n.alepha-sidebar-scroll {\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n\n.alepha-sidebar-scroll:hover {\n scrollbar-color: var(--mantine-color-gray-4) transparent;\n}\n\n[data-mantine-color-scheme=\"dark\"] .alepha-sidebar-scroll:hover {\n scrollbar-color: var(--mantine-color-dark-4) transparent;\n}\n\n/* WebKit scrollbar styling */\n.alepha-sidebar-scroll::-webkit-scrollbar {\n width: 6px;\n}\n\n.alepha-sidebar-scroll::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.alepha-sidebar-scroll::-webkit-scrollbar-thumb {\n background: transparent;\n border-radius: 3px;\n}\n\n.alepha-sidebar-scroll:hover::-webkit-scrollbar-thumb {\n background: var(--mantine-color-gray-4);\n}\n\n[data-mantine-color-scheme=\"dark\"]\n .alepha-sidebar-scroll:hover::-webkit-scrollbar-thumb {\n background: var(--mantine-color-dark-4);\n}\n\n/* ------------------------------------------------------------------------------------------------------------------ */\n/* Sidebar Transitions */\n\n.alepha-sidebar-navbar {\n transition: width 0.2s ease-in-out;\n}\n\n.alepha-sidebar-navbar[data-resizing=\"true\"] {\n transition: none;\n}\n\n.alepha-sidebar-main {\n transition: padding-left 0.2s ease-in-out;\n}\n\n.alepha-sidebar-main[data-resizing=\"true\"] {\n transition: none;\n}\n\n/* ------------------------------------------------------------------------------------------------------------------ */\n/* Modal Customizations */\n\n/* Custom modal scale animation */\n@keyframes modalScaleIn {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes modalScaleOut {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;;;ACEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -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-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\";\nimport \"../../core/styles.css\";\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":";;;;;;AAKA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe;;AAI5B,yBAAe"}
@@ -11,7 +11,7 @@ import { RealmConfig, RealmController } from "alepha/api/users";
11
11
  declare class AuthRouter {
12
12
  protected readonly realmClient: alepha_server_links0.HttpVirtualClient<RealmController>;
13
13
  protected readonly auth: ReactAuth;
14
- layout: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
14
+ authLayout: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
15
15
  login: alepha_react_router0.PagePrimitive<{
16
16
  query: alepha1.TObject<{
17
17
  r: alepha1.TOptional<alepha1.TString>;
@@ -37,6 +37,8 @@ declare class AuthRouter {
37
37
  firstNameLastNameEnabled: boolean;
38
38
  firstNameLastNameRequired: boolean;
39
39
  resetPasswordAllowed: boolean;
40
+ adminEmails: string[];
41
+ adminUsernames: string[];
40
42
  passwordPolicy: {
41
43
  minLength: number;
42
44
  requireUppercase: boolean;
@@ -76,6 +78,8 @@ declare class AuthRouter {
76
78
  firstNameLastNameEnabled: boolean;
77
79
  firstNameLastNameRequired: boolean;
78
80
  resetPasswordAllowed: boolean;
81
+ adminEmails: string[];
82
+ adminUsernames: string[];
79
83
  passwordPolicy: {
80
84
  minLength: number;
81
85
  requireUppercase: boolean;
@@ -115,6 +119,8 @@ declare class AuthRouter {
115
119
  firstNameLastNameEnabled: boolean;
116
120
  firstNameLastNameRequired: boolean;
117
121
  resetPasswordAllowed: boolean;
122
+ adminEmails: string[];
123
+ adminUsernames: string[];
118
124
  passwordPolicy: {
119
125
  minLength: number;
120
126
  requireUppercase: boolean;
@@ -156,6 +162,8 @@ declare class AuthRouter {
156
162
  firstNameLastNameEnabled: boolean;
157
163
  firstNameLastNameRequired: boolean;
158
164
  resetPasswordAllowed: boolean;
165
+ adminEmails: string[];
166
+ adminUsernames: string[];
159
167
  passwordPolicy: {
160
168
  minLength: number;
161
169
  requireUppercase: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/components/Login.tsx","../../src/auth/components/Register.tsx","../../src/auth/components/ResetPassword.tsx","../../src/auth/components/VerifyEmail.tsx","../../src/auth/index.ts"],"mappings":";;;;;;;;;;cAwBa,UAAA;EAAA,mBACQ,WAAA,EAAW,oBAAA,CAAA,iBAAA,CAAA,eAAA;EAAA,mBACX,IAAA,EAAI,SAAA;EAEvB,MAAA,EAAM,oBAAA,CAAA,aAAA,CAFiB,oBAAA,CAEjB,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAaN,KAAA,uBAAK,aAAA;;2BAbC,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BN,QAAA,uBAAQ,aAAA;;2BAjBH,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCL,aAAA,uBAAa,aAAA;;2BAjBL,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCR,WAAA,uBAAW,aAAA;;+BAjBE,OAAA,CAAA,OAAA;;;;EA+Bb,MAAA,EAAM,oBAAA,CAAA,aAAA,CAdK,oBAAA,CAcL,gBAAA,MAAA,oBAAA,CAAA,mBAAA;EAaN,OAAA,EAAO,oBAAA,CAAA,aAAA,CAbD,oBAAA,CAaC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAAA,UAUS,eAAA,CAAgB,SAAA,YAAkB,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC5GnC,eAAA,SACP,IAAA,CAAK,WAAA;;;;EAIb,SAAA,GAAY,cAAA;;;;EAKZ,WAAA;EDPqB;;;ECYrB,UAAA,GAAa,OAAA,CAAQ,IAAA,CAAK,gBAAA;EDVH;;;ECevB,iBAAA;EDbM;;;ECkBN,IAAA,GAAO,SAAA;AAAA;AAAA,cAGH,UAAA,GAAc,KAAA,EAAO,eAAA,KAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCjCzB,UAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAGT,KAAA,GAAS,KAAA,EAAO,UAAA,KAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCgBf,aAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAcT,QAAA,GAAY,KAAA,EAAO,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UClBrB,kBAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAYT,aAAA,GAAiB,KAAA,EAAO,kBAAA,KAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;KCnCpC,gBAAA;AAAA,cAIN,WAAA,GAAe,MAAA,EAAQ,gBAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;;ALS7C;;;;;;;;;;;;;;cMWa,YAAA,EAAY,OAAA,CAAA,OAAA,CAGvB,OAAA,CAHuB,MAAA;;;;cAUZ,OAAA,QAAO,UAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/components/Login.tsx","../../src/auth/components/Register.tsx","../../src/auth/components/ResetPassword.tsx","../../src/auth/components/VerifyEmail.tsx","../../src/auth/index.ts"],"mappings":";;;;;;;;;;cAwBa,UAAA;EAAA,mBACQ,WAAA,EAAW,oBAAA,CAAA,iBAAA,CAAA,eAAA;EAAA,mBACX,IAAA,EAAI,SAAA;EAEvB,UAAA,EAAU,oBAAA,CAAA,aAAA,CAFa,oBAAA,CAEb,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYV,KAAA,uBAAK,aAAA;;2BAZK,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BV,QAAA,uBAAQ,aAAA;;2BAjBH,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCL,aAAA,uBAAa,aAAA;;2BAjBL,OAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCR,WAAA,uBAAW,aAAA;;+BAjBE,OAAA,CAAA,OAAA;;;;EA+Bb,MAAA,EAAM,oBAAA,CAAA,aAAA,CAdK,oBAAA,CAcL,gBAAA,MAAA,oBAAA,CAAA,mBAAA;EAaN,OAAA,EAAO,oBAAA,CAAA,aAAA,CAbD,oBAAA,CAaC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAAA,UAUS,eAAA,CAAgB,SAAA,YAAkB,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC3GnC,eAAA,SACP,IAAA,CAAK,WAAA;;;;EAIb,SAAA,GAAY,cAAA;;;;EAKZ,WAAA;EDPqB;;;ECYrB,UAAA,GAAa,OAAA,CAAQ,IAAA,CAAK,gBAAA;EDVH;;;ECevB,iBAAA;EDbU;;;ECkBV,IAAA,GAAO,SAAA;AAAA;AAAA,cAGH,UAAA,GAAc,KAAA,EAAO,eAAA,KAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCjCzB,UAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAGT,KAAA,GAAS,KAAA,EAAO,UAAA,KAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCgBf,aAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAcT,QAAA,GAAY,KAAA,EAAO,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UClBrB,kBAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAYT,aAAA,GAAiB,KAAA,EAAO,kBAAA,KAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;KCnCpC,gBAAA;AAAA,cAIN,WAAA,GAAe,MAAA,EAAQ,gBAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;;ALS7C;;;;;;;;;;;;;;cMWa,YAAA,EAAY,OAAA,CAAA,OAAA,CAGvB,OAAA,CAHuB,MAAA;;;;cAUZ,OAAA,QAAO,UAAA"}
@@ -143,8 +143,7 @@ const realmQuerySchema = t.object({
143
143
  var AuthRouter = class {
144
144
  realmClient = $client();
145
145
  auth = $inject(ReactAuth);
146
- layout = $page({
147
- name: "AuthLayout",
146
+ authLayout = $page({
148
147
  path: "/auth",
149
148
  lazy: () => import("./AuthLayout-Dj5K4SIN.js"),
150
149
  children: () => [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n layout = $page({\n name: \"AuthLayout\",\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n can: () => !!this.auth.user,\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Whether to show a divider before logout (default: true when menuItems provided)\n */\n showLogoutDivider?: boolean;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n menuConfig,\n showLogoutDivider = menuItems.length > 0,\n icon,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"subtle\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={IconLogin2}\n href={authRouter.path(\"login\")}\n />\n );\n }\n\n const userLabel = auth.user.username || auth.user.email;\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.md} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.md} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (showLogoutDivider && items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.md} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = !icon && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={hasAvatar ? undefined : (icon ?? IconUser)}\n leftSection={\n hasAvatar ? (\n <Avatar\n src={`/api/files/${auth.user.picture}`}\n size={24}\n radius=\"xl\"\n />\n ) : undefined\n }\n menu={{\n position: \"bottom-end\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {children ?? userLabel}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $context, $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | rare | experimental |\n *\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Register Auth UI components and get the AuthRouter instance.\n */\nexport const $uiAuth = () => {\n const { alepha } = $context();\n return alepha.inject(AuthRouter);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n authLayout = $page({\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n can: () => !this.auth.user,\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query }) => {\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n can: () => !!this.auth.user,\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Whether to show a divider before logout (default: true when menuItems provided)\n */\n showLogoutDivider?: boolean;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n menuConfig,\n showLogoutDivider = menuItems.length > 0,\n icon,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"subtle\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={IconLogin2}\n href={authRouter.path(\"login\")}\n />\n );\n }\n\n const userLabel = auth.user.username || auth.user.email;\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.md} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.md} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (showLogoutDivider && items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.md} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = !icon && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={hasAvatar ? undefined : (icon ?? IconUser)}\n leftSection={\n hasAvatar ? (\n <Avatar\n src={`/api/files/${auth.user.picture}`}\n size={24}\n radius=\"xl\"\n />\n ) : undefined\n }\n menu={{\n position: \"bottom-end\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {children ?? userLabel}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $context, $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | rare | experimental |\n *\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Register Auth UI components and get the AuthRouter instance.\n */\nexport const $uiAuth = () => {\n const { alepha } = $context();\n return alepha.inject(AuthRouter);\n};\n"],"mappings":"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"}
@@ -462,22 +462,17 @@ interface ClipboardButtonProps extends Omit<ActionCommonProps, "onClick" | "icon
462
462
  declare const ClipboardButton: (props: ClipboardButtonProps) => react_jsx_runtime11.JSX.Element;
463
463
  //#endregion
464
464
  //#region ../../src/core/components/buttons/DarkModeButton.d.ts
465
- interface DarkModeButtonProps {
466
- mode?: "minimal" | "segmented";
467
- size?: MantineBreakpoint;
468
- variant?: "filled" | "light" | "outline" | "default" | "subtle" | "transparent";
469
- fullWidth?: boolean;
470
- segmentedProps?: Partial<SegmentedControlProps>;
471
- actionProps?: Partial<ActionProps>;
472
- }
473
- declare const DarkModeButton: (props: DarkModeButtonProps) => react_jsx_runtime11.JSX.Element;
465
+ /**
466
+ * SSR-safe dark mode toggle button.
467
+ *
468
+ * Uses CSS-based icon switching to avoid hydration mismatches.
469
+ * Both icons are rendered, CSS hides the wrong one based on
470
+ * `data-mantine-color-scheme` attribute.
471
+ */
472
+ declare const DarkModeButton: (props: Partial<ActionProps>) => react_jsx_runtime11.JSX.Element;
474
473
  //#endregion
475
474
  //#region ../../src/core/components/buttons/LanguageButton.d.ts
476
- interface LanguageButtonProps {
477
- languages?: string[];
478
- actionProps?: ActionProps;
479
- }
480
- declare const LanguageButton: (props: LanguageButtonProps) => react_jsx_runtime11.JSX.Element;
475
+ declare const LanguageButton: (props: Partial<ActionProps>) => react_jsx_runtime11.JSX.Element;
481
476
  //#endregion
482
477
  //#region ../../src/core/components/buttons/OmnibarButton.d.ts
483
478
  interface OmnibarButtonProps {
@@ -487,10 +482,7 @@ interface OmnibarButtonProps {
487
482
  declare const OmnibarButton: (props: OmnibarButtonProps) => react_jsx_runtime11.JSX.Element;
488
483
  //#endregion
489
484
  //#region ../../src/core/components/buttons/ThemeButton.d.ts
490
- interface ThemeButtonProps {
491
- actionProps?: Partial<ActionProps>;
492
- }
493
- declare const ThemeButton: (props: ThemeButtonProps) => react_jsx_runtime11.JSX.Element;
485
+ declare const ThemeButton: (props: Partial<ActionProps>) => react_jsx_runtime11.JSX.Element;
494
486
  //#endregion
495
487
  //#region ../../src/core/components/buttons/ToggleSidebarButton.d.ts
496
488
  type Props = ActionProps;
@@ -721,7 +713,7 @@ interface AppBarBurger extends AppBarAbstractItem {
721
713
  }
722
714
  interface AppBarDark extends AppBarAbstractItem {
723
715
  type: "dark";
724
- props?: DarkModeButtonProps;
716
+ props?: Partial<ActionProps>;
725
717
  }
726
718
  interface AppBarSearch extends AppBarAbstractItem {
727
719
  type: "search";
@@ -729,7 +721,7 @@ interface AppBarSearch extends AppBarAbstractItem {
729
721
  }
730
722
  interface AppBarLang extends AppBarAbstractItem {
731
723
  type: "lang";
732
- props?: LanguageButtonProps;
724
+ props?: Partial<ActionProps>;
733
725
  }
734
726
  interface AppBarSpacer extends AppBarAbstractItem {
735
727
  type: "spacer";
@@ -1267,5 +1259,5 @@ declare const $ui: (options?: {
1267
1259
  themes?: AlephaThemeListAtom;
1268
1260
  }) => UiRouter;
1269
1261
  //#endregion
1270
- export { $ui, ActionButton, type ActionClickButtonProps, type ActionCommonProps, type ActionMenuConfig, type ActionMenuItem, type ActionNavigationButtonProps, type ActionProps, type ActionSubmitButtonProps, AdminShell, type AdminShellProps, AlephaMantineProvider, AlephaSidebarState, AlephaThemeListAtom, AlephaUI, AlertDialog, type AlertDialogOptions, type AlertDialogProps, AppBar, type AppBarBurger, type AppBarDark, type AppBarDivider, type AppBarElement, type AppBarItem, type AppBarLang, type AppBarProps, type AppBarSearch, type AppBarSpacer, type BaseDialogOptions, BurgerButton, type CheckboxAction, type CheckboxActionContext, ClipboardButton, type ClipboardButtonProps, type ColumnVisibility, ConfirmDialog, type ConfirmDialogOptions, type ConfirmDialogProps, Control, ControlArray, ControlDate, ControlNumber, ControlObject, ControlQueryBuilder, ControlSelect, CurrentAlephaTheme, DarkModeButton, DataTable, type DataTableColumn, type DataTableColumnContext, type DataTableProps, type DataTableSubmitContext, DialogService, type FilterVisibility, Flex, IconSize, LanguageButton, type MaybePage, OPERATOR_INFO, Omnibar, OmnibarButton, PromptDialog, type PromptDialogOptions, type PromptDialogProps, SchemaField, Sidebar, type SidebarAbstractItem, type SidebarButtonTheme, type SidebarDivider, type SidebarElement, type SidebarItemProps, type SidebarMenuItem, type SidebarNode, type SidebarProps, type SidebarSearch, type SidebarSection, type SidebarSpacer, type SidebarTheme, Text, ThemeButton, type ThemeButtonProps, ThemeProvider, ToastService, ToggleSidebarButton, TypeForm, UiRouter, alephaSidebarAtom, alephaThemeAtom, alephaThemeListAtom, capitalize, defaultTheme, extractSchemaFields, getDefaultIcon, getOperatorsForField, midnightTheme, prettyName, ui, useDialog, useToast };
1262
+ export { $ui, ActionButton, type ActionClickButtonProps, type ActionCommonProps, type ActionMenuConfig, type ActionMenuItem, type ActionNavigationButtonProps, type ActionProps, type ActionSubmitButtonProps, AdminShell, type AdminShellProps, AlephaMantineProvider, AlephaSidebarState, AlephaThemeListAtom, AlephaUI, AlertDialog, type AlertDialogOptions, type AlertDialogProps, AppBar, type AppBarBurger, type AppBarDark, type AppBarDivider, type AppBarElement, type AppBarItem, type AppBarLang, type AppBarProps, type AppBarSearch, type AppBarSpacer, type BaseDialogOptions, BurgerButton, type CheckboxAction, type CheckboxActionContext, ClipboardButton, type ClipboardButtonProps, type ColumnVisibility, ConfirmDialog, type ConfirmDialogOptions, type ConfirmDialogProps, Control, ControlArray, ControlDate, ControlNumber, ControlObject, ControlQueryBuilder, ControlSelect, CurrentAlephaTheme, DarkModeButton, DataTable, type DataTableColumn, type DataTableColumnContext, type DataTableProps, type DataTableSubmitContext, DialogService, type FilterVisibility, Flex, IconSize, LanguageButton, type MaybePage, OPERATOR_INFO, Omnibar, OmnibarButton, PromptDialog, type PromptDialogOptions, type PromptDialogProps, SchemaField, Sidebar, type SidebarAbstractItem, type SidebarButtonTheme, type SidebarDivider, type SidebarElement, type SidebarItemProps, type SidebarMenuItem, type SidebarNode, type SidebarProps, type SidebarSearch, type SidebarSection, type SidebarSpacer, type SidebarTheme, Text, ThemeButton, ThemeProvider, ToastService, ToggleSidebarButton, TypeForm, UiRouter, alephaSidebarAtom, alephaThemeAtom, alephaThemeListAtom, capitalize, defaultTheme, extractSchemaFields, getDefaultIcon, getOperatorsForField, midnightTheme, prettyName, ui, useDialog, useToast };
1271
1263
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeListAtom.ts","../../src/core/utils/parseInput.ts","../../src/core/components/form/ControlArray.tsx","../../src/core/components/form/ControlNumber.tsx","../../src/core/components/form/ControlObject.tsx","../../src/core/components/form/ControlSelect.tsx","../../src/core/components/form/Control.tsx","../../src/core/UiRouter.ts","../../src/core/interfaces/AlephaTheme.ts","../../src/core/atoms/themes/default.ts","../../src/core/atoms/themes/midnight.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/BurgerButton.tsx","../../src/core/components/buttons/ClipboardButton.tsx","../../src/core/components/buttons/DarkModeButton.tsx","../../src/core/components/buttons/LanguageButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/buttons/ThemeButton.tsx","../../src/core/components/buttons/ToggleSidebarButton.tsx","../../src/core/services/DialogService.tsx","../../src/core/components/dialogs/AlertDialog.tsx","../../src/core/components/dialogs/ConfirmDialog.tsx","../../src/core/components/dialogs/PromptDialog.tsx","../../src/core/components/form/ControlDate.tsx","../../src/core/components/form/ControlQueryBuilder.tsx","../../src/core/components/form/TypeForm.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/AdminShell.tsx","../../src/core/components/layout/Omnibar.tsx","../../src/core/components/layout/AlephaMantineProvider.tsx","../../src/core/components/table/types.ts","../../src/core/components/table/DataTable.tsx","../../src/core/constants/ui.ts","../../src/core/hooks/useDialog.ts","../../src/core/services/ToastService.tsx","../../src/core/hooks/useToast.ts","../../src/core/providers/ThemeProvider.ts","../../src/core/utils/extractSchemaFields.ts","../../src/core/utils/icons.tsx","../../src/core/utils/string.ts","../../src/core/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeListAtom.ts","../../src/core/utils/parseInput.ts","../../src/core/components/form/ControlArray.tsx","../../src/core/components/form/ControlNumber.tsx","../../src/core/components/form/ControlObject.tsx","../../src/core/components/form/ControlSelect.tsx","../../src/core/components/form/Control.tsx","../../src/core/UiRouter.ts","../../src/core/interfaces/AlephaTheme.ts","../../src/core/atoms/themes/default.ts","../../src/core/atoms/themes/midnight.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/BurgerButton.tsx","../../src/core/components/buttons/ClipboardButton.tsx","../../src/core/components/buttons/DarkModeButton.tsx","../../src/core/components/buttons/LanguageButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/buttons/ThemeButton.tsx","../../src/core/components/buttons/ToggleSidebarButton.tsx","../../src/core/services/DialogService.tsx","../../src/core/components/dialogs/AlertDialog.tsx","../../src/core/components/dialogs/ConfirmDialog.tsx","../../src/core/components/dialogs/PromptDialog.tsx","../../src/core/components/form/ControlDate.tsx","../../src/core/components/form/ControlQueryBuilder.tsx","../../src/core/components/form/TypeForm.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/AdminShell.tsx","../../src/core/components/layout/Omnibar.tsx","../../src/core/components/layout/AlephaMantineProvider.tsx","../../src/core/components/table/types.ts","../../src/core/components/table/DataTable.tsx","../../src/core/constants/ui.ts","../../src/core/hooks/useDialog.ts","../../src/core/services/ToastService.tsx","../../src/core/hooks/useToast.ts","../../src/core/providers/ThemeProvider.ts","../../src/core/utils/extractSchemaFields.ts","../../src/core/utils/icons.tsx","../../src/core/utils/string.ts","../../src/core/index.ts"],"mappings":"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"}