@alepha/ui 0.17.0 → 0.17.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 (28) hide show
  1. package/dist/admin/{AdminParameters-iQE8o7a7.js → AdminParameters-DCGbpt2c.js} +1 -1
  2. package/dist/admin/{AdminParameters-iQE8o7a7.js.map → AdminParameters-DCGbpt2c.js.map} +1 -1
  3. package/dist/admin/{AdminSessions-oKJCbd7w.js → AdminSessions-DyhW6RZv.js} +1 -1
  4. package/dist/admin/{AdminSessions-oKJCbd7w.js.map → AdminSessions-DyhW6RZv.js.map} +1 -1
  5. package/dist/admin/{AdminUserAudits-BNCEle_E.js → AdminUserAudits-D1GcREEE.js} +1 -1
  6. package/dist/admin/{AdminUserAudits-BNCEle_E.js.map → AdminUserAudits-D1GcREEE.js.map} +1 -1
  7. package/dist/admin/{AdminUserCreate-CgqeFwCt.js → AdminUserCreate-DR8LA0tv.js} +1 -1
  8. package/dist/admin/{AdminUserCreate-CgqeFwCt.js.map → AdminUserCreate-DR8LA0tv.js.map} +1 -1
  9. package/dist/admin/{AdminUserDetails-DDe1A1GP.js → AdminUserDetails-CDkZNHQD.js} +1 -1
  10. package/dist/admin/{AdminUserDetails-DDe1A1GP.js.map → AdminUserDetails-CDkZNHQD.js.map} +1 -1
  11. package/dist/admin/{AdminUserLayout-HAlobhWf.js → AdminUserLayout-CrBj4UuI.js} +1 -1
  12. package/dist/admin/{AdminUserLayout-HAlobhWf.js.map → AdminUserLayout-CrBj4UuI.js.map} +1 -1
  13. package/dist/admin/{AdminUserSessions-Bq1LnVLf.js → AdminUserSessions-srgFHrqy.js} +1 -1
  14. package/dist/admin/{AdminUserSessions-Bq1LnVLf.js.map → AdminUserSessions-srgFHrqy.js.map} +1 -1
  15. package/dist/admin/{AdminUserSettings-BRsBZoxV.js → AdminUserSettings-BFuxl-xT.js} +1 -1
  16. package/dist/admin/{AdminUserSettings-BRsBZoxV.js.map → AdminUserSettings-BFuxl-xT.js.map} +1 -1
  17. package/dist/admin/{AdminUsers-D71kIOSn.js → AdminUsers-D1pDpiwK.js} +1 -1
  18. package/dist/admin/{AdminUsers-D71kIOSn.js.map → AdminUsers-D1pDpiwK.js.map} +1 -1
  19. package/dist/admin/index.d.ts +1 -4
  20. package/dist/admin/index.d.ts.map +1 -1
  21. package/dist/admin/index.js +11 -26
  22. package/dist/admin/index.js.map +1 -1
  23. package/package.json +3 -3
  24. package/src/admin/AdminRouter.ts +2 -22
  25. package/src/admin/index.ts +1 -1
  26. package/dist/admin/AdminNotifications-DeHJFf6W.js +0 -153
  27. package/dist/admin/AdminNotifications-DeHJFf6W.js.map +0 -1
  28. package/src/admin/components/notifications/AdminNotifications.tsx +0 -204
@@ -1,153 +0,0 @@
1
- import { DataTable, Flex, Text } from "@alepha/ui";
2
- import { t } from "alepha";
3
- import { IconAlertCircle, IconCheck, IconClock, IconMail, IconMessage } from "@tabler/icons-react";
4
- import { Badge, Tooltip } from "@mantine/core";
5
- import { jsx } from "react/jsx-runtime";
6
- import { useClient } from "alepha/react";
7
- import { useI18n } from "alepha/react/i18n";
8
-
9
- //#region ../../src/admin/components/notifications/AdminNotifications.tsx
10
- const AdminNotifications = () => {
11
- const client = useClient();
12
- const { l } = useI18n();
13
- const filters = t.object({
14
- type: t.optional(t.enum(["email", "sms"], { title: "Type" })),
15
- status: t.optional(t.enum([
16
- "pending",
17
- "sent",
18
- "failed"
19
- ], { title: "Status" })),
20
- template: t.optional(t.string({ title: "Template" })),
21
- contact: t.optional(t.string({ title: "Contact" }))
22
- });
23
- const getStatus = (item) => {
24
- if (item.error) return "failed";
25
- if (item.sentAt) return "sent";
26
- return "pending";
27
- };
28
- const getStatusBadge = (item) => {
29
- switch (getStatus(item)) {
30
- case "sent": return /* @__PURE__ */ jsx(Badge, {
31
- size: "sm",
32
- variant: "light",
33
- color: "green",
34
- leftSection: /* @__PURE__ */ jsx(IconCheck, { size: 12 }),
35
- children: "Sent"
36
- });
37
- case "failed": return /* @__PURE__ */ jsx(Tooltip, {
38
- label: item.error?.message,
39
- multiline: true,
40
- maw: 300,
41
- children: /* @__PURE__ */ jsx(Badge, {
42
- size: "sm",
43
- variant: "light",
44
- color: "red",
45
- leftSection: /* @__PURE__ */ jsx(IconAlertCircle, { size: 12 }),
46
- children: "Failed"
47
- })
48
- });
49
- default: return /* @__PURE__ */ jsx(Badge, {
50
- size: "sm",
51
- variant: "light",
52
- color: "yellow",
53
- leftSection: /* @__PURE__ */ jsx(IconClock, { size: 12 }),
54
- children: "Pending"
55
- });
56
- }
57
- };
58
- return /* @__PURE__ */ jsx(Flex, {
59
- flex: 1,
60
- direction: "column",
61
- children: /* @__PURE__ */ jsx(DataTable, {
62
- submitOnInit: true,
63
- defaultSize: 10,
64
- typeFormProps: {
65
- skipSubmitButton: true,
66
- columns: 4
67
- },
68
- tableProps: {
69
- horizontalSpacing: "xs",
70
- verticalSpacing: "xs"
71
- },
72
- onFilterChange: (_key, _value, form) => {
73
- return form.submit();
74
- },
75
- filters,
76
- tableTrProps: (item) => {
77
- if (getStatus(item) === "failed") return { bg: "var(--mantine-color-red-light)" };
78
- return {};
79
- },
80
- items: async (filters) => {
81
- return await client.findNotifications({ query: filters });
82
- },
83
- columns: {
84
- type: {
85
- label: "Type",
86
- fit: true,
87
- value: (item) => /* @__PURE__ */ jsx(Badge, {
88
- size: "sm",
89
- variant: "outline",
90
- leftSection: item.type === "email" ? /* @__PURE__ */ jsx(IconMail, { size: 12 }) : /* @__PURE__ */ jsx(IconMessage, { size: 12 }),
91
- children: item.type.toUpperCase()
92
- })
93
- },
94
- template: {
95
- label: "Template",
96
- value: (item) => /* @__PURE__ */ jsx(Text, {
97
- size: "sm",
98
- fw: 500,
99
- children: item.template
100
- })
101
- },
102
- contact: {
103
- label: "Contact",
104
- value: (item) => /* @__PURE__ */ jsx(Text, {
105
- size: "sm",
106
- ff: "monospace",
107
- children: item.contact
108
- })
109
- },
110
- category: {
111
- label: "Category",
112
- fit: true,
113
- value: (item) => item.category ? /* @__PURE__ */ jsx(Badge, {
114
- size: "xs",
115
- variant: "light",
116
- children: item.category
117
- }) : /* @__PURE__ */ jsx(Text, {
118
- size: "xs",
119
- c: "dimmed",
120
- children: "-"
121
- })
122
- },
123
- status: {
124
- label: "Status",
125
- fit: true,
126
- value: (item) => getStatusBadge(item)
127
- },
128
- sentAt: {
129
- label: "Sent",
130
- fit: true,
131
- value: (item) => /* @__PURE__ */ jsx(Text, {
132
- size: "xs",
133
- c: "dimmed",
134
- children: item.sentAt ? l(item.sentAt, { date: "fromNow" }) : "-"
135
- })
136
- },
137
- createdAt: {
138
- label: "Created",
139
- fit: true,
140
- value: (item) => /* @__PURE__ */ jsx(Text, {
141
- size: "xs",
142
- c: "dimmed",
143
- children: l(item.createdAt, { date: "fromNow" })
144
- })
145
- }
146
- }
147
- })
148
- });
149
- };
150
-
151
- //#endregion
152
- export { AdminNotifications as default };
153
- //# sourceMappingURL=AdminNotifications-DeHJFf6W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminNotifications-DeHJFf6W.js","names":[],"sources":["../../src/admin/components/notifications/AdminNotifications.tsx"],"sourcesContent":["import { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge, Tooltip } from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconCheck,\n IconClock,\n IconMail,\n IconMessage,\n} from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport type {\n AdminNotificationController,\n NotificationEntity,\n} from \"alepha/api/notifications\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\n\nconst AdminNotifications = () => {\n const client = useClient<AdminNotificationController>();\n const { l } = useI18n();\n\n const filters = t.object({\n type: t.optional(\n t.enum([\"email\", \"sms\"], {\n title: \"Type\",\n }),\n ),\n status: t.optional(\n t.enum([\"pending\", \"sent\", \"failed\"], {\n title: \"Status\",\n }),\n ),\n template: t.optional(\n t.string({\n title: \"Template\",\n }),\n ),\n contact: t.optional(\n t.string({\n title: \"Contact\",\n }),\n ),\n });\n\n const getStatus = (item: NotificationEntity) => {\n if (item.error) return \"failed\";\n if (item.sentAt) return \"sent\";\n return \"pending\";\n };\n\n const getStatusBadge = (item: NotificationEntity) => {\n const status = getStatus(item);\n switch (status) {\n case \"sent\":\n return (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color=\"green\"\n leftSection={<IconCheck size={12} />}\n >\n Sent\n </Badge>\n );\n case \"failed\":\n return (\n <Tooltip label={item.error?.message} multiline maw={300}>\n <Badge\n size=\"sm\"\n variant=\"light\"\n color=\"red\"\n leftSection={<IconAlertCircle size={12} />}\n >\n Failed\n </Badge>\n </Tooltip>\n );\n default:\n return (\n <Badge\n size=\"sm\"\n variant=\"light\"\n color=\"yellow\"\n leftSection={<IconClock size={12} />}\n >\n Pending\n </Badge>\n );\n }\n };\n\n return (\n <Flex flex={1} direction=\"column\">\n <DataTable<NotificationEntity, typeof filters>\n submitOnInit\n defaultSize={10}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 4,\n }}\n tableProps={{\n horizontalSpacing: \"xs\",\n verticalSpacing: \"xs\",\n }}\n onFilterChange={(_key, _value, form) => {\n return form.submit();\n }}\n filters={filters}\n tableTrProps={(item) => {\n const status = getStatus(item);\n if (status === \"failed\") {\n return {\n bg: \"var(--mantine-color-red-light)\",\n };\n }\n return {};\n }}\n items={async (filters) => {\n const response = await client.findNotifications({\n query: filters,\n });\n\n return response as Page<NotificationEntity>;\n }}\n columns={{\n type: {\n label: \"Type\",\n fit: true,\n value: (item) => (\n <Badge\n size=\"sm\"\n variant=\"outline\"\n leftSection={\n item.type === \"email\" ? (\n <IconMail size={12} />\n ) : (\n <IconMessage size={12} />\n )\n }\n >\n {item.type.toUpperCase()}\n </Badge>\n ),\n },\n template: {\n label: \"Template\",\n value: (item) => (\n <Text size=\"sm\" fw={500}>\n {item.template}\n </Text>\n ),\n },\n contact: {\n label: \"Contact\",\n value: (item) => (\n <Text size=\"sm\" ff=\"monospace\">\n {item.contact}\n </Text>\n ),\n },\n category: {\n label: \"Category\",\n fit: true,\n value: (item) =>\n item.category ? (\n <Badge size=\"xs\" variant=\"light\">\n {item.category}\n </Badge>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n -\n </Text>\n ),\n },\n status: {\n label: \"Status\",\n fit: true,\n value: (item) => getStatusBadge(item),\n },\n sentAt: {\n label: \"Sent\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\">\n {item.sentAt ? l(item.sentAt, { date: \"fromNow\" }) : \"-\"}\n </Text>\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 AdminNotifications;\n"],"mappings":"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"}
@@ -1,204 +0,0 @@
1
- import { DataTable, Flex, Text } from "@alepha/ui";
2
- import { Badge, Tooltip } from "@mantine/core";
3
- import {
4
- IconAlertCircle,
5
- IconCheck,
6
- IconClock,
7
- IconMail,
8
- IconMessage,
9
- } from "@tabler/icons-react";
10
- import { type Page, t } from "alepha";
11
- import type {
12
- AdminNotificationController,
13
- NotificationEntity,
14
- } from "alepha/api/notifications";
15
- import { useClient } from "alepha/react";
16
- import { useI18n } from "alepha/react/i18n";
17
-
18
- const AdminNotifications = () => {
19
- const client = useClient<AdminNotificationController>();
20
- const { l } = useI18n();
21
-
22
- const filters = t.object({
23
- type: t.optional(
24
- t.enum(["email", "sms"], {
25
- title: "Type",
26
- }),
27
- ),
28
- status: t.optional(
29
- t.enum(["pending", "sent", "failed"], {
30
- title: "Status",
31
- }),
32
- ),
33
- template: t.optional(
34
- t.string({
35
- title: "Template",
36
- }),
37
- ),
38
- contact: t.optional(
39
- t.string({
40
- title: "Contact",
41
- }),
42
- ),
43
- });
44
-
45
- const getStatus = (item: NotificationEntity) => {
46
- if (item.error) return "failed";
47
- if (item.sentAt) return "sent";
48
- return "pending";
49
- };
50
-
51
- const getStatusBadge = (item: NotificationEntity) => {
52
- const status = getStatus(item);
53
- switch (status) {
54
- case "sent":
55
- return (
56
- <Badge
57
- size="sm"
58
- variant="light"
59
- color="green"
60
- leftSection={<IconCheck size={12} />}
61
- >
62
- Sent
63
- </Badge>
64
- );
65
- case "failed":
66
- return (
67
- <Tooltip label={item.error?.message} multiline maw={300}>
68
- <Badge
69
- size="sm"
70
- variant="light"
71
- color="red"
72
- leftSection={<IconAlertCircle size={12} />}
73
- >
74
- Failed
75
- </Badge>
76
- </Tooltip>
77
- );
78
- default:
79
- return (
80
- <Badge
81
- size="sm"
82
- variant="light"
83
- color="yellow"
84
- leftSection={<IconClock size={12} />}
85
- >
86
- Pending
87
- </Badge>
88
- );
89
- }
90
- };
91
-
92
- return (
93
- <Flex flex={1} direction="column">
94
- <DataTable<NotificationEntity, typeof filters>
95
- submitOnInit
96
- defaultSize={10}
97
- typeFormProps={{
98
- skipSubmitButton: true,
99
- columns: 4,
100
- }}
101
- tableProps={{
102
- horizontalSpacing: "xs",
103
- verticalSpacing: "xs",
104
- }}
105
- onFilterChange={(_key, _value, form) => {
106
- return form.submit();
107
- }}
108
- filters={filters}
109
- tableTrProps={(item) => {
110
- const status = getStatus(item);
111
- if (status === "failed") {
112
- return {
113
- bg: "var(--mantine-color-red-light)",
114
- };
115
- }
116
- return {};
117
- }}
118
- items={async (filters) => {
119
- const response = await client.findNotifications({
120
- query: filters,
121
- });
122
-
123
- return response as Page<NotificationEntity>;
124
- }}
125
- columns={{
126
- type: {
127
- label: "Type",
128
- fit: true,
129
- value: (item) => (
130
- <Badge
131
- size="sm"
132
- variant="outline"
133
- leftSection={
134
- item.type === "email" ? (
135
- <IconMail size={12} />
136
- ) : (
137
- <IconMessage size={12} />
138
- )
139
- }
140
- >
141
- {item.type.toUpperCase()}
142
- </Badge>
143
- ),
144
- },
145
- template: {
146
- label: "Template",
147
- value: (item) => (
148
- <Text size="sm" fw={500}>
149
- {item.template}
150
- </Text>
151
- ),
152
- },
153
- contact: {
154
- label: "Contact",
155
- value: (item) => (
156
- <Text size="sm" ff="monospace">
157
- {item.contact}
158
- </Text>
159
- ),
160
- },
161
- category: {
162
- label: "Category",
163
- fit: true,
164
- value: (item) =>
165
- item.category ? (
166
- <Badge size="xs" variant="light">
167
- {item.category}
168
- </Badge>
169
- ) : (
170
- <Text size="xs" c="dimmed">
171
- -
172
- </Text>
173
- ),
174
- },
175
- status: {
176
- label: "Status",
177
- fit: true,
178
- value: (item) => getStatusBadge(item),
179
- },
180
- sentAt: {
181
- label: "Sent",
182
- fit: true,
183
- value: (item) => (
184
- <Text size="xs" c="dimmed">
185
- {item.sentAt ? l(item.sentAt, { date: "fromNow" }) : "-"}
186
- </Text>
187
- ),
188
- },
189
- createdAt: {
190
- label: "Created",
191
- fit: true,
192
- value: (item) => (
193
- <Text size="xs" c="dimmed">
194
- {l(item.createdAt, { date: "fromNow" })}
195
- </Text>
196
- ),
197
- },
198
- }}
199
- />
200
- </Flex>
201
- );
202
- };
203
-
204
- export default AdminNotifications;