@alepha/ui 0.11.12 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +2 -30
  2. package/dist/admin/AdminFiles-BM6_7_5A.cjs +4 -0
  3. package/dist/admin/AdminFiles-BaCIMeNt.js +4 -0
  4. package/dist/admin/AdminFiles-CllAxb1B.js +117 -0
  5. package/dist/admin/AdminFiles-CllAxb1B.js.map +1 -0
  6. package/dist/admin/AdminFiles-DC3T8uWZ.cjs +122 -0
  7. package/dist/admin/AdminFiles-DC3T8uWZ.cjs.map +1 -0
  8. package/dist/admin/AdminJobs-BXkFtlVo.js +125 -0
  9. package/dist/admin/AdminJobs-BXkFtlVo.js.map +1 -0
  10. package/dist/admin/AdminJobs-C428qrNQ.cjs +130 -0
  11. package/dist/admin/AdminJobs-C428qrNQ.cjs.map +1 -0
  12. package/dist/admin/AdminJobs-DCPPaJ4i.cjs +4 -0
  13. package/dist/admin/AdminJobs-yC6DarGO.js +4 -0
  14. package/dist/admin/AdminLayout-Bqo4cd33.cjs +4 -0
  15. package/dist/admin/AdminLayout-CQpxfko6.js +4 -0
  16. package/dist/admin/AdminLayout-CiLlywAQ.cjs +93 -0
  17. package/dist/admin/AdminLayout-CiLlywAQ.cjs.map +1 -0
  18. package/dist/admin/AdminLayout-CtkVYk-u.js +88 -0
  19. package/dist/admin/AdminLayout-CtkVYk-u.js.map +1 -0
  20. package/dist/admin/AdminNotifications-DNUeJ-PW.cjs +44 -0
  21. package/dist/admin/AdminNotifications-DNUeJ-PW.cjs.map +1 -0
  22. package/dist/admin/AdminNotifications-DaMu1AQ4.js +4 -0
  23. package/dist/admin/AdminNotifications-DnnulNNV.js +40 -0
  24. package/dist/admin/AdminNotifications-DnnulNNV.js.map +1 -0
  25. package/dist/admin/AdminNotifications-ihgbKVCx.cjs +4 -0
  26. package/dist/admin/AdminParameters-B3hvpLpu.js +40 -0
  27. package/dist/admin/AdminParameters-B3hvpLpu.js.map +1 -0
  28. package/dist/admin/AdminParameters-U4lU1rUF.cjs +4 -0
  29. package/dist/admin/AdminParameters-gdf7036N.cjs +44 -0
  30. package/dist/admin/AdminParameters-gdf7036N.cjs.map +1 -0
  31. package/dist/admin/AdminParameters-prMcCgxf.js +4 -0
  32. package/dist/admin/AdminSessions-BF_P4lHs.cjs +128 -0
  33. package/dist/admin/AdminSessions-BF_P4lHs.cjs.map +1 -0
  34. package/dist/admin/AdminSessions-CATIU61I.cjs +4 -0
  35. package/dist/admin/AdminSessions-DqOXOpYR.js +4 -0
  36. package/dist/admin/AdminSessions-Pjdz-iZx.js +123 -0
  37. package/dist/admin/AdminSessions-Pjdz-iZx.js.map +1 -0
  38. package/dist/admin/AdminUsers-BgTL-zSY.js +4 -0
  39. package/dist/admin/AdminUsers-C1HsrRxn.js +104 -0
  40. package/dist/admin/AdminUsers-C1HsrRxn.js.map +1 -0
  41. package/dist/admin/AdminUsers-HqvxwNGZ.cjs +4 -0
  42. package/dist/admin/AdminUsers-M2uEQbp5.cjs +109 -0
  43. package/dist/admin/AdminUsers-M2uEQbp5.cjs.map +1 -0
  44. package/dist/admin/AdminVerifications-BVssbtfU.cjs +44 -0
  45. package/dist/admin/AdminVerifications-BVssbtfU.cjs.map +1 -0
  46. package/dist/admin/AdminVerifications-Df6DRgNo.js +4 -0
  47. package/dist/admin/AdminVerifications-DxAtcYUR.cjs +4 -0
  48. package/dist/admin/AdminVerifications-VMpm30mS.js +40 -0
  49. package/dist/admin/AdminVerifications-VMpm30mS.js.map +1 -0
  50. package/dist/admin/core-CzO6aavT.js +2507 -0
  51. package/dist/admin/core-CzO6aavT.js.map +1 -0
  52. package/dist/{index.cjs → admin/core-aFtK4l9I.cjs} +287 -204
  53. package/dist/admin/core-aFtK4l9I.cjs.map +1 -0
  54. package/dist/admin/index.cjs +87 -0
  55. package/dist/admin/index.cjs.map +1 -0
  56. package/dist/admin/index.d.cts +1739 -0
  57. package/dist/admin/index.d.ts +1745 -0
  58. package/dist/admin/index.js +78 -0
  59. package/dist/admin/index.js.map +1 -0
  60. package/dist/auth/IconGoogle-B17BTQyD.cjs +69 -0
  61. package/dist/auth/IconGoogle-B17BTQyD.cjs.map +1 -0
  62. package/dist/auth/IconGoogle-Bfmuv9Rv.js +58 -0
  63. package/dist/auth/IconGoogle-Bfmuv9Rv.js.map +1 -0
  64. package/dist/auth/Login-BTBmbnWl.cjs +181 -0
  65. package/dist/auth/Login-BTBmbnWl.cjs.map +1 -0
  66. package/dist/auth/Login-BcQOtG3v.js +5 -0
  67. package/dist/auth/Login-Btmd70Um.cjs +5 -0
  68. package/dist/auth/Login-JeXFsUf5.js +176 -0
  69. package/dist/auth/Login-JeXFsUf5.js.map +1 -0
  70. package/dist/auth/Register-CPQnvXCZ.js +318 -0
  71. package/dist/auth/Register-CPQnvXCZ.js.map +1 -0
  72. package/dist/auth/Register-CbesZal3.cjs +5 -0
  73. package/dist/auth/Register-DpI_JdyO.js +5 -0
  74. package/dist/auth/Register-HP3rP71B.cjs +323 -0
  75. package/dist/auth/Register-HP3rP71B.cjs.map +1 -0
  76. package/dist/auth/ResetPassword-B-tkzV7g.cjs +248 -0
  77. package/dist/auth/ResetPassword-B-tkzV7g.cjs.map +1 -0
  78. package/dist/auth/ResetPassword-BlK3xEpU.js +4 -0
  79. package/dist/auth/ResetPassword-BzUjGG_-.js +243 -0
  80. package/dist/auth/ResetPassword-BzUjGG_-.js.map +1 -0
  81. package/dist/auth/ResetPassword-W3xjOnWy.cjs +4 -0
  82. package/dist/auth/chunk-DhGyd7sr.js +28 -0
  83. package/dist/auth/core-D1MHij1j.js +1795 -0
  84. package/dist/auth/core-D1MHij1j.js.map +1 -0
  85. package/dist/auth/core-rDZ9d92K.cjs +1824 -0
  86. package/dist/auth/core-rDZ9d92K.cjs.map +1 -0
  87. package/dist/auth/index.cjs +211 -0
  88. package/dist/auth/index.cjs.map +1 -0
  89. package/dist/auth/index.d.cts +6265 -0
  90. package/dist/auth/index.d.ts +6274 -0
  91. package/dist/auth/index.js +206 -0
  92. package/dist/auth/index.js.map +1 -0
  93. package/dist/core/index.cjs +2620 -0
  94. package/dist/core/index.cjs.map +1 -0
  95. package/dist/core/index.d.cts +2737 -0
  96. package/dist/core/index.d.ts +2743 -0
  97. package/dist/{index.js → core/index.js} +298 -126
  98. package/dist/core/index.js.map +1 -0
  99. package/package.json +32 -14
  100. package/src/admin/AdminRouter.ts +58 -0
  101. package/src/admin/components/AdminFiles.tsx +117 -0
  102. package/src/admin/components/AdminJobs.tsx +158 -0
  103. package/src/admin/components/AdminLayout.tsx +114 -0
  104. package/src/admin/components/AdminNotifications.tsx +20 -0
  105. package/src/admin/components/AdminParameters.tsx +24 -0
  106. package/src/admin/components/AdminSessions.tsx +159 -0
  107. package/src/admin/components/AdminUsers.tsx +137 -0
  108. package/src/admin/components/AdminVerifications.tsx +25 -0
  109. package/src/admin/index.ts +29 -0
  110. package/src/auth/AuthI18n.ts +118 -0
  111. package/src/auth/AuthRouter.ts +53 -0
  112. package/src/auth/components/Login.tsx +193 -0
  113. package/src/auth/components/Register.tsx +421 -0
  114. package/src/auth/components/ResetPassword.tsx +259 -0
  115. package/src/auth/components/buttons/UserButton.tsx +118 -0
  116. package/src/auth/components/icons/IconGithub.tsx +21 -0
  117. package/src/auth/components/icons/IconGoogle.tsx +30 -0
  118. package/src/auth/index.ts +27 -0
  119. package/src/{RootRouter.ts → core/RootRouter.ts} +2 -1
  120. package/src/{components → core/components}/buttons/ActionButton.tsx +49 -6
  121. package/src/core/components/buttons/ClipboardButton.tsx +56 -0
  122. package/src/{components → core/components}/buttons/DarkModeButton.tsx +7 -8
  123. package/src/{components → core/components}/buttons/LanguageButton.tsx +2 -2
  124. package/src/{components → core/components}/buttons/OmnibarButton.tsx +1 -1
  125. package/src/{components → core/components}/dialogs/AlertDialog.tsx +1 -1
  126. package/src/{components → core/components}/dialogs/ConfirmDialog.tsx +1 -1
  127. package/src/{components → core/components}/dialogs/PromptDialog.tsx +1 -1
  128. package/src/{components → core/components}/form/Control.tsx +1 -0
  129. package/src/{components → core/components}/layout/AdminShell.tsx +38 -7
  130. package/src/{components → core/components}/layout/AlephaMantineProvider.tsx +12 -8
  131. package/src/{components → core/components}/layout/AppBar.tsx +1 -1
  132. package/src/{components → core/components}/layout/Omnibar.tsx +1 -1
  133. package/src/{components → core/components}/layout/Sidebar.tsx +29 -26
  134. package/src/{components → core/components}/table/DataTable.tsx +1 -1
  135. package/src/{constants → core/constants}/ui.ts +9 -0
  136. package/src/{index.ts → core/index.ts} +3 -0
  137. package/src/{services → core/services}/DialogService.tsx +3 -3
  138. package/src/{services → core/services}/ToastService.tsx +3 -1
  139. package/src/{utils → core/utils}/extractSchemaFields.ts +2 -8
  140. package/src/{utils → core/utils}/icons.tsx +5 -15
  141. package/src/{utils → core/utils}/parseInput.ts +34 -26
  142. package/dist/AlephaMantineProvider-CGpgWDt8.cjs +0 -3
  143. package/dist/AlephaMantineProvider-D8cHYAge.js +0 -152
  144. package/dist/AlephaMantineProvider-D8cHYAge.js.map +0 -1
  145. package/dist/AlephaMantineProvider-DuvZFAuk.cjs +0 -175
  146. package/dist/AlephaMantineProvider-DuvZFAuk.cjs.map +0 -1
  147. package/dist/AlephaMantineProvider-twBqV4IO.js +0 -3
  148. package/dist/index.cjs.map +0 -1
  149. package/dist/index.d.cts +0 -821
  150. package/dist/index.d.cts.map +0 -1
  151. package/dist/index.d.ts +0 -821
  152. package/dist/index.d.ts.map +0 -1
  153. package/dist/index.js.map +0 -1
  154. /package/src/{components → core/components}/buttons/BurgerButton.tsx +0 -0
  155. /package/src/{components → core/components}/buttons/ToggleSidebarButton.tsx +0 -0
  156. /package/src/{components → core/components}/data/JsonViewer.tsx +0 -0
  157. /package/src/{components → core/components}/form/ControlDate.tsx +0 -0
  158. /package/src/{components → core/components}/form/ControlNumber.tsx +0 -0
  159. /package/src/{components → core/components}/form/ControlQueryBuilder.tsx +0 -0
  160. /package/src/{components → core/components}/form/ControlSelect.tsx +0 -0
  161. /package/src/{components → core/components}/form/TypeForm.tsx +0 -0
  162. /package/src/{hooks → core/hooks}/useDialog.ts +0 -0
  163. /package/src/{hooks → core/hooks}/useToast.ts +0 -0
  164. /package/src/{utils → core/utils}/string.ts +0 -0
@@ -0,0 +1,123 @@
1
+ import { i as DataTable_default, n as Flex$1, r as Text$1 } from "./core-CzO6aavT.js";
2
+ import { useI18n } from "@alepha/react/i18n";
3
+ import { t } from "alepha";
4
+ import { useClient } from "@alepha/react";
5
+ import { Badge, Group } from "@mantine/core";
6
+ import { IconDeviceDesktop, IconDeviceMobile, IconDeviceTablet } from "@tabler/icons-react";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ import { sessions } from "alepha/api/users";
9
+
10
+ //#region src/admin/components/AdminSessions.tsx
11
+ const AdminSessions = (props) => {
12
+ const client = useClient();
13
+ const { l } = useI18n();
14
+ const filters = t.object({ userId: t.optional(t.uuid({ $control: { query: t.pick(sessions.schema, ["userId"]) } })) });
15
+ const getDeviceIcon = (device) => {
16
+ switch (device) {
17
+ case "MOBILE": return /* @__PURE__ */ jsx(IconDeviceMobile, { size: 14 });
18
+ case "TABLET": return /* @__PURE__ */ jsx(IconDeviceTablet, { size: 14 });
19
+ default: return /* @__PURE__ */ jsx(IconDeviceDesktop, { size: 14 });
20
+ }
21
+ };
22
+ const isExpired = (expiresAt) => {
23
+ return new Date(expiresAt) < /* @__PURE__ */ new Date();
24
+ };
25
+ return /* @__PURE__ */ jsx(Flex$1, {
26
+ flex: 1,
27
+ children: /* @__PURE__ */ jsx(DataTable_default, {
28
+ submitOnInit: true,
29
+ defaultSize: 10,
30
+ typeFormProps: {
31
+ skipSubmitButton: true,
32
+ columns: 3
33
+ },
34
+ tableProps: {
35
+ horizontalSpacing: "xs",
36
+ verticalSpacing: "xs"
37
+ },
38
+ onFilterChange: (key, _value, form) => {
39
+ if (key === "userId") return form.submit();
40
+ },
41
+ filters,
42
+ tableTrProps: (item) => {
43
+ if (isExpired(item.expiresAt)) return { opacity: .5 };
44
+ return {};
45
+ },
46
+ items: async (filters$1) => {
47
+ return await client.findSessions({ query: {
48
+ ...filters$1,
49
+ userRealmName: props.userRealmName
50
+ } });
51
+ },
52
+ columns: {
53
+ userId: {
54
+ label: "User ID",
55
+ value: (item) => /* @__PURE__ */ jsxs(Text$1, {
56
+ size: "xs",
57
+ ff: "monospace",
58
+ children: [item.userId.slice(0, 8), "..."]
59
+ })
60
+ },
61
+ userAgent: {
62
+ label: "Device",
63
+ fit: true,
64
+ value: (item) => /* @__PURE__ */ jsx(Group, {
65
+ gap: 4,
66
+ children: item.userAgent ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Badge, {
67
+ size: "xs",
68
+ variant: "light",
69
+ leftSection: getDeviceIcon(item.userAgent.device),
70
+ children: item.userAgent.device
71
+ }), /* @__PURE__ */ jsxs(Text$1, {
72
+ size: "xs",
73
+ c: "dimmed",
74
+ children: [
75
+ item.userAgent.browser,
76
+ " / ",
77
+ item.userAgent.os
78
+ ]
79
+ })] }) : /* @__PURE__ */ jsx(Text$1, {
80
+ size: "xs",
81
+ c: "dimmed",
82
+ children: "-"
83
+ })
84
+ })
85
+ },
86
+ ip: {
87
+ label: "IP",
88
+ fit: true,
89
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
90
+ size: "xs",
91
+ ff: "monospace",
92
+ c: "dimmed",
93
+ children: item.ip || "-"
94
+ })
95
+ },
96
+ expiresAt: {
97
+ label: "Status",
98
+ fit: true,
99
+ value: (item) => /* @__PURE__ */ jsx(Badge, {
100
+ size: "sm",
101
+ variant: "light",
102
+ color: isExpired(item.expiresAt) ? "red" : "green",
103
+ children: isExpired(item.expiresAt) ? "Expired" : "Active"
104
+ })
105
+ },
106
+ createdAt: {
107
+ label: "Created",
108
+ fit: true,
109
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
110
+ size: "xs",
111
+ c: "dimmed",
112
+ children: l(item.createdAt, { date: "fromNow" })
113
+ })
114
+ }
115
+ }
116
+ })
117
+ });
118
+ };
119
+ var AdminSessions_default = AdminSessions;
120
+
121
+ //#endregion
122
+ export { AdminSessions_default as t };
123
+ //# sourceMappingURL=AdminSessions-Pjdz-iZx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminSessions-Pjdz-iZx.js","names":["Flex","DataTable","filters","Text"],"sources":["../../src/admin/components/AdminSessions.tsx"],"sourcesContent":["import { useClient } from \"@alepha/react\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge, Group } from \"@mantine/core\";\nimport {\n IconDeviceDesktop,\n IconDeviceMobile,\n IconDeviceTablet,\n} from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport {\n type SessionController,\n type SessionEntity,\n sessions,\n} from \"alepha/api/users\";\n\nexport interface AdminSessionsProps {\n userRealmName?: string;\n}\n\nconst AdminSessions = (props: AdminSessionsProps) => {\n const client = useClient<SessionController>();\n const { l } = useI18n();\n\n const filters = t.object({\n userId: t.optional(\n t.uuid({\n $control: {\n query: t.pick(sessions.schema, [\"userId\"]),\n },\n }),\n ),\n });\n\n const getDeviceIcon = (device?: string) => {\n switch (device) {\n case \"MOBILE\":\n return <IconDeviceMobile size={14} />;\n case \"TABLET\":\n return <IconDeviceTablet size={14} />;\n default:\n return <IconDeviceDesktop size={14} />;\n }\n };\n\n const isExpired = (expiresAt: Date | string) => {\n return new Date(expiresAt) < new Date();\n };\n\n return (\n <Flex flex={1}>\n <DataTable<SessionEntity, 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 === \"userId\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n if (isExpired(item.expiresAt)) {\n return {\n opacity: 0.5,\n };\n }\n return {};\n }}\n items={async (filters) => {\n const response = await client.findSessions({\n query: {\n ...filters,\n userRealmName: props.userRealmName,\n },\n });\n\n return response as Page<SessionEntity>;\n }}\n columns={{\n userId: {\n label: \"User ID\",\n value: (item) => (\n <Text size=\"xs\" ff=\"monospace\">\n {item.userId.slice(0, 8)}...\n </Text>\n ),\n },\n userAgent: {\n label: \"Device\",\n fit: true,\n value: (item) => (\n <Group gap={4}>\n {item.userAgent ? (\n <>\n <Badge\n size=\"xs\"\n variant=\"light\"\n leftSection={getDeviceIcon(item.userAgent.device)}\n >\n {item.userAgent.device}\n </Badge>\n <Text size=\"xs\" c=\"dimmed\">\n {item.userAgent.browser} / {item.userAgent.os}\n </Text>\n </>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n -\n </Text>\n )}\n </Group>\n ),\n },\n ip: {\n label: \"IP\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" ff=\"monospace\" c=\"dimmed\">\n {item.ip || \"-\"}\n </Text>\n ),\n },\n expiresAt: {\n label: \"Status\",\n fit: true,\n value: (item) => (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color={isExpired(item.expiresAt) ? \"red\" : \"green\"}\n >\n {isExpired(item.expiresAt) ? \"Expired\" : \"Active\"}\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 AdminSessions;\n"],"mappings":";;;;;;;;;;AAoBA,MAAM,iBAAiB,UAA8B;CACnD,MAAM,SAAS,WAA8B;CAC7C,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,UAAU,EAAE,OAAO,EACvB,QAAQ,EAAE,SACR,EAAE,KAAK,EACL,UAAU,EACR,OAAO,EAAE,KAAK,SAAS,QAAQ,CAAC,SAAS,CAAC,EAC3C,EACF,CAAC,CACH,EACF,CAAC;CAEF,MAAM,iBAAiB,WAAoB;AACzC,UAAQ,QAAR;GACE,KAAK,SACH,QAAO,oBAAC,oBAAiB,MAAM,KAAM;GACvC,KAAK,SACH,QAAO,oBAAC,oBAAiB,MAAM,KAAM;GACvC,QACE,QAAO,oBAAC,qBAAkB,MAAM,KAAM;;;CAI5C,MAAM,aAAa,cAA6B;AAC9C,SAAO,IAAI,KAAK,UAAU,mBAAG,IAAI,MAAM;;AAGzC,QACE,oBAACA;EAAK,MAAM;YACV,oBAACC;GACC;GACA,aAAa;GACb,eAAe;IACb,kBAAkB;IAClB,SAAS;IACV;GACD,YAAY;IACV,mBAAmB;IACnB,iBAAiB;IAClB;GACD,iBAAiB,KAAK,QAAQ,SAAS;AACrC,QAAI,QAAQ,SACV,QAAO,KAAK,QAAQ;;GAGf;GACT,eAAe,SAAS;AACtB,QAAI,UAAU,KAAK,UAAU,CAC3B,QAAO,EACL,SAAS,IACV;AAEH,WAAO,EAAE;;GAEX,OAAO,OAAO,cAAY;AAQxB,WAPiB,MAAM,OAAO,aAAa,EACzC,OAAO;KACL,GAAGC;KACH,eAAe,MAAM;KACtB,EACF,CAAC;;GAIJ,SAAS;IACP,QAAQ;KACN,OAAO;KACP,QAAQ,SACN,qBAACC;MAAK,MAAK;MAAK,IAAG;iBAChB,KAAK,OAAO,MAAM,GAAG,EAAE,EAAC;OACpB;KAEV;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MAAM,KAAK;gBACT,KAAK,YACJ,4CACE,oBAAC;OACC,MAAK;OACL,SAAQ;OACR,aAAa,cAAc,KAAK,UAAU,OAAO;iBAEhD,KAAK,UAAU;QACV,EACR,qBAACA;OAAK,MAAK;OAAK,GAAE;;QACf,KAAK,UAAU;QAAQ;QAAI,KAAK,UAAU;;QACtC,IACN,GAEH,oBAACA;OAAK,MAAK;OAAK,GAAE;iBAAS;QAEpB;OAEH;KAEX;IACD,IAAI;KACF,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAACA;MAAK,MAAK;MAAK,IAAG;MAAY,GAAE;gBAC9B,KAAK,MAAM;OACP;KAEV;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAAC;MACC,MAAK;MACL,SAAQ;MACR,OAAO,UAAU,KAAK,UAAU,GAAG,QAAQ;gBAE1C,UAAU,KAAK,UAAU,GAAG,YAAY;OACnC;KAEX;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,oBAACA;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG;;AAIX,4BAAe"}
@@ -0,0 +1,4 @@
1
+ import "./core-CzO6aavT.js";
2
+ import { t as AdminUsers_default } from "./AdminUsers-C1HsrRxn.js";
3
+
4
+ export { AdminUsers_default as default };
@@ -0,0 +1,104 @@
1
+ import { i as DataTable_default, n as Flex$1, r as Text$1 } from "./core-CzO6aavT.js";
2
+ import { useI18n } from "@alepha/react/i18n";
3
+ import { t } from "alepha";
4
+ import { useClient } from "@alepha/react";
5
+ import { Badge, Group } from "@mantine/core";
6
+ import { IconCheck, IconX } from "@tabler/icons-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { users } from "alepha/api/users";
9
+
10
+ //#region src/admin/components/AdminUsers.tsx
11
+ const AdminUsers = (props) => {
12
+ const client = useClient();
13
+ const { l } = useI18n();
14
+ return /* @__PURE__ */ jsx(Flex$1, {
15
+ flex: 1,
16
+ children: /* @__PURE__ */ jsx(DataTable_default, {
17
+ submitOnInit: true,
18
+ defaultSize: 10,
19
+ typeFormProps: {
20
+ skipSubmitButton: true,
21
+ columns: 3
22
+ },
23
+ tableProps: {
24
+ horizontalSpacing: "xs",
25
+ verticalSpacing: "xs"
26
+ },
27
+ onFilterChange: (key, value, form) => {
28
+ if (key === "query") return form.submit();
29
+ },
30
+ filters: t.object({ query: t.optional(t.string({ $control: { query: t.omit(users.schema, ["id", "version"]) } })) }),
31
+ tableTrProps: (item) => {
32
+ if (!item.enabled) return { opacity: .5 };
33
+ return {};
34
+ },
35
+ items: async (filters) => {
36
+ return await client.findUsers({ query: {
37
+ ...filters,
38
+ userRealmName: props.userRealmName
39
+ } });
40
+ },
41
+ columns: {
42
+ username: {
43
+ label: "Username",
44
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
45
+ size: "sm",
46
+ fw: 500,
47
+ children: item.username || "-"
48
+ })
49
+ },
50
+ email: {
51
+ label: "Email",
52
+ value: (item) => /* @__PURE__ */ jsxs(Group, {
53
+ gap: "xs",
54
+ children: [/* @__PURE__ */ jsx(Text$1, {
55
+ size: "sm",
56
+ children: item.email || "-"
57
+ }), item.email && /* @__PURE__ */ jsx(Badge, {
58
+ size: "xs",
59
+ variant: "light",
60
+ color: item.emailVerified ? "green" : "gray",
61
+ leftSection: item.emailVerified ? /* @__PURE__ */ jsx(IconCheck, { size: 10 }) : /* @__PURE__ */ jsx(IconX, { size: 10 }),
62
+ children: item.emailVerified ? "Verified" : "Unverified"
63
+ })]
64
+ })
65
+ },
66
+ roles: {
67
+ label: "Roles",
68
+ value: (item) => /* @__PURE__ */ jsx(Group, {
69
+ gap: 4,
70
+ children: item.roles.map((role) => /* @__PURE__ */ jsx(Badge, {
71
+ size: "xs",
72
+ variant: "outline",
73
+ children: role
74
+ }, role))
75
+ })
76
+ },
77
+ enabled: {
78
+ label: "Status",
79
+ fit: true,
80
+ value: (item) => /* @__PURE__ */ jsx(Badge, {
81
+ size: "sm",
82
+ variant: "light",
83
+ color: item.enabled ? "green" : "red",
84
+ children: item.enabled ? "Active" : "Disabled"
85
+ })
86
+ },
87
+ createdAt: {
88
+ label: "Created",
89
+ fit: true,
90
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
91
+ size: "xs",
92
+ c: "dimmed",
93
+ children: l(item.createdAt, { date: "fromNow" })
94
+ })
95
+ }
96
+ }
97
+ })
98
+ });
99
+ };
100
+ var AdminUsers_default = AdminUsers;
101
+
102
+ //#endregion
103
+ export { AdminUsers_default as t };
104
+ //# sourceMappingURL=AdminUsers-C1HsrRxn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminUsers-C1HsrRxn.js","names":["Flex","DataTable","Text"],"sources":["../../src/admin/components/AdminUsers.tsx"],"sourcesContent":["import { useClient } from \"@alepha/react\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge, Group } from \"@mantine/core\";\nimport { IconCheck, IconX } from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport { type UserController, type UserEntity, users } from \"alepha/api/users\";\n\nexport interface AdminUsersProps {\n userRealmName?: string;\n}\n\nconst AdminUsers = (props: AdminUsersProps) => {\n const client = useClient<UserController>();\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}>\n <DataTable<UserEntity, 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 === \"query\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n if (!item.enabled) {\n return {\n opacity: 0.5,\n };\n }\n return {};\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":";;;;;;;;;;AAYA,MAAM,cAAc,UAA2B;CAC7C,MAAM,SAAS,WAA2B;CAC1C,MAAM,EAAE,MAAM,SAAS;AAYvB,QACE,oBAACA;EAAK,MAAM;YACV,oBAACC;GACC;GACA,aAAa;GACb,eAAe;IACb,kBAAkB;IAClB,SAAS;IACV;GACD,YAAY;IACV,mBAAmB;IACnB,iBAAiB;IAClB;GACD,iBAAiB,KAAK,OAAO,SAAS;AACpC,QAAI,QAAQ,QACV,QAAO,KAAK,QAAQ;;GAGxB,SA5BU,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;GAqBI,eAAe,SAAS;AACtB,QAAI,CAAC,KAAK,QACR,QAAO,EACL,SAAS,IACV;AAEH,WAAO,EAAE;;GAEX,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,oBAACC;MAAK,MAAK;MAAK,IAAI;gBACjB,KAAK,YAAY;OACb;KAEV;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,qBAAC;MAAM,KAAI;iBACT,oBAACA;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,oBAACA;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG;;AAIX,yBAAe"}
@@ -0,0 +1,4 @@
1
+ require('./core-aFtK4l9I.cjs');
2
+ const require_AdminUsers = require('./AdminUsers-M2uEQbp5.cjs');
3
+
4
+ exports.default = require_AdminUsers.AdminUsers_default;
@@ -0,0 +1,109 @@
1
+ const require_core = require('./core-aFtK4l9I.cjs');
2
+ let __alepha_react_i18n = require("@alepha/react/i18n");
3
+ let alepha = require("alepha");
4
+ let __alepha_react = require("@alepha/react");
5
+ let __mantine_core = require("@mantine/core");
6
+ let __tabler_icons_react = require("@tabler/icons-react");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ let alepha_api_users = require("alepha/api/users");
9
+
10
+ //#region src/admin/components/AdminUsers.tsx
11
+ const AdminUsers = (props) => {
12
+ const client = (0, __alepha_react.useClient)();
13
+ const { l } = (0, __alepha_react_i18n.useI18n)();
14
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Flex, {
15
+ flex: 1,
16
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_core.DataTable_default, {
17
+ submitOnInit: true,
18
+ defaultSize: 10,
19
+ typeFormProps: {
20
+ skipSubmitButton: true,
21
+ columns: 3
22
+ },
23
+ tableProps: {
24
+ horizontalSpacing: "xs",
25
+ verticalSpacing: "xs"
26
+ },
27
+ onFilterChange: (key, value, form) => {
28
+ if (key === "query") return form.submit();
29
+ },
30
+ filters: alepha.t.object({ query: alepha.t.optional(alepha.t.string({ $control: { query: alepha.t.omit(alepha_api_users.users.schema, ["id", "version"]) } })) }),
31
+ tableTrProps: (item) => {
32
+ if (!item.enabled) return { opacity: .5 };
33
+ return {};
34
+ },
35
+ items: async (filters) => {
36
+ return await client.findUsers({ query: {
37
+ ...filters,
38
+ userRealmName: props.userRealmName
39
+ } });
40
+ },
41
+ columns: {
42
+ username: {
43
+ label: "Username",
44
+ value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
45
+ size: "sm",
46
+ fw: 500,
47
+ children: item.username || "-"
48
+ })
49
+ },
50
+ email: {
51
+ label: "Email",
52
+ value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__mantine_core.Group, {
53
+ gap: "xs",
54
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
55
+ size: "sm",
56
+ children: item.email || "-"
57
+ }), item.email && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Badge, {
58
+ size: "xs",
59
+ variant: "light",
60
+ color: item.emailVerified ? "green" : "gray",
61
+ leftSection: item.emailVerified ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconCheck, { size: 10 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconX, { size: 10 }),
62
+ children: item.emailVerified ? "Verified" : "Unverified"
63
+ })]
64
+ })
65
+ },
66
+ roles: {
67
+ label: "Roles",
68
+ value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Group, {
69
+ gap: 4,
70
+ children: item.roles.map((role) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Badge, {
71
+ size: "xs",
72
+ variant: "outline",
73
+ children: role
74
+ }, role))
75
+ })
76
+ },
77
+ enabled: {
78
+ label: "Status",
79
+ fit: true,
80
+ value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Badge, {
81
+ size: "sm",
82
+ variant: "light",
83
+ color: item.enabled ? "green" : "red",
84
+ children: item.enabled ? "Active" : "Disabled"
85
+ })
86
+ },
87
+ createdAt: {
88
+ label: "Created",
89
+ fit: true,
90
+ value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
91
+ size: "xs",
92
+ c: "dimmed",
93
+ children: l(item.createdAt, { date: "fromNow" })
94
+ })
95
+ }
96
+ }
97
+ })
98
+ });
99
+ };
100
+ var AdminUsers_default = AdminUsers;
101
+
102
+ //#endregion
103
+ Object.defineProperty(exports, 'AdminUsers_default', {
104
+ enumerable: true,
105
+ get: function () {
106
+ return AdminUsers_default;
107
+ }
108
+ });
109
+ //# sourceMappingURL=AdminUsers-M2uEQbp5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminUsers-M2uEQbp5.cjs","names":["Flex","DataTable","t","users","Text","Group","Badge","IconCheck","IconX"],"sources":["../../src/admin/components/AdminUsers.tsx"],"sourcesContent":["import { useClient } from \"@alepha/react\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge, Group } from \"@mantine/core\";\nimport { IconCheck, IconX } from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport { type UserController, type UserEntity, users } from \"alepha/api/users\";\n\nexport interface AdminUsersProps {\n userRealmName?: string;\n}\n\nconst AdminUsers = (props: AdminUsersProps) => {\n const client = useClient<UserController>();\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}>\n <DataTable<UserEntity, 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 === \"query\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n if (!item.enabled) {\n return {\n opacity: 0.5,\n };\n }\n return {};\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":";;;;;;;;;;AAYA,MAAM,cAAc,UAA2B;CAC7C,MAAM,wCAAoC;CAC1C,MAAM,EAAE,wCAAe;AAYvB,QACE,2CAACA;EAAK,MAAM;YACV,2CAACC;GACC;GACA,aAAa;GACb,eAAe;IACb,kBAAkB;IAClB,SAAS;IACV;GACD,YAAY;IACV,mBAAmB;IACnB,iBAAiB;IAClB;GACD,iBAAiB,KAAK,OAAO,SAAS;AACpC,QAAI,QAAQ,QACV,QAAO,KAAK,QAAQ;;GAGxB,SA5BUC,SAAE,OAAO,EACvB,OAAOA,SAAE,SACPA,SAAE,OAAO,EACP,UAAU,EACR,OAAOA,SAAE,KAAKC,uBAAM,QAAQ,CAAC,MAAM,UAAU,CAAC,EAC/C,EACF,CAAC,CACH,EACF,CAAC;GAqBI,eAAe,SAAS;AACtB,QAAI,CAAC,KAAK,QACR,QAAO,EACL,SAAS,IACV;AAEH,WAAO,EAAE;;GAEX,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,2CAACC;MAAK,MAAK;MAAK,IAAI;gBACjB,KAAK,YAAY;OACb;KAEV;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,4CAACC;MAAM,KAAI;iBACT,2CAACD;OAAK,MAAK;iBAAM,KAAK,SAAS;QAAW,EACzC,KAAK,SACJ,2CAACE;OACC,MAAK;OACL,SAAQ;OACR,OAAO,KAAK,gBAAgB,UAAU;OACtC,aACE,KAAK,gBACH,2CAACC,kCAAU,MAAM,KAAM,GAEvB,2CAACC,8BAAM,MAAM,KAAM;iBAItB,KAAK,gBAAgB,aAAa;QAC7B;OAEJ;KAEX;IACD,OAAO;KACL,OAAO;KACP,QAAQ,SACN,2CAACH;MAAM,KAAK;gBACT,KAAK,MAAM,KAAK,SACf,2CAACC;OAAiB,MAAK;OAAK,SAAQ;iBACjC;SADS,KAEJ,CACR;OACI;KAEX;IACD,SAAS;KACP,OAAO;KACP,KAAK;KACL,QAAQ,SACN,2CAACA;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,2CAACF;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG;;AAIX,yBAAe"}
@@ -0,0 +1,44 @@
1
+ let __mantine_core = require("@mantine/core");
2
+ let __tabler_icons_react = require("@tabler/icons-react");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+
5
+ //#region src/admin/components/AdminVerifications.tsx
6
+ const AdminVerifications = () => {
7
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Flex, {
8
+ flex: 1,
9
+ justify: "center",
10
+ align: "center",
11
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__mantine_core.Stack, {
12
+ align: "center",
13
+ gap: "xs",
14
+ children: [
15
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconShieldCheck, {
16
+ size: 48,
17
+ stroke: 1.5,
18
+ color: "var(--mantine-color-dimmed)"
19
+ }),
20
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
21
+ c: "dimmed",
22
+ children: "Verification Management"
23
+ }),
24
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
25
+ size: "xs",
26
+ c: "dimmed",
27
+ ta: "center",
28
+ maw: 400,
29
+ children: "Verifications are automatically managed by the system. Email and SMS verification codes are generated and validated through the verification API endpoints."
30
+ })
31
+ ]
32
+ })
33
+ });
34
+ };
35
+ var AdminVerifications_default = AdminVerifications;
36
+
37
+ //#endregion
38
+ Object.defineProperty(exports, 'AdminVerifications_default', {
39
+ enumerable: true,
40
+ get: function () {
41
+ return AdminVerifications_default;
42
+ }
43
+ });
44
+ //# sourceMappingURL=AdminVerifications-BVssbtfU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminVerifications-BVssbtfU.cjs","names":["Flex","Stack","IconShieldCheck","Text"],"sources":["../../src/admin/components/AdminVerifications.tsx"],"sourcesContent":["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"],"mappings":";;;;;AAIA,MAAM,2BAA2B;AAC/B,QACE,2CAACA;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,4CAACC;GAAM,OAAM;GAAS,KAAI;;IACxB,2CAACC;KACC,MAAM;KACN,QAAQ;KACR,OAAM;MACN;IACF,2CAACC;KAAK,GAAE;eAAS;MAA8B;IAC/C,2CAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAI1C;;IACD;GACH;;AAIX,iCAAe"}
@@ -0,0 +1,4 @@
1
+ import "./core-CzO6aavT.js";
2
+ import { t as AdminVerifications_default } from "./AdminVerifications-VMpm30mS.js";
3
+
4
+ export { AdminVerifications_default as default };
@@ -0,0 +1,4 @@
1
+ require('./core-aFtK4l9I.cjs');
2
+ const require_AdminVerifications = require('./AdminVerifications-BVssbtfU.cjs');
3
+
4
+ exports.default = require_AdminVerifications.AdminVerifications_default;
@@ -0,0 +1,40 @@
1
+ import { n as Flex$1, r as Text$1 } from "./core-CzO6aavT.js";
2
+ import { Stack } from "@mantine/core";
3
+ import { IconShieldCheck } from "@tabler/icons-react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/admin/components/AdminVerifications.tsx
7
+ const AdminVerifications = () => {
8
+ return /* @__PURE__ */ jsx(Flex$1, {
9
+ flex: 1,
10
+ justify: "center",
11
+ align: "center",
12
+ children: /* @__PURE__ */ jsxs(Stack, {
13
+ align: "center",
14
+ gap: "xs",
15
+ children: [
16
+ /* @__PURE__ */ jsx(IconShieldCheck, {
17
+ size: 48,
18
+ stroke: 1.5,
19
+ color: "var(--mantine-color-dimmed)"
20
+ }),
21
+ /* @__PURE__ */ jsx(Text$1, {
22
+ c: "dimmed",
23
+ children: "Verification Management"
24
+ }),
25
+ /* @__PURE__ */ jsx(Text$1, {
26
+ size: "xs",
27
+ c: "dimmed",
28
+ ta: "center",
29
+ maw: 400,
30
+ children: "Verifications are automatically managed by the system. Email and SMS verification codes are generated and validated through the verification API endpoints."
31
+ })
32
+ ]
33
+ })
34
+ });
35
+ };
36
+ var AdminVerifications_default = AdminVerifications;
37
+
38
+ //#endregion
39
+ export { AdminVerifications_default as t };
40
+ //# sourceMappingURL=AdminVerifications-VMpm30mS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminVerifications-VMpm30mS.js","names":["Flex","Text"],"sources":["../../src/admin/components/AdminVerifications.tsx"],"sourcesContent":["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"],"mappings":";;;;;;AAIA,MAAM,2BAA2B;AAC/B,QACE,oBAACA;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,qBAAC;GAAM,OAAM;GAAS,KAAI;;IACxB,oBAAC;KACC,MAAM;KACN,QAAQ;KACR,OAAM;MACN;IACF,oBAACC;KAAK,GAAE;eAAS;MAA8B;IAC/C,oBAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAI1C;;IACD;GACH;;AAIX,iCAAe"}