@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,65 +2,65 @@ import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
2
2
  import { useMemo as t, useState as n } from "react";
3
3
  import { ArrowUpDown as r, Calendar as i, CheckCircle2 as a, ChevronRight as o, Clock as s, DollarSign as c, Filter as l, Loader2 as u, Search as d, User as f, XCircle as p } from "lucide-react";
4
4
  import { jsx as m, jsxs as h } from "react/jsx-runtime";
5
- import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Input as S } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as g, Button as _, Card as v, CardContent as y, GlassCard as b, IllustratedEmptyState as x, Input as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/proserviceworld/pages/BookingsPage.tsx
7
- var C = {
7
+ var w = {
8
8
  pending: {
9
9
  label: "Pending",
10
- color: "text-yellow-600",
10
+ color: "text-status-warning-text",
11
11
  icon: s,
12
12
  badgeVariant: "secondary"
13
13
  },
14
14
  in_progress: {
15
15
  label: "In Progress",
16
- color: "text-blue-600",
16
+ color: "text-accent-blue",
17
17
  icon: u,
18
18
  badgeVariant: "default"
19
19
  },
20
20
  completed: {
21
21
  label: "Completed",
22
- color: "text-green-600",
22
+ color: "text-status-success-text",
23
23
  icon: a,
24
24
  badgeVariant: "outline"
25
25
  },
26
26
  cancelled: {
27
27
  label: "Cancelled",
28
- color: "text-red-600",
28
+ color: "text-status-error-text",
29
29
  icon: p,
30
30
  badgeVariant: "destructive"
31
31
  }
32
32
  };
33
- function w() {
34
- let { bookings: s } = e(), [p, w] = n(""), [T, E] = n("all"), [D, O] = n("date"), [k, A] = n(!1), [j, M] = n(null), N = t(() => {
33
+ function T() {
34
+ let { bookings: s } = e(), [p, T] = n(""), [E, D] = n("all"), [O, k] = n("date"), [A, j] = n(!1), [M, N] = n(null), P = t(() => {
35
35
  let e = s;
36
- if (T !== "all" && (e = e.filter((e) => e.status === T)), p.trim()) {
36
+ if (E !== "all" && (e = e.filter((e) => e.status === E)), p.trim()) {
37
37
  let t = p.toLowerCase();
38
38
  e = e.filter((e) => e.title.toLowerCase().includes(t) || e.providerName.toLowerCase().includes(t) || e.serviceName.toLowerCase().includes(t));
39
39
  }
40
40
  return e = [...e].sort((e, t) => {
41
- let n = D === "date" ? new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime() : D === "budget" ? t.budget - e.budget : t.progress - e.progress;
42
- return k ? -n : n;
41
+ let n = O === "date" ? new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime() : O === "budget" ? t.budget - e.budget : t.progress - e.progress;
42
+ return A ? -n : n;
43
43
  }), e;
44
44
  }, [
45
45
  s,
46
46
  p,
47
- T,
48
- D,
49
- k
50
- ]), P = j ? s.find((e) => e.id === j) : null, F = t(() => {
47
+ E,
48
+ O,
49
+ A
50
+ ]), F = M ? s.find((e) => e.id === M) : null, I = t(() => {
51
51
  let e = { all: s.length };
52
52
  for (let t of s) e[t.status] = (e[t.status] ?? 0) + 1;
53
53
  return e;
54
- }, [s]), I = s.reduce((e, t) => e + t.budget, 0), L = Math.round(s.filter((e) => e.status === "in_progress").reduce((e, t) => e + t.progress, 0) / Math.max(1, s.filter((e) => e.status === "in_progress").length)), R = (e) => {
55
- D === e ? A(!k) : (O(e), A(!1));
54
+ }, [s]), L = s.reduce((e, t) => e + t.budget, 0), R = Math.round(s.filter((e) => e.status === "in_progress").reduce((e, t) => e + t.progress, 0) / Math.max(1, s.filter((e) => e.status === "in_progress").length)), z = (e) => {
55
+ O === e ? j(!A) : (k(e), j(!1));
56
56
  };
57
57
  return /* @__PURE__ */ h("div", {
58
- className: "space-y-6 p-6",
58
+ className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
59
59
  children: [
60
60
  /* @__PURE__ */ h("div", {
61
61
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
62
62
  children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
63
- className: "text-2xl font-semibold",
63
+ className: "text-2xl font-semibold tracking-tight",
64
64
  children: "Bookings"
65
65
  }), /* @__PURE__ */ m("p", {
66
66
  className: "text-sm text-text-secondary",
@@ -70,73 +70,82 @@ function w() {
70
70
  children: [/* @__PURE__ */ m(i, { className: "mr-2 h-4 w-4" }), " New Booking"]
71
71
  })]
72
72
  }),
73
+ /* @__PURE__ */ m(C, {
74
+ icon: /* @__PURE__ */ m(i, { className: "h-4 w-4" }),
75
+ children: "Every engagement you have booked, in one timeline. Filter by status, search by provider or service, and open any booking to follow its progress, payment status, and key dates — then message the provider or take action right from the detail panel."
76
+ }),
73
77
  /* @__PURE__ */ h("div", {
74
78
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
75
79
  children: [
76
- /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
77
- className: "pt-4",
80
+ /* @__PURE__ */ m(b, {
81
+ treatment: "metric",
82
+ className: "border-border-seam",
78
83
  children: /* @__PURE__ */ h("div", {
79
84
  className: "flex items-center gap-3",
80
85
  children: [/* @__PURE__ */ m("div", {
81
- className: "rounded-lg bg-blue-100 p-2 dark:bg-blue-950",
82
- children: /* @__PURE__ */ m(i, { className: "h-5 w-5 text-blue-600" })
86
+ className: "rounded-lg bg-status-info-bg-subtle p-2",
87
+ children: /* @__PURE__ */ m(i, { className: "h-5 w-5 text-accent-blue" })
83
88
  }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
84
- className: "text-2xl font-bold",
89
+ className: "text-2xl font-bold tabular-nums",
85
90
  children: s.length
86
91
  }), /* @__PURE__ */ m("p", {
87
92
  className: "text-xs text-text-secondary",
88
93
  children: "Total Bookings"
89
94
  })] })]
90
95
  })
91
- }) }),
92
- /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
93
- className: "pt-4",
96
+ }),
97
+ /* @__PURE__ */ m(b, {
98
+ treatment: "metric",
99
+ className: "border-border-seam",
94
100
  children: /* @__PURE__ */ h("div", {
95
101
  className: "flex items-center gap-3",
96
102
  children: [/* @__PURE__ */ m("div", {
97
- className: "rounded-lg bg-green-100 p-2 dark:bg-green-950",
98
- children: /* @__PURE__ */ m(a, { className: "h-5 w-5 text-green-600" })
103
+ className: "rounded-lg bg-status-success-bg-subtle p-2",
104
+ children: /* @__PURE__ */ m(a, { className: "h-5 w-5 text-status-success-text" })
99
105
  }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
100
- className: "text-2xl font-bold",
101
- children: F.completed ?? 0
106
+ className: "text-2xl font-bold tabular-nums",
107
+ children: I.completed ?? 0
102
108
  }), /* @__PURE__ */ m("p", {
103
109
  className: "text-xs text-text-secondary",
104
110
  children: "Completed"
105
111
  })] })]
106
112
  })
107
- }) }),
108
- /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
109
- className: "pt-4",
113
+ }),
114
+ /* @__PURE__ */ m(b, {
115
+ treatment: "metric",
116
+ className: "border-border-seam",
110
117
  children: /* @__PURE__ */ h("div", {
111
118
  className: "flex items-center gap-3",
112
119
  children: [/* @__PURE__ */ m("div", {
113
- className: "rounded-lg bg-yellow-100 p-2 dark:bg-yellow-950",
114
- children: /* @__PURE__ */ m(u, { className: "h-5 w-5 text-yellow-600" })
120
+ className: "rounded-lg bg-status-warning-bg-subtle p-2",
121
+ children: /* @__PURE__ */ m(u, { className: "h-5 w-5 text-status-warning-text" })
115
122
  }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
116
- className: "text-2xl font-bold",
117
- children: [L, "%"]
123
+ className: "text-2xl font-bold tabular-nums",
124
+ children: [R, "%"]
118
125
  }), /* @__PURE__ */ m("p", {
119
126
  className: "text-xs text-text-secondary",
120
127
  children: "Avg. In-Progress"
121
128
  })] })]
122
129
  })
123
- }) }),
124
- /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
125
- className: "pt-4",
130
+ }),
131
+ /* @__PURE__ */ m(b, {
132
+ treatment: "glass",
133
+ glow: !0,
134
+ className: "border-border-seam",
126
135
  children: /* @__PURE__ */ h("div", {
127
136
  className: "flex items-center gap-3",
128
137
  children: [/* @__PURE__ */ m("div", {
129
- className: "rounded-lg bg-purple-100 p-2 dark:bg-purple-950",
130
- children: /* @__PURE__ */ m(c, { className: "h-5 w-5 text-purple-600" })
138
+ className: "rounded-lg bg-accent-purple-subtle p-2",
139
+ children: /* @__PURE__ */ m(c, { className: "h-5 w-5 text-accent-purple" })
131
140
  }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
132
- className: "text-2xl font-bold",
133
- children: ["$", I.toLocaleString()]
141
+ className: "text-2xl font-bold tabular-nums",
142
+ children: ["$", L.toLocaleString()]
134
143
  }), /* @__PURE__ */ m("p", {
135
144
  className: "text-xs text-text-secondary",
136
145
  children: "Total Budget"
137
146
  })] })]
138
147
  })
139
- }) })
148
+ })
140
149
  ]
141
150
  }),
142
151
  /* @__PURE__ */ h("div", {
@@ -146,11 +155,11 @@ function w() {
146
155
  children: [/* @__PURE__ */ m(d, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ m(S, {
147
156
  placeholder: "Search bookings by title, provider, or service...",
148
157
  value: p,
149
- onChange: (e) => w(e.target.value),
158
+ onChange: (e) => T(e.target.value),
150
159
  className: "pl-10"
151
160
  })]
152
161
  }), /* @__PURE__ */ h("div", {
153
- className: "flex items-center gap-2",
162
+ className: "flex flex-wrap items-center gap-2",
154
163
  children: [/* @__PURE__ */ m(l, { className: "h-4 w-4 text-text-secondary" }), [
155
164
  "all",
156
165
  "pending",
@@ -158,14 +167,14 @@ function w() {
158
167
  "completed",
159
168
  "cancelled"
160
169
  ].map((e) => /* @__PURE__ */ h(_, {
161
- variant: T === e ? "default" : "outline",
170
+ variant: E === e ? "default" : "outline",
162
171
  size: "sm",
163
- onClick: () => E(e),
164
- children: [e === "all" ? "All" : C[e].label, /* @__PURE__ */ h("span", {
165
- className: "ml-1 text-xs opacity-70",
172
+ onClick: () => D(e),
173
+ children: [e === "all" ? "All" : w[e].label, /* @__PURE__ */ h("span", {
174
+ className: "ml-1 text-xs opacity-70 tabular-nums",
166
175
  children: [
167
176
  "(",
168
- F[e] ?? 0,
177
+ I[e] ?? 0,
169
178
  ")"
170
179
  ]
171
180
  })]
@@ -173,7 +182,7 @@ function w() {
173
182
  })]
174
183
  }),
175
184
  /* @__PURE__ */ m("div", {
176
- className: "flex gap-2",
185
+ className: "flex flex-wrap gap-2",
177
186
  children: [
178
187
  {
179
188
  field: "date",
@@ -188,23 +197,31 @@ function w() {
188
197
  label: "Progress"
189
198
  }
190
199
  ].map(({ field: e, label: t }) => /* @__PURE__ */ h("button", {
191
- onClick: () => R(e),
192
- className: `flex items-center gap-1 rounded border px-3 py-1 text-xs ${D === e ? "border-primary bg-action-primary-bg/5 text-primary" : "text-text-secondary hover:bg-bg-sunken/50"}`,
200
+ onClick: () => z(e),
201
+ "aria-pressed": O === e,
202
+ className: `flex items-center gap-1 rounded border px-3 py-1 text-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${O === e ? "border-border-strong bg-accent-soft text-text-primary" : "border-border-seam text-text-secondary hover:bg-bg-sunken/50"}`,
193
203
  children: [/* @__PURE__ */ m(r, { className: "h-3 w-3" }), t]
194
204
  }, e))
195
205
  }),
196
206
  /* @__PURE__ */ h("div", {
197
207
  className: "grid gap-6 lg:grid-cols-3",
198
208
  children: [/* @__PURE__ */ m("div", {
199
- className: `space-y-3 ${P ? "lg:col-span-2" : "lg:col-span-3"}`,
200
- children: N.length === 0 ? /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
201
- className: "py-12 text-center text-text-secondary",
202
- children: "No bookings match your filters."
203
- }) }) : N.map((e) => {
204
- let t = C[e.status], n = t.icon;
209
+ className: `space-y-3 ${F ? "lg:col-span-2" : "lg:col-span-3"}`,
210
+ children: P.length === 0 ? /* @__PURE__ */ m(v, {
211
+ className: "border-border-seam",
212
+ children: /* @__PURE__ */ m(y, {
213
+ className: "py-4",
214
+ children: /* @__PURE__ */ m(x, {
215
+ illustration: "empty-search",
216
+ title: "No bookings found",
217
+ description: "No bookings match your current filters."
218
+ })
219
+ })
220
+ }) : P.map((e) => {
221
+ let t = w[e.status], n = t.icon;
205
222
  return /* @__PURE__ */ m(v, {
206
- className: `cursor-pointer transition-colors hover:bg-bg-sunken/30 ${j === e.id ? "border-primary ring-1 ring-primary" : ""}`,
207
- onClick: () => M(j === e.id ? null : e.id),
223
+ className: `cursor-pointer border-border-seam transition-shadow hover:shadow-pop ${M === e.id ? "border-border-strong ring-1 ring-border-focus" : ""}`,
224
+ onClick: () => N(M === e.id ? null : e.id),
208
225
  children: /* @__PURE__ */ h(y, {
209
226
  className: "pt-4",
210
227
  children: [/* @__PURE__ */ h("div", {
@@ -243,7 +260,7 @@ function w() {
243
260
  ]
244
261
  }),
245
262
  /* @__PURE__ */ h("span", {
246
- className: "flex items-center gap-1",
263
+ className: "flex items-center gap-1 tabular-nums",
247
264
  children: [
248
265
  /* @__PURE__ */ m(c, { className: "h-3 w-3" }),
249
266
  " $",
@@ -261,7 +278,7 @@ function w() {
261
278
  children: t.label
262
279
  }),
263
280
  e.status === "in_progress" && /* @__PURE__ */ h("span", {
264
- className: "text-sm font-medium",
281
+ className: "text-sm font-medium tabular-nums",
265
282
  children: [e.progress, "%"]
266
283
  }),
267
284
  /* @__PURE__ */ m(o, { className: "h-4 w-4 text-text-secondary" })
@@ -272,7 +289,7 @@ function w() {
272
289
  children: /* @__PURE__ */ m("div", {
273
290
  className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
274
291
  children: /* @__PURE__ */ m("div", {
275
- className: "h-2 rounded-full bg-blue-500 transition-all",
292
+ className: "h-2 rounded-full bg-action-primary-bg transition-all",
276
293
  style: { width: `${e.progress}%` }
277
294
  })
278
295
  })
@@ -280,146 +297,150 @@ function w() {
280
297
  })
281
298
  }, e.id);
282
299
  })
283
- }), P && /* @__PURE__ */ m("div", {
300
+ }), F && /* @__PURE__ */ m("div", {
284
301
  className: "space-y-4",
285
- children: /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ h("div", {
286
- className: "flex items-center justify-between",
287
- children: [/* @__PURE__ */ m(x, {
288
- className: "text-base",
289
- children: "Booking Details"
290
- }), /* @__PURE__ */ m(_, {
291
- variant: "outline",
292
- size: "sm",
293
- onClick: () => M(null),
294
- children: "Close"
295
- })]
296
- }) }), /* @__PURE__ */ h(y, {
297
- className: "space-y-4",
298
- children: [
299
- /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h3", {
300
- className: "font-semibold",
301
- children: P.title
302
- }), /* @__PURE__ */ m("p", {
303
- className: "mt-1 text-sm text-text-secondary",
304
- children: P.description
305
- })] }),
306
- /* @__PURE__ */ m(g, {
307
- variant: C[P.status].badgeVariant,
308
- children: C[P.status].label
309
- }),
310
- P.status === "in_progress" && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("div", {
311
- className: "flex items-center justify-between text-sm",
312
- children: [/* @__PURE__ */ m("span", {
313
- className: "text-text-secondary",
314
- children: "Progress"
315
- }), /* @__PURE__ */ h("span", {
316
- className: "font-medium",
317
- children: [P.progress, "%"]
318
- })]
319
- }), /* @__PURE__ */ m("div", {
320
- className: "mt-1 h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
321
- children: /* @__PURE__ */ m("div", {
322
- className: "h-2 rounded-full bg-blue-500",
323
- style: { width: `${P.progress}%` }
324
- })
325
- })] }),
326
- /* @__PURE__ */ h("div", {
327
- className: "space-y-2 border-t pt-3 text-sm",
328
- children: [
329
- /* @__PURE__ */ h("div", {
330
- className: "flex justify-between",
331
- children: [/* @__PURE__ */ m("span", {
332
- className: "text-text-secondary",
333
- children: "Service"
334
- }), /* @__PURE__ */ m("span", {
335
- className: "font-medium",
336
- children: P.serviceName
337
- })]
338
- }),
339
- /* @__PURE__ */ h("div", {
340
- className: "flex justify-between",
341
- children: [/* @__PURE__ */ m("span", {
342
- className: "text-text-secondary",
343
- children: "Provider"
344
- }), /* @__PURE__ */ m("span", {
345
- className: "font-medium",
346
- children: P.providerName
347
- })]
348
- }),
349
- /* @__PURE__ */ h("div", {
350
- className: "flex justify-between",
351
- children: [/* @__PURE__ */ m("span", {
352
- className: "text-text-secondary",
353
- children: "Budget"
354
- }), /* @__PURE__ */ h("span", {
355
- className: "font-medium",
356
- children: ["$", P.budget.toLocaleString()]
357
- })]
358
- }),
359
- /* @__PURE__ */ h("div", {
360
- className: "flex justify-between",
361
- children: [/* @__PURE__ */ m("span", {
362
- className: "text-text-secondary",
363
- children: "Start Date"
364
- }), /* @__PURE__ */ m("span", {
365
- className: "font-medium",
366
- children: P.startDate
367
- })]
368
- }),
369
- /* @__PURE__ */ h("div", {
370
- className: "flex justify-between",
371
- children: [/* @__PURE__ */ m("span", {
372
- className: "text-text-secondary",
373
- children: "End Date"
374
- }), /* @__PURE__ */ m("span", {
375
- className: "font-medium",
376
- children: P.endDate
377
- })]
378
- }),
379
- /* @__PURE__ */ h("div", {
380
- className: "flex justify-between",
381
- children: [/* @__PURE__ */ m("span", {
382
- className: "text-text-secondary",
383
- children: "Payment"
384
- }), /* @__PURE__ */ m(g, {
385
- variant: "secondary",
386
- children: P.paymentStatus
387
- })]
388
- }),
389
- /* @__PURE__ */ h("div", {
390
- className: "flex justify-between",
391
- children: [/* @__PURE__ */ m("span", {
392
- className: "text-text-secondary",
393
- children: "Method"
394
- }), /* @__PURE__ */ m("span", {
395
- className: "font-medium",
396
- children: P.paymentMethod.replace("_", " ")
397
- })]
302
+ children: /* @__PURE__ */ h(b, {
303
+ treatment: "glass",
304
+ className: "border-border-seam lg:sticky lg:top-6",
305
+ children: [/* @__PURE__ */ h("div", {
306
+ className: "flex items-center justify-between",
307
+ children: [/* @__PURE__ */ m("h2", {
308
+ className: "text-base font-semibold tracking-tight",
309
+ children: "Booking Details"
310
+ }), /* @__PURE__ */ m(_, {
311
+ variant: "outline",
312
+ size: "sm",
313
+ onClick: () => N(null),
314
+ children: "Close"
315
+ })]
316
+ }), /* @__PURE__ */ h("div", {
317
+ className: "mt-4 space-y-4",
318
+ children: [
319
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h3", {
320
+ className: "font-semibold",
321
+ children: F.title
322
+ }), /* @__PURE__ */ m("p", {
323
+ className: "mt-1 text-sm text-text-secondary",
324
+ children: F.description
325
+ })] }),
326
+ /* @__PURE__ */ m(g, {
327
+ variant: w[F.status].badgeVariant,
328
+ children: w[F.status].label
329
+ }),
330
+ F.status === "in_progress" && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("div", {
331
+ className: "flex items-center justify-between text-sm",
332
+ children: [/* @__PURE__ */ m("span", {
333
+ className: "text-text-secondary",
334
+ children: "Progress"
335
+ }), /* @__PURE__ */ h("span", {
336
+ className: "font-medium tabular-nums",
337
+ children: [F.progress, "%"]
338
+ })]
339
+ }), /* @__PURE__ */ m("div", {
340
+ className: "mt-1 h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
341
+ children: /* @__PURE__ */ m("div", {
342
+ className: "h-2 rounded-full bg-action-primary-bg",
343
+ style: { width: `${F.progress}%` }
398
344
  })
399
- ]
400
- }),
401
- /* @__PURE__ */ h("div", {
402
- className: "flex gap-2 border-t pt-3",
403
- children: [/* @__PURE__ */ m(_, {
404
- className: "flex-1",
405
- size: "sm",
406
- variant: "outline",
407
- children: "Message Provider"
408
- }), P.status === "pending" && /* @__PURE__ */ m(_, {
409
- className: "flex-1",
410
- size: "sm",
411
- variant: "destructive",
412
- children: "Cancel"
413
- })]
414
- })
415
- ]
416
- })] })
345
+ })] }),
346
+ /* @__PURE__ */ h("div", {
347
+ className: "space-y-2 border-t border-border-seam pt-3 text-sm",
348
+ children: [
349
+ /* @__PURE__ */ h("div", {
350
+ className: "flex justify-between",
351
+ children: [/* @__PURE__ */ m("span", {
352
+ className: "text-text-secondary",
353
+ children: "Service"
354
+ }), /* @__PURE__ */ m("span", {
355
+ className: "font-medium",
356
+ children: F.serviceName
357
+ })]
358
+ }),
359
+ /* @__PURE__ */ h("div", {
360
+ className: "flex justify-between",
361
+ children: [/* @__PURE__ */ m("span", {
362
+ className: "text-text-secondary",
363
+ children: "Provider"
364
+ }), /* @__PURE__ */ m("span", {
365
+ className: "font-medium",
366
+ children: F.providerName
367
+ })]
368
+ }),
369
+ /* @__PURE__ */ h("div", {
370
+ className: "flex justify-between",
371
+ children: [/* @__PURE__ */ m("span", {
372
+ className: "text-text-secondary",
373
+ children: "Budget"
374
+ }), /* @__PURE__ */ h("span", {
375
+ className: "font-medium tabular-nums",
376
+ children: ["$", F.budget.toLocaleString()]
377
+ })]
378
+ }),
379
+ /* @__PURE__ */ h("div", {
380
+ className: "flex justify-between",
381
+ children: [/* @__PURE__ */ m("span", {
382
+ className: "text-text-secondary",
383
+ children: "Start Date"
384
+ }), /* @__PURE__ */ m("span", {
385
+ className: "font-medium",
386
+ children: F.startDate
387
+ })]
388
+ }),
389
+ /* @__PURE__ */ h("div", {
390
+ className: "flex justify-between",
391
+ children: [/* @__PURE__ */ m("span", {
392
+ className: "text-text-secondary",
393
+ children: "End Date"
394
+ }), /* @__PURE__ */ m("span", {
395
+ className: "font-medium",
396
+ children: F.endDate
397
+ })]
398
+ }),
399
+ /* @__PURE__ */ h("div", {
400
+ className: "flex justify-between",
401
+ children: [/* @__PURE__ */ m("span", {
402
+ className: "text-text-secondary",
403
+ children: "Payment"
404
+ }), /* @__PURE__ */ m(g, {
405
+ variant: "secondary",
406
+ children: F.paymentStatus
407
+ })]
408
+ }),
409
+ /* @__PURE__ */ h("div", {
410
+ className: "flex justify-between",
411
+ children: [/* @__PURE__ */ m("span", {
412
+ className: "text-text-secondary",
413
+ children: "Method"
414
+ }), /* @__PURE__ */ m("span", {
415
+ className: "font-medium",
416
+ children: F.paymentMethod.replace("_", " ")
417
+ })]
418
+ })
419
+ ]
420
+ }),
421
+ /* @__PURE__ */ h("div", {
422
+ className: "flex gap-2 border-t border-border-seam pt-3",
423
+ children: [/* @__PURE__ */ m(_, {
424
+ className: "flex-1",
425
+ size: "sm",
426
+ variant: "outline",
427
+ children: "Message Provider"
428
+ }), F.status === "pending" && /* @__PURE__ */ m(_, {
429
+ className: "flex-1",
430
+ size: "sm",
431
+ variant: "destructive",
432
+ children: "Cancel"
433
+ })]
434
+ })
435
+ ]
436
+ })]
437
+ })
417
438
  })]
418
439
  })
419
440
  ]
420
441
  });
421
442
  }
422
443
  //#endregion
423
- export { w as BookingsPage };
444
+ export { T as BookingsPage };
424
445
 
425
446
  //# sourceMappingURL=BookingsPage.js.map