@alepha/ui 0.12.0 → 0.13.0

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,93 @@
1
+ const require_core = require('./core-aFtK4l9I.cjs');
2
+ let __alepha_react = require("@alepha/react");
3
+ let __mantine_core = require("@mantine/core");
4
+ let __tabler_icons_react = require("@tabler/icons-react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+
7
+ //#region src/admin/components/AdminLayout.tsx
8
+ const AdminLayout = () => {
9
+ const router = (0, __alepha_react.useRouter)();
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_core.AlephaMantineProvider_default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_core.AdminShell_default, {
11
+ appShellMainProps: { bg: "var(--alepha-background)" },
12
+ appShellHeaderProps: { bg: "var(--alepha-background)" },
13
+ appShellNavbarProps: { bg: "var(--alepha-background)" },
14
+ appShellProps: { withBorder: false },
15
+ appBarProps: { items: [{
16
+ type: "search",
17
+ position: "center"
18
+ }, {
19
+ type: "dark",
20
+ position: "right"
21
+ }] },
22
+ sidebarProps: { menu: [
23
+ {
24
+ type: "section",
25
+ label: "Management"
26
+ },
27
+ {
28
+ icon: __tabler_icons_react.IconUser,
29
+ label: "Users",
30
+ href: router.path("adminUsers")
31
+ },
32
+ {
33
+ icon: __tabler_icons_react.IconMail,
34
+ label: "Notifications",
35
+ href: router.path("adminNotifications")
36
+ },
37
+ {
38
+ icon: __tabler_icons_react.IconShield,
39
+ label: "Sessions",
40
+ href: router.path("adminSessions")
41
+ },
42
+ {
43
+ icon: __tabler_icons_react.IconChecklist,
44
+ label: "Verifications",
45
+ href: router.path("adminVerifications")
46
+ },
47
+ {
48
+ type: "section",
49
+ label: "System"
50
+ },
51
+ {
52
+ label: "Jobs",
53
+ href: router.path("adminJobs"),
54
+ icon: __tabler_icons_react.IconTruckDelivery
55
+ },
56
+ {
57
+ label: "Workflows",
58
+ href: router.path("adminWorkflows"),
59
+ icon: __tabler_icons_react.IconJumpRope
60
+ },
61
+ {
62
+ label: "Parameters",
63
+ href: router.path("adminParameters"),
64
+ icon: __tabler_icons_react.IconSettings
65
+ },
66
+ {
67
+ label: "Files",
68
+ href: router.path("adminFiles"),
69
+ icon: __tabler_icons_react.IconFileDatabase
70
+ }
71
+ ] },
72
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__mantine_core.Flex, {
73
+ flex: 1,
74
+ p: "lg",
75
+ mt: -16,
76
+ ml: -16,
77
+ bg: "var(--alepha-surface)",
78
+ bdrs: "lg",
79
+ bd: "1px solid var(--alepha-border)",
80
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__alepha_react.NestedView, {})
81
+ })
82
+ }) });
83
+ };
84
+ var AdminLayout_default = AdminLayout;
85
+
86
+ //#endregion
87
+ Object.defineProperty(exports, 'AdminLayout_default', {
88
+ enumerable: true,
89
+ get: function () {
90
+ return AdminLayout_default;
91
+ }
92
+ });
93
+ //# sourceMappingURL=AdminLayout-CiLlywAQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminLayout-CiLlywAQ.cjs","names":["AlephaMantineProvider","AdminShell","IconUser","IconMail","IconShield","IconChecklist","IconTruckDelivery","IconJumpRope","IconSettings","IconFileDatabase","Flex","NestedView"],"sources":["../../src/admin/components/AdminLayout.tsx"],"sourcesContent":["import { NestedView, useRouter } from \"@alepha/react\";\nimport { AdminShell, AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport {\n IconChecklist,\n IconFileDatabase,\n IconJumpRope,\n IconMail,\n IconSettings,\n IconShield,\n IconTruckDelivery,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminRouter } from \"../AdminRouter.ts\";\n\nconst AdminLayout = () => {\n const router = useRouter<AdminRouter>();\n return (\n <AlephaMantineProvider>\n <AdminShell\n appShellMainProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellHeaderProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellNavbarProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellProps={{\n withBorder: false,\n }}\n appBarProps={{\n items: [\n {\n type: \"search\",\n position: \"center\",\n },\n {\n type: \"dark\",\n position: \"right\",\n },\n ],\n }}\n sidebarProps={{\n menu: [\n {\n type: \"section\",\n label: \"Management\",\n },\n {\n icon: IconUser,\n label: \"Users\",\n href: router.path(\"adminUsers\"),\n },\n {\n icon: IconMail,\n label: \"Notifications\",\n href: router.path(\"adminNotifications\"),\n },\n {\n icon: IconShield,\n label: \"Sessions\",\n href: router.path(\"adminSessions\"),\n },\n {\n icon: IconChecklist,\n label: \"Verifications\",\n href: router.path(\"adminVerifications\"),\n },\n {\n type: \"section\",\n label: \"System\",\n },\n {\n label: \"Jobs\",\n href: router.path(\"adminJobs\"),\n icon: IconTruckDelivery,\n },\n {\n label: \"Workflows\",\n href: router.path(\"adminWorkflows\"),\n icon: IconJumpRope,\n },\n {\n label: \"Parameters\",\n href: router.path(\"adminParameters\"),\n icon: IconSettings,\n },\n {\n label: \"Files\",\n href: router.path(\"adminFiles\"),\n icon: IconFileDatabase,\n },\n ],\n }}\n >\n <Flex\n flex={1}\n p={\"lg\"}\n mt={-16}\n ml={-16}\n bg={\"var(--alepha-surface)\"}\n bdrs={\"lg\"}\n bd={\"1px solid var(--alepha-border)\"}\n >\n <NestedView />\n </Flex>\n </AdminShell>\n </AlephaMantineProvider>\n );\n};\n\nexport default AdminLayout;\n"],"mappings":";;;;;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,wCAAiC;AACvC,QACE,2CAACA,wDACC,2CAACC;EACC,mBAAmB,EACjB,IAAI,4BACL;EACD,qBAAqB,EACnB,IAAI,4BACL;EACD,qBAAqB,EACnB,IAAI,4BACL;EACD,eAAe,EACb,YAAY,OACb;EACD,aAAa,EACX,OAAO,CACL;GACE,MAAM;GACN,UAAU;GACX,EACD;GACE,MAAM;GACN,UAAU;GACX,CACF,EACF;EACD,cAAc,EACZ,MAAM;GACJ;IACE,MAAM;IACN,OAAO;IACR;GACD;IACE,MAAMC;IACN,OAAO;IACP,MAAM,OAAO,KAAK,aAAa;IAChC;GACD;IACE,MAAMC;IACN,OAAO;IACP,MAAM,OAAO,KAAK,qBAAqB;IACxC;GACD;IACE,MAAMC;IACN,OAAO;IACP,MAAM,OAAO,KAAK,gBAAgB;IACnC;GACD;IACE,MAAMC;IACN,OAAO;IACP,MAAM,OAAO,KAAK,qBAAqB;IACxC;GACD;IACE,MAAM;IACN,OAAO;IACR;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,YAAY;IAC9B,MAAMC;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,iBAAiB;IACnC,MAAMC;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,kBAAkB;IACpC,MAAMC;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,aAAa;IAC/B,MAAMC;IACP;GACF,EACF;YAED,2CAACC;GACC,MAAM;GACN,GAAG;GACH,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,IAAI;aAEJ,2CAACC,8BAAa;IACT;GACI,GACS;;AAI5B,0BAAe"}
@@ -0,0 +1,88 @@
1
+ import { a as AdminShell_default, o as AlephaMantineProvider_default } from "./core-CzO6aavT.js";
2
+ import { NestedView, useRouter } from "@alepha/react";
3
+ import { Flex } from "@mantine/core";
4
+ import { IconChecklist, IconFileDatabase, IconJumpRope, IconMail, IconSettings, IconShield, IconTruckDelivery, IconUser } from "@tabler/icons-react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/admin/components/AdminLayout.tsx
8
+ const AdminLayout = () => {
9
+ const router = useRouter();
10
+ return /* @__PURE__ */ jsx(AlephaMantineProvider_default, { children: /* @__PURE__ */ jsx(AdminShell_default, {
11
+ appShellMainProps: { bg: "var(--alepha-background)" },
12
+ appShellHeaderProps: { bg: "var(--alepha-background)" },
13
+ appShellNavbarProps: { bg: "var(--alepha-background)" },
14
+ appShellProps: { withBorder: false },
15
+ appBarProps: { items: [{
16
+ type: "search",
17
+ position: "center"
18
+ }, {
19
+ type: "dark",
20
+ position: "right"
21
+ }] },
22
+ sidebarProps: { menu: [
23
+ {
24
+ type: "section",
25
+ label: "Management"
26
+ },
27
+ {
28
+ icon: IconUser,
29
+ label: "Users",
30
+ href: router.path("adminUsers")
31
+ },
32
+ {
33
+ icon: IconMail,
34
+ label: "Notifications",
35
+ href: router.path("adminNotifications")
36
+ },
37
+ {
38
+ icon: IconShield,
39
+ label: "Sessions",
40
+ href: router.path("adminSessions")
41
+ },
42
+ {
43
+ icon: IconChecklist,
44
+ label: "Verifications",
45
+ href: router.path("adminVerifications")
46
+ },
47
+ {
48
+ type: "section",
49
+ label: "System"
50
+ },
51
+ {
52
+ label: "Jobs",
53
+ href: router.path("adminJobs"),
54
+ icon: IconTruckDelivery
55
+ },
56
+ {
57
+ label: "Workflows",
58
+ href: router.path("adminWorkflows"),
59
+ icon: IconJumpRope
60
+ },
61
+ {
62
+ label: "Parameters",
63
+ href: router.path("adminParameters"),
64
+ icon: IconSettings
65
+ },
66
+ {
67
+ label: "Files",
68
+ href: router.path("adminFiles"),
69
+ icon: IconFileDatabase
70
+ }
71
+ ] },
72
+ children: /* @__PURE__ */ jsx(Flex, {
73
+ flex: 1,
74
+ p: "lg",
75
+ mt: -16,
76
+ ml: -16,
77
+ bg: "var(--alepha-surface)",
78
+ bdrs: "lg",
79
+ bd: "1px solid var(--alepha-border)",
80
+ children: /* @__PURE__ */ jsx(NestedView, {})
81
+ })
82
+ }) });
83
+ };
84
+ var AdminLayout_default = AdminLayout;
85
+
86
+ //#endregion
87
+ export { AdminLayout_default as t };
88
+ //# sourceMappingURL=AdminLayout-CtkVYk-u.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminLayout-CtkVYk-u.js","names":["AlephaMantineProvider","AdminShell"],"sources":["../../src/admin/components/AdminLayout.tsx"],"sourcesContent":["import { NestedView, useRouter } from \"@alepha/react\";\nimport { AdminShell, AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport {\n IconChecklist,\n IconFileDatabase,\n IconJumpRope,\n IconMail,\n IconSettings,\n IconShield,\n IconTruckDelivery,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminRouter } from \"../AdminRouter.ts\";\n\nconst AdminLayout = () => {\n const router = useRouter<AdminRouter>();\n return (\n <AlephaMantineProvider>\n <AdminShell\n appShellMainProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellHeaderProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellNavbarProps={{\n bg: \"var(--alepha-background)\",\n }}\n appShellProps={{\n withBorder: false,\n }}\n appBarProps={{\n items: [\n {\n type: \"search\",\n position: \"center\",\n },\n {\n type: \"dark\",\n position: \"right\",\n },\n ],\n }}\n sidebarProps={{\n menu: [\n {\n type: \"section\",\n label: \"Management\",\n },\n {\n icon: IconUser,\n label: \"Users\",\n href: router.path(\"adminUsers\"),\n },\n {\n icon: IconMail,\n label: \"Notifications\",\n href: router.path(\"adminNotifications\"),\n },\n {\n icon: IconShield,\n label: \"Sessions\",\n href: router.path(\"adminSessions\"),\n },\n {\n icon: IconChecklist,\n label: \"Verifications\",\n href: router.path(\"adminVerifications\"),\n },\n {\n type: \"section\",\n label: \"System\",\n },\n {\n label: \"Jobs\",\n href: router.path(\"adminJobs\"),\n icon: IconTruckDelivery,\n },\n {\n label: \"Workflows\",\n href: router.path(\"adminWorkflows\"),\n icon: IconJumpRope,\n },\n {\n label: \"Parameters\",\n href: router.path(\"adminParameters\"),\n icon: IconSettings,\n },\n {\n label: \"Files\",\n href: router.path(\"adminFiles\"),\n icon: IconFileDatabase,\n },\n ],\n }}\n >\n <Flex\n flex={1}\n p={\"lg\"}\n mt={-16}\n ml={-16}\n bg={\"var(--alepha-surface)\"}\n bdrs={\"lg\"}\n bd={\"1px solid var(--alepha-border)\"}\n >\n <NestedView />\n </Flex>\n </AdminShell>\n </AlephaMantineProvider>\n );\n};\n\nexport default AdminLayout;\n"],"mappings":";;;;;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,SAAS,WAAwB;AACvC,QACE,oBAACA,2CACC,oBAACC;EACC,mBAAmB,EACjB,IAAI,4BACL;EACD,qBAAqB,EACnB,IAAI,4BACL;EACD,qBAAqB,EACnB,IAAI,4BACL;EACD,eAAe,EACb,YAAY,OACb;EACD,aAAa,EACX,OAAO,CACL;GACE,MAAM;GACN,UAAU;GACX,EACD;GACE,MAAM;GACN,UAAU;GACX,CACF,EACF;EACD,cAAc,EACZ,MAAM;GACJ;IACE,MAAM;IACN,OAAO;IACR;GACD;IACE,MAAM;IACN,OAAO;IACP,MAAM,OAAO,KAAK,aAAa;IAChC;GACD;IACE,MAAM;IACN,OAAO;IACP,MAAM,OAAO,KAAK,qBAAqB;IACxC;GACD;IACE,MAAM;IACN,OAAO;IACP,MAAM,OAAO,KAAK,gBAAgB;IACnC;GACD;IACE,MAAM;IACN,OAAO;IACP,MAAM,OAAO,KAAK,qBAAqB;IACxC;GACD;IACE,MAAM;IACN,OAAO;IACR;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,YAAY;IAC9B,MAAM;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,iBAAiB;IACnC,MAAM;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,kBAAkB;IACpC,MAAM;IACP;GACD;IACE,OAAO;IACP,MAAM,OAAO,KAAK,aAAa;IAC/B,MAAM;IACP;GACF,EACF;YAED,oBAAC;GACC,MAAM;GACN,GAAG;GACH,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,IAAI;aAEJ,oBAAC,eAAa;IACT;GACI,GACS;;AAI5B,0BAAe"}
@@ -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/AdminNotifications.tsx
6
+ const AdminNotifications = () => {
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.IconBell, {
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: "Notification Center"
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: "Notifications are processed through the queue system. Email and SMS notifications are sent asynchronously using the configured providers."
30
+ })
31
+ ]
32
+ })
33
+ });
34
+ };
35
+ var AdminNotifications_default = AdminNotifications;
36
+
37
+ //#endregion
38
+ Object.defineProperty(exports, 'AdminNotifications_default', {
39
+ enumerable: true,
40
+ get: function () {
41
+ return AdminNotifications_default;
42
+ }
43
+ });
44
+ //# sourceMappingURL=AdminNotifications-DNUeJ-PW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminNotifications-DNUeJ-PW.cjs","names":["Flex","Stack","IconBell","Text"],"sources":["../../src/admin/components/AdminNotifications.tsx"],"sourcesContent":["import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconBell } from \"@tabler/icons-react\";\n\nconst AdminNotifications = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconBell size={48} stroke={1.5} color=\"var(--mantine-color-dimmed)\" />\n <Text c=\"dimmed\">Notification Center</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Notifications are processed through the queue system. Email and SMS\n notifications are sent asynchronously using the configured providers.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminNotifications;\n"],"mappings":";;;;;AAIA,MAAM,2BAA2B;AAC/B,QACE,2CAACA;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,4CAACC;GAAM,OAAM;GAAS,KAAI;;IACxB,2CAACC;KAAS,MAAM;KAAI,QAAQ;KAAK,OAAM;MAAgC;IACvE,2CAACC;KAAK,GAAE;eAAS;MAA0B;IAC3C,2CAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAG1C;;IACD;GACH;;AAIX,iCAAe"}
@@ -0,0 +1,4 @@
1
+ import "./core-CzO6aavT.js";
2
+ import { t as AdminNotifications_default } from "./AdminNotifications-DnnulNNV.js";
3
+
4
+ export { AdminNotifications_default as 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 { IconBell } from "@tabler/icons-react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/admin/components/AdminNotifications.tsx
7
+ const AdminNotifications = () => {
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(IconBell, {
17
+ size: 48,
18
+ stroke: 1.5,
19
+ color: "var(--mantine-color-dimmed)"
20
+ }),
21
+ /* @__PURE__ */ jsx(Text$1, {
22
+ c: "dimmed",
23
+ children: "Notification Center"
24
+ }),
25
+ /* @__PURE__ */ jsx(Text$1, {
26
+ size: "xs",
27
+ c: "dimmed",
28
+ ta: "center",
29
+ maw: 400,
30
+ children: "Notifications are processed through the queue system. Email and SMS notifications are sent asynchronously using the configured providers."
31
+ })
32
+ ]
33
+ })
34
+ });
35
+ };
36
+ var AdminNotifications_default = AdminNotifications;
37
+
38
+ //#endregion
39
+ export { AdminNotifications_default as t };
40
+ //# sourceMappingURL=AdminNotifications-DnnulNNV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminNotifications-DnnulNNV.js","names":["Flex","Text"],"sources":["../../src/admin/components/AdminNotifications.tsx"],"sourcesContent":["import { Flex, Text } from \"@alepha/ui\";\nimport { Stack } from \"@mantine/core\";\nimport { IconBell } from \"@tabler/icons-react\";\n\nconst AdminNotifications = () => {\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Stack align=\"center\" gap=\"xs\">\n <IconBell size={48} stroke={1.5} color=\"var(--mantine-color-dimmed)\" />\n <Text c=\"dimmed\">Notification Center</Text>\n <Text size=\"xs\" c=\"dimmed\" ta=\"center\" maw={400}>\n Notifications are processed through the queue system. Email and SMS\n notifications are sent asynchronously using the configured providers.\n </Text>\n </Stack>\n </Flex>\n );\n};\n\nexport default AdminNotifications;\n"],"mappings":";;;;;;AAIA,MAAM,2BAA2B;AAC/B,QACE,oBAACA;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,qBAAC;GAAM,OAAM;GAAS,KAAI;;IACxB,oBAAC;KAAS,MAAM;KAAI,QAAQ;KAAK,OAAM;MAAgC;IACvE,oBAACC;KAAK,GAAE;eAAS;MAA0B;IAC3C,oBAACA;KAAK,MAAK;KAAK,GAAE;KAAS,IAAG;KAAS,KAAK;eAAK;MAG1C;;IACD;GACH;;AAIX,iCAAe"}
@@ -0,0 +1,4 @@
1
+ require('./core-aFtK4l9I.cjs');
2
+ const require_AdminNotifications = require('./AdminNotifications-DNUeJ-PW.cjs');
3
+
4
+ exports.default = require_AdminNotifications.AdminNotifications_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 { IconSettings } from "@tabler/icons-react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/admin/components/AdminParameters.tsx
7
+ const AdminParameters = () => {
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(IconSettings, {
17
+ size: 48,
18
+ stroke: 1.5,
19
+ color: "var(--mantine-color-dimmed)"
20
+ }),
21
+ /* @__PURE__ */ jsx(Text$1, {
22
+ c: "dimmed",
23
+ children: "Parameter Management"
24
+ }),
25
+ /* @__PURE__ */ jsx(Text$1, {
26
+ size: "xs",
27
+ c: "dimmed",
28
+ ta: "center",
29
+ maw: 400,
30
+ children: "Application parameters and configuration settings. Define parameters using the $config descriptor to manage dynamic application settings."
31
+ })
32
+ ]
33
+ })
34
+ });
35
+ };
36
+ var AdminParameters_default = AdminParameters;
37
+
38
+ //#endregion
39
+ export { AdminParameters_default as t };
40
+ //# sourceMappingURL=AdminParameters-B3hvpLpu.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ require('./core-aFtK4l9I.cjs');
2
+ const require_AdminParameters = require('./AdminParameters-gdf7036N.cjs');
3
+
4
+ exports.default = require_AdminParameters.AdminParameters_default;
@@ -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/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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ import "./core-CzO6aavT.js";
2
+ import { t as AdminParameters_default } from "./AdminParameters-B3hvpLpu.js";
3
+
4
+ export { AdminParameters_default as default };
@@ -0,0 +1,128 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ require('./core-aFtK4l9I.cjs');
2
+ const require_AdminSessions = require('./AdminSessions-BF_P4lHs.cjs');
3
+
4
+ exports.default = require_AdminSessions.AdminSessions_default;
@@ -0,0 +1,4 @@
1
+ import "./core-CzO6aavT.js";
2
+ import { t as AdminSessions_default } from "./AdminSessions-Pjdz-iZx.js";
3
+
4
+ export { AdminSessions_default as default };