@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,18 +2,18 @@ import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
2
2
  import { useState as t } from "react";
3
3
  import { ArrowLeft as n, BookOpen as r, Calendar as i, CheckCircle2 as a, ChevronDown as o, ChevronUp as s, ClipboardList as c, Clock as l, DollarSign as u, FileText as d, MessageSquare as f, Package as p, Shield as m, Star as h, Tag as g, User as _ } from "lucide-react";
4
4
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
5
- import { Badge as b, Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as b, Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T, EmphasisPanel as E, GlassCard as D, ShowMore as O } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/proserviceworld/pages/ServiceDetailsPage.tsx
7
- function E() {
8
- let { services: E, providers: D } = e(), [O, k] = t(E[0]?.id ?? ""), [A, j] = t("packages"), [M, N] = t(null), [P, F] = t(!1), [I, L] = t(null), R = E.find((e) => e.id === O) ?? E[0], z = R ? D.find((e) => e.id === R.providerId) : null;
9
- if (!R) return /* @__PURE__ */ v("div", {
7
+ function k() {
8
+ let { services: k, providers: A } = e(), [j, M] = t(k[0]?.id ?? ""), [N, P] = t("packages"), [F, I] = t(null), [L, R] = t(!1), [z, B] = t(null), V = k.find((e) => e.id === j) ?? k[0], H = V ? A.find((e) => e.id === V.providerId) : null;
9
+ if (!V) return /* @__PURE__ */ v("div", {
10
10
  className: "flex items-center justify-center p-12",
11
11
  children: /* @__PURE__ */ v("p", {
12
12
  className: "text-text-secondary",
13
13
  children: "No services available."
14
14
  })
15
15
  });
16
- let B = [
16
+ let U = [
17
17
  {
18
18
  key: "packages",
19
19
  label: "Packages",
@@ -34,9 +34,9 @@ function E() {
34
34
  label: "FAQ",
35
35
  icon: r
36
36
  }
37
- ], V = R.pricing.type === "hourly" ? `$${R.pricing.hourlyRate}/hr` : R.pricing.type === "fixed" ? `$${R.pricing.basePrice.toLocaleString()} fixed` : `From $${R.pricing.basePrice.toLocaleString()}`;
37
+ ], W = V.pricing.type === "hourly" ? `$${V.pricing.hourlyRate}/hr` : V.pricing.type === "fixed" ? `$${V.pricing.basePrice.toLocaleString()} fixed` : `From $${V.pricing.basePrice.toLocaleString()}`;
38
38
  return /* @__PURE__ */ y("div", {
39
- className: "space-y-6 p-6",
39
+ className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
40
40
  children: [
41
41
  /* @__PURE__ */ y("div", {
42
42
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
@@ -46,7 +46,7 @@ function E() {
46
46
  /* @__PURE__ */ y(x, {
47
47
  variant: "outline",
48
48
  size: "sm",
49
- onClick: () => k(E[0]?.id ?? ""),
49
+ onClick: () => M(k[0]?.id ?? ""),
50
50
  children: [/* @__PURE__ */ v(n, { className: "mr-2 h-4 w-4" }), " Services"]
51
51
  }),
52
52
  /* @__PURE__ */ v("span", {
@@ -54,10 +54,11 @@ function E() {
54
54
  children: "/"
55
55
  }),
56
56
  /* @__PURE__ */ v("select", {
57
- className: "rounded border bg-bg-surface px-2 py-1 text-sm",
58
- value: O,
59
- onChange: (e) => k(e.target.value),
60
- children: E.map((e) => /* @__PURE__ */ v("option", {
57
+ "aria-label": "Select service",
58
+ 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",
59
+ value: j,
60
+ onChange: (e) => M(e.target.value),
61
+ children: k.map((e) => /* @__PURE__ */ v("option", {
61
62
  value: e.id,
62
63
  children: e.title
63
64
  }, e.id))
@@ -65,7 +66,7 @@ function E() {
65
66
  ]
66
67
  }), /* @__PURE__ */ y(x, {
67
68
  size: "sm",
68
- onClick: () => F(!0),
69
+ onClick: () => R(!0),
69
70
  children: [/* @__PURE__ */ v(i, { className: "mr-2 h-4 w-4" }), " Book This Service"]
70
71
  })]
71
72
  }),
@@ -74,8 +75,8 @@ function E() {
74
75
  children: [/* @__PURE__ */ y("div", {
75
76
  className: "space-y-6 lg:col-span-2",
76
77
  children: [
77
- /* @__PURE__ */ v(S, { children: /* @__PURE__ */ y(C, {
78
- className: "pt-6",
78
+ /* @__PURE__ */ y(E, {
79
+ className: "relative overflow-hidden",
79
80
  children: [
80
81
  /* @__PURE__ */ y("div", {
81
82
  className: "flex flex-wrap items-start justify-between gap-4",
@@ -85,53 +86,53 @@ function E() {
85
86
  /* @__PURE__ */ y("div", {
86
87
  className: "flex items-center gap-2",
87
88
  children: [
88
- R.featured && /* @__PURE__ */ v(b, { children: "Featured" }),
89
+ V.featured && /* @__PURE__ */ v(b, { children: "Featured" }),
89
90
  /* @__PURE__ */ v(b, {
90
91
  variant: "secondary",
91
- children: R.category.replace(/_/g, " ")
92
+ children: V.category.replace(/_/g, " ")
92
93
  }),
93
94
  /* @__PURE__ */ v(b, {
94
95
  variant: "outline",
95
- children: R.subcategory
96
+ children: V.subcategory
96
97
  })
97
98
  ]
98
99
  }),
99
100
  /* @__PURE__ */ v("h1", {
100
- className: "text-2xl font-bold",
101
- children: R.title
101
+ className: "text-2xl font-bold tracking-tight",
102
+ children: V.title
102
103
  }),
103
104
  /* @__PURE__ */ v("p", {
104
105
  className: "max-w-2xl text-text-secondary",
105
- children: R.description
106
+ children: V.description
106
107
  })
107
108
  ]
108
109
  }), /* @__PURE__ */ y("div", {
109
110
  className: "text-right",
110
111
  children: [/* @__PURE__ */ v("p", {
111
- className: "text-2xl font-bold text-primary",
112
- children: V
112
+ className: "text-2xl font-bold text-accent-blue tabular-nums",
113
+ children: W
113
114
  }), /* @__PURE__ */ y("p", {
114
115
  className: "text-xs text-text-secondary",
115
- children: [R.pricing.type, " pricing"]
116
+ children: [V.pricing.type, " pricing"]
116
117
  })]
117
118
  })]
118
119
  }),
119
120
  /* @__PURE__ */ y("div", {
120
- className: "mt-6 flex flex-wrap gap-6 border-t pt-4",
121
+ className: "mt-6 flex flex-wrap gap-6 border-t border-border-seam pt-4",
121
122
  children: [
122
123
  /* @__PURE__ */ y("div", {
123
124
  className: "flex items-center gap-2",
124
125
  children: [
125
- /* @__PURE__ */ v(h, { className: "h-4 w-4 text-yellow-500" }),
126
+ /* @__PURE__ */ v(h, { className: "h-4 w-4 text-status-warning-text" }),
126
127
  /* @__PURE__ */ v("span", {
127
- className: "text-sm font-medium",
128
- children: R.rating
128
+ className: "text-sm font-medium tabular-nums",
129
+ children: V.rating
129
130
  }),
130
131
  /* @__PURE__ */ y("span", {
131
132
  className: "text-xs text-text-secondary",
132
133
  children: [
133
134
  "(",
134
- R.providerReviews,
135
+ V.providerReviews,
135
136
  " reviews)"
136
137
  ]
137
138
  })
@@ -140,58 +141,61 @@ function E() {
140
141
  /* @__PURE__ */ y("div", {
141
142
  className: "flex items-center gap-2",
142
143
  children: [/* @__PURE__ */ v(l, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ y("span", {
143
- className: "text-sm",
144
- children: [R.duration.typical, " days typical"]
144
+ className: "text-sm tabular-nums",
145
+ children: [V.duration.typical, " days typical"]
145
146
  })]
146
147
  }),
147
148
  /* @__PURE__ */ y("div", {
148
149
  className: "flex items-center gap-2",
149
- children: [/* @__PURE__ */ v(a, { className: "h-4 w-4 text-green-500" }), /* @__PURE__ */ y("span", {
150
- className: "text-sm",
151
- children: [R.totalBookings, " bookings"]
150
+ children: [/* @__PURE__ */ v(a, { className: "h-4 w-4 text-status-success-text" }), /* @__PURE__ */ y("span", {
151
+ className: "text-sm tabular-nums",
152
+ children: [V.totalBookings, " bookings"]
152
153
  })]
153
154
  }),
154
155
  /* @__PURE__ */ y("div", {
155
156
  className: "flex items-center gap-2",
156
157
  children: [/* @__PURE__ */ v(i, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ y("span", {
157
- className: "text-sm",
158
+ className: "text-sm tabular-nums",
158
159
  children: [
159
- R.duration.min,
160
+ V.duration.min,
160
161
  "-",
161
- R.duration.max,
162
+ V.duration.max,
162
163
  " days range"
163
164
  ]
164
165
  })]
165
166
  })
166
167
  ]
167
168
  }),
168
- R.tags.length > 0 && /* @__PURE__ */ y("div", {
169
- className: "mt-4 flex flex-wrap gap-2",
170
- children: [/* @__PURE__ */ v(g, { className: "h-4 w-4 text-text-secondary" }), R.tags.map((e) => /* @__PURE__ */ v(b, {
169
+ V.tags.length > 0 && /* @__PURE__ */ y("div", {
170
+ className: "mt-4 flex flex-wrap items-center gap-2",
171
+ children: [/* @__PURE__ */ v(g, { className: "h-4 w-4 text-text-secondary" }), V.tags.map((e) => /* @__PURE__ */ v(b, {
171
172
  variant: "outline",
172
173
  className: "text-xs",
173
174
  children: e
174
175
  }, e))]
175
176
  })
176
177
  ]
177
- }) }),
178
+ }),
178
179
  /* @__PURE__ */ v("div", {
179
- className: "flex gap-1 border-b",
180
- children: B.map(({ key: e, label: t, icon: n }) => /* @__PURE__ */ y("button", {
181
- onClick: () => j(e),
182
- className: `flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors ${A === e ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary"}`,
180
+ className: "flex gap-1 border-b border-border-seam",
181
+ children: U.map(({ key: e, label: t, icon: n }) => /* @__PURE__ */ y("button", {
182
+ onClick: () => P(e),
183
+ "aria-pressed": N === e,
184
+ className: `flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${N === e ? "border-accent-blue text-accent-blue" : "border-transparent text-text-secondary hover:text-text-primary"}`,
183
185
  children: [/* @__PURE__ */ v(n, { className: "h-4 w-4" }), t]
184
186
  }, e))
185
187
  }),
186
- A === "packages" && /* @__PURE__ */ v("div", {
188
+ N === "packages" && /* @__PURE__ */ v("div", {
187
189
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
188
- children: R.packages.map((e) => /* @__PURE__ */ y(S, {
189
- className: `relative ${e.popular ? "border-primary ring-1 ring-primary" : ""} ${I === e.id ? "bg-action-primary-bg/5" : ""}`,
190
+ children: V.packages.map((e) => /* @__PURE__ */ y(D, {
191
+ treatment: e.popular ? "glass" : "plain",
192
+ glow: e.popular,
193
+ className: `relative border-border-seam ${z === e.id ? "ring-1 ring-accent-blue" : ""}`,
190
194
  children: [
191
195
  e.popular && /* @__PURE__ */ v("div", {
192
196
  className: "absolute -top-3 left-1/2 -translate-x-1/2",
193
197
  children: /* @__PURE__ */ v(b, {
194
- className: "bg-action-primary-bg text-action-primary-text",
198
+ className: "bg-accent-blue text-action-primary-text",
195
199
  children: "Most Popular"
196
200
  })
197
201
  }),
@@ -209,7 +213,7 @@ function E() {
209
213
  className: "space-y-4",
210
214
  children: [
211
215
  /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("span", {
212
- className: "text-3xl font-bold",
216
+ className: "text-3xl font-bold tabular-nums",
213
217
  children: ["$", e.price.toLocaleString()]
214
218
  }), /* @__PURE__ */ y("span", {
215
219
  className: "text-sm text-text-secondary",
@@ -223,14 +227,14 @@ function E() {
223
227
  className: "space-y-2",
224
228
  children: e.features.map((e, t) => /* @__PURE__ */ y("li", {
225
229
  className: "flex items-start gap-2 text-sm",
226
- children: [/* @__PURE__ */ v(a, { className: "mt-0.5 h-4 w-4 shrink-0 text-green-500" }), e]
230
+ children: [/* @__PURE__ */ v(a, { className: "mt-0.5 h-4 w-4 shrink-0 text-status-success-text" }), e]
227
231
  }, t))
228
232
  }),
229
233
  /* @__PURE__ */ v(x, {
230
234
  className: "w-full",
231
235
  variant: e.popular ? "default" : "outline",
232
236
  onClick: () => {
233
- L(e.id), F(!0);
237
+ B(e.id), R(!0);
234
238
  },
235
239
  children: "Select Package"
236
240
  })
@@ -239,264 +243,292 @@ function E() {
239
243
  ]
240
244
  }, e.id))
241
245
  }),
242
- A === "deliverables" && /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
243
- className: "text-base",
244
- children: "What You'll Receive"
245
- }) }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ v("ul", {
246
- className: "grid gap-3 sm:grid-cols-2",
247
- children: R.deliverables.map((e, t) => /* @__PURE__ */ y("li", {
248
- className: "flex items-center gap-3 rounded-lg border p-3",
249
- children: [/* @__PURE__ */ v(d, { className: "h-5 w-5 text-primary" }), /* @__PURE__ */ v("span", {
250
- className: "text-sm font-medium",
251
- children: e
252
- })]
253
- }, t))
254
- }) })] }),
255
- A === "requirements" && /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
256
- className: "text-base",
257
- children: "What We Need From You"
258
- }) }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ v("ul", {
259
- className: "space-y-3",
260
- children: R.requirements.map((e, t) => /* @__PURE__ */ y("li", {
261
- className: "flex items-start gap-3 rounded-lg border p-3",
262
- children: [/* @__PURE__ */ v(c, { className: "mt-0.5 h-5 w-5 text-orange-500" }), /* @__PURE__ */ v("span", {
263
- className: "text-sm",
264
- children: e
265
- })]
266
- }, t))
267
- }) })] }),
268
- A === "faq" && /* @__PURE__ */ v("div", {
246
+ N === "deliverables" && /* @__PURE__ */ y(S, {
247
+ className: "border-border-seam",
248
+ children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
249
+ className: "text-base",
250
+ children: "What You'll Receive"
251
+ }) }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(O, {
252
+ collapsedHeight: 180,
253
+ children: /* @__PURE__ */ v("ul", {
254
+ className: "grid gap-3 sm:grid-cols-2",
255
+ children: V.deliverables.map((e, t) => /* @__PURE__ */ y("li", {
256
+ className: "flex items-center gap-3 rounded-lg border border-border-seam p-3",
257
+ children: [/* @__PURE__ */ v(d, { className: "h-5 w-5 text-accent-blue" }), /* @__PURE__ */ v("span", {
258
+ className: "text-sm font-medium",
259
+ children: e
260
+ })]
261
+ }, t))
262
+ })
263
+ }) })]
264
+ }),
265
+ N === "requirements" && /* @__PURE__ */ y(S, {
266
+ className: "border-border-seam",
267
+ children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
268
+ className: "text-base",
269
+ children: "What We Need From You"
270
+ }) }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(O, {
271
+ collapsedHeight: 180,
272
+ children: /* @__PURE__ */ v("ul", {
273
+ className: "space-y-3",
274
+ children: V.requirements.map((e, t) => /* @__PURE__ */ y("li", {
275
+ className: "flex items-start gap-3 rounded-lg border border-border-seam p-3",
276
+ children: [/* @__PURE__ */ v(c, { className: "mt-0.5 h-5 w-5 text-status-warning-text" }), /* @__PURE__ */ v("span", {
277
+ className: "text-sm",
278
+ children: e
279
+ })]
280
+ }, t))
281
+ })
282
+ }) })]
283
+ }),
284
+ N === "faq" && /* @__PURE__ */ v("div", {
269
285
  className: "space-y-3",
270
- children: R.faq.length === 0 ? /* @__PURE__ */ v(S, { children: /* @__PURE__ */ v(C, {
271
- className: "py-8 text-center text-text-secondary",
272
- children: "No FAQ items for this service yet."
273
- }) }) : R.faq.map((e) => /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ y("button", {
274
- className: "flex w-full items-center justify-between p-4 text-left",
275
- onClick: () => N(M === e.id ? null : e.id),
276
- children: [/* @__PURE__ */ v("span", {
277
- className: "font-medium",
278
- children: e.question
279
- }), M === e.id ? /* @__PURE__ */ v(s, { className: "h-4 w-4 text-text-secondary" }) : /* @__PURE__ */ v(o, { className: "h-4 w-4 text-text-secondary" })]
280
- }), M === e.id && /* @__PURE__ */ v(C, {
281
- className: "border-t pt-4",
282
- children: /* @__PURE__ */ v("p", {
283
- className: "text-sm text-text-secondary",
284
- children: e.answer
286
+ children: V.faq.length === 0 ? /* @__PURE__ */ v(S, {
287
+ className: "border-border-seam",
288
+ children: /* @__PURE__ */ v(C, {
289
+ className: "py-8 text-center text-text-secondary",
290
+ children: "No FAQ items for this service yet."
285
291
  })
286
- })] }, e.id))
292
+ }) : V.faq.map((e) => /* @__PURE__ */ y(S, {
293
+ className: "border-border-seam",
294
+ children: [/* @__PURE__ */ y("button", {
295
+ className: "flex w-full items-center justify-between p-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
296
+ "aria-expanded": F === e.id,
297
+ onClick: () => I(F === e.id ? null : e.id),
298
+ children: [/* @__PURE__ */ v("span", {
299
+ className: "font-medium",
300
+ children: e.question
301
+ }), F === e.id ? /* @__PURE__ */ v(s, { className: "h-4 w-4 text-text-secondary" }) : /* @__PURE__ */ v(o, { className: "h-4 w-4 text-text-secondary" })]
302
+ }), F === e.id && /* @__PURE__ */ v(C, {
303
+ className: "border-t border-border-seam pt-4",
304
+ children: /* @__PURE__ */ v("p", {
305
+ className: "text-sm text-text-secondary",
306
+ children: e.answer
307
+ })
308
+ })]
309
+ }, e.id))
287
310
  })
288
311
  ]
289
312
  }), /* @__PURE__ */ y("div", {
290
313
  className: "space-y-4",
291
- children: [z && /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
292
- className: "text-base",
293
- children: "Service Provider"
294
- }) }), /* @__PURE__ */ y(C, {
295
- className: "space-y-4",
296
- children: [
297
- /* @__PURE__ */ y("div", {
298
- className: "flex items-center gap-3",
299
- children: [/* @__PURE__ */ v("div", {
300
- className: "flex h-12 w-12 items-center justify-center rounded-full bg-action-primary-bg/10 text-primary font-semibold",
301
- children: z.name.charAt(0)
302
- }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
303
- className: "font-medium",
304
- children: z.name
305
- }), /* @__PURE__ */ v("p", {
306
- className: "text-sm text-text-secondary",
307
- children: z.businessName
308
- })] })]
309
- }),
310
- z.verified && /* @__PURE__ */ y("div", {
311
- className: "flex items-center gap-2 rounded-lg bg-green-50 p-2 dark:bg-green-950",
312
- children: [/* @__PURE__ */ v(m, { className: "h-4 w-4 text-green-600" }), /* @__PURE__ */ v("span", {
313
- className: "text-sm font-medium text-green-700 dark:text-green-400",
314
- children: "Verified Provider"
315
- })]
316
- }),
317
- /* @__PURE__ */ y("div", {
318
- className: "space-y-3 text-sm",
319
- children: [
320
- /* @__PURE__ */ y("div", {
321
- className: "flex items-center justify-between",
322
- children: [/* @__PURE__ */ v("span", {
323
- className: "text-text-secondary",
324
- children: "Rating"
325
- }), /* @__PURE__ */ y("div", {
326
- className: "flex items-center gap-1",
327
- children: [
328
- /* @__PURE__ */ v(h, { className: "h-4 w-4 text-yellow-500" }),
329
- /* @__PURE__ */ v("span", {
330
- className: "font-medium",
331
- children: z.rating
332
- }),
333
- /* @__PURE__ */ y("span", {
334
- className: "text-text-secondary",
335
- children: [
336
- "(",
337
- z.totalReviews,
338
- ")"
339
- ]
340
- })
341
- ]
342
- })]
343
- }),
344
- /* @__PURE__ */ y("div", {
345
- className: "flex items-center justify-between",
346
- children: [/* @__PURE__ */ v("span", {
347
- className: "text-text-secondary",
348
- children: "Completion Rate"
349
- }), /* @__PURE__ */ y("span", {
350
- className: "font-medium",
351
- children: [z.completionRate, "%"]
352
- })]
353
- }),
354
- /* @__PURE__ */ y("div", {
355
- className: "flex items-center justify-between",
356
- children: [/* @__PURE__ */ v("span", {
357
- className: "text-text-secondary",
358
- children: "Response Time"
359
- }), /* @__PURE__ */ y("span", {
360
- className: "font-medium",
361
- children: [z.responseTime, "h avg"]
362
- })]
363
- }),
364
- /* @__PURE__ */ y("div", {
365
- className: "flex items-center justify-between",
366
- children: [/* @__PURE__ */ v("span", {
367
- className: "text-text-secondary",
368
- children: "Experience"
369
- }), /* @__PURE__ */ y("span", {
370
- className: "font-medium",
371
- children: [z.yearsExperience, " years"]
372
- })]
373
- }),
374
- /* @__PURE__ */ y("div", {
375
- className: "flex items-center justify-between",
376
- children: [/* @__PURE__ */ v("span", {
377
- className: "text-text-secondary",
378
- children: "Projects Done"
379
- }), /* @__PURE__ */ v("span", {
380
- className: "font-medium",
381
- children: z.projectsCompleted
382
- })]
383
- }),
384
- /* @__PURE__ */ y("div", {
385
- className: "flex items-center justify-between",
386
- children: [/* @__PURE__ */ v("span", {
387
- className: "text-text-secondary",
388
- children: "Hourly Rate"
389
- }), /* @__PURE__ */ y("span", {
390
- className: "font-medium",
391
- children: [
392
- "$",
393
- z.hourlyRate,
394
- "/hr"
395
- ]
396
- })]
397
- }),
398
- /* @__PURE__ */ y("div", {
399
- className: "flex items-center justify-between",
400
- children: [/* @__PURE__ */ v("span", {
401
- className: "text-text-secondary",
402
- children: "Location"
403
- }), /* @__PURE__ */ v("span", {
404
- className: "font-medium",
405
- children: z.location
406
- })]
407
- })
408
- ]
409
- }),
410
- /* @__PURE__ */ y("div", {
411
- className: "space-y-2 border-t pt-3",
412
- children: [/* @__PURE__ */ v("p", {
413
- className: "text-xs font-medium text-text-secondary",
414
- children: "Certifications"
415
- }), /* @__PURE__ */ v("div", {
416
- className: "flex flex-wrap gap-1",
417
- children: z.certifications.map((e) => /* @__PURE__ */ v(b, {
418
- variant: "secondary",
419
- className: "text-xs",
420
- children: e
421
- }, e))
422
- })]
423
- }),
424
- /* @__PURE__ */ y("div", {
425
- className: "space-y-2 border-t pt-3",
426
- children: [/* @__PURE__ */ v("p", {
427
- className: "text-xs font-medium text-text-secondary",
428
- children: "Languages"
429
- }), /* @__PURE__ */ v("div", {
430
- className: "flex flex-wrap gap-1",
431
- children: z.languages.map((e) => /* @__PURE__ */ v(b, {
314
+ children: [H && /* @__PURE__ */ y(S, {
315
+ className: "border-border-seam",
316
+ children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
317
+ className: "text-base",
318
+ children: "Service Provider"
319
+ }) }), /* @__PURE__ */ y(C, {
320
+ className: "space-y-4",
321
+ children: [
322
+ /* @__PURE__ */ y("div", {
323
+ className: "flex items-center gap-3",
324
+ children: [/* @__PURE__ */ v("div", {
325
+ className: "flex h-12 w-12 items-center justify-center rounded-full bg-accent-soft text-text-primary font-semibold",
326
+ children: H.name.charAt(0)
327
+ }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
328
+ className: "font-medium",
329
+ children: H.name
330
+ }), /* @__PURE__ */ v("p", {
331
+ className: "text-sm text-text-secondary",
332
+ children: H.businessName
333
+ })] })]
334
+ }),
335
+ H.verified && /* @__PURE__ */ y("div", {
336
+ className: "flex items-center gap-2 rounded-lg bg-status-success-bg-subtle p-2",
337
+ children: [/* @__PURE__ */ v(m, { className: "h-4 w-4 text-status-success-text" }), /* @__PURE__ */ v("span", {
338
+ className: "text-sm font-medium text-status-success-text",
339
+ children: "Verified Provider"
340
+ })]
341
+ }),
342
+ /* @__PURE__ */ y("div", {
343
+ className: "space-y-3 text-sm",
344
+ children: [
345
+ /* @__PURE__ */ y("div", {
346
+ className: "flex items-center justify-between",
347
+ children: [/* @__PURE__ */ v("span", {
348
+ className: "text-text-secondary",
349
+ children: "Rating"
350
+ }), /* @__PURE__ */ y("div", {
351
+ className: "flex items-center gap-1",
352
+ children: [
353
+ /* @__PURE__ */ v(h, { className: "h-4 w-4 text-status-warning-text" }),
354
+ /* @__PURE__ */ v("span", {
355
+ className: "font-medium tabular-nums",
356
+ children: H.rating
357
+ }),
358
+ /* @__PURE__ */ y("span", {
359
+ className: "text-text-secondary tabular-nums",
360
+ children: [
361
+ "(",
362
+ H.totalReviews,
363
+ ")"
364
+ ]
365
+ })
366
+ ]
367
+ })]
368
+ }),
369
+ /* @__PURE__ */ y("div", {
370
+ className: "flex items-center justify-between",
371
+ children: [/* @__PURE__ */ v("span", {
372
+ className: "text-text-secondary",
373
+ children: "Completion Rate"
374
+ }), /* @__PURE__ */ y("span", {
375
+ className: "font-medium tabular-nums",
376
+ children: [H.completionRate, "%"]
377
+ })]
378
+ }),
379
+ /* @__PURE__ */ y("div", {
380
+ className: "flex items-center justify-between",
381
+ children: [/* @__PURE__ */ v("span", {
382
+ className: "text-text-secondary",
383
+ children: "Response Time"
384
+ }), /* @__PURE__ */ y("span", {
385
+ className: "font-medium tabular-nums",
386
+ children: [H.responseTime, "h avg"]
387
+ })]
388
+ }),
389
+ /* @__PURE__ */ y("div", {
390
+ className: "flex items-center justify-between",
391
+ children: [/* @__PURE__ */ v("span", {
392
+ className: "text-text-secondary",
393
+ children: "Experience"
394
+ }), /* @__PURE__ */ y("span", {
395
+ className: "font-medium tabular-nums",
396
+ children: [H.yearsExperience, " years"]
397
+ })]
398
+ }),
399
+ /* @__PURE__ */ y("div", {
400
+ className: "flex items-center justify-between",
401
+ children: [/* @__PURE__ */ v("span", {
402
+ className: "text-text-secondary",
403
+ children: "Projects Done"
404
+ }), /* @__PURE__ */ v("span", {
405
+ className: "font-medium tabular-nums",
406
+ children: H.projectsCompleted
407
+ })]
408
+ }),
409
+ /* @__PURE__ */ y("div", {
410
+ className: "flex items-center justify-between",
411
+ children: [/* @__PURE__ */ v("span", {
412
+ className: "text-text-secondary",
413
+ children: "Hourly Rate"
414
+ }), /* @__PURE__ */ y("span", {
415
+ className: "font-medium tabular-nums",
416
+ children: [
417
+ "$",
418
+ H.hourlyRate,
419
+ "/hr"
420
+ ]
421
+ })]
422
+ }),
423
+ /* @__PURE__ */ y("div", {
424
+ className: "flex items-center justify-between",
425
+ children: [/* @__PURE__ */ v("span", {
426
+ className: "text-text-secondary",
427
+ children: "Location"
428
+ }), /* @__PURE__ */ v("span", {
429
+ className: "font-medium",
430
+ children: H.location
431
+ })]
432
+ })
433
+ ]
434
+ }),
435
+ /* @__PURE__ */ y("div", {
436
+ className: "space-y-2 border-t border-border-seam pt-3",
437
+ children: [/* @__PURE__ */ v("p", {
438
+ className: "text-xs font-medium text-text-secondary",
439
+ children: "Certifications"
440
+ }), /* @__PURE__ */ v("div", {
441
+ className: "flex flex-wrap gap-1",
442
+ children: H.certifications.map((e) => /* @__PURE__ */ v(b, {
443
+ variant: "secondary",
444
+ className: "text-xs",
445
+ children: e
446
+ }, e))
447
+ })]
448
+ }),
449
+ /* @__PURE__ */ y("div", {
450
+ className: "space-y-2 border-t border-border-seam pt-3",
451
+ children: [/* @__PURE__ */ v("p", {
452
+ className: "text-xs font-medium text-text-secondary",
453
+ children: "Languages"
454
+ }), /* @__PURE__ */ v("div", {
455
+ className: "flex flex-wrap gap-1",
456
+ children: H.languages.map((e) => /* @__PURE__ */ v(b, {
457
+ variant: "outline",
458
+ className: "text-xs",
459
+ children: e
460
+ }, e))
461
+ })]
462
+ }),
463
+ /* @__PURE__ */ y("div", {
464
+ className: "flex gap-2 border-t border-border-seam pt-3",
465
+ children: [/* @__PURE__ */ y(x, {
466
+ className: "flex-1",
467
+ size: "sm",
432
468
  variant: "outline",
433
- className: "text-xs",
434
- children: e
435
- }, e))
436
- })]
437
- }),
438
- /* @__PURE__ */ y("div", {
439
- className: "flex gap-2 border-t pt-3",
440
- children: [/* @__PURE__ */ y(x, {
441
- className: "flex-1",
442
- size: "sm",
443
- variant: "outline",
444
- children: [/* @__PURE__ */ v(_, { className: "mr-2 h-4 w-4" }), " View Profile"]
445
- }), /* @__PURE__ */ y(x, {
446
- className: "flex-1",
447
- size: "sm",
448
- variant: "outline",
449
- children: [/* @__PURE__ */ v(f, { className: "mr-2 h-4 w-4" }), " Message"]
450
- })]
451
- })
452
- ]
453
- })] }), /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
454
- className: "text-base",
455
- children: "Quick Book"
456
- }) }), /* @__PURE__ */ y(C, {
457
- className: "space-y-3",
458
- children: [
459
- /* @__PURE__ */ y("div", {
460
- className: "flex items-center justify-between text-sm",
461
- children: [/* @__PURE__ */ v("span", {
462
- className: "text-text-secondary",
463
- children: "Starting from"
464
- }), /* @__PURE__ */ y("span", {
465
- className: "text-lg font-bold text-primary",
466
- children: ["$", R.pricing.basePrice.toLocaleString()]
467
- })]
468
- }),
469
- /* @__PURE__ */ y("div", {
470
- className: "flex items-center gap-2 text-sm text-text-secondary",
471
- children: [/* @__PURE__ */ v(l, { className: "h-4 w-4" }), /* @__PURE__ */ y("span", { children: [
472
- "Typical duration: ",
473
- R.duration.typical,
474
- " days"
475
- ] })]
476
- }),
477
- /* @__PURE__ */ y("div", {
478
- className: "flex items-center gap-2 text-sm text-text-secondary",
479
- children: [/* @__PURE__ */ v(u, { className: "h-4 w-4" }), /* @__PURE__ */ y("span", { children: [R.pricing.type, " pricing model"] })]
480
- }),
481
- /* @__PURE__ */ y(x, {
482
- className: "w-full",
483
- onClick: () => F(!0),
484
- children: [/* @__PURE__ */ v(i, { className: "mr-2 h-4 w-4" }), " Book Now"]
485
- })
486
- ]
487
- })] })]
469
+ children: [/* @__PURE__ */ v(_, { className: "mr-2 h-4 w-4" }), " View Profile"]
470
+ }), /* @__PURE__ */ y(x, {
471
+ className: "flex-1",
472
+ size: "sm",
473
+ variant: "outline",
474
+ children: [/* @__PURE__ */ v(f, { className: "mr-2 h-4 w-4" }), " Message"]
475
+ })]
476
+ })
477
+ ]
478
+ })]
479
+ }), /* @__PURE__ */ y(D, {
480
+ treatment: "glass",
481
+ glow: !0,
482
+ className: "border-border-seam",
483
+ children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, {
484
+ className: "text-base",
485
+ children: "Quick Book"
486
+ }) }), /* @__PURE__ */ y(C, {
487
+ className: "space-y-3",
488
+ children: [
489
+ /* @__PURE__ */ y("div", {
490
+ className: "flex items-center justify-between text-sm",
491
+ children: [/* @__PURE__ */ v("span", {
492
+ className: "text-text-secondary",
493
+ children: "Starting from"
494
+ }), /* @__PURE__ */ y("span", {
495
+ className: "text-lg font-bold text-accent-blue tabular-nums",
496
+ children: ["$", V.pricing.basePrice.toLocaleString()]
497
+ })]
498
+ }),
499
+ /* @__PURE__ */ y("div", {
500
+ className: "flex items-center gap-2 text-sm text-text-secondary",
501
+ children: [/* @__PURE__ */ v(l, { className: "h-4 w-4" }), /* @__PURE__ */ y("span", { children: [
502
+ "Typical duration: ",
503
+ V.duration.typical,
504
+ " days"
505
+ ] })]
506
+ }),
507
+ /* @__PURE__ */ y("div", {
508
+ className: "flex items-center gap-2 text-sm text-text-secondary",
509
+ children: [/* @__PURE__ */ v(u, { className: "h-4 w-4" }), /* @__PURE__ */ y("span", { children: [V.pricing.type, " pricing model"] })]
510
+ }),
511
+ /* @__PURE__ */ y(x, {
512
+ className: "w-full",
513
+ onClick: () => R(!0),
514
+ children: [/* @__PURE__ */ v(i, { className: "mr-2 h-4 w-4" }), " Book Now"]
515
+ })
516
+ ]
517
+ })]
518
+ })]
488
519
  })]
489
520
  }),
490
- P && /* @__PURE__ */ v("div", {
491
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
492
- children: /* @__PURE__ */ y(S, {
493
- className: "w-full max-w-lg mx-4",
521
+ L && /* @__PURE__ */ v("div", {
522
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-overlay",
523
+ children: /* @__PURE__ */ y(D, {
524
+ treatment: "glass",
525
+ className: "w-full max-w-lg mx-4 border-border-seam",
494
526
  children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ y("div", {
495
527
  className: "flex items-center justify-between",
496
528
  children: [/* @__PURE__ */ v(T, { children: "Book Service" }), /* @__PURE__ */ v(x, {
497
529
  variant: "outline",
498
530
  size: "sm",
499
- onClick: () => F(!1),
531
+ onClick: () => R(!1),
500
532
  children: "Close"
501
533
  })]
502
534
  }) }), /* @__PURE__ */ y(C, {
@@ -504,26 +536,27 @@ function E() {
504
536
  children: [
505
537
  /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
506
538
  className: "font-medium",
507
- children: R.title
539
+ children: V.title
508
540
  }), /* @__PURE__ */ y("p", {
509
541
  className: "text-sm text-text-secondary",
510
- children: ["by ", R.providerName]
542
+ children: ["by ", V.providerName]
511
543
  })] }),
512
544
  /* @__PURE__ */ y("div", {
513
545
  className: "space-y-2",
514
546
  children: [/* @__PURE__ */ v("p", {
515
547
  className: "text-sm font-medium",
516
548
  children: "Select Package"
517
- }), R.packages.map((e) => /* @__PURE__ */ y("button", {
518
- onClick: () => L(e.id),
519
- className: `w-full rounded-lg border p-3 text-left transition-colors ${I === e.id ? "border-primary bg-action-primary-bg/5" : "hover:bg-bg-sunken/50"}`,
549
+ }), V.packages.map((e) => /* @__PURE__ */ y("button", {
550
+ onClick: () => B(e.id),
551
+ "aria-pressed": z === e.id,
552
+ className: `w-full rounded-lg border p-3 text-left transition-shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${z === e.id ? "border-accent-blue bg-accent-blue-subtle" : "border-border-seam hover:shadow-pop"}`,
520
553
  children: [/* @__PURE__ */ y("div", {
521
554
  className: "flex items-center justify-between",
522
555
  children: [/* @__PURE__ */ v("span", {
523
556
  className: "font-medium",
524
557
  children: e.name
525
558
  }), /* @__PURE__ */ y("span", {
526
- className: "font-bold",
559
+ className: "font-bold tabular-nums",
527
560
  children: ["$", e.price.toLocaleString()]
528
561
  })]
529
562
  }), /* @__PURE__ */ y("p", {
@@ -542,11 +575,11 @@ function E() {
542
575
  children: [/* @__PURE__ */ v(x, {
543
576
  variant: "outline",
544
577
  className: "flex-1",
545
- onClick: () => F(!1),
578
+ onClick: () => R(!1),
546
579
  children: "Cancel"
547
580
  }), /* @__PURE__ */ v(x, {
548
581
  className: "flex-1",
549
- disabled: !I,
582
+ disabled: !z,
550
583
  children: "Confirm Booking"
551
584
  })]
552
585
  })
@@ -558,6 +591,6 @@ function E() {
558
591
  });
559
592
  }
560
593
  //#endregion
561
- export { E as ServiceDetailsPage };
594
+ export { k as ServiceDetailsPage };
562
595
 
563
596
  //# sourceMappingURL=ServiceDetailsPage.js.map