@alepha/ui 0.13.0 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/admin/{AdminFiles-CllAxb1B.js → AdminFiles-BjofP3OC.js} +11 -11
  2. package/dist/admin/AdminFiles-BjofP3OC.js.map +1 -0
  3. package/dist/admin/AdminFiles-DldZB7oo.js +3 -0
  4. package/dist/admin/AdminJobs-BOq6AZOW.js +3 -0
  5. package/dist/admin/{AdminJobs-BXkFtlVo.js → AdminJobs-CDnVxEv6.js} +11 -11
  6. package/dist/admin/AdminJobs-CDnVxEv6.js.map +1 -0
  7. package/dist/admin/AdminLayout-Bgx25J8m.js +3 -0
  8. package/dist/admin/{AdminLayout-CtkVYk-u.js → AdminLayout-CervL8LV.js} +6 -6
  9. package/dist/admin/AdminLayout-CervL8LV.js.map +1 -0
  10. package/dist/admin/AdminNotifications-BDQXt3-e.js +3 -0
  11. package/dist/admin/{AdminNotifications-DnnulNNV.js → AdminNotifications-DvI2989x.js} +6 -6
  12. package/dist/admin/AdminNotifications-DvI2989x.js.map +1 -0
  13. package/dist/admin/AdminParameters-D_v0GAvI.js +3 -0
  14. package/dist/admin/{AdminParameters-B3hvpLpu.js → AdminParameters-P1LB6ZI1.js} +7 -7
  15. package/dist/admin/AdminParameters-P1LB6ZI1.js.map +1 -0
  16. package/dist/admin/{AdminSessions-Pjdz-iZx.js → AdminSessions-CmDVneE2.js} +11 -11
  17. package/dist/admin/AdminSessions-CmDVneE2.js.map +1 -0
  18. package/dist/admin/AdminSessions-Dkk_fzWK.js +3 -0
  19. package/dist/admin/{AdminUsers-C1HsrRxn.js → AdminUsers-88De5pev.js} +9 -9
  20. package/dist/admin/AdminUsers-88De5pev.js.map +1 -0
  21. package/dist/admin/AdminUsers-oyAXqZ5l.js +3 -0
  22. package/dist/admin/AdminVerifications-D93TKymL.js +3 -0
  23. package/dist/admin/{AdminVerifications-VMpm30mS.js → AdminVerifications-DBVEoqJe.js} +6 -6
  24. package/dist/admin/AdminVerifications-DBVEoqJe.js.map +1 -0
  25. package/dist/admin/index.d.ts +320 -320
  26. package/dist/admin/index.js +17 -17
  27. package/dist/auth/{IconGoogle-Bfmuv9Rv.js → IconGoogle-v_58os2T.js} +1 -1
  28. package/dist/auth/{IconGoogle-Bfmuv9Rv.js.map → IconGoogle-v_58os2T.js.map} +1 -1
  29. package/dist/auth/Login-BC2jTczq.js +4 -0
  30. package/dist/auth/{Login-JeXFsUf5.js → Login-OCrvjs9U.js} +12 -12
  31. package/dist/auth/Login-OCrvjs9U.js.map +1 -0
  32. package/dist/auth/Register-Dh0lsQmI.js +4 -0
  33. package/dist/auth/{Register-CPQnvXCZ.js → Register-Ei34GSba.js} +16 -16
  34. package/dist/auth/Register-Ei34GSba.js.map +1 -0
  35. package/dist/auth/ResetPassword-BnlAQAOE.js +3 -0
  36. package/dist/auth/{ResetPassword-BzUjGG_-.js → ResetPassword-tO0oMzfo.js} +12 -12
  37. package/dist/auth/ResetPassword-tO0oMzfo.js.map +1 -0
  38. package/dist/auth/index.d.ts +1528 -1898
  39. package/dist/auth/index.js +10 -10
  40. package/dist/auth/index.js.map +1 -1
  41. package/dist/core/index.d.ts +152 -152
  42. package/dist/core/index.js +13 -6
  43. package/dist/core/index.js.map +1 -1
  44. package/package.json +6 -6
  45. package/src/admin/components/AdminParameters.tsx +1 -1
  46. package/src/core/components/buttons/OmnibarButton.tsx +10 -5
  47. package/src/core/components/layout/Omnibar.tsx +6 -1
  48. package/src/core/index.ts +1 -1
  49. package/dist/admin/AdminFiles-BM6_7_5A.cjs +0 -4
  50. package/dist/admin/AdminFiles-BaCIMeNt.js +0 -4
  51. package/dist/admin/AdminFiles-CllAxb1B.js.map +0 -1
  52. package/dist/admin/AdminFiles-DC3T8uWZ.cjs +0 -122
  53. package/dist/admin/AdminFiles-DC3T8uWZ.cjs.map +0 -1
  54. package/dist/admin/AdminJobs-BXkFtlVo.js.map +0 -1
  55. package/dist/admin/AdminJobs-C428qrNQ.cjs +0 -130
  56. package/dist/admin/AdminJobs-C428qrNQ.cjs.map +0 -1
  57. package/dist/admin/AdminJobs-DCPPaJ4i.cjs +0 -4
  58. package/dist/admin/AdminJobs-yC6DarGO.js +0 -4
  59. package/dist/admin/AdminLayout-Bqo4cd33.cjs +0 -4
  60. package/dist/admin/AdminLayout-CQpxfko6.js +0 -4
  61. package/dist/admin/AdminLayout-CiLlywAQ.cjs +0 -93
  62. package/dist/admin/AdminLayout-CiLlywAQ.cjs.map +0 -1
  63. package/dist/admin/AdminLayout-CtkVYk-u.js.map +0 -1
  64. package/dist/admin/AdminNotifications-DNUeJ-PW.cjs +0 -44
  65. package/dist/admin/AdminNotifications-DNUeJ-PW.cjs.map +0 -1
  66. package/dist/admin/AdminNotifications-DaMu1AQ4.js +0 -4
  67. package/dist/admin/AdminNotifications-DnnulNNV.js.map +0 -1
  68. package/dist/admin/AdminNotifications-ihgbKVCx.cjs +0 -4
  69. package/dist/admin/AdminParameters-B3hvpLpu.js.map +0 -1
  70. package/dist/admin/AdminParameters-U4lU1rUF.cjs +0 -4
  71. package/dist/admin/AdminParameters-gdf7036N.cjs +0 -44
  72. package/dist/admin/AdminParameters-gdf7036N.cjs.map +0 -1
  73. package/dist/admin/AdminParameters-prMcCgxf.js +0 -4
  74. package/dist/admin/AdminSessions-BF_P4lHs.cjs +0 -128
  75. package/dist/admin/AdminSessions-BF_P4lHs.cjs.map +0 -1
  76. package/dist/admin/AdminSessions-CATIU61I.cjs +0 -4
  77. package/dist/admin/AdminSessions-DqOXOpYR.js +0 -4
  78. package/dist/admin/AdminSessions-Pjdz-iZx.js.map +0 -1
  79. package/dist/admin/AdminUsers-BgTL-zSY.js +0 -4
  80. package/dist/admin/AdminUsers-C1HsrRxn.js.map +0 -1
  81. package/dist/admin/AdminUsers-HqvxwNGZ.cjs +0 -4
  82. package/dist/admin/AdminUsers-M2uEQbp5.cjs +0 -109
  83. package/dist/admin/AdminUsers-M2uEQbp5.cjs.map +0 -1
  84. package/dist/admin/AdminVerifications-BVssbtfU.cjs +0 -44
  85. package/dist/admin/AdminVerifications-BVssbtfU.cjs.map +0 -1
  86. package/dist/admin/AdminVerifications-Df6DRgNo.js +0 -4
  87. package/dist/admin/AdminVerifications-DxAtcYUR.cjs +0 -4
  88. package/dist/admin/AdminVerifications-VMpm30mS.js.map +0 -1
  89. package/dist/admin/core-CzO6aavT.js +0 -2507
  90. package/dist/admin/core-CzO6aavT.js.map +0 -1
  91. package/dist/admin/core-aFtK4l9I.cjs +0 -2530
  92. package/dist/admin/core-aFtK4l9I.cjs.map +0 -1
  93. package/dist/admin/index.cjs +0 -87
  94. package/dist/admin/index.cjs.map +0 -1
  95. package/dist/admin/index.d.cts +0 -1739
  96. package/dist/auth/IconGoogle-B17BTQyD.cjs +0 -69
  97. package/dist/auth/IconGoogle-B17BTQyD.cjs.map +0 -1
  98. package/dist/auth/Login-BTBmbnWl.cjs +0 -181
  99. package/dist/auth/Login-BTBmbnWl.cjs.map +0 -1
  100. package/dist/auth/Login-BcQOtG3v.js +0 -5
  101. package/dist/auth/Login-Btmd70Um.cjs +0 -5
  102. package/dist/auth/Login-JeXFsUf5.js.map +0 -1
  103. package/dist/auth/Register-CPQnvXCZ.js.map +0 -1
  104. package/dist/auth/Register-CbesZal3.cjs +0 -5
  105. package/dist/auth/Register-DpI_JdyO.js +0 -5
  106. package/dist/auth/Register-HP3rP71B.cjs +0 -323
  107. package/dist/auth/Register-HP3rP71B.cjs.map +0 -1
  108. package/dist/auth/ResetPassword-B-tkzV7g.cjs +0 -248
  109. package/dist/auth/ResetPassword-B-tkzV7g.cjs.map +0 -1
  110. package/dist/auth/ResetPassword-BlK3xEpU.js +0 -4
  111. package/dist/auth/ResetPassword-BzUjGG_-.js.map +0 -1
  112. package/dist/auth/ResetPassword-W3xjOnWy.cjs +0 -4
  113. package/dist/auth/chunk-DhGyd7sr.js +0 -28
  114. package/dist/auth/core-D1MHij1j.js +0 -1795
  115. package/dist/auth/core-D1MHij1j.js.map +0 -1
  116. package/dist/auth/core-rDZ9d92K.cjs +0 -1824
  117. package/dist/auth/core-rDZ9d92K.cjs.map +0 -1
  118. package/dist/auth/index.cjs +0 -211
  119. package/dist/auth/index.cjs.map +0 -1
  120. package/dist/auth/index.d.cts +0 -6265
  121. package/dist/core/index.cjs +0 -2620
  122. package/dist/core/index.cjs.map +0 -1
  123. package/dist/core/index.d.cts +0 -2737
@@ -1,4 +0,0 @@
1
- require('./core-aFtK4l9I.cjs');
2
- const require_AdminNotifications = require('./AdminNotifications-DNUeJ-PW.cjs');
3
-
4
- exports.default = require_AdminNotifications.AdminNotifications_default;
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminParameters-B3hvpLpu.js","names":["Flex","Text"],"sources":["../../src/admin/components/AdminParameters.tsx"],"sourcesContent":["import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconSettings } from \"@tabler/icons-react\";\n\nconst AdminParameters = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconSettings\n size={48}\n stroke={1.5}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text c=\"dimmed\">Parameter Management</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Application parameters and configuration settings. Define parameters\n using the $config descriptor to manage dynamic application settings.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminParameters;\n"],"mappings":";;;;;;AAIA,MAAM,wBAAwB;AAC5B,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;MAA2B;IAC5C,oBAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAG1C;;IACD;GACH;;AAIX,8BAAe"}
@@ -1,4 +0,0 @@
1
- require('./core-aFtK4l9I.cjs');
2
- const require_AdminParameters = require('./AdminParameters-gdf7036N.cjs');
3
-
4
- exports.default = require_AdminParameters.AdminParameters_default;
@@ -1,44 +0,0 @@
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/AdminParameters.tsx
6
- const AdminParameters = () => {
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.IconSettings, {
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: "Parameter 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: "Application parameters and configuration settings. Define parameters using the $config descriptor to manage dynamic application settings."
30
- })
31
- ]
32
- })
33
- });
34
- };
35
- var AdminParameters_default = AdminParameters;
36
-
37
- //#endregion
38
- Object.defineProperty(exports, 'AdminParameters_default', {
39
- enumerable: true,
40
- get: function () {
41
- return AdminParameters_default;
42
- }
43
- });
44
- //# sourceMappingURL=AdminParameters-gdf7036N.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminParameters-gdf7036N.cjs","names":["Flex","Stack","IconSettings","Text"],"sources":["../../src/admin/components/AdminParameters.tsx"],"sourcesContent":["import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconSettings } from \"@tabler/icons-react\";\n\nconst AdminParameters = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconSettings\n size={48}\n stroke={1.5}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text c=\"dimmed\">Parameter Management</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Application parameters and configuration settings. Define parameters\n using the $config descriptor to manage dynamic application settings.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminParameters;\n"],"mappings":";;;;;AAIA,MAAM,wBAAwB;AAC5B,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;MAA2B;IAC5C,2CAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAG1C;;IACD;GACH;;AAIX,8BAAe"}
@@ -1,4 +0,0 @@
1
- import "./core-CzO6aavT.js";
2
- import { t as AdminParameters_default } from "./AdminParameters-B3hvpLpu.js";
3
-
4
- export { AdminParameters_default as default };
@@ -1,128 +0,0 @@
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/AdminSessions.tsx
11
- const AdminSessions = (props) => {
12
- const client = (0, __alepha_react.useClient)();
13
- const { l } = (0, __alepha_react_i18n.useI18n)();
14
- const filters = alepha.t.object({ userId: alepha.t.optional(alepha.t.uuid({ $control: { query: alepha.t.pick(alepha_api_users.sessions.schema, ["userId"]) } })) });
15
- const getDeviceIcon = (device) => {
16
- switch (device) {
17
- case "MOBILE": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconDeviceMobile, { size: 14 });
18
- case "TABLET": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconDeviceTablet, { size: 14 });
19
- default: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tabler_icons_react.IconDeviceDesktop, { size: 14 });
20
- }
21
- };
22
- const isExpired = (expiresAt) => {
23
- return new Date(expiresAt) < /* @__PURE__ */ new Date();
24
- };
25
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Flex, {
26
- flex: 1,
27
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_core.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__ */ (0, react_jsx_runtime.jsxs)(__mantine_core.Text, {
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__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Group, {
65
- gap: 4,
66
- children: item.userAgent ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Badge, {
67
- size: "xs",
68
- variant: "light",
69
- leftSection: getDeviceIcon(item.userAgent.device),
70
- children: item.userAgent.device
71
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__mantine_core.Text, {
72
- size: "xs",
73
- c: "dimmed",
74
- children: [
75
- item.userAgent.browser,
76
- " / ",
77
- item.userAgent.os
78
- ]
79
- })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
80
- size: "xs",
81
- c: "dimmed",
82
- children: "-"
83
- })
84
- })
85
- },
86
- ip: {
87
- label: "IP",
88
- fit: true,
89
- value: (item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
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__ */ (0, react_jsx_runtime.jsx)(__mantine_core.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__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Text, {
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
- Object.defineProperty(exports, 'AdminSessions_default', {
123
- enumerable: true,
124
- get: function () {
125
- return AdminSessions_default;
126
- }
127
- });
128
- //# sourceMappingURL=AdminSessions-BF_P4lHs.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminSessions-BF_P4lHs.cjs","names":["t","sessions","IconDeviceMobile","IconDeviceTablet","IconDeviceDesktop","Flex","DataTable","filters","Text","Group","Badge"],"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,wCAAuC;CAC7C,MAAM,EAAE,wCAAe;CAEvB,MAAM,UAAUA,SAAE,OAAO,EACvB,QAAQA,SAAE,SACRA,SAAE,KAAK,EACL,UAAU,EACR,OAAOA,SAAE,KAAKC,0BAAS,QAAQ,CAAC,SAAS,CAAC,EAC3C,EACF,CAAC,CACH,EACF,CAAC;CAEF,MAAM,iBAAiB,WAAoB;AACzC,UAAQ,QAAR;GACE,KAAK,SACH,QAAO,2CAACC,yCAAiB,MAAM,KAAM;GACvC,KAAK,SACH,QAAO,2CAACC,yCAAiB,MAAM,KAAM;GACvC,QACE,QAAO,2CAACC,0CAAkB,MAAM,KAAM;;;CAI5C,MAAM,aAAa,cAA6B;AAC9C,SAAO,IAAI,KAAK,UAAU,mBAAG,IAAI,MAAM;;AAGzC,QACE,2CAACC;EAAK,MAAM;YACV,2CAACC;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,4CAACC;MAAK,MAAK;MAAK,IAAG;iBAChB,KAAK,OAAO,MAAM,GAAG,EAAE,EAAC;OACpB;KAEV;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,2CAACC;MAAM,KAAK;gBACT,KAAK,YACJ,qFACE,2CAACC;OACC,MAAK;OACL,SAAQ;OACR,aAAa,cAAc,KAAK,UAAU,OAAO;iBAEhD,KAAK,UAAU;QACV,EACR,4CAACF;OAAK,MAAK;OAAK,GAAE;;QACf,KAAK,UAAU;QAAQ;QAAI,KAAK,UAAU;;QACtC,IACN,GAEH,2CAACA;OAAK,MAAK;OAAK,GAAE;iBAAS;QAEpB;OAEH;KAEX;IACD,IAAI;KACF,OAAO;KACP,KAAK;KACL,QAAQ,SACN,2CAACA;MAAK,MAAK;MAAK,IAAG;MAAY,GAAE;gBAC9B,KAAK,MAAM;OACP;KAEV;IACD,WAAW;KACT,OAAO;KACP,KAAK;KACL,QAAQ,SACN,2CAACE;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,2CAACF;MAAK,MAAK;MAAK,GAAE;gBACf,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;OAClC;KAEV;IACF;IACD;GACG;;AAIX,4BAAe"}
@@ -1,4 +0,0 @@
1
- require('./core-aFtK4l9I.cjs');
2
- const require_AdminSessions = require('./AdminSessions-BF_P4lHs.cjs');
3
-
4
- exports.default = require_AdminSessions.AdminSessions_default;
@@ -1,4 +0,0 @@
1
- import "./core-CzO6aavT.js";
2
- import { t as AdminSessions_default } from "./AdminSessions-Pjdz-iZx.js";
3
-
4
- export { AdminSessions_default as default };
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
1
- import "./core-CzO6aavT.js";
2
- import { t as AdminUsers_default } from "./AdminUsers-C1HsrRxn.js";
3
-
4
- export { AdminUsers_default as default };
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
1
- require('./core-aFtK4l9I.cjs');
2
- const require_AdminUsers = require('./AdminUsers-M2uEQbp5.cjs');
3
-
4
- exports.default = require_AdminUsers.AdminUsers_default;
@@ -1,109 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,44 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
1
- import "./core-CzO6aavT.js";
2
- import { t as AdminVerifications_default } from "./AdminVerifications-VMpm30mS.js";
3
-
4
- export { AdminVerifications_default as default };
@@ -1,4 +0,0 @@
1
- require('./core-aFtK4l9I.cjs');
2
- const require_AdminVerifications = require('./AdminVerifications-BVssbtfU.cjs');
3
-
4
- exports.default = require_AdminVerifications.AdminVerifications_default;
@@ -1 +0,0 @@
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"}