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