@burdenoff/microfe-proserviceworld 2026.624.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.
Files changed (31) hide show
  1. package/dist/proserviceworld/pages/AdminReportsPage.js +365 -332
  2. package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
  3. package/dist/proserviceworld/pages/AdminUsersPage.js +257 -237
  4. package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
  5. package/dist/proserviceworld/pages/AnalyticsPage.js +343 -315
  6. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  7. package/dist/proserviceworld/pages/BookingsPage.js +191 -174
  8. package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
  9. package/dist/proserviceworld/pages/DashboardPage.js +383 -346
  10. package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
  11. package/dist/proserviceworld/pages/DocumentsPage.js +383 -318
  12. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  13. package/dist/proserviceworld/pages/MessagesPage.js +70 -75
  14. package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
  15. package/dist/proserviceworld/pages/PaymentsPage.js +367 -340
  16. package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
  17. package/dist/proserviceworld/pages/ProjectsPage.js +428 -381
  18. package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
  19. package/dist/proserviceworld/pages/ProviderDetailPage.js +390 -346
  20. package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
  21. package/dist/proserviceworld/pages/ProvidersPage.js +245 -244
  22. package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
  23. package/dist/proserviceworld/pages/ReviewsPage.js +14 -14
  24. package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
  25. package/dist/proserviceworld/pages/ServiceDetailsPage.js +338 -305
  26. package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
  27. package/dist/proserviceworld/pages/ServicesPage.js +156 -153
  28. package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
  29. package/dist/proserviceworld/pages/VerificationPage.js +260 -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 } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/proserviceworld/pages/AdminUsersPage.tsx
7
- var w = {
7
+ var k = {
8
8
  client: {
9
9
  label: "Client",
10
10
  variant: "secondary"
@@ -21,145 +21,155 @@ var w = {
21
21
  label: "Team",
22
22
  variant: "outline"
23
23
  }
24
- }, T = {
24
+ }, A = {
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 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 (D !== "all" && (e = e.filter((e) => e.role === D)), k !== "all" && (e = e.filter((e) => e.status === k)), a.trim()) {
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
- D,
57
- k,
56
+ M,
57
+ P,
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
+ ]), 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: [/* @__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
+ ]
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__ */ _(x, { children: /* @__PURE__ */ _(S, {
90
- className: "pt-4",
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-blue-100 p-2 dark:bg-blue-950",
95
- children: /* @__PURE__ */ _(h, { className: "h-5 w-5 text-blue-600" })
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: P
104
+ className: "text-2xl font-bold tabular-nums",
105
+ children: z
99
106
  }), /* @__PURE__ */ _("p", {
100
107
  className: "text-xs text-text-secondary",
101
108
  children: "Total Users"
102
109
  })] })]
103
110
  })
104
- }) }),
105
- /* @__PURE__ */ _(x, { children: /* @__PURE__ */ _(S, {
106
- className: "pt-4",
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-green-100 p-2 dark:bg-green-950",
111
- children: /* @__PURE__ */ _(m, { className: "h-5 w-5 text-green-600" })
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: F
121
+ className: "text-2xl font-bold tabular-nums",
122
+ children: B
115
123
  }), /* @__PURE__ */ _("p", {
116
124
  className: "text-xs text-text-secondary",
117
125
  children: "Active Users"
118
126
  })] })]
119
127
  })
120
- }) }),
121
- /* @__PURE__ */ _(x, { children: /* @__PURE__ */ _(S, {
122
- className: "pt-4",
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-100 p-2 dark:bg-purple-950",
127
- children: /* @__PURE__ */ _(f, { className: "h-5 w-5 text-purple-600" })
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: I
138
+ className: "text-2xl font-bold tabular-nums",
139
+ children: V
131
140
  }), /* @__PURE__ */ _("p", {
132
141
  className: "text-xs text-text-secondary",
133
142
  children: "Providers"
134
143
  })] })]
135
144
  })
136
- }) }),
137
- /* @__PURE__ */ _(x, { children: /* @__PURE__ */ _(S, {
138
- className: "pt-4",
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-yellow-100 p-2 dark:bg-yellow-950",
143
- children: /* @__PURE__ */ _(i, { className: "h-5 w-5 text-yellow-600" })
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: L
155
+ className: "text-2xl font-bold tabular-nums",
156
+ children: H
147
157
  }), /* @__PURE__ */ _("p", {
148
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-text-secondary" }), /* @__PURE__ */ _(C, {
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) => E(e.target.value),
172
+ onChange: (e) => j(e.target.value),
163
173
  className: "pl-10"
164
174
  })]
165
175
  }), /* @__PURE__ */ v("div", {
@@ -167,9 +177,9 @@ function E() {
167
177
  children: [
168
178
  /* @__PURE__ */ _(s, { className: "h-4 w-4 text-text-secondary" }),
169
179
  /* @__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),
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-bg-surface px-2 py-1 text-sm",
198
- value: k,
199
- onChange: (e) => A(e.target.value),
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
- 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",
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: [j.size, " user(s) selected"]
241
+ children: [I.size, " user(s) selected"]
232
242
  }),
233
- /* @__PURE__ */ _(b, {
243
+ /* @__PURE__ */ _(x, {
234
244
  variant: "outline",
235
245
  size: "sm",
236
246
  children: "Activate"
237
247
  }),
238
- /* @__PURE__ */ _(b, {
248
+ /* @__PURE__ */ _(x, {
239
249
  variant: "outline",
240
250
  size: "sm",
241
251
  children: "Suspend"
242
252
  }),
243
- /* @__PURE__ */ _(b, {
253
+ /* @__PURE__ */ _(x, {
244
254
  variant: "destructive",
245
255
  size: "sm",
246
256
  children: "Ban"
247
257
  })
248
258
  ]
249
259
  }),
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",
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__ */ _("td", {
271
+ /* @__PURE__ */ _("th", {
321
272
  className: "p-3",
322
273
  children: /* @__PURE__ */ _("input", {
323
274
  type: "checkbox",
324
- checked: j.has(e.id),
325
- onChange: () => R(e.id),
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__ */ _("td", {
282
+ /* @__PURE__ */ _("th", {
330
283
  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
- })
284
+ children: "User"
344
285
  }),
345
- /* @__PURE__ */ _("td", {
286
+ /* @__PURE__ */ _("th", {
346
287
  className: "p-3",
347
- children: /* @__PURE__ */ _(y, {
348
- variant: w[e.role].variant,
349
- children: w[e.role].label
350
- })
288
+ children: "Role"
351
289
  }),
352
- /* @__PURE__ */ _("td", {
290
+ /* @__PURE__ */ _("th", {
353
291
  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
- })
292
+ children: "Status"
361
293
  }),
362
- /* @__PURE__ */ _("td", {
294
+ /* @__PURE__ */ _("th", {
363
295
  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" })
296
+ children: "Verified"
365
297
  }),
366
- /* @__PURE__ */ _("td", {
367
- className: "p-3 text-text-secondary",
368
- children: e.joinedDate
298
+ /* @__PURE__ */ _("th", {
299
+ className: "p-3",
300
+ children: "Joined"
369
301
  }),
370
- /* @__PURE__ */ _("td", {
371
- className: "p-3 text-text-secondary",
372
- children: e.lastActive
302
+ /* @__PURE__ */ _("th", {
303
+ className: "p-3",
304
+ children: "Last Active"
373
305
  }),
374
- /* @__PURE__ */ _("td", {
306
+ /* @__PURE__ */ _("th", {
375
307
  className: "p-3 text-right",
376
- children: e.bookingsCount
308
+ children: "Bookings"
377
309
  }),
378
- /* @__PURE__ */ _("td", {
310
+ /* @__PURE__ */ _("th", {
379
311
  className: "p-3 text-right",
380
- children: e.totalSpent > 0 ? `$${e.totalSpent.toLocaleString()}` : "-"
312
+ children: "Spent"
381
313
  }),
382
- /* @__PURE__ */ _("td", {
314
+ /* @__PURE__ */ _("th", {
383
315
  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
- })
316
+ children: "Rating"
394
317
  }),
395
- /* @__PURE__ */ _("td", {
318
+ /* @__PURE__ */ _("th", {
396
319
  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
- })
320
+ children: "Actions"
409
321
  })
410
322
  ]
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"
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 { E as AdminUsersPage };
462
+ export { j as AdminUsersPage };
443
463
 
444
464
  //# sourceMappingURL=AdminUsersPage.js.map