@burdenoff/microfe-auth 2026.830.1 → 2026.830.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.
- package/dist/auth/AuthRoot.js +43 -41
- package/dist/auth/AuthRoot.js.map +1 -1
- package/dist/auth/components/AuthLayout.js +65 -67
- package/dist/auth/components/AuthLayout.js.map +1 -1
- package/dist/auth/components/CaptchaV2.js +21 -24
- package/dist/auth/components/CaptchaV2.js.map +1 -1
- package/dist/auth/components/ConfirmActionDialog.js +33 -32
- package/dist/auth/components/ConfirmActionDialog.js.map +1 -1
- package/dist/auth/components/profile/UserProfileMenu.js +44 -46
- package/dist/auth/components/profile/UserProfileMenu.js.map +1 -1
- package/dist/auth/components/workspace/WorkspaceSelector.js +62 -68
- package/dist/auth/components/workspace/WorkspaceSelector.js.map +1 -1
- package/dist/auth/pages/AuditLogPage.js +65 -68
- package/dist/auth/pages/AuditLogPage.js.map +1 -1
- package/dist/auth/pages/EmailVerifyPage.js +51 -54
- package/dist/auth/pages/EmailVerifyPage.js.map +1 -1
- package/dist/auth/pages/LoginPage.js +223 -225
- package/dist/auth/pages/LoginPage.js.map +1 -1
- package/dist/auth/pages/MagicLinkPage.js +67 -69
- package/dist/auth/pages/MagicLinkPage.js.map +1 -1
- package/dist/auth/pages/MfaSetupPage.js +85 -88
- package/dist/auth/pages/MfaSetupPage.js.map +1 -1
- package/dist/auth/pages/MfaVerifyPage.js +60 -63
- package/dist/auth/pages/MfaVerifyPage.js.map +1 -1
- package/dist/auth/pages/OAuthCallbackPage.js +37 -40
- package/dist/auth/pages/OAuthCallbackPage.js.map +1 -1
- package/dist/auth/pages/PasswordResetPage.js +102 -105
- package/dist/auth/pages/PasswordResetPage.js.map +1 -1
- package/dist/auth/pages/ReactivatePage.js +54 -57
- package/dist/auth/pages/ReactivatePage.js.map +1 -1
- package/dist/auth/pages/RegisterPage.js +171 -174
- package/dist/auth/pages/RegisterPage.js.map +1 -1
- package/dist/auth/pages/SSOClearPage.js +21 -20
- package/dist/auth/pages/SSOClearPage.js.map +1 -1
- package/dist/auth/pages/SSODepositPage.js +27 -26
- package/dist/auth/pages/SSODepositPage.js.map +1 -1
- package/dist/auth/pages/SSORelayCallbackPage.js +19 -18
- package/dist/auth/pages/SSORelayCallbackPage.js.map +1 -1
- package/dist/auth/pages/SecurityPage.js +247 -250
- package/dist/auth/pages/SecurityPage.js.map +1 -1
- package/dist/auth/pages/SessionsPage.js +95 -98
- package/dist/auth/pages/SessionsPage.js.map +1 -1
- package/dist/auth/pages/SsoCallbackPage.js +53 -56
- package/dist/auth/pages/SsoCallbackPage.js.map +1 -1
- package/dist/auth/pages/SsoConfigPage.js +296 -299
- package/dist/auth/pages/SsoConfigPage.js.map +1 -1
- package/dist/auth/pages/SsoLoginPage.js +65 -68
- package/dist/auth/pages/SsoLoginPage.js.map +1 -1
- package/dist/auth/pages/UserDetailsPage.js +124 -127
- package/dist/auth/pages/UserDetailsPage.js.map +1 -1
- package/dist/auth/pages/UserProfilePage.js +171 -174
- package/dist/auth/pages/UserProfilePage.js.map +1 -1
- package/dist/auth/pages/UsersPage.js +322 -325
- package/dist/auth/pages/UsersPage.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/shared/hooks/index.d.ts +1 -6
- package/dist/shared/hooks/useTr.d.ts +16 -0
- package/dist/shared/hooks/useTr.js +14 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- package/dist/translations/en.d.ts +806 -248
- package/dist/translations/en.js +870 -0
- package/dist/translations/en.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
import { useAuthStore as e } from "../store/authStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { useTr as t } from "../../shared/hooks/useTr.js";
|
|
3
|
+
import { AlertIcon as n, SpinnerIcon as r } from "../components/AuthIcons.js";
|
|
4
|
+
import { useUserOperations as i } from "../hooks/useUserOperations.js";
|
|
5
|
+
import { useAuthPermissions as a } from "../hooks/useAuthPermissions.js";
|
|
6
|
+
import { ConfirmActionDialog as o } from "../components/ConfirmActionDialog.js";
|
|
7
|
+
import { nativeImpact as s, nativeNotify as c } from "../../utils/nativeBridge.js";
|
|
8
|
+
import { useCallback as ee, useEffect as te, useId as l, useState as u } from "react";
|
|
8
9
|
import { useNavigate as ne } from "react-router";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { EmphasisPanel as ie, IllustratedEmptyState as m, NextSteps as ae, PagePurpose as oe } from "@burdenoff/fe-libs/ui";
|
|
10
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
11
|
+
import { Button as m } from "@burdenoff/fe-libs/button";
|
|
12
|
+
import { EmphasisPanel as re, IllustratedEmptyState as h, NextSteps as ie, PagePurpose as ae } from "@burdenoff/fe-libs/ui";
|
|
13
13
|
//#region src/auth/pages/UsersPage.tsx
|
|
14
|
-
var
|
|
14
|
+
var g = [
|
|
15
15
|
"TENANT_ADMIN",
|
|
16
16
|
"ORG_ADMIN",
|
|
17
17
|
"WORKSPACE_ADMIN",
|
|
18
18
|
"MEMBER",
|
|
19
19
|
"GUEST"
|
|
20
|
-
],
|
|
20
|
+
], _ = [
|
|
21
21
|
"ACTIVE",
|
|
22
22
|
"INACTIVE",
|
|
23
23
|
"SUSPENDED",
|
|
24
24
|
"DELETED"
|
|
25
25
|
];
|
|
26
|
-
function
|
|
27
|
-
let
|
|
28
|
-
let n = se(e);
|
|
29
|
-
return n === e ? t : n;
|
|
30
|
-
}, y = e((e) => e.isAuthenticated), ce = e((e) => e.user), { canViewUsers: le, canUpdateUsers: ue, canDeleteUsers: b, isLoading: de } = i(), { listUsers: x, updateUser: fe, deleteUser: pe, hardDeleteUser: me, isLoading: S } = r(), C = c(), w = c(), T = c(), E = c(), he = c(), [D, O] = l(!1), k = async () => {
|
|
26
|
+
function v() {
|
|
27
|
+
let v = t(), oe = ne(), y = e((e) => e.isAuthenticated), se = e((e) => e.user), { canViewUsers: ce, canUpdateUsers: le, canDeleteUsers: b, isLoading: ue } = a(), { listUsers: x, updateUser: de, deleteUser: fe, hardDeleteUser: pe, isLoading: S } = i(), C = l(), w = l(), T = l(), E = l(), me = l(), [D, O] = u(!1), k = async () => {
|
|
31
28
|
O(!0);
|
|
32
29
|
try {
|
|
33
30
|
let e = {};
|
|
34
|
-
|
|
31
|
+
G && (e.search = G), K && (e.role = K), q && (e.status = q);
|
|
35
32
|
let t = (await x(e, {
|
|
36
33
|
offset: 0,
|
|
37
34
|
limit: 1e4
|
|
@@ -68,11 +65,11 @@ function _() {
|
|
|
68
65
|
].join(","))], a = new Blob([i.join("\n")], { type: "text/csv;charset=utf-8;" }), o = URL.createObjectURL(a), s = document.createElement("a");
|
|
69
66
|
s.href = o, s.download = `users-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.csv`, s.click(), URL.revokeObjectURL(o);
|
|
70
67
|
} catch (e) {
|
|
71
|
-
|
|
68
|
+
z(e instanceof Error ? e.message : "Failed to export users");
|
|
72
69
|
} finally {
|
|
73
70
|
O(!1);
|
|
74
71
|
}
|
|
75
|
-
}, [A,
|
|
72
|
+
}, [A, he] = u([]), [j, ge] = u(0), [_e, ve] = u(!1), [M, N] = u("list"), [P, F] = u(null), [I, L] = u({
|
|
76
73
|
username: "",
|
|
77
74
|
firstName: "",
|
|
78
75
|
lastName: "",
|
|
@@ -81,34 +78,34 @@ function _() {
|
|
|
81
78
|
role: "MEMBER",
|
|
82
79
|
status: "ACTIVE",
|
|
83
80
|
emailVerified: !1
|
|
84
|
-
}), [
|
|
81
|
+
}), [R, z] = u(null), [ye, B] = u(!1), [V, H] = u(null), [U, W] = u(null), [G, be] = u(""), [K, xe] = u(""), [q, Se] = u(""), [J, Y] = u(0), X = ee(async () => {
|
|
85
82
|
if (y) try {
|
|
86
|
-
|
|
83
|
+
B(!1);
|
|
87
84
|
let e = {};
|
|
88
|
-
|
|
85
|
+
G && (e.search = G), K && (e.role = K), q && (e.status = q);
|
|
89
86
|
let t = await x(e, {
|
|
90
|
-
offset:
|
|
87
|
+
offset: J * 10,
|
|
91
88
|
limit: 10
|
|
92
89
|
});
|
|
93
|
-
|
|
90
|
+
he(t.users), ge(t.totalCount), ve(t.hasMore), z(null);
|
|
94
91
|
} catch (e) {
|
|
95
92
|
if (e instanceof Error && (e.name === "AbortError" || e.message.includes("aborted"))) return;
|
|
96
93
|
let t = e instanceof Error ? e.message : "Failed to fetch users";
|
|
97
|
-
t.toLowerCase().includes("not authorized") || t.toLowerCase().includes("forbidden") ? (
|
|
94
|
+
t.toLowerCase().includes("not authorized") || t.toLowerCase().includes("forbidden") ? (B(!0), z(null)) : z(t);
|
|
98
95
|
}
|
|
99
96
|
}, [
|
|
100
97
|
x,
|
|
101
|
-
W,
|
|
102
98
|
G,
|
|
103
99
|
K,
|
|
104
100
|
q,
|
|
101
|
+
J,
|
|
105
102
|
y
|
|
106
103
|
]);
|
|
107
104
|
te(() => {
|
|
108
|
-
|
|
109
|
-
}, [
|
|
110
|
-
let
|
|
111
|
-
|
|
105
|
+
X();
|
|
106
|
+
}, [X]);
|
|
107
|
+
let Z = () => {
|
|
108
|
+
L({
|
|
112
109
|
username: "",
|
|
113
110
|
firstName: "",
|
|
114
111
|
lastName: "",
|
|
@@ -117,42 +114,42 @@ function _() {
|
|
|
117
114
|
role: "MEMBER",
|
|
118
115
|
status: "ACTIVE",
|
|
119
116
|
emailVerified: !1
|
|
120
|
-
}),
|
|
121
|
-
},
|
|
122
|
-
if (e.preventDefault(),
|
|
123
|
-
|
|
117
|
+
}), F(null), z(null), H(null);
|
|
118
|
+
}, Ce = async (e) => {
|
|
119
|
+
if (e.preventDefault(), P) {
|
|
120
|
+
z(null);
|
|
124
121
|
try {
|
|
125
|
-
await
|
|
126
|
-
username:
|
|
127
|
-
firstName:
|
|
128
|
-
lastName:
|
|
129
|
-
name:
|
|
130
|
-
phoneNumber:
|
|
131
|
-
role:
|
|
132
|
-
status:
|
|
133
|
-
emailVerified:
|
|
134
|
-
}),
|
|
122
|
+
await de(P.id, {
|
|
123
|
+
username: I.username || void 0,
|
|
124
|
+
firstName: I.firstName || void 0,
|
|
125
|
+
lastName: I.lastName || void 0,
|
|
126
|
+
name: I.name || void 0,
|
|
127
|
+
phoneNumber: I.phoneNumber || void 0,
|
|
128
|
+
role: I.role,
|
|
129
|
+
status: I.status,
|
|
130
|
+
emailVerified: I.emailVerified
|
|
131
|
+
}), H(v("auth.users.updateSuccess", "User updated successfully!")), N("list"), Z(), X();
|
|
135
132
|
} catch (e) {
|
|
136
|
-
|
|
133
|
+
z(e instanceof Error ? e.message : "Failed to update user");
|
|
137
134
|
}
|
|
138
135
|
}
|
|
139
|
-
},
|
|
140
|
-
|
|
136
|
+
}, we = async (e) => {
|
|
137
|
+
s("medium");
|
|
141
138
|
try {
|
|
142
|
-
let t = await
|
|
143
|
-
t.success ? (
|
|
139
|
+
let t = await fe(e.id);
|
|
140
|
+
t.success ? (c("success"), H(v("auth.users.userDeactivated", "User \"{email}\" has been deactivated.").replace("{email}", e.email)), W(null), X()) : (c("error"), z(t.message));
|
|
144
141
|
} catch (e) {
|
|
145
|
-
|
|
142
|
+
c("error"), z(e instanceof Error ? e.message : "Failed to delete user");
|
|
146
143
|
}
|
|
147
|
-
},
|
|
144
|
+
}, Te = async (e) => {
|
|
148
145
|
try {
|
|
149
|
-
let t = await
|
|
150
|
-
t.success ? (
|
|
146
|
+
let t = await pe(e.id);
|
|
147
|
+
t.success ? (H(v("auth.users.userPermanentlyDeleted", "User \"{email}\" has been permanently deleted.").replace("{email}", e.email)), W(null), X()) : z(t.message);
|
|
151
148
|
} catch (e) {
|
|
152
|
-
|
|
149
|
+
z(e instanceof Error ? e.message : "Failed to hard delete user");
|
|
153
150
|
}
|
|
154
|
-
},
|
|
155
|
-
|
|
151
|
+
}, Q = (e) => {
|
|
152
|
+
F(e), L({
|
|
156
153
|
username: e.username || "",
|
|
157
154
|
firstName: e.firstName || "",
|
|
158
155
|
lastName: e.lastName || "",
|
|
@@ -161,26 +158,26 @@ function _() {
|
|
|
161
158
|
role: e.role,
|
|
162
159
|
status: e.status,
|
|
163
160
|
emailVerified: e.emailVerified
|
|
164
|
-
}),
|
|
165
|
-
},
|
|
166
|
-
open:
|
|
161
|
+
}), N("edit"), z(null);
|
|
162
|
+
}, $ = /* @__PURE__ */ f(o, {
|
|
163
|
+
open: U !== null,
|
|
167
164
|
onOpenChange: (e) => {
|
|
168
|
-
e ||
|
|
165
|
+
e || W(null);
|
|
169
166
|
},
|
|
170
|
-
title:
|
|
171
|
-
description:
|
|
172
|
-
confirmText:
|
|
173
|
-
variant:
|
|
167
|
+
title: U?.type === "hard-delete" ? v("auth.users.hardDeleteTitle", "Permanently delete user?") : v("auth.users.deactivateTitle", "Deactivate user?"),
|
|
168
|
+
description: U?.type === "hard-delete" ? U ? v("auth.users.hardDeleteDesc", "This permanently deletes \"{email}\" and cannot be undone.").replace("{email}", U.user.email) : "" : U ? v("auth.users.deactivateDesc", "\"{email}\" will be prevented from signing in until reactivated.").replace("{email}", U.user.email) : "",
|
|
169
|
+
confirmText: U?.type === "hard-delete" ? v("auth.users.hardDeleteConfirm", "Delete permanently") : v("auth.users.deactivateConfirm", "Deactivate user"),
|
|
170
|
+
variant: U?.type === "hard-delete" ? "danger" : "warning",
|
|
174
171
|
onConfirm: async () => {
|
|
175
|
-
if (
|
|
176
|
-
if (
|
|
177
|
-
await
|
|
172
|
+
if (U) {
|
|
173
|
+
if (U.type === "hard-delete") {
|
|
174
|
+
await Te(U.user);
|
|
178
175
|
return;
|
|
179
176
|
}
|
|
180
|
-
await
|
|
177
|
+
await we(U.user);
|
|
181
178
|
}
|
|
182
179
|
}
|
|
183
|
-
}),
|
|
180
|
+
}), Ee = (e) => {
|
|
184
181
|
switch (e) {
|
|
185
182
|
case "SUPER_ADMIN": return "bg-accent-purple-subtle text-accent-purple";
|
|
186
183
|
case "TENANT_ADMIN": return "bg-status-info-bg-subtle text-status-info-text";
|
|
@@ -190,7 +187,7 @@ function _() {
|
|
|
190
187
|
case "GUEST": return "bg-bg-sunken text-text-primary";
|
|
191
188
|
default: return "bg-bg-sunken text-text-primary";
|
|
192
189
|
}
|
|
193
|
-
},
|
|
190
|
+
}, De = (e) => {
|
|
194
191
|
switch (e) {
|
|
195
192
|
case "ACTIVE": return "bg-status-success-bg-subtle text-status-success-text";
|
|
196
193
|
case "INACTIVE": return "bg-status-warning-bg-subtle text-status-warning-text";
|
|
@@ -199,36 +196,36 @@ function _() {
|
|
|
199
196
|
default: return "bg-bg-sunken text-text-primary";
|
|
200
197
|
}
|
|
201
198
|
};
|
|
202
|
-
return y ?
|
|
199
|
+
return y ? ue ? /* @__PURE__ */ f("div", {
|
|
203
200
|
className: "max-w-6xl mx-auto p-6",
|
|
204
|
-
children: /* @__PURE__ */
|
|
201
|
+
children: /* @__PURE__ */ p("div", {
|
|
205
202
|
className: "text-center py-16",
|
|
206
|
-
children: [/* @__PURE__ */
|
|
203
|
+
children: [/* @__PURE__ */ f(r, { className: "size-8 mx-auto text-text-secondary animate-spin" }), /* @__PURE__ */ f("p", {
|
|
207
204
|
className: "mt-4 text-text-secondary",
|
|
208
205
|
children: v("auth.users.loadingPermissions", "Loading permissions...")
|
|
209
206
|
})]
|
|
210
207
|
})
|
|
211
|
-
}) : !
|
|
208
|
+
}) : !ce || ye ? /* @__PURE__ */ f("div", {
|
|
212
209
|
className: "max-w-6xl mx-auto p-6",
|
|
213
|
-
children: /* @__PURE__ */
|
|
210
|
+
children: /* @__PURE__ */ f(h, {
|
|
214
211
|
illustration: "empty-generic",
|
|
215
212
|
title: v("auth.users.adminAccessRequired", "Admin Access Required"),
|
|
216
|
-
description: /* @__PURE__ */
|
|
213
|
+
description: /* @__PURE__ */ p(d, { children: [
|
|
217
214
|
v("auth.users.adminAccessDesc", "You need administrator privileges to view and manage users."),
|
|
218
215
|
" ",
|
|
219
216
|
v("auth.users.requiredRoles", "Required roles: Super Admin, Tenant Admin, or Org Admin")
|
|
220
217
|
] })
|
|
221
218
|
})
|
|
222
|
-
}) :
|
|
219
|
+
}) : M === "list" ? /* @__PURE__ */ p("div", {
|
|
223
220
|
className: "max-w-6xl mx-auto p-6",
|
|
224
221
|
children: [
|
|
225
|
-
|
|
226
|
-
/* @__PURE__ */
|
|
222
|
+
$,
|
|
223
|
+
/* @__PURE__ */ p("div", {
|
|
227
224
|
className: "flex items-center justify-between mb-8",
|
|
228
|
-
children: [/* @__PURE__ */
|
|
225
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
|
|
229
226
|
className: "text-3xl font-semibold text-text-primary",
|
|
230
227
|
children: v("auth.users.title", "Users")
|
|
231
|
-
}), /* @__PURE__ */
|
|
228
|
+
}), /* @__PURE__ */ p("p", {
|
|
232
229
|
className: "text-text-secondary mt-2",
|
|
233
230
|
children: [
|
|
234
231
|
v("auth.users.subtitle", "Manage users in your organization"),
|
|
@@ -238,22 +235,22 @@ function _() {
|
|
|
238
235
|
v("auth.users.paginationUsers", "total"),
|
|
239
236
|
")"
|
|
240
237
|
]
|
|
241
|
-
})] }), /* @__PURE__ */
|
|
238
|
+
})] }), /* @__PURE__ */ f("button", {
|
|
242
239
|
type: "button",
|
|
243
240
|
onClick: () => void k(),
|
|
244
241
|
disabled: D,
|
|
245
242
|
"aria-label": v("auth.users.exportAriaLabel", "Export user list"),
|
|
246
243
|
className: "flex items-center gap-2 px-4 py-2.5 rounded-xl border border-border-default text-text-primary bg-bg-surface hover:bg-bg-sunken disabled:opacity-50 disabled:cursor-not-allowed transition-colors font-medium",
|
|
247
|
-
children: D ? /* @__PURE__ */
|
|
244
|
+
children: D ? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(r, {
|
|
248
245
|
className: "size-4 animate-spin",
|
|
249
246
|
"aria-hidden": "true"
|
|
250
|
-
}), v("auth.users.exporting", "Exporting...")] }) : /* @__PURE__ */
|
|
247
|
+
}), v("auth.users.exporting", "Exporting...")] }) : /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("svg", {
|
|
251
248
|
className: "size-4",
|
|
252
249
|
fill: "none",
|
|
253
250
|
viewBox: "0 0 24 24",
|
|
254
251
|
stroke: "currentColor",
|
|
255
252
|
"aria-hidden": "true",
|
|
256
|
-
children: /* @__PURE__ */
|
|
253
|
+
children: /* @__PURE__ */ f("path", {
|
|
257
254
|
strokeLinecap: "round",
|
|
258
255
|
strokeLinejoin: "round",
|
|
259
256
|
strokeWidth: 2,
|
|
@@ -262,130 +259,130 @@ function _() {
|
|
|
262
259
|
}), v("auth.users.export", "Export")] })
|
|
263
260
|
})]
|
|
264
261
|
}),
|
|
265
|
-
/* @__PURE__ */
|
|
262
|
+
/* @__PURE__ */ f(ae, {
|
|
266
263
|
className: "mb-6",
|
|
267
264
|
children: v("auth.users.purpose", "Manage everyone with access to your organization. Search and filter accounts, review their role and status, edit details, or deactivate people who should no longer have access.")
|
|
268
265
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ p(re, {
|
|
270
267
|
className: "mb-6",
|
|
271
268
|
children: [
|
|
272
|
-
/* @__PURE__ */
|
|
269
|
+
/* @__PURE__ */ f("p", {
|
|
273
270
|
className: "text-sm font-medium text-text-secondary",
|
|
274
271
|
children: v("auth.users.summaryLabel", "People in this organization")
|
|
275
272
|
}),
|
|
276
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ f("p", {
|
|
277
274
|
className: "mt-1 text-3xl font-semibold text-text-primary",
|
|
278
275
|
children: j
|
|
279
276
|
}),
|
|
280
|
-
/* @__PURE__ */
|
|
277
|
+
/* @__PURE__ */ f("p", {
|
|
281
278
|
className: "mt-1 text-sm text-text-secondary",
|
|
282
279
|
children: v("auth.users.summaryHint", "Use the filters below to find a specific person or role.")
|
|
283
280
|
})
|
|
284
281
|
]
|
|
285
282
|
}),
|
|
286
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ f("div", {
|
|
287
284
|
"aria-live": "polite",
|
|
288
285
|
"aria-atomic": "true",
|
|
289
286
|
className: "sr-only",
|
|
290
|
-
children:
|
|
287
|
+
children: V
|
|
291
288
|
}),
|
|
292
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ f("div", {
|
|
293
290
|
role: "alert",
|
|
294
291
|
"aria-live": "assertive",
|
|
295
292
|
"aria-atomic": "true",
|
|
296
293
|
className: "sr-only",
|
|
297
|
-
children:
|
|
294
|
+
children: R
|
|
298
295
|
}),
|
|
299
|
-
|
|
300
|
-
id:
|
|
296
|
+
V && /* @__PURE__ */ p("output", {
|
|
297
|
+
id: me,
|
|
301
298
|
className: "block mb-6 p-4 rounded-xl bg-status-success-bg-subtle border border-status-success-border",
|
|
302
|
-
children: [/* @__PURE__ */
|
|
299
|
+
children: [/* @__PURE__ */ f("p", {
|
|
303
300
|
className: "text-status-success-text",
|
|
304
|
-
children:
|
|
305
|
-
}), /* @__PURE__ */
|
|
301
|
+
children: V
|
|
302
|
+
}), /* @__PURE__ */ f("button", {
|
|
306
303
|
type: "button",
|
|
307
|
-
onClick: () =>
|
|
304
|
+
onClick: () => H(null),
|
|
308
305
|
className: "mt-2 text-sm text-status-success-text hover:underline",
|
|
309
306
|
children: v("auth.users.dismiss", "Dismiss")
|
|
310
307
|
})]
|
|
311
308
|
}),
|
|
312
|
-
|
|
309
|
+
R && /* @__PURE__ */ p("div", {
|
|
313
310
|
id: E,
|
|
314
311
|
role: "alert",
|
|
315
312
|
className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-error-bg-subtle border border-status-error-border",
|
|
316
|
-
children: [/* @__PURE__ */
|
|
313
|
+
children: [/* @__PURE__ */ f(n, {
|
|
317
314
|
className: "size-5 text-status-error-text flex-shrink-0 mt-0.5",
|
|
318
315
|
"aria-hidden": "true"
|
|
319
|
-
}), /* @__PURE__ */
|
|
316
|
+
}), /* @__PURE__ */ p("div", {
|
|
320
317
|
className: "flex-1",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
318
|
+
children: [/* @__PURE__ */ f("p", {
|
|
322
319
|
className: "text-sm text-status-error-text",
|
|
323
|
-
children:
|
|
324
|
-
}), /* @__PURE__ */
|
|
320
|
+
children: R
|
|
321
|
+
}), /* @__PURE__ */ f("button", {
|
|
325
322
|
type: "button",
|
|
326
|
-
onClick: () =>
|
|
323
|
+
onClick: () => z(null),
|
|
327
324
|
className: "mt-2 text-sm text-status-error-text hover:underline",
|
|
328
325
|
children: v("auth.users.dismiss", "Dismiss")
|
|
329
326
|
})]
|
|
330
327
|
})]
|
|
331
328
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ f("div", {
|
|
333
330
|
className: "mb-6 p-4 rounded-xl border border-border-subtle bg-bg-surface",
|
|
334
|
-
children: /* @__PURE__ */
|
|
331
|
+
children: /* @__PURE__ */ p("div", {
|
|
335
332
|
className: "flex flex-wrap gap-4 items-end",
|
|
336
333
|
children: [
|
|
337
|
-
/* @__PURE__ */
|
|
334
|
+
/* @__PURE__ */ p("div", {
|
|
338
335
|
className: "flex-1 min-w-[200px]",
|
|
339
|
-
children: [/* @__PURE__ */
|
|
336
|
+
children: [/* @__PURE__ */ f("label", {
|
|
340
337
|
htmlFor: C,
|
|
341
338
|
className: "sr-only",
|
|
342
339
|
children: v("auth.users.searchLabel", "Search users")
|
|
343
|
-
}), /* @__PURE__ */
|
|
340
|
+
}), /* @__PURE__ */ f("input", {
|
|
344
341
|
id: C,
|
|
345
342
|
type: "search",
|
|
346
343
|
"aria-label": v("auth.users.searchLabel", "Search users"),
|
|
347
344
|
placeholder: v("auth.users.searchPlaceholder", "Search by email, username, or name..."),
|
|
348
|
-
value:
|
|
345
|
+
value: G,
|
|
349
346
|
onChange: (e) => {
|
|
350
|
-
|
|
347
|
+
be(e.target.value), Y(0);
|
|
351
348
|
},
|
|
352
349
|
className: "w-full px-4 py-2.5 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
353
350
|
})]
|
|
354
351
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
356
353
|
htmlFor: w,
|
|
357
354
|
className: "sr-only",
|
|
358
355
|
children: v("auth.users.filterRoleLabel", "Filter by role")
|
|
359
|
-
}), /* @__PURE__ */
|
|
356
|
+
}), /* @__PURE__ */ p("select", {
|
|
360
357
|
id: w,
|
|
361
|
-
value:
|
|
358
|
+
value: K,
|
|
362
359
|
onChange: (e) => {
|
|
363
|
-
|
|
360
|
+
xe(e.target.value), Y(0);
|
|
364
361
|
},
|
|
365
362
|
className: "px-4 py-2.5 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all",
|
|
366
|
-
children: [/* @__PURE__ */
|
|
363
|
+
children: [/* @__PURE__ */ f("option", {
|
|
367
364
|
value: "",
|
|
368
365
|
children: v("auth.users.allRoles", "All Roles")
|
|
369
|
-
}),
|
|
366
|
+
}), g.map((e) => /* @__PURE__ */ f("option", {
|
|
370
367
|
value: e,
|
|
371
368
|
children: e.replace("_", " ")
|
|
372
369
|
}, e))]
|
|
373
370
|
})] }),
|
|
374
|
-
/* @__PURE__ */
|
|
371
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
375
372
|
htmlFor: T,
|
|
376
373
|
className: "sr-only",
|
|
377
374
|
children: v("auth.users.filterStatusLabel", "Filter by status")
|
|
378
|
-
}), /* @__PURE__ */
|
|
375
|
+
}), /* @__PURE__ */ p("select", {
|
|
379
376
|
id: T,
|
|
380
|
-
value:
|
|
377
|
+
value: q,
|
|
381
378
|
onChange: (e) => {
|
|
382
|
-
|
|
379
|
+
Se(e.target.value), Y(0);
|
|
383
380
|
},
|
|
384
381
|
className: "px-4 py-2.5 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all",
|
|
385
|
-
children: [/* @__PURE__ */
|
|
382
|
+
children: [/* @__PURE__ */ f("option", {
|
|
386
383
|
value: "",
|
|
387
384
|
children: v("auth.users.allStatuses", "All Statuses")
|
|
388
|
-
}),
|
|
385
|
+
}), _.map((e) => /* @__PURE__ */ f("option", {
|
|
389
386
|
value: e,
|
|
390
387
|
children: e
|
|
391
388
|
}, e))]
|
|
@@ -393,159 +390,159 @@ function _() {
|
|
|
393
390
|
]
|
|
394
391
|
})
|
|
395
392
|
}),
|
|
396
|
-
S ? /* @__PURE__ */
|
|
393
|
+
S ? /* @__PURE__ */ p("div", {
|
|
397
394
|
"aria-live": "polite",
|
|
398
395
|
"aria-busy": "true",
|
|
399
396
|
className: "flex items-center justify-center py-12",
|
|
400
|
-
children: [/* @__PURE__ */
|
|
397
|
+
children: [/* @__PURE__ */ f(r, {
|
|
401
398
|
className: "size-8 text-text-link animate-spin",
|
|
402
399
|
"aria-hidden": "true"
|
|
403
|
-
}), /* @__PURE__ */
|
|
400
|
+
}), /* @__PURE__ */ f("span", {
|
|
404
401
|
className: "ml-3 text-text-secondary",
|
|
405
402
|
children: v("auth.users.loadingUsers", "Loading users...")
|
|
406
403
|
})]
|
|
407
|
-
}) : A.length === 0 ? /* @__PURE__ */
|
|
408
|
-
illustration:
|
|
404
|
+
}) : A.length === 0 ? /* @__PURE__ */ f(h, {
|
|
405
|
+
illustration: G || K || q ? "empty-search" : "empty-people",
|
|
409
406
|
title: v("auth.users.noUsersFound", "No users found"),
|
|
410
|
-
description:
|
|
411
|
-
}) : /* @__PURE__ */
|
|
412
|
-
/* @__PURE__ */
|
|
407
|
+
description: G || K || q ? v("auth.users.noUsersFilteredDesc", "No users match your current search or filters. Try clearing them to see everyone.") : v("auth.users.noUsersDesc", "Once people join your organization they'll show up here for you to manage.")
|
|
408
|
+
}) : /* @__PURE__ */ p(d, { children: [
|
|
409
|
+
/* @__PURE__ */ f("div", {
|
|
413
410
|
className: "rounded-xl border border-border-subtle bg-bg-surface overflow-hidden shadow-sm",
|
|
414
|
-
children: /* @__PURE__ */
|
|
411
|
+
children: /* @__PURE__ */ f("div", {
|
|
415
412
|
className: "overflow-x-auto",
|
|
416
|
-
children: /* @__PURE__ */
|
|
413
|
+
children: /* @__PURE__ */ p("table", {
|
|
417
414
|
className: "w-full min-w-[800px]",
|
|
418
415
|
"aria-label": v("auth.users.tableAriaLabel", "Users table"),
|
|
419
|
-
children: [/* @__PURE__ */
|
|
416
|
+
children: [/* @__PURE__ */ f("thead", { children: /* @__PURE__ */ p("tr", {
|
|
420
417
|
className: "border-b border-border-subtle bg-bg-canvas",
|
|
421
418
|
children: [
|
|
422
|
-
/* @__PURE__ */
|
|
419
|
+
/* @__PURE__ */ f("th", {
|
|
423
420
|
scope: "col",
|
|
424
421
|
className: "text-left p-4 text-sm font-medium text-text-secondary w-[280px]",
|
|
425
422
|
children: v("auth.users.columnUser", "User")
|
|
426
423
|
}),
|
|
427
|
-
/* @__PURE__ */
|
|
424
|
+
/* @__PURE__ */ f("th", {
|
|
428
425
|
scope: "col",
|
|
429
426
|
className: "text-left p-4 text-sm font-medium text-text-secondary w-[130px]",
|
|
430
427
|
children: v("auth.users.columnRole", "Role")
|
|
431
428
|
}),
|
|
432
|
-
/* @__PURE__ */
|
|
429
|
+
/* @__PURE__ */ f("th", {
|
|
433
430
|
scope: "col",
|
|
434
431
|
className: "text-left p-4 text-sm font-medium text-text-secondary w-[100px]",
|
|
435
432
|
children: v("auth.users.columnStatus", "Status")
|
|
436
433
|
}),
|
|
437
|
-
/* @__PURE__ */
|
|
434
|
+
/* @__PURE__ */ f("th", {
|
|
438
435
|
scope: "col",
|
|
439
436
|
className: "text-left p-4 text-sm font-medium text-text-secondary w-[80px]",
|
|
440
437
|
children: v("auth.users.columnVerified", "Verified")
|
|
441
438
|
}),
|
|
442
|
-
/* @__PURE__ */
|
|
439
|
+
/* @__PURE__ */ f("th", {
|
|
443
440
|
scope: "col",
|
|
444
441
|
className: "text-left p-4 text-sm font-medium text-text-secondary w-[100px]",
|
|
445
442
|
children: v("auth.users.columnLastLogin", "Last Login")
|
|
446
443
|
}),
|
|
447
|
-
/* @__PURE__ */
|
|
444
|
+
/* @__PURE__ */ f("th", {
|
|
448
445
|
scope: "col",
|
|
449
446
|
className: "text-right p-4 text-sm font-medium text-text-secondary w-[180px]",
|
|
450
447
|
children: v("auth.users.columnActions", "Actions")
|
|
451
448
|
})
|
|
452
449
|
]
|
|
453
|
-
}) }), /* @__PURE__ */
|
|
450
|
+
}) }), /* @__PURE__ */ f("tbody", { children: A.map((e) => /* @__PURE__ */ p("tr", {
|
|
454
451
|
className: "border-b border-border-subtle last:border-b-0 hover:bg-bg-sunken/50 transition-colors",
|
|
455
452
|
children: [
|
|
456
|
-
/* @__PURE__ */
|
|
453
|
+
/* @__PURE__ */ f("td", {
|
|
457
454
|
className: "p-4",
|
|
458
|
-
children: /* @__PURE__ */
|
|
455
|
+
children: /* @__PURE__ */ p("div", {
|
|
459
456
|
className: "flex items-center gap-3 min-w-0",
|
|
460
|
-
children: [/* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ f("div", {
|
|
461
458
|
className: "auth-brand-badge flex size-10 shrink-0 items-center justify-center rounded-full font-medium",
|
|
462
459
|
children: (e.name || e.username || e.email).charAt(0).toUpperCase()
|
|
463
|
-
}), /* @__PURE__ */
|
|
460
|
+
}), /* @__PURE__ */ p("div", {
|
|
464
461
|
className: "min-w-0 flex-1",
|
|
465
|
-
children: [/* @__PURE__ */
|
|
462
|
+
children: [/* @__PURE__ */ f("p", {
|
|
466
463
|
className: "font-medium text-text-primary truncate",
|
|
467
464
|
children: e.name || e.username
|
|
468
|
-
}), /* @__PURE__ */
|
|
465
|
+
}), /* @__PURE__ */ f("p", {
|
|
469
466
|
className: "text-sm text-text-secondary truncate",
|
|
470
467
|
children: e.email
|
|
471
468
|
})]
|
|
472
469
|
})]
|
|
473
470
|
})
|
|
474
471
|
}),
|
|
475
|
-
/* @__PURE__ */
|
|
472
|
+
/* @__PURE__ */ f("td", {
|
|
476
473
|
className: "p-4",
|
|
477
|
-
children: /* @__PURE__ */
|
|
478
|
-
className: `inline-block px-2.5 py-1 rounded-full text-xs font-medium whitespace-nowrap ${
|
|
474
|
+
children: /* @__PURE__ */ f("span", {
|
|
475
|
+
className: `inline-block px-2.5 py-1 rounded-full text-xs font-medium whitespace-nowrap ${Ee(e.role)}`,
|
|
479
476
|
children: e.role.replace("_", " ")
|
|
480
477
|
})
|
|
481
478
|
}),
|
|
482
|
-
/* @__PURE__ */
|
|
479
|
+
/* @__PURE__ */ f("td", {
|
|
483
480
|
className: "p-4",
|
|
484
|
-
children: /* @__PURE__ */
|
|
485
|
-
className: `inline-block px-2.5 py-1 rounded-full text-xs font-medium whitespace-nowrap ${
|
|
481
|
+
children: /* @__PURE__ */ f("span", {
|
|
482
|
+
className: `inline-block px-2.5 py-1 rounded-full text-xs font-medium whitespace-nowrap ${De(e.status)}`,
|
|
486
483
|
children: e.status
|
|
487
484
|
})
|
|
488
485
|
}),
|
|
489
|
-
/* @__PURE__ */
|
|
486
|
+
/* @__PURE__ */ f("td", {
|
|
490
487
|
className: "p-4",
|
|
491
|
-
children: e.emailVerified ? /* @__PURE__ */
|
|
488
|
+
children: e.emailVerified ? /* @__PURE__ */ p("span", {
|
|
492
489
|
className: "inline-flex items-center gap-1 text-status-success-text whitespace-nowrap",
|
|
493
|
-
children: [/* @__PURE__ */
|
|
490
|
+
children: [/* @__PURE__ */ f("svg", {
|
|
494
491
|
className: "size-4 flex-shrink-0",
|
|
495
492
|
fill: "currentColor",
|
|
496
493
|
viewBox: "0 0 20 20",
|
|
497
|
-
children: /* @__PURE__ */
|
|
494
|
+
children: /* @__PURE__ */ f("path", {
|
|
498
495
|
fillRule: "evenodd",
|
|
499
496
|
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
|
|
500
497
|
clipRule: "evenodd"
|
|
501
498
|
})
|
|
502
|
-
}), /* @__PURE__ */
|
|
499
|
+
}), /* @__PURE__ */ f("span", {
|
|
503
500
|
className: "text-sm",
|
|
504
501
|
children: v("auth.users.verifiedYes", "Yes")
|
|
505
502
|
})]
|
|
506
|
-
}) : /* @__PURE__ */
|
|
503
|
+
}) : /* @__PURE__ */ p("span", {
|
|
507
504
|
className: "inline-flex items-center gap-1 text-status-warning-text whitespace-nowrap",
|
|
508
|
-
children: [/* @__PURE__ */
|
|
505
|
+
children: [/* @__PURE__ */ f("svg", {
|
|
509
506
|
className: "size-4 flex-shrink-0",
|
|
510
507
|
fill: "currentColor",
|
|
511
508
|
viewBox: "0 0 20 20",
|
|
512
|
-
children: /* @__PURE__ */
|
|
509
|
+
children: /* @__PURE__ */ f("path", {
|
|
513
510
|
fillRule: "evenodd",
|
|
514
511
|
d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",
|
|
515
512
|
clipRule: "evenodd"
|
|
516
513
|
})
|
|
517
|
-
}), /* @__PURE__ */
|
|
514
|
+
}), /* @__PURE__ */ f("span", {
|
|
518
515
|
className: "text-sm",
|
|
519
516
|
children: v("auth.users.verifiedNo", "No")
|
|
520
517
|
})]
|
|
521
518
|
})
|
|
522
519
|
}),
|
|
523
|
-
/* @__PURE__ */
|
|
520
|
+
/* @__PURE__ */ f("td", {
|
|
524
521
|
className: "p-4 text-sm text-text-secondary whitespace-nowrap",
|
|
525
522
|
children: e.lastLoginAt ? new Date(e.lastLoginAt).toLocaleDateString() : v("auth.users.lastLoginNever", "Never")
|
|
526
523
|
}),
|
|
527
|
-
/* @__PURE__ */
|
|
524
|
+
/* @__PURE__ */ f("td", {
|
|
528
525
|
className: "p-4",
|
|
529
|
-
children: /* @__PURE__ */
|
|
526
|
+
children: /* @__PURE__ */ p("div", {
|
|
530
527
|
className: "flex justify-end gap-1.5 flex-nowrap",
|
|
531
528
|
children: [
|
|
532
|
-
/* @__PURE__ */
|
|
529
|
+
/* @__PURE__ */ f("button", {
|
|
533
530
|
type: "button",
|
|
534
|
-
onClick: () =>
|
|
531
|
+
onClick: () => oe(`/auth/users/${e.id}`),
|
|
535
532
|
"aria-label": `${v("auth.users.actionView", "View")} ${e.name || e.username || e.email}`,
|
|
536
533
|
className: "px-2.5 py-1.5 rounded-lg text-xs font-medium border border-border-default text-text-primary bg-bg-surface hover:bg-bg-sunken transition-colors whitespace-nowrap flex-shrink-0",
|
|
537
534
|
children: v("auth.users.actionView", "View")
|
|
538
535
|
}),
|
|
539
|
-
|
|
536
|
+
le && /* @__PURE__ */ f("button", {
|
|
540
537
|
type: "button",
|
|
541
|
-
onClick: () =>
|
|
538
|
+
onClick: () => Q(e),
|
|
542
539
|
"aria-label": `${v("auth.users.actionEdit", "Edit")} ${e.name || e.username || e.email}`,
|
|
543
540
|
className: "px-2.5 py-1.5 rounded-lg text-xs font-medium border border-status-info-border text-text-link bg-bg-surface hover:bg-status-info-bg-subtle transition-colors whitespace-nowrap flex-shrink-0",
|
|
544
541
|
children: v("auth.users.actionEdit", "Edit")
|
|
545
542
|
}),
|
|
546
|
-
b && e.status !== "DELETED" && /* @__PURE__ */
|
|
543
|
+
b && e.status !== "DELETED" && /* @__PURE__ */ f("button", {
|
|
547
544
|
type: "button",
|
|
548
|
-
onClick: () =>
|
|
545
|
+
onClick: () => W({
|
|
549
546
|
type: "deactivate",
|
|
550
547
|
user: e
|
|
551
548
|
}),
|
|
@@ -561,18 +558,18 @@ function _() {
|
|
|
561
558
|
})
|
|
562
559
|
})
|
|
563
560
|
}),
|
|
564
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ p("div", {
|
|
565
562
|
className: "mt-6 flex items-center justify-between",
|
|
566
|
-
children: [/* @__PURE__ */
|
|
563
|
+
children: [/* @__PURE__ */ p("p", {
|
|
567
564
|
className: "text-sm text-text-secondary",
|
|
568
565
|
children: [
|
|
569
566
|
v("auth.users.showing", "Showing"),
|
|
570
567
|
" ",
|
|
571
|
-
|
|
568
|
+
J * 10 + 1,
|
|
572
569
|
" ",
|
|
573
570
|
v("auth.users.to", "to"),
|
|
574
571
|
" ",
|
|
575
|
-
Math.min((
|
|
572
|
+
Math.min((J + 1) * 10, j),
|
|
576
573
|
" ",
|
|
577
574
|
v("auth.users.of", "of"),
|
|
578
575
|
" ",
|
|
@@ -580,21 +577,21 @@ function _() {
|
|
|
580
577
|
" ",
|
|
581
578
|
v("auth.users.paginationUsers", "users")
|
|
582
579
|
]
|
|
583
|
-
}), /* @__PURE__ */
|
|
580
|
+
}), /* @__PURE__ */ f("nav", {
|
|
584
581
|
"aria-label": v("auth.users.paginationAriaLabel", "User list pagination"),
|
|
585
|
-
children: /* @__PURE__ */
|
|
582
|
+
children: /* @__PURE__ */ p("div", {
|
|
586
583
|
className: "flex gap-2",
|
|
587
|
-
children: [/* @__PURE__ */
|
|
584
|
+
children: [/* @__PURE__ */ f("button", {
|
|
588
585
|
type: "button",
|
|
589
|
-
onClick: () =>
|
|
590
|
-
disabled:
|
|
586
|
+
onClick: () => Y((e) => Math.max(0, e - 1)),
|
|
587
|
+
disabled: J === 0,
|
|
591
588
|
"aria-label": v("auth.users.previousPageAriaLabel", "Go to previous page"),
|
|
592
589
|
className: "px-4 py-2 rounded-lg border border-border-default text-text-primary bg-bg-surface disabled:opacity-50 disabled:cursor-not-allowed hover:bg-bg-sunken transition-colors",
|
|
593
590
|
children: v("auth.users.previousPage", "Previous")
|
|
594
|
-
}), /* @__PURE__ */
|
|
591
|
+
}), /* @__PURE__ */ f("button", {
|
|
595
592
|
type: "button",
|
|
596
|
-
onClick: () =>
|
|
597
|
-
disabled: !
|
|
593
|
+
onClick: () => Y((e) => e + 1),
|
|
594
|
+
disabled: !_e,
|
|
598
595
|
"aria-label": v("auth.users.nextPageAriaLabel", "Go to next page"),
|
|
599
596
|
className: "px-4 py-2 rounded-lg border border-border-default text-text-primary bg-bg-surface disabled:opacity-50 disabled:cursor-not-allowed hover:bg-bg-sunken transition-colors",
|
|
600
597
|
children: v("auth.users.nextPage", "Next")
|
|
@@ -602,7 +599,7 @@ function _() {
|
|
|
602
599
|
})
|
|
603
600
|
})]
|
|
604
601
|
}),
|
|
605
|
-
/* @__PURE__ */
|
|
602
|
+
/* @__PURE__ */ f(ie, {
|
|
606
603
|
className: "mt-8",
|
|
607
604
|
storageKey: "auth-users",
|
|
608
605
|
steps: [{
|
|
@@ -622,22 +619,22 @@ function _() {
|
|
|
622
619
|
})
|
|
623
620
|
] })
|
|
624
621
|
]
|
|
625
|
-
}) :
|
|
622
|
+
}) : M === "view" && P ? /* @__PURE__ */ p("div", {
|
|
626
623
|
className: "max-w-4xl mx-auto p-6",
|
|
627
624
|
children: [
|
|
628
|
-
|
|
629
|
-
/* @__PURE__ */
|
|
625
|
+
$,
|
|
626
|
+
/* @__PURE__ */ p("button", {
|
|
630
627
|
type: "button",
|
|
631
628
|
onClick: () => {
|
|
632
|
-
|
|
629
|
+
N("list"), Z();
|
|
633
630
|
},
|
|
634
631
|
className: "mb-6 flex items-center gap-2 text-text-link hover:underline font-medium",
|
|
635
|
-
children: [/* @__PURE__ */
|
|
632
|
+
children: [/* @__PURE__ */ f("svg", {
|
|
636
633
|
className: "size-4",
|
|
637
634
|
fill: "none",
|
|
638
635
|
viewBox: "0 0 24 24",
|
|
639
636
|
stroke: "currentColor",
|
|
640
|
-
children: /* @__PURE__ */
|
|
637
|
+
children: /* @__PURE__ */ f("path", {
|
|
641
638
|
strokeLinecap: "round",
|
|
642
639
|
strokeLinejoin: "round",
|
|
643
640
|
strokeWidth: 2,
|
|
@@ -645,156 +642,156 @@ function _() {
|
|
|
645
642
|
})
|
|
646
643
|
}), v("auth.users.backToUsers", "Back to Users")]
|
|
647
644
|
}),
|
|
648
|
-
/* @__PURE__ */
|
|
645
|
+
/* @__PURE__ */ p("div", {
|
|
649
646
|
className: "p-6 rounded-xl border border-border-subtle bg-bg-surface shadow-sm",
|
|
650
647
|
children: [
|
|
651
|
-
/* @__PURE__ */
|
|
648
|
+
/* @__PURE__ */ p("div", {
|
|
652
649
|
className: "flex items-center gap-4 mb-8",
|
|
653
|
-
children: [/* @__PURE__ */
|
|
650
|
+
children: [/* @__PURE__ */ f("div", {
|
|
654
651
|
className: "auth-brand-badge flex size-20 items-center justify-center rounded-full text-3xl font-semibold",
|
|
655
|
-
children: (
|
|
656
|
-
}), /* @__PURE__ */
|
|
657
|
-
/* @__PURE__ */
|
|
652
|
+
children: (P.name || P.username || P.email).charAt(0).toUpperCase()
|
|
653
|
+
}), /* @__PURE__ */ p("div", { children: [
|
|
654
|
+
/* @__PURE__ */ f("h1", {
|
|
658
655
|
className: "text-2xl font-semibold text-text-primary",
|
|
659
|
-
children:
|
|
656
|
+
children: P.name || P.username
|
|
660
657
|
}),
|
|
661
|
-
/* @__PURE__ */
|
|
658
|
+
/* @__PURE__ */ f("p", {
|
|
662
659
|
className: "text-text-secondary",
|
|
663
|
-
children:
|
|
660
|
+
children: P.email
|
|
664
661
|
}),
|
|
665
|
-
/* @__PURE__ */
|
|
662
|
+
/* @__PURE__ */ p("div", {
|
|
666
663
|
className: "flex items-center gap-2 mt-2",
|
|
667
|
-
children: [/* @__PURE__ */
|
|
668
|
-
className: `px-2.5 py-1 rounded-full text-xs font-medium ${
|
|
669
|
-
children:
|
|
670
|
-
}), /* @__PURE__ */
|
|
671
|
-
className: `px-2.5 py-1 rounded-full text-xs font-medium ${
|
|
672
|
-
children:
|
|
664
|
+
children: [/* @__PURE__ */ f("span", {
|
|
665
|
+
className: `px-2.5 py-1 rounded-full text-xs font-medium ${Ee(P.role)}`,
|
|
666
|
+
children: P.role.replace("_", " ")
|
|
667
|
+
}), /* @__PURE__ */ f("span", {
|
|
668
|
+
className: `px-2.5 py-1 rounded-full text-xs font-medium ${De(P.status)}`,
|
|
669
|
+
children: P.status
|
|
673
670
|
})]
|
|
674
671
|
})
|
|
675
672
|
] })]
|
|
676
673
|
}),
|
|
677
|
-
/* @__PURE__ */
|
|
674
|
+
/* @__PURE__ */ p("div", {
|
|
678
675
|
className: "grid grid-cols-2 gap-6",
|
|
679
676
|
children: [
|
|
680
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ p("div", {
|
|
681
678
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
682
|
-
children: [/* @__PURE__ */
|
|
679
|
+
children: [/* @__PURE__ */ f("label", {
|
|
683
680
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
684
681
|
children: v("auth.users.viewDetailsUsername", "Username")
|
|
685
|
-
}), /* @__PURE__ */
|
|
682
|
+
}), /* @__PURE__ */ f("p", {
|
|
686
683
|
className: "text-text-primary font-medium",
|
|
687
|
-
children:
|
|
684
|
+
children: P.username
|
|
688
685
|
})]
|
|
689
686
|
}),
|
|
690
|
-
/* @__PURE__ */
|
|
687
|
+
/* @__PURE__ */ p("div", {
|
|
691
688
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
692
|
-
children: [/* @__PURE__ */
|
|
689
|
+
children: [/* @__PURE__ */ f("label", {
|
|
693
690
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
694
691
|
children: v("auth.users.viewDetailsEmail", "Email")
|
|
695
|
-
}), /* @__PURE__ */
|
|
692
|
+
}), /* @__PURE__ */ f("p", {
|
|
696
693
|
className: "text-text-primary font-medium",
|
|
697
|
-
children:
|
|
694
|
+
children: P.email
|
|
698
695
|
})]
|
|
699
696
|
}),
|
|
700
|
-
/* @__PURE__ */
|
|
697
|
+
/* @__PURE__ */ p("div", {
|
|
701
698
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
702
|
-
children: [/* @__PURE__ */
|
|
699
|
+
children: [/* @__PURE__ */ f("label", {
|
|
703
700
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
704
701
|
children: v("auth.users.viewDetailsEmailVerified", "Email Verified")
|
|
705
|
-
}), /* @__PURE__ */
|
|
702
|
+
}), /* @__PURE__ */ f("p", {
|
|
706
703
|
className: "text-text-primary font-medium",
|
|
707
|
-
children:
|
|
704
|
+
children: P.emailVerified ? /* @__PURE__ */ f("span", {
|
|
708
705
|
className: "text-status-success-text",
|
|
709
706
|
children: v("auth.users.verifiedYes", "Yes")
|
|
710
|
-
}) : /* @__PURE__ */
|
|
707
|
+
}) : /* @__PURE__ */ f("span", {
|
|
711
708
|
className: "text-status-warning-text",
|
|
712
709
|
children: v("auth.users.verifiedNo", "No")
|
|
713
710
|
})
|
|
714
711
|
})]
|
|
715
712
|
}),
|
|
716
|
-
/* @__PURE__ */
|
|
713
|
+
/* @__PURE__ */ p("div", {
|
|
717
714
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
718
|
-
children: [/* @__PURE__ */
|
|
715
|
+
children: [/* @__PURE__ */ f("label", {
|
|
719
716
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
720
717
|
children: v("auth.users.viewDetailsMfaEnabled", "MFA Enabled")
|
|
721
|
-
}), /* @__PURE__ */
|
|
718
|
+
}), /* @__PURE__ */ f("p", {
|
|
722
719
|
className: "text-text-primary font-medium",
|
|
723
|
-
children:
|
|
720
|
+
children: P.mfaEnabled ? /* @__PURE__ */ f("span", {
|
|
724
721
|
className: "text-status-success-text",
|
|
725
722
|
children: v("auth.users.verifiedYes", "Yes")
|
|
726
|
-
}) : /* @__PURE__ */
|
|
723
|
+
}) : /* @__PURE__ */ f("span", {
|
|
727
724
|
className: "text-text-secondary",
|
|
728
725
|
children: v("auth.users.verifiedNo", "No")
|
|
729
726
|
})
|
|
730
727
|
})]
|
|
731
728
|
}),
|
|
732
|
-
|
|
729
|
+
P.phoneNumber && /* @__PURE__ */ p("div", {
|
|
733
730
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
734
|
-
children: [/* @__PURE__ */
|
|
731
|
+
children: [/* @__PURE__ */ f("label", {
|
|
735
732
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
736
733
|
children: v("auth.users.viewDetailsPhoneNumber", "Phone Number")
|
|
737
|
-
}), /* @__PURE__ */
|
|
734
|
+
}), /* @__PURE__ */ f("p", {
|
|
738
735
|
className: "text-text-primary font-medium",
|
|
739
|
-
children:
|
|
736
|
+
children: P.phoneNumber
|
|
740
737
|
})]
|
|
741
738
|
}),
|
|
742
|
-
/* @__PURE__ */
|
|
739
|
+
/* @__PURE__ */ p("div", {
|
|
743
740
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
744
|
-
children: [/* @__PURE__ */
|
|
741
|
+
children: [/* @__PURE__ */ f("label", {
|
|
745
742
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
746
743
|
children: v("auth.users.viewDetailsLastLogin", "Last Login")
|
|
747
|
-
}), /* @__PURE__ */
|
|
744
|
+
}), /* @__PURE__ */ f("p", {
|
|
748
745
|
className: "text-text-primary font-medium",
|
|
749
|
-
children:
|
|
746
|
+
children: P.lastLoginAt ? new Date(P.lastLoginAt).toLocaleString() : v("auth.users.lastLoginNever", "Never")
|
|
750
747
|
})]
|
|
751
748
|
}),
|
|
752
|
-
/* @__PURE__ */
|
|
749
|
+
/* @__PURE__ */ p("div", {
|
|
753
750
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
754
|
-
children: [/* @__PURE__ */
|
|
751
|
+
children: [/* @__PURE__ */ f("label", {
|
|
755
752
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
756
753
|
children: v("auth.users.viewDetailsCreated", "Created")
|
|
757
|
-
}), /* @__PURE__ */
|
|
754
|
+
}), /* @__PURE__ */ f("p", {
|
|
758
755
|
className: "text-text-primary font-medium",
|
|
759
|
-
children: new Date(
|
|
756
|
+
children: new Date(P.createdAt).toLocaleString()
|
|
760
757
|
})]
|
|
761
758
|
}),
|
|
762
|
-
/* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ p("div", {
|
|
763
760
|
className: "p-4 rounded-lg bg-bg-canvas/50",
|
|
764
|
-
children: [/* @__PURE__ */
|
|
761
|
+
children: [/* @__PURE__ */ f("label", {
|
|
765
762
|
className: "block text-sm font-medium text-text-secondary mb-1",
|
|
766
763
|
children: v("auth.users.viewDetailsLastUpdated", "Last Updated")
|
|
767
|
-
}), /* @__PURE__ */
|
|
764
|
+
}), /* @__PURE__ */ f("p", {
|
|
768
765
|
className: "text-text-primary font-medium",
|
|
769
|
-
children: new Date(
|
|
766
|
+
children: new Date(P.updatedAt).toLocaleString()
|
|
770
767
|
})]
|
|
771
768
|
})
|
|
772
769
|
]
|
|
773
770
|
}),
|
|
774
|
-
/* @__PURE__ */
|
|
771
|
+
/* @__PURE__ */ p("div", {
|
|
775
772
|
className: "mt-8 pt-6 border-t border-border-subtle flex gap-3",
|
|
776
773
|
children: [
|
|
777
|
-
/* @__PURE__ */
|
|
774
|
+
/* @__PURE__ */ f(m, {
|
|
778
775
|
type: "button",
|
|
779
|
-
onClick: () =>
|
|
776
|
+
onClick: () => Q(P),
|
|
780
777
|
variant: "default",
|
|
781
778
|
className: "font-semibold",
|
|
782
779
|
children: v("auth.users.editUser", "Edit User")
|
|
783
780
|
}),
|
|
784
|
-
|
|
781
|
+
P.status !== "DELETED" && /* @__PURE__ */ f("button", {
|
|
785
782
|
type: "button",
|
|
786
|
-
onClick: () =>
|
|
783
|
+
onClick: () => W({
|
|
787
784
|
type: "deactivate",
|
|
788
|
-
user:
|
|
785
|
+
user: P
|
|
789
786
|
}),
|
|
790
787
|
className: "px-4 py-2.5 rounded-xl border border-status-error-border text-status-error-text font-medium hover:bg-status-error-bg-subtle transition-colors",
|
|
791
788
|
children: v("auth.users.deleteUser", "Delete User")
|
|
792
789
|
}),
|
|
793
|
-
b &&
|
|
790
|
+
b && P.status === "DELETED" && se?.role === "SUPER_ADMIN" && /* @__PURE__ */ f("button", {
|
|
794
791
|
type: "button",
|
|
795
|
-
onClick: () =>
|
|
792
|
+
onClick: () => W({
|
|
796
793
|
type: "hard-delete",
|
|
797
|
-
user:
|
|
794
|
+
user: P
|
|
798
795
|
}),
|
|
799
796
|
className: "px-4 py-2.5 rounded-xl bg-status-error-bg text-white font-medium hover:bg-status-error-bg-hover transition-colors",
|
|
800
797
|
children: v("auth.users.permanentlyDelete", "Permanently Delete")
|
|
@@ -804,22 +801,22 @@ function _() {
|
|
|
804
801
|
]
|
|
805
802
|
})
|
|
806
803
|
]
|
|
807
|
-
}) : /* @__PURE__ */
|
|
804
|
+
}) : /* @__PURE__ */ p("div", {
|
|
808
805
|
className: "max-w-2xl mx-auto p-6",
|
|
809
806
|
children: [
|
|
810
|
-
|
|
811
|
-
/* @__PURE__ */
|
|
807
|
+
$,
|
|
808
|
+
/* @__PURE__ */ p("button", {
|
|
812
809
|
type: "button",
|
|
813
810
|
onClick: () => {
|
|
814
|
-
|
|
811
|
+
N("list"), Z();
|
|
815
812
|
},
|
|
816
813
|
className: "mb-6 flex items-center gap-2 text-text-link hover:underline font-medium",
|
|
817
|
-
children: [/* @__PURE__ */
|
|
814
|
+
children: [/* @__PURE__ */ f("svg", {
|
|
818
815
|
className: "size-4",
|
|
819
816
|
fill: "none",
|
|
820
817
|
viewBox: "0 0 24 24",
|
|
821
818
|
stroke: "currentColor",
|
|
822
|
-
children: /* @__PURE__ */
|
|
819
|
+
children: /* @__PURE__ */ f("path", {
|
|
823
820
|
strokeLinecap: "round",
|
|
824
821
|
strokeLinejoin: "round",
|
|
825
822
|
strokeWidth: 2,
|
|
@@ -827,184 +824,184 @@ function _() {
|
|
|
827
824
|
})
|
|
828
825
|
}), v("auth.users.backToUsers", "Back to Users")]
|
|
829
826
|
}),
|
|
830
|
-
/* @__PURE__ */
|
|
827
|
+
/* @__PURE__ */ p("div", {
|
|
831
828
|
className: "p-6 rounded-xl border border-border-subtle bg-bg-surface shadow-sm",
|
|
832
829
|
children: [
|
|
833
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ f("h1", {
|
|
834
831
|
className: "text-2xl font-semibold text-text-primary mb-2",
|
|
835
832
|
children: v("auth.users.editUser", "Edit User")
|
|
836
833
|
}),
|
|
837
|
-
|
|
834
|
+
P && /* @__PURE__ */ p("p", {
|
|
838
835
|
className: "text-text-secondary mb-6",
|
|
839
836
|
children: [
|
|
840
837
|
v("auth.users.editingUser", "Editing:"),
|
|
841
838
|
" ",
|
|
842
|
-
/* @__PURE__ */
|
|
839
|
+
/* @__PURE__ */ f("strong", { children: P.email })
|
|
843
840
|
]
|
|
844
841
|
}),
|
|
845
|
-
|
|
842
|
+
R && /* @__PURE__ */ p("div", {
|
|
846
843
|
className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-error-bg-subtle border border-status-error-border",
|
|
847
|
-
children: [/* @__PURE__ */
|
|
844
|
+
children: [/* @__PURE__ */ f(n, { className: "size-5 text-status-error-text flex-shrink-0 mt-0.5" }), /* @__PURE__ */ f("div", {
|
|
848
845
|
className: "flex-1",
|
|
849
|
-
children: /* @__PURE__ */
|
|
846
|
+
children: /* @__PURE__ */ f("p", {
|
|
850
847
|
className: "text-sm text-status-error-text",
|
|
851
|
-
children:
|
|
848
|
+
children: R
|
|
852
849
|
})
|
|
853
850
|
})]
|
|
854
851
|
}),
|
|
855
|
-
/* @__PURE__ */
|
|
856
|
-
onSubmit:
|
|
852
|
+
/* @__PURE__ */ p("form", {
|
|
853
|
+
onSubmit: Ce,
|
|
857
854
|
className: "space-y-6",
|
|
858
|
-
"aria-describedby":
|
|
855
|
+
"aria-describedby": R ? E : void 0,
|
|
859
856
|
noValidate: !0,
|
|
860
857
|
children: [
|
|
861
|
-
/* @__PURE__ */
|
|
858
|
+
/* @__PURE__ */ p("div", {
|
|
862
859
|
className: "grid grid-cols-2 gap-4",
|
|
863
|
-
children: [/* @__PURE__ */
|
|
860
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
864
861
|
htmlFor: "edit-username",
|
|
865
862
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
866
863
|
children: v("auth.users.fieldUsername", "Username")
|
|
867
|
-
}), /* @__PURE__ */
|
|
864
|
+
}), /* @__PURE__ */ f("input", {
|
|
868
865
|
id: "edit-username",
|
|
869
866
|
type: "text",
|
|
870
867
|
"aria-label": v("auth.users.fieldUsername", "Username"),
|
|
871
|
-
value:
|
|
872
|
-
onChange: (e) =>
|
|
873
|
-
...
|
|
868
|
+
value: I.username,
|
|
869
|
+
onChange: (e) => L({
|
|
870
|
+
...I,
|
|
874
871
|
username: e.target.value
|
|
875
872
|
}),
|
|
876
873
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
877
|
-
})] }), /* @__PURE__ */
|
|
874
|
+
})] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
878
875
|
htmlFor: "edit-name",
|
|
879
876
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
880
877
|
children: v("auth.users.fieldName", "Name")
|
|
881
|
-
}), /* @__PURE__ */
|
|
878
|
+
}), /* @__PURE__ */ f("input", {
|
|
882
879
|
id: "edit-name",
|
|
883
880
|
type: "text",
|
|
884
881
|
"aria-label": v("auth.users.fieldName", "Name"),
|
|
885
|
-
value:
|
|
886
|
-
onChange: (e) =>
|
|
887
|
-
...
|
|
882
|
+
value: I.name,
|
|
883
|
+
onChange: (e) => L({
|
|
884
|
+
...I,
|
|
888
885
|
name: e.target.value
|
|
889
886
|
}),
|
|
890
887
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
891
888
|
})] })]
|
|
892
889
|
}),
|
|
893
|
-
/* @__PURE__ */
|
|
890
|
+
/* @__PURE__ */ p("div", {
|
|
894
891
|
className: "grid grid-cols-2 gap-4",
|
|
895
|
-
children: [/* @__PURE__ */
|
|
892
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
896
893
|
htmlFor: "edit-firstName",
|
|
897
894
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
898
895
|
children: v("auth.users.fieldFirstName", "First Name")
|
|
899
|
-
}), /* @__PURE__ */
|
|
896
|
+
}), /* @__PURE__ */ f("input", {
|
|
900
897
|
id: "edit-firstName",
|
|
901
898
|
type: "text",
|
|
902
899
|
"aria-label": v("auth.users.fieldFirstName", "First Name"),
|
|
903
|
-
value:
|
|
904
|
-
onChange: (e) =>
|
|
905
|
-
...
|
|
900
|
+
value: I.firstName,
|
|
901
|
+
onChange: (e) => L({
|
|
902
|
+
...I,
|
|
906
903
|
firstName: e.target.value
|
|
907
904
|
}),
|
|
908
905
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
909
|
-
})] }), /* @__PURE__ */
|
|
906
|
+
})] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
910
907
|
htmlFor: "edit-lastName",
|
|
911
908
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
912
909
|
children: v("auth.users.fieldLastName", "Last Name")
|
|
913
|
-
}), /* @__PURE__ */
|
|
910
|
+
}), /* @__PURE__ */ f("input", {
|
|
914
911
|
id: "edit-lastName",
|
|
915
912
|
type: "text",
|
|
916
913
|
"aria-label": v("auth.users.fieldLastName", "Last Name"),
|
|
917
|
-
value:
|
|
918
|
-
onChange: (e) =>
|
|
919
|
-
...
|
|
914
|
+
value: I.lastName,
|
|
915
|
+
onChange: (e) => L({
|
|
916
|
+
...I,
|
|
920
917
|
lastName: e.target.value
|
|
921
918
|
}),
|
|
922
919
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
923
920
|
})] })]
|
|
924
921
|
}),
|
|
925
|
-
/* @__PURE__ */
|
|
922
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
926
923
|
htmlFor: "edit-phoneNumber",
|
|
927
924
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
928
925
|
children: v("auth.users.fieldPhoneNumber", "Phone Number")
|
|
929
|
-
}), /* @__PURE__ */
|
|
926
|
+
}), /* @__PURE__ */ f("input", {
|
|
930
927
|
id: "edit-phoneNumber",
|
|
931
928
|
type: "tel",
|
|
932
929
|
"aria-label": v("auth.users.fieldPhoneNumber", "Phone Number"),
|
|
933
|
-
value:
|
|
934
|
-
onChange: (e) =>
|
|
935
|
-
...
|
|
930
|
+
value: I.phoneNumber,
|
|
931
|
+
onChange: (e) => L({
|
|
932
|
+
...I,
|
|
936
933
|
phoneNumber: e.target.value
|
|
937
934
|
}),
|
|
938
935
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
|
|
939
936
|
})] }),
|
|
940
|
-
/* @__PURE__ */
|
|
937
|
+
/* @__PURE__ */ p("div", {
|
|
941
938
|
className: "grid grid-cols-2 gap-4",
|
|
942
|
-
children: [/* @__PURE__ */
|
|
939
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
943
940
|
htmlFor: "edit-role",
|
|
944
941
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
945
942
|
children: v("auth.users.fieldRole", "Role")
|
|
946
|
-
}), /* @__PURE__ */
|
|
943
|
+
}), /* @__PURE__ */ f("select", {
|
|
947
944
|
id: "edit-role",
|
|
948
945
|
"aria-label": v("auth.users.fieldRole", "Role"),
|
|
949
|
-
value:
|
|
950
|
-
onChange: (e) =>
|
|
951
|
-
...
|
|
946
|
+
value: I.role,
|
|
947
|
+
onChange: (e) => L({
|
|
948
|
+
...I,
|
|
952
949
|
role: e.target.value
|
|
953
950
|
}),
|
|
954
951
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all",
|
|
955
|
-
children:
|
|
952
|
+
children: g.map((e) => /* @__PURE__ */ f("option", {
|
|
956
953
|
value: e,
|
|
957
954
|
children: e.replace("_", " ")
|
|
958
955
|
}, e))
|
|
959
|
-
})] }), /* @__PURE__ */
|
|
956
|
+
})] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
960
957
|
htmlFor: "edit-status",
|
|
961
958
|
className: "block text-sm font-medium text-text-primary mb-2",
|
|
962
959
|
children: v("auth.users.fieldStatus", "Status")
|
|
963
|
-
}), /* @__PURE__ */
|
|
960
|
+
}), /* @__PURE__ */ f("select", {
|
|
964
961
|
id: "edit-status",
|
|
965
962
|
"aria-label": v("auth.users.fieldStatus", "Status"),
|
|
966
|
-
value:
|
|
967
|
-
onChange: (e) =>
|
|
968
|
-
...
|
|
963
|
+
value: I.status,
|
|
964
|
+
onChange: (e) => L({
|
|
965
|
+
...I,
|
|
969
966
|
status: e.target.value
|
|
970
967
|
}),
|
|
971
968
|
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all",
|
|
972
|
-
children:
|
|
969
|
+
children: _.map((e) => /* @__PURE__ */ f("option", {
|
|
973
970
|
value: e,
|
|
974
971
|
children: e
|
|
975
972
|
}, e))
|
|
976
973
|
})] })]
|
|
977
974
|
}),
|
|
978
|
-
/* @__PURE__ */
|
|
975
|
+
/* @__PURE__ */ p("div", {
|
|
979
976
|
className: "flex items-center gap-3 p-4 rounded-xl bg-bg-canvas/50",
|
|
980
|
-
children: [/* @__PURE__ */
|
|
977
|
+
children: [/* @__PURE__ */ f("input", {
|
|
981
978
|
type: "checkbox",
|
|
982
979
|
id: "emailVerified",
|
|
983
|
-
checked:
|
|
984
|
-
onChange: (e) =>
|
|
985
|
-
...
|
|
980
|
+
checked: I.emailVerified,
|
|
981
|
+
onChange: (e) => L({
|
|
982
|
+
...I,
|
|
986
983
|
emailVerified: e.target.checked
|
|
987
984
|
}),
|
|
988
985
|
className: "size-5 rounded border-border-default text-text-link focus:ring-action-primary-bg"
|
|
989
|
-
}), /* @__PURE__ */
|
|
986
|
+
}), /* @__PURE__ */ f("label", {
|
|
990
987
|
htmlFor: "emailVerified",
|
|
991
988
|
className: "text-sm font-medium text-text-primary",
|
|
992
989
|
children: v("auth.users.fieldEmailVerified", "Email Verified")
|
|
993
990
|
})]
|
|
994
991
|
}),
|
|
995
|
-
/* @__PURE__ */
|
|
992
|
+
/* @__PURE__ */ p("div", {
|
|
996
993
|
className: "flex gap-3 pt-4",
|
|
997
|
-
children: [/* @__PURE__ */
|
|
994
|
+
children: [/* @__PURE__ */ f(m, {
|
|
998
995
|
type: "submit",
|
|
999
996
|
disabled: S,
|
|
1000
997
|
variant: "default",
|
|
1001
998
|
size: "lg",
|
|
1002
999
|
className: "font-semibold",
|
|
1003
|
-
children: S ? /* @__PURE__ */
|
|
1004
|
-
}), /* @__PURE__ */
|
|
1000
|
+
children: S ? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(r, { className: "size-4 animate-spin" }), v("auth.users.saving", "Saving...")] }) : v("auth.users.saveChanges", "Save Changes")
|
|
1001
|
+
}), /* @__PURE__ */ f("button", {
|
|
1005
1002
|
type: "button",
|
|
1006
1003
|
onClick: () => {
|
|
1007
|
-
|
|
1004
|
+
N("list"), Z();
|
|
1008
1005
|
},
|
|
1009
1006
|
className: "px-6 py-3 rounded-xl border border-border-default text-text-primary font-medium hover:bg-bg-sunken transition-colors",
|
|
1010
1007
|
children: v("auth.users.cancel", "Cancel")
|
|
@@ -1015,9 +1012,9 @@ function _() {
|
|
|
1015
1012
|
]
|
|
1016
1013
|
})
|
|
1017
1014
|
]
|
|
1018
|
-
}) : /* @__PURE__ */
|
|
1015
|
+
}) : /* @__PURE__ */ f("div", {
|
|
1019
1016
|
className: "max-w-6xl mx-auto p-6",
|
|
1020
|
-
children: /* @__PURE__ */
|
|
1017
|
+
children: /* @__PURE__ */ f(h, {
|
|
1021
1018
|
illustration: "empty-generic",
|
|
1022
1019
|
title: v("auth.users.authRequired", "Authentication Required"),
|
|
1023
1020
|
description: v("auth.users.signInToManage", "Please sign in to manage users")
|
|
@@ -1025,6 +1022,6 @@ function _() {
|
|
|
1025
1022
|
});
|
|
1026
1023
|
}
|
|
1027
1024
|
//#endregion
|
|
1028
|
-
export {
|
|
1025
|
+
export { v as UsersPage };
|
|
1029
1026
|
|
|
1030
1027
|
//# sourceMappingURL=UsersPage.js.map
|