@burdenoff/microfe-proserviceworld 2026.525.1 → 2026.625.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/proserviceworld/pages/AdminReportsPage.js +368 -335
- package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
- package/dist/proserviceworld/pages/AdminUsersPage.js +262 -242
- package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
- package/dist/proserviceworld/pages/AnalyticsPage.js +346 -318
- package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
- package/dist/proserviceworld/pages/BookingsPage.js +202 -185
- package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
- package/dist/proserviceworld/pages/DashboardPage.js +400 -363
- package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.js +389 -324
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/MessagesPage.js +77 -82
- package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
- package/dist/proserviceworld/pages/PaymentsPage.js +373 -346
- package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProjectsPage.js +432 -385
- package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProviderDetailPage.js +396 -352
- package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProvidersPage.js +245 -244
- package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
- package/dist/proserviceworld/pages/ReviewsPage.js +31 -31
- package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServiceDetailsPage.js +349 -316
- package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServicesPage.js +163 -160
- package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
- package/dist/proserviceworld/pages/VerificationPage.js +265 -256
- package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,9 +2,9 @@ import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
|
|
|
2
2
|
import { useMemo as t, useState as n } from "react";
|
|
3
3
|
import { Ban as r, CheckCircle2 as i, Clock as a, Download as o, Filter as s, Mail as c, MoreHorizontal as l, Plus as u, Search as d, Shield as f, Star as p, UserCheck as m, Users as h, XCircle as g } from "lucide-react";
|
|
4
4
|
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
5
|
-
import {
|
|
5
|
+
import { AuroraBackground as y, Badge as b, Button as x, CTAOverflowMenu as S, Card as C, CardContent as w, GlassCard as T, GradientText as E, IllustratedEmptyState as D, Input as O } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/proserviceworld/pages/AdminUsersPage.tsx
|
|
7
|
-
var
|
|
7
|
+
var k = {
|
|
8
8
|
client: {
|
|
9
9
|
label: "Client",
|
|
10
10
|
variant: "secondary"
|
|
@@ -21,155 +21,165 @@ var w = {
|
|
|
21
21
|
label: "Team",
|
|
22
22
|
variant: "outline"
|
|
23
23
|
}
|
|
24
|
-
},
|
|
24
|
+
}, A = {
|
|
25
25
|
active: {
|
|
26
26
|
label: "Active",
|
|
27
27
|
icon: i,
|
|
28
|
-
color: "text-
|
|
28
|
+
color: "text-status-success-text"
|
|
29
29
|
},
|
|
30
30
|
suspended: {
|
|
31
31
|
label: "Suspended",
|
|
32
32
|
icon: r,
|
|
33
|
-
color: "text-
|
|
33
|
+
color: "text-status-warning-text"
|
|
34
34
|
},
|
|
35
35
|
pending: {
|
|
36
36
|
label: "Pending",
|
|
37
37
|
icon: a,
|
|
38
|
-
color: "text-
|
|
38
|
+
color: "text-status-warning-text"
|
|
39
39
|
},
|
|
40
40
|
banned: {
|
|
41
41
|
label: "Banned",
|
|
42
42
|
icon: g,
|
|
43
|
-
color: "text-
|
|
43
|
+
color: "text-status-error-text"
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
function
|
|
47
|
-
let { adminUsers: r } = e(), [a,
|
|
46
|
+
function j() {
|
|
47
|
+
let { adminUsers: r } = e(), [a, j] = n(""), [M, N] = n("all"), [P, F] = n("all"), [I, L] = n(/* @__PURE__ */ new Set()), R = t(() => {
|
|
48
48
|
let e = [...r];
|
|
49
|
-
if (
|
|
49
|
+
if (M !== "all" && (e = e.filter((e) => e.role === M)), P !== "all" && (e = e.filter((e) => e.status === P)), a.trim()) {
|
|
50
50
|
let t = a.toLowerCase();
|
|
51
51
|
e = e.filter((e) => e.name.toLowerCase().includes(t) || e.email.toLowerCase().includes(t));
|
|
52
52
|
}
|
|
53
53
|
return e;
|
|
54
54
|
}, [
|
|
55
55
|
r,
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
M,
|
|
57
|
+
P,
|
|
58
58
|
a
|
|
59
|
-
]),
|
|
60
|
-
let t = new Set(
|
|
61
|
-
t.has(e) ? t.delete(e) : t.add(e),
|
|
59
|
+
]), z = r.length, B = r.filter((e) => e.status === "active").length, V = r.filter((e) => e.role === "provider").length, H = r.filter((e) => e.verified).length, U = (e) => {
|
|
60
|
+
let t = new Set(I);
|
|
61
|
+
t.has(e) ? t.delete(e) : t.add(e), L(t);
|
|
62
62
|
};
|
|
63
63
|
return /* @__PURE__ */ v("div", {
|
|
64
|
-
className: "space-y-6 p-6",
|
|
64
|
+
className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
|
|
65
65
|
children: [
|
|
66
66
|
/* @__PURE__ */ v("div", {
|
|
67
|
-
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
68
|
-
children: [
|
|
69
|
-
|
|
70
|
-
children: "
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
67
|
+
className: "relative overflow-hidden rounded-card -mx-2 px-2 pt-1 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ _(y, { intensity: "subtle" }),
|
|
70
|
+
/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h1", {
|
|
71
|
+
className: "text-2xl font-semibold tracking-tight",
|
|
72
|
+
children: /* @__PURE__ */ _(E, { children: "User Management" })
|
|
73
|
+
}), /* @__PURE__ */ _("p", {
|
|
74
|
+
className: "text-sm text-text-secondary",
|
|
75
|
+
children: "Admin panel to manage platform users, roles, and access."
|
|
76
|
+
})] }),
|
|
77
|
+
/* @__PURE__ */ _(S, {
|
|
78
|
+
primary: {
|
|
79
|
+
label: "Invite User",
|
|
80
|
+
onSelect: () => {},
|
|
81
|
+
icon: /* @__PURE__ */ _(u, { className: "h-4 w-4" })
|
|
82
|
+
},
|
|
83
|
+
actions: [{
|
|
84
|
+
label: "Export",
|
|
85
|
+
onSelect: () => {},
|
|
86
|
+
icon: /* @__PURE__ */ _(o, { className: "h-4 w-4" })
|
|
87
|
+
}]
|
|
88
|
+
})
|
|
89
|
+
]
|
|
85
90
|
}),
|
|
86
91
|
/* @__PURE__ */ v("div", {
|
|
87
92
|
className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
88
93
|
children: [
|
|
89
|
-
/* @__PURE__ */ _(
|
|
90
|
-
|
|
94
|
+
/* @__PURE__ */ _(T, {
|
|
95
|
+
treatment: "glass",
|
|
96
|
+
glow: !0,
|
|
97
|
+
className: "border-border-seam",
|
|
91
98
|
children: /* @__PURE__ */ v("div", {
|
|
92
99
|
className: "flex items-center gap-3",
|
|
93
100
|
children: [/* @__PURE__ */ _("div", {
|
|
94
|
-
className: "rounded-lg bg-
|
|
95
|
-
children: /* @__PURE__ */ _(h, { className: "h-5 w-5 text-blue
|
|
101
|
+
className: "rounded-lg bg-status-info-bg-subtle p-2",
|
|
102
|
+
children: /* @__PURE__ */ _(h, { className: "h-5 w-5 text-accent-blue" })
|
|
96
103
|
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
97
|
-
className: "text-2xl font-bold",
|
|
98
|
-
children:
|
|
104
|
+
className: "text-2xl font-bold tabular-nums",
|
|
105
|
+
children: z
|
|
99
106
|
}), /* @__PURE__ */ _("p", {
|
|
100
|
-
className: "text-xs text-
|
|
107
|
+
className: "text-xs text-text-secondary",
|
|
101
108
|
children: "Total Users"
|
|
102
109
|
})] })]
|
|
103
110
|
})
|
|
104
|
-
})
|
|
105
|
-
/* @__PURE__ */ _(
|
|
106
|
-
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ _(T, {
|
|
113
|
+
treatment: "metric",
|
|
114
|
+
className: "border-border-seam",
|
|
107
115
|
children: /* @__PURE__ */ v("div", {
|
|
108
116
|
className: "flex items-center gap-3",
|
|
109
117
|
children: [/* @__PURE__ */ _("div", {
|
|
110
|
-
className: "rounded-lg bg-
|
|
111
|
-
children: /* @__PURE__ */ _(m, { className: "h-5 w-5 text-
|
|
118
|
+
className: "rounded-lg bg-status-success-bg-subtle p-2",
|
|
119
|
+
children: /* @__PURE__ */ _(m, { className: "h-5 w-5 text-status-success-text" })
|
|
112
120
|
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
113
|
-
className: "text-2xl font-bold",
|
|
114
|
-
children:
|
|
121
|
+
className: "text-2xl font-bold tabular-nums",
|
|
122
|
+
children: B
|
|
115
123
|
}), /* @__PURE__ */ _("p", {
|
|
116
|
-
className: "text-xs text-
|
|
124
|
+
className: "text-xs text-text-secondary",
|
|
117
125
|
children: "Active Users"
|
|
118
126
|
})] })]
|
|
119
127
|
})
|
|
120
|
-
})
|
|
121
|
-
/* @__PURE__ */ _(
|
|
122
|
-
|
|
128
|
+
}),
|
|
129
|
+
/* @__PURE__ */ _(T, {
|
|
130
|
+
treatment: "metric",
|
|
131
|
+
className: "border-border-seam",
|
|
123
132
|
children: /* @__PURE__ */ v("div", {
|
|
124
133
|
className: "flex items-center gap-3",
|
|
125
134
|
children: [/* @__PURE__ */ _("div", {
|
|
126
|
-
className: "rounded-lg bg-purple-
|
|
127
|
-
children: /* @__PURE__ */ _(f, { className: "h-5 w-5 text-purple
|
|
135
|
+
className: "rounded-lg bg-accent-purple-subtle p-2",
|
|
136
|
+
children: /* @__PURE__ */ _(f, { className: "h-5 w-5 text-accent-purple" })
|
|
128
137
|
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
129
|
-
className: "text-2xl font-bold",
|
|
130
|
-
children:
|
|
138
|
+
className: "text-2xl font-bold tabular-nums",
|
|
139
|
+
children: V
|
|
131
140
|
}), /* @__PURE__ */ _("p", {
|
|
132
|
-
className: "text-xs text-
|
|
141
|
+
className: "text-xs text-text-secondary",
|
|
133
142
|
children: "Providers"
|
|
134
143
|
})] })]
|
|
135
144
|
})
|
|
136
|
-
})
|
|
137
|
-
/* @__PURE__ */ _(
|
|
138
|
-
|
|
145
|
+
}),
|
|
146
|
+
/* @__PURE__ */ _(T, {
|
|
147
|
+
treatment: "metric",
|
|
148
|
+
className: "border-border-seam",
|
|
139
149
|
children: /* @__PURE__ */ v("div", {
|
|
140
150
|
className: "flex items-center gap-3",
|
|
141
151
|
children: [/* @__PURE__ */ _("div", {
|
|
142
|
-
className: "rounded-lg bg-
|
|
143
|
-
children: /* @__PURE__ */ _(i, { className: "h-5 w-5 text-
|
|
152
|
+
className: "rounded-lg bg-status-warning-bg-subtle p-2",
|
|
153
|
+
children: /* @__PURE__ */ _(i, { className: "h-5 w-5 text-status-warning-text" })
|
|
144
154
|
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
145
|
-
className: "text-2xl font-bold",
|
|
146
|
-
children:
|
|
155
|
+
className: "text-2xl font-bold tabular-nums",
|
|
156
|
+
children: H
|
|
147
157
|
}), /* @__PURE__ */ _("p", {
|
|
148
|
-
className: "text-xs text-
|
|
158
|
+
className: "text-xs text-text-secondary",
|
|
149
159
|
children: "Verified"
|
|
150
160
|
})] })]
|
|
151
161
|
})
|
|
152
|
-
})
|
|
162
|
+
})
|
|
153
163
|
]
|
|
154
164
|
}),
|
|
155
165
|
/* @__PURE__ */ v("div", {
|
|
156
166
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center",
|
|
157
167
|
children: [/* @__PURE__ */ v("div", {
|
|
158
168
|
className: "relative flex-1",
|
|
159
|
-
children: [/* @__PURE__ */ _(d, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-
|
|
169
|
+
children: [/* @__PURE__ */ _(d, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _(O, {
|
|
160
170
|
placeholder: "Search by name or email...",
|
|
161
171
|
value: a,
|
|
162
|
-
onChange: (e) =>
|
|
172
|
+
onChange: (e) => j(e.target.value),
|
|
163
173
|
className: "pl-10"
|
|
164
174
|
})]
|
|
165
175
|
}), /* @__PURE__ */ v("div", {
|
|
166
176
|
className: "flex items-center gap-2",
|
|
167
177
|
children: [
|
|
168
|
-
/* @__PURE__ */ _(s, { className: "h-4 w-4 text-
|
|
178
|
+
/* @__PURE__ */ _(s, { className: "h-4 w-4 text-text-secondary" }),
|
|
169
179
|
/* @__PURE__ */ v("select", {
|
|
170
|
-
className: "rounded border bg-
|
|
171
|
-
value:
|
|
172
|
-
onChange: (e) =>
|
|
180
|
+
className: "rounded border border-border-seam bg-bg-surface px-2 py-1 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
181
|
+
value: M,
|
|
182
|
+
onChange: (e) => N(e.target.value),
|
|
173
183
|
children: [
|
|
174
184
|
/* @__PURE__ */ _("option", {
|
|
175
185
|
value: "all",
|
|
@@ -194,9 +204,9 @@ function E() {
|
|
|
194
204
|
]
|
|
195
205
|
}),
|
|
196
206
|
/* @__PURE__ */ v("select", {
|
|
197
|
-
className: "rounded border bg-
|
|
198
|
-
value:
|
|
199
|
-
onChange: (e) =>
|
|
207
|
+
className: "rounded border border-border-seam bg-bg-surface px-2 py-1 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
208
|
+
value: P,
|
|
209
|
+
onChange: (e) => F(e.target.value),
|
|
200
210
|
children: [
|
|
201
211
|
/* @__PURE__ */ _("option", {
|
|
202
212
|
value: "all",
|
|
@@ -223,222 +233,232 @@ function E() {
|
|
|
223
233
|
]
|
|
224
234
|
})]
|
|
225
235
|
}),
|
|
226
|
-
|
|
227
|
-
className: "flex items-center gap-3 rounded-lg bg-
|
|
236
|
+
I.size > 0 && /* @__PURE__ */ v("div", {
|
|
237
|
+
className: "flex items-center gap-3 rounded-lg bg-accent-soft border border-border-seam p-3",
|
|
228
238
|
children: [
|
|
229
239
|
/* @__PURE__ */ v("span", {
|
|
230
240
|
className: "text-sm font-medium",
|
|
231
|
-
children: [
|
|
241
|
+
children: [I.size, " user(s) selected"]
|
|
232
242
|
}),
|
|
233
|
-
/* @__PURE__ */ _(
|
|
243
|
+
/* @__PURE__ */ _(x, {
|
|
234
244
|
variant: "outline",
|
|
235
245
|
size: "sm",
|
|
236
246
|
children: "Activate"
|
|
237
247
|
}),
|
|
238
|
-
/* @__PURE__ */ _(
|
|
248
|
+
/* @__PURE__ */ _(x, {
|
|
239
249
|
variant: "outline",
|
|
240
250
|
size: "sm",
|
|
241
251
|
children: "Suspend"
|
|
242
252
|
}),
|
|
243
|
-
/* @__PURE__ */ _(
|
|
253
|
+
/* @__PURE__ */ _(x, {
|
|
244
254
|
variant: "destructive",
|
|
245
255
|
size: "sm",
|
|
246
256
|
children: "Ban"
|
|
247
257
|
})
|
|
248
258
|
]
|
|
249
259
|
}),
|
|
250
|
-
/* @__PURE__ */ _(
|
|
251
|
-
className: "
|
|
252
|
-
children:
|
|
253
|
-
className: "
|
|
254
|
-
children: /* @__PURE__ */
|
|
255
|
-
className: "
|
|
256
|
-
children:
|
|
257
|
-
className: "
|
|
258
|
-
children: [
|
|
259
|
-
|
|
260
|
-
className: "p-3",
|
|
261
|
-
children: /* @__PURE__ */ _("input", {
|
|
262
|
-
type: "checkbox",
|
|
263
|
-
checked: j.size === N.length && N.length > 0,
|
|
264
|
-
onChange: () => {
|
|
265
|
-
j.size === N.length ? M(/* @__PURE__ */ new Set()) : M(new Set(N.map((e) => e.id)));
|
|
266
|
-
},
|
|
267
|
-
className: "rounded"
|
|
268
|
-
})
|
|
269
|
-
}),
|
|
270
|
-
/* @__PURE__ */ _("th", {
|
|
271
|
-
className: "p-3",
|
|
272
|
-
children: "User"
|
|
273
|
-
}),
|
|
274
|
-
/* @__PURE__ */ _("th", {
|
|
275
|
-
className: "p-3",
|
|
276
|
-
children: "Role"
|
|
277
|
-
}),
|
|
278
|
-
/* @__PURE__ */ _("th", {
|
|
279
|
-
className: "p-3",
|
|
280
|
-
children: "Status"
|
|
281
|
-
}),
|
|
282
|
-
/* @__PURE__ */ _("th", {
|
|
283
|
-
className: "p-3",
|
|
284
|
-
children: "Verified"
|
|
285
|
-
}),
|
|
286
|
-
/* @__PURE__ */ _("th", {
|
|
287
|
-
className: "p-3",
|
|
288
|
-
children: "Joined"
|
|
289
|
-
}),
|
|
290
|
-
/* @__PURE__ */ _("th", {
|
|
291
|
-
className: "p-3",
|
|
292
|
-
children: "Last Active"
|
|
293
|
-
}),
|
|
294
|
-
/* @__PURE__ */ _("th", {
|
|
295
|
-
className: "p-3 text-right",
|
|
296
|
-
children: "Bookings"
|
|
297
|
-
}),
|
|
298
|
-
/* @__PURE__ */ _("th", {
|
|
299
|
-
className: "p-3 text-right",
|
|
300
|
-
children: "Spent"
|
|
301
|
-
}),
|
|
302
|
-
/* @__PURE__ */ _("th", {
|
|
303
|
-
className: "p-3",
|
|
304
|
-
children: "Rating"
|
|
305
|
-
}),
|
|
306
|
-
/* @__PURE__ */ _("th", {
|
|
307
|
-
className: "p-3 text-right",
|
|
308
|
-
children: "Actions"
|
|
309
|
-
})
|
|
310
|
-
]
|
|
311
|
-
}) }), /* @__PURE__ */ _("tbody", { children: N.length === 0 ? /* @__PURE__ */ _("tr", { children: /* @__PURE__ */ _("td", {
|
|
312
|
-
colSpan: 11,
|
|
313
|
-
className: "p-8 text-center text-muted-foreground",
|
|
314
|
-
children: "No users match your filters."
|
|
315
|
-
}) }) : N.map((e) => {
|
|
316
|
-
let t = T[e.status], n = t.icon;
|
|
317
|
-
return /* @__PURE__ */ v("tr", {
|
|
318
|
-
className: "border-b hover:bg-muted/50",
|
|
260
|
+
/* @__PURE__ */ _(C, {
|
|
261
|
+
className: "border-border-seam",
|
|
262
|
+
children: /* @__PURE__ */ v(w, {
|
|
263
|
+
className: "pt-4",
|
|
264
|
+
children: [/* @__PURE__ */ _("div", {
|
|
265
|
+
className: "overflow-x-auto",
|
|
266
|
+
children: /* @__PURE__ */ v("table", {
|
|
267
|
+
className: "w-full text-sm",
|
|
268
|
+
children: [/* @__PURE__ */ _("thead", { children: /* @__PURE__ */ v("tr", {
|
|
269
|
+
className: "border-b border-border-seam text-left text-text-secondary",
|
|
319
270
|
children: [
|
|
320
|
-
/* @__PURE__ */ _("
|
|
271
|
+
/* @__PURE__ */ _("th", {
|
|
321
272
|
className: "p-3",
|
|
322
273
|
children: /* @__PURE__ */ _("input", {
|
|
323
274
|
type: "checkbox",
|
|
324
|
-
checked:
|
|
325
|
-
onChange: () =>
|
|
275
|
+
checked: I.size === R.length && R.length > 0,
|
|
276
|
+
onChange: () => {
|
|
277
|
+
I.size === R.length ? L(/* @__PURE__ */ new Set()) : L(new Set(R.map((e) => e.id)));
|
|
278
|
+
},
|
|
326
279
|
className: "rounded"
|
|
327
280
|
})
|
|
328
281
|
}),
|
|
329
|
-
/* @__PURE__ */ _("
|
|
282
|
+
/* @__PURE__ */ _("th", {
|
|
330
283
|
className: "p-3",
|
|
331
|
-
children:
|
|
332
|
-
className: "flex items-center gap-3",
|
|
333
|
-
children: [/* @__PURE__ */ _("div", {
|
|
334
|
-
className: "flex h-8 w-8 items-center justify-center rounded-full bg-primary/10 text-xs font-semibold text-primary",
|
|
335
|
-
children: e.name.charAt(0)
|
|
336
|
-
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
337
|
-
className: "font-medium",
|
|
338
|
-
children: e.name
|
|
339
|
-
}), /* @__PURE__ */ _("p", {
|
|
340
|
-
className: "text-xs text-muted-foreground",
|
|
341
|
-
children: e.email
|
|
342
|
-
})] })]
|
|
343
|
-
})
|
|
284
|
+
children: "User"
|
|
344
285
|
}),
|
|
345
|
-
/* @__PURE__ */ _("
|
|
286
|
+
/* @__PURE__ */ _("th", {
|
|
346
287
|
className: "p-3",
|
|
347
|
-
children:
|
|
348
|
-
variant: w[e.role].variant,
|
|
349
|
-
children: w[e.role].label
|
|
350
|
-
})
|
|
288
|
+
children: "Role"
|
|
351
289
|
}),
|
|
352
|
-
/* @__PURE__ */ _("
|
|
290
|
+
/* @__PURE__ */ _("th", {
|
|
353
291
|
className: "p-3",
|
|
354
|
-
children:
|
|
355
|
-
className: "flex items-center gap-1",
|
|
356
|
-
children: [/* @__PURE__ */ _(n, { className: `h-4 w-4 ${t.color}` }), /* @__PURE__ */ _("span", {
|
|
357
|
-
className: `text-xs font-medium ${t.color}`,
|
|
358
|
-
children: t.label
|
|
359
|
-
})]
|
|
360
|
-
})
|
|
292
|
+
children: "Status"
|
|
361
293
|
}),
|
|
362
|
-
/* @__PURE__ */ _("
|
|
294
|
+
/* @__PURE__ */ _("th", {
|
|
363
295
|
className: "p-3",
|
|
364
|
-
children:
|
|
296
|
+
children: "Verified"
|
|
365
297
|
}),
|
|
366
|
-
/* @__PURE__ */ _("
|
|
367
|
-
className: "p-3
|
|
368
|
-
children:
|
|
298
|
+
/* @__PURE__ */ _("th", {
|
|
299
|
+
className: "p-3",
|
|
300
|
+
children: "Joined"
|
|
369
301
|
}),
|
|
370
|
-
/* @__PURE__ */ _("
|
|
371
|
-
className: "p-3
|
|
372
|
-
children:
|
|
302
|
+
/* @__PURE__ */ _("th", {
|
|
303
|
+
className: "p-3",
|
|
304
|
+
children: "Last Active"
|
|
373
305
|
}),
|
|
374
|
-
/* @__PURE__ */ _("
|
|
306
|
+
/* @__PURE__ */ _("th", {
|
|
375
307
|
className: "p-3 text-right",
|
|
376
|
-
children:
|
|
308
|
+
children: "Bookings"
|
|
377
309
|
}),
|
|
378
|
-
/* @__PURE__ */ _("
|
|
310
|
+
/* @__PURE__ */ _("th", {
|
|
379
311
|
className: "p-3 text-right",
|
|
380
|
-
children:
|
|
312
|
+
children: "Spent"
|
|
381
313
|
}),
|
|
382
|
-
/* @__PURE__ */ _("
|
|
314
|
+
/* @__PURE__ */ _("th", {
|
|
383
315
|
className: "p-3",
|
|
384
|
-
children:
|
|
385
|
-
className: "flex items-center gap-1",
|
|
386
|
-
children: [/* @__PURE__ */ _(p, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), /* @__PURE__ */ _("span", {
|
|
387
|
-
className: "text-xs font-medium",
|
|
388
|
-
children: e.rating
|
|
389
|
-
})]
|
|
390
|
-
}) : /* @__PURE__ */ _("span", {
|
|
391
|
-
className: "text-xs text-muted-foreground",
|
|
392
|
-
children: "-"
|
|
393
|
-
})
|
|
316
|
+
children: "Rating"
|
|
394
317
|
}),
|
|
395
|
-
/* @__PURE__ */ _("
|
|
318
|
+
/* @__PURE__ */ _("th", {
|
|
396
319
|
className: "p-3 text-right",
|
|
397
|
-
children:
|
|
398
|
-
className: "flex justify-end gap-1",
|
|
399
|
-
children: [/* @__PURE__ */ _(b, {
|
|
400
|
-
variant: "outline",
|
|
401
|
-
size: "sm",
|
|
402
|
-
children: /* @__PURE__ */ _(c, { className: "h-3 w-3" })
|
|
403
|
-
}), /* @__PURE__ */ _(b, {
|
|
404
|
-
variant: "outline",
|
|
405
|
-
size: "sm",
|
|
406
|
-
children: /* @__PURE__ */ _(l, { className: "h-3 w-3" })
|
|
407
|
-
})]
|
|
408
|
-
})
|
|
320
|
+
children: "Actions"
|
|
409
321
|
})
|
|
410
322
|
]
|
|
411
|
-
},
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
323
|
+
}) }), /* @__PURE__ */ _("tbody", { children: R.length === 0 ? /* @__PURE__ */ _("tr", { children: /* @__PURE__ */ _("td", {
|
|
324
|
+
colSpan: 11,
|
|
325
|
+
className: "p-4",
|
|
326
|
+
children: /* @__PURE__ */ _(D, {
|
|
327
|
+
illustration: "empty-people",
|
|
328
|
+
title: "No users found",
|
|
329
|
+
description: "No users match your current filters."
|
|
330
|
+
})
|
|
331
|
+
}) }) : R.map((e) => {
|
|
332
|
+
let t = A[e.status], n = t.icon;
|
|
333
|
+
return /* @__PURE__ */ v("tr", {
|
|
334
|
+
className: "border-b border-border-seam transition-colors hover:bg-bg-sunken/50",
|
|
335
|
+
children: [
|
|
336
|
+
/* @__PURE__ */ _("td", {
|
|
337
|
+
className: "p-3",
|
|
338
|
+
children: /* @__PURE__ */ _("input", {
|
|
339
|
+
type: "checkbox",
|
|
340
|
+
"aria-label": `Select ${e.name}`,
|
|
341
|
+
checked: I.has(e.id),
|
|
342
|
+
onChange: () => U(e.id),
|
|
343
|
+
className: "rounded"
|
|
344
|
+
})
|
|
345
|
+
}),
|
|
346
|
+
/* @__PURE__ */ _("td", {
|
|
347
|
+
className: "p-3",
|
|
348
|
+
children: /* @__PURE__ */ v("div", {
|
|
349
|
+
className: "flex items-center gap-3",
|
|
350
|
+
children: [/* @__PURE__ */ _("div", {
|
|
351
|
+
className: "flex h-8 w-8 items-center justify-center rounded-full bg-accent-soft text-xs font-semibold text-text-primary",
|
|
352
|
+
children: e.name.charAt(0)
|
|
353
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
354
|
+
className: "font-medium",
|
|
355
|
+
children: e.name
|
|
356
|
+
}), /* @__PURE__ */ _("p", {
|
|
357
|
+
className: "text-xs text-text-secondary",
|
|
358
|
+
children: e.email
|
|
359
|
+
})] })]
|
|
360
|
+
})
|
|
361
|
+
}),
|
|
362
|
+
/* @__PURE__ */ _("td", {
|
|
363
|
+
className: "p-3",
|
|
364
|
+
children: /* @__PURE__ */ _(b, {
|
|
365
|
+
variant: k[e.role].variant,
|
|
366
|
+
children: k[e.role].label
|
|
367
|
+
})
|
|
368
|
+
}),
|
|
369
|
+
/* @__PURE__ */ _("td", {
|
|
370
|
+
className: "p-3",
|
|
371
|
+
children: /* @__PURE__ */ v("div", {
|
|
372
|
+
className: "flex items-center gap-1",
|
|
373
|
+
children: [/* @__PURE__ */ _(n, { className: `h-4 w-4 ${t.color}` }), /* @__PURE__ */ _("span", {
|
|
374
|
+
className: `text-xs font-medium ${t.color}`,
|
|
375
|
+
children: t.label
|
|
376
|
+
})]
|
|
377
|
+
})
|
|
378
|
+
}),
|
|
379
|
+
/* @__PURE__ */ _("td", {
|
|
380
|
+
className: "p-3",
|
|
381
|
+
children: e.verified ? /* @__PURE__ */ _(i, { className: "h-4 w-4 text-status-success-text" }) : /* @__PURE__ */ _(g, { className: "h-4 w-4 text-text-muted" })
|
|
382
|
+
}),
|
|
383
|
+
/* @__PURE__ */ _("td", {
|
|
384
|
+
className: "p-3 text-text-secondary",
|
|
385
|
+
children: e.joinedDate
|
|
386
|
+
}),
|
|
387
|
+
/* @__PURE__ */ _("td", {
|
|
388
|
+
className: "p-3 text-text-secondary",
|
|
389
|
+
children: e.lastActive
|
|
390
|
+
}),
|
|
391
|
+
/* @__PURE__ */ _("td", {
|
|
392
|
+
className: "p-3 text-right tabular-nums",
|
|
393
|
+
children: e.bookingsCount
|
|
394
|
+
}),
|
|
395
|
+
/* @__PURE__ */ _("td", {
|
|
396
|
+
className: "p-3 text-right tabular-nums",
|
|
397
|
+
children: e.totalSpent > 0 ? `$${e.totalSpent.toLocaleString()}` : "-"
|
|
398
|
+
}),
|
|
399
|
+
/* @__PURE__ */ _("td", {
|
|
400
|
+
className: "p-3",
|
|
401
|
+
children: e.rating ? /* @__PURE__ */ v("div", {
|
|
402
|
+
className: "flex items-center gap-1",
|
|
403
|
+
children: [/* @__PURE__ */ _(p, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }), /* @__PURE__ */ _("span", {
|
|
404
|
+
className: "text-xs font-medium tabular-nums",
|
|
405
|
+
children: e.rating
|
|
406
|
+
})]
|
|
407
|
+
}) : /* @__PURE__ */ _("span", {
|
|
408
|
+
className: "text-xs text-text-secondary",
|
|
409
|
+
children: "-"
|
|
410
|
+
})
|
|
411
|
+
}),
|
|
412
|
+
/* @__PURE__ */ _("td", {
|
|
413
|
+
className: "p-3 text-right",
|
|
414
|
+
children: /* @__PURE__ */ v("div", {
|
|
415
|
+
className: "flex justify-end gap-1",
|
|
416
|
+
children: [/* @__PURE__ */ _(x, {
|
|
417
|
+
variant: "outline",
|
|
418
|
+
size: "sm",
|
|
419
|
+
"aria-label": `Email ${e.name}`,
|
|
420
|
+
children: /* @__PURE__ */ _(c, { className: "h-3 w-3" })
|
|
421
|
+
}), /* @__PURE__ */ _(x, {
|
|
422
|
+
variant: "outline",
|
|
423
|
+
size: "sm",
|
|
424
|
+
"aria-label": `More actions for ${e.name}`,
|
|
425
|
+
children: /* @__PURE__ */ _(l, { className: "h-3 w-3" })
|
|
426
|
+
})]
|
|
427
|
+
})
|
|
428
|
+
})
|
|
429
|
+
]
|
|
430
|
+
}, e.id);
|
|
431
|
+
}) })]
|
|
432
|
+
})
|
|
433
|
+
}), /* @__PURE__ */ v("div", {
|
|
434
|
+
className: "mt-4 flex items-center justify-between border-t border-border-seam pt-4 text-sm text-text-secondary",
|
|
435
|
+
children: [/* @__PURE__ */ v("span", { children: [
|
|
436
|
+
"Showing ",
|
|
437
|
+
R.length,
|
|
438
|
+
" of ",
|
|
439
|
+
r.length,
|
|
440
|
+
" users"
|
|
441
|
+
] }), /* @__PURE__ */ v("div", {
|
|
442
|
+
className: "flex gap-1",
|
|
443
|
+
children: [/* @__PURE__ */ _(x, {
|
|
444
|
+
variant: "outline",
|
|
445
|
+
size: "sm",
|
|
446
|
+
disabled: !0,
|
|
447
|
+
children: "Previous"
|
|
448
|
+
}), /* @__PURE__ */ _(x, {
|
|
449
|
+
variant: "outline",
|
|
450
|
+
size: "sm",
|
|
451
|
+
disabled: !0,
|
|
452
|
+
children: "Next"
|
|
453
|
+
})]
|
|
434
454
|
})]
|
|
435
455
|
})]
|
|
436
|
-
})
|
|
437
|
-
})
|
|
456
|
+
})
|
|
457
|
+
})
|
|
438
458
|
]
|
|
439
459
|
});
|
|
440
460
|
}
|
|
441
461
|
//#endregion
|
|
442
|
-
export {
|
|
462
|
+
export { j as AdminUsersPage };
|
|
443
463
|
|
|
444
464
|
//# sourceMappingURL=AdminUsersPage.js.map
|