@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
@@ -1,92 +1,122 @@
1
1
  import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
2
2
  import { useState as t } from "react";
3
- import { Award as n, Briefcase as r, Calendar as i, CheckCircle as a, Globe as o, MapPin as s, MessageSquare as c, Share2 as l, Star as u, Users as d } from "lucide-react";
4
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
5
- import { Badge as m, Button as h, Card as g, CardContent as _, CardHeader as v, CardTitle as y } from "@burdenoff/fe-libs/ui";
3
+ import { Award as n, Briefcase as r, Calendar as i, CheckCircle as a, MapPin as o, MessageSquare as s, Share2 as c, Star as l, Users as u } from "lucide-react";
4
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
5
+ import { Badge as p, Button as m, CTAOverflowMenu as h, Card as g, CardContent as _, CardHeader as v, CardTitle as y, EmphasisPanel as b, GlassCard as x, IllustratedEmptyState as S, NextSteps as C, PagePurpose as w } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/proserviceworld/pages/ProviderDetailPage.tsx
7
- function b() {
8
- let { providers: b, services: x, reviews: S } = e(), [C, w] = t("overview"), T = b[0], E = x.filter((e) => e.providerId === T.id), D = S.filter((e) => e.providerName === T.name), O = [
7
+ function T() {
8
+ let { providers: T, services: E, reviews: D } = e(), [O, k] = t("overview"), A = T[0], j = E.filter((e) => e.providerId === A.id), M = D.filter((e) => e.providerName === A.name), N = [
9
9
  {
10
10
  id: "overview",
11
11
  label: "Overview"
12
12
  },
13
13
  {
14
14
  id: "services",
15
- label: `Services (${E.length})`
15
+ label: `Services (${j.length})`
16
16
  },
17
17
  {
18
18
  id: "reviews",
19
- label: `Reviews (${D.length})`
19
+ label: `Reviews (${M.length})`
20
20
  }
21
21
  ];
22
- return /* @__PURE__ */ p("div", {
23
- className: "space-y-6 p-6",
22
+ return /* @__PURE__ */ f("div", {
23
+ className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
24
24
  children: [
25
- /* @__PURE__ */ p("div", {
25
+ /* @__PURE__ */ d(w, {
26
+ icon: /* @__PURE__ */ d(r, { className: "h-4 w-4" }),
27
+ children: "A full picture of this provider before you engage. Review their background, specializations, certifications, and ratings, browse the services they offer, and read client reviews — then contact them or book a consultation with confidence."
28
+ }),
29
+ /* @__PURE__ */ d(C, {
30
+ storageKey: "proserviceworld-provider-detail",
31
+ steps: [
32
+ {
33
+ id: "services",
34
+ label: "Browse their services",
35
+ description: "See what this provider offers and starting prices.",
36
+ icon: /* @__PURE__ */ d(r, { className: "h-4 w-4" }),
37
+ onClick: () => k("services")
38
+ },
39
+ {
40
+ id: "reviews",
41
+ label: "Read client reviews",
42
+ description: "Check ratings and feedback from past clients.",
43
+ icon: /* @__PURE__ */ d(l, { className: "h-4 w-4" }),
44
+ onClick: () => k("reviews")
45
+ },
46
+ {
47
+ id: "contact",
48
+ label: "Contact the provider",
49
+ description: "Start a conversation or book a consultation.",
50
+ icon: /* @__PURE__ */ d(s, { className: "h-4 w-4" }),
51
+ onClick: () => k("overview")
52
+ }
53
+ ]
54
+ }),
55
+ /* @__PURE__ */ f("div", {
26
56
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
27
- children: [/* @__PURE__ */ f("div", {
57
+ children: [/* @__PURE__ */ d("div", {
28
58
  className: "lg:col-span-2",
29
- children: /* @__PURE__ */ f(g, { children: /* @__PURE__ */ f(_, {
30
- className: "p-6",
31
- children: /* @__PURE__ */ p("div", {
59
+ children: /* @__PURE__ */ d(b, {
60
+ className: "relative overflow-hidden",
61
+ children: /* @__PURE__ */ f("div", {
32
62
  className: "flex items-start space-x-6",
33
- children: [/* @__PURE__ */ f("div", {
34
- className: "h-20 w-20 rounded-full bg-action-primary-bg/10 flex items-center justify-center shrink-0",
35
- children: /* @__PURE__ */ p("span", {
36
- className: "text-primary text-2xl font-bold",
37
- children: [T.name.charAt(0), T.name.split(" ")[1]?.charAt(0)]
63
+ children: [/* @__PURE__ */ d("div", {
64
+ className: "h-20 w-20 rounded-full bg-accent-soft flex items-center justify-center shrink-0",
65
+ children: /* @__PURE__ */ f("span", {
66
+ className: "text-text-primary text-2xl font-bold",
67
+ children: [A.name.charAt(0), A.name.split(" ")[1]?.charAt(0)]
38
68
  })
39
- }), /* @__PURE__ */ p("div", {
69
+ }), /* @__PURE__ */ f("div", {
40
70
  className: "flex-1",
41
71
  children: [
42
- /* @__PURE__ */ p("div", {
72
+ /* @__PURE__ */ f("div", {
43
73
  className: "flex items-center gap-3 mb-1",
44
- children: [/* @__PURE__ */ f("h1", {
45
- className: "text-2xl font-bold",
46
- children: T.businessName
47
- }), T.verified && /* @__PURE__ */ p(m, {
74
+ children: [/* @__PURE__ */ d("h1", {
75
+ className: "text-2xl font-bold tracking-tight",
76
+ children: A.businessName
77
+ }), A.verified && /* @__PURE__ */ f(p, {
48
78
  variant: "default",
49
- children: [/* @__PURE__ */ f(a, { className: "h-3 w-3 mr-1" }), "Verified"]
79
+ children: [/* @__PURE__ */ d(a, { className: "h-3 w-3 mr-1" }), "Verified"]
50
80
  })]
51
81
  }),
52
- /* @__PURE__ */ f("p", {
82
+ /* @__PURE__ */ d("p", {
53
83
  className: "text-text-secondary mb-2",
54
- children: T.name
84
+ children: A.name
55
85
  }),
56
- /* @__PURE__ */ f("p", {
86
+ /* @__PURE__ */ d("p", {
57
87
  className: "text-sm text-text-secondary mb-4",
58
- children: T.tagline
88
+ children: A.tagline
59
89
  }),
60
- /* @__PURE__ */ p("div", {
61
- className: "flex items-center gap-4 text-sm",
90
+ /* @__PURE__ */ f("div", {
91
+ className: "flex flex-wrap items-center gap-4 text-sm",
62
92
  children: [
63
- /* @__PURE__ */ p("div", {
93
+ /* @__PURE__ */ f("div", {
64
94
  className: "flex items-center",
65
95
  children: [
66
- /* @__PURE__ */ f(u, { className: "h-4 w-4 text-yellow-400 fill-current mr-1" }),
67
- /* @__PURE__ */ f("span", {
68
- className: "font-medium",
69
- children: T.rating.toFixed(1)
96
+ /* @__PURE__ */ d(l, { className: "h-4 w-4 text-status-warning-text fill-current mr-1" }),
97
+ /* @__PURE__ */ d("span", {
98
+ className: "font-medium tabular-nums",
99
+ children: A.rating.toFixed(1)
70
100
  }),
71
- /* @__PURE__ */ p("span", {
101
+ /* @__PURE__ */ f("span", {
72
102
  className: "text-text-secondary ml-1",
73
103
  children: [
74
104
  "(",
75
- T.totalReviews,
105
+ A.totalReviews,
76
106
  " reviews)"
77
107
  ]
78
108
  })
79
109
  ]
80
110
  }),
81
- /* @__PURE__ */ p("div", {
111
+ /* @__PURE__ */ f("div", {
82
112
  className: "flex items-center text-text-secondary",
83
- children: [/* @__PURE__ */ f(s, { className: "h-4 w-4 mr-1" }), T.location]
113
+ children: [/* @__PURE__ */ d(o, { className: "h-4 w-4 mr-1" }), A.location]
84
114
  }),
85
- /* @__PURE__ */ p("div", {
115
+ /* @__PURE__ */ f("div", {
86
116
  className: "flex items-center text-text-secondary",
87
117
  children: [
88
- /* @__PURE__ */ f(r, { className: "h-4 w-4 mr-1" }),
89
- T.yearsExperience,
118
+ /* @__PURE__ */ d(r, { className: "h-4 w-4 mr-1" }),
119
+ A.yearsExperience,
90
120
  " years"
91
121
  ]
92
122
  })
@@ -95,223 +125,250 @@ function b() {
95
125
  ]
96
126
  })]
97
127
  })
98
- }) })
99
- }), /* @__PURE__ */ f(g, { children: /* @__PURE__ */ p(_, {
100
- className: "p-6 space-y-4",
101
- children: [
102
- /* @__PURE__ */ p("div", {
103
- className: "text-center",
104
- children: [/* @__PURE__ */ p("div", {
105
- className: "text-2xl font-bold",
128
+ })
129
+ }), /* @__PURE__ */ d(x, {
130
+ treatment: "glass",
131
+ glow: !0,
132
+ className: "border-border-seam",
133
+ children: /* @__PURE__ */ f(_, {
134
+ className: "p-6 space-y-4",
135
+ children: [
136
+ /* @__PURE__ */ f("div", {
137
+ className: "text-center",
138
+ children: [/* @__PURE__ */ f("div", {
139
+ className: "text-2xl font-bold tabular-nums",
140
+ children: [
141
+ "$",
142
+ A.hourlyRate,
143
+ "/hr"
144
+ ]
145
+ }), /* @__PURE__ */ d("p", {
146
+ className: "text-sm text-text-secondary",
147
+ children: "Starting rate"
148
+ })]
149
+ }),
150
+ /* @__PURE__ */ f(m, {
151
+ className: "w-full",
152
+ children: [/* @__PURE__ */ d(s, { className: "h-4 w-4 mr-2" }), "Contact Provider"]
153
+ }),
154
+ /* @__PURE__ */ d(h, {
155
+ className: "justify-center",
156
+ actions: [{
157
+ label: "Book Consultation",
158
+ onSelect: () => {},
159
+ icon: /* @__PURE__ */ d(i, { className: "h-4 w-4" })
160
+ }, {
161
+ label: "Share Profile",
162
+ onSelect: () => {},
163
+ icon: /* @__PURE__ */ d(c, { className: "h-4 w-4" })
164
+ }]
165
+ }),
166
+ /* @__PURE__ */ f("div", {
167
+ className: "grid grid-cols-2 gap-4 text-sm pt-4 border-t border-border-seam",
106
168
  children: [
107
- "$",
108
- T.hourlyRate,
109
- "/hr"
169
+ /* @__PURE__ */ f("div", {
170
+ className: "text-center p-3 bg-bg-sunken rounded",
171
+ children: [/* @__PURE__ */ f("div", {
172
+ className: "font-semibold tabular-nums",
173
+ children: [A.responseTime, "h"]
174
+ }), /* @__PURE__ */ d("div", {
175
+ className: "text-text-secondary",
176
+ children: "Response"
177
+ })]
178
+ }),
179
+ /* @__PURE__ */ f("div", {
180
+ className: "text-center p-3 bg-bg-sunken rounded",
181
+ children: [/* @__PURE__ */ f("div", {
182
+ className: "font-semibold tabular-nums",
183
+ children: [A.completionRate, "%"]
184
+ }), /* @__PURE__ */ d("div", {
185
+ className: "text-text-secondary",
186
+ children: "Completion"
187
+ })]
188
+ }),
189
+ /* @__PURE__ */ f("div", {
190
+ className: "text-center p-3 bg-bg-sunken rounded",
191
+ children: [/* @__PURE__ */ d("div", {
192
+ className: "font-semibold tabular-nums",
193
+ children: A.projectsCompleted
194
+ }), /* @__PURE__ */ d("div", {
195
+ className: "text-text-secondary",
196
+ children: "Projects"
197
+ })]
198
+ }),
199
+ /* @__PURE__ */ f("div", {
200
+ className: "text-center p-3 bg-bg-sunken rounded",
201
+ children: [/* @__PURE__ */ d("div", {
202
+ className: "font-semibold tabular-nums",
203
+ children: A.activeProjects
204
+ }), /* @__PURE__ */ d("div", {
205
+ className: "text-text-secondary",
206
+ children: "Active"
207
+ })]
208
+ })
110
209
  ]
111
- }), /* @__PURE__ */ f("p", {
112
- className: "text-sm text-text-secondary",
113
- children: "Starting rate"
114
- })]
115
- }),
116
- /* @__PURE__ */ p(h, {
117
- className: "w-full",
118
- children: [/* @__PURE__ */ f(c, { className: "h-4 w-4 mr-2" }), "Contact Provider"]
119
- }),
120
- /* @__PURE__ */ p(h, {
121
- variant: "outline",
122
- className: "w-full",
123
- children: [/* @__PURE__ */ f(i, { className: "h-4 w-4 mr-2" }), "Book Consultation"]
124
- }),
125
- /* @__PURE__ */ p(h, {
126
- variant: "ghost",
127
- className: "w-full",
128
- children: [/* @__PURE__ */ f(l, { className: "h-4 w-4 mr-2" }), "Share Profile"]
129
- }),
130
- /* @__PURE__ */ p("div", {
131
- className: "grid grid-cols-2 gap-4 text-sm pt-4 border-t",
132
- children: [
133
- /* @__PURE__ */ p("div", {
134
- className: "text-center p-3 bg-bg-sunken rounded",
135
- children: [/* @__PURE__ */ p("div", {
136
- className: "font-semibold",
137
- children: [T.responseTime, "h"]
138
- }), /* @__PURE__ */ f("div", {
139
- className: "text-text-secondary",
140
- children: "Response"
141
- })]
142
- }),
143
- /* @__PURE__ */ p("div", {
144
- className: "text-center p-3 bg-bg-sunken rounded",
145
- children: [/* @__PURE__ */ p("div", {
146
- className: "font-semibold",
147
- children: [T.completionRate, "%"]
148
- }), /* @__PURE__ */ f("div", {
149
- className: "text-text-secondary",
150
- children: "Completion"
151
- })]
152
- }),
153
- /* @__PURE__ */ p("div", {
154
- className: "text-center p-3 bg-bg-sunken rounded",
155
- children: [/* @__PURE__ */ f("div", {
156
- className: "font-semibold",
157
- children: T.projectsCompleted
158
- }), /* @__PURE__ */ f("div", {
159
- className: "text-text-secondary",
160
- children: "Projects"
161
- })]
162
- }),
163
- /* @__PURE__ */ p("div", {
164
- className: "text-center p-3 bg-bg-sunken rounded",
165
- children: [/* @__PURE__ */ f("div", {
166
- className: "font-semibold",
167
- children: T.activeProjects
168
- }), /* @__PURE__ */ f("div", {
169
- className: "text-text-secondary",
170
- children: "Active"
171
- })]
172
- })
173
- ]
174
- })
175
- ]
176
- }) })]
210
+ })
211
+ ]
212
+ })
213
+ })]
177
214
  }),
178
- /* @__PURE__ */ f("div", {
179
- className: "border-b",
180
- children: /* @__PURE__ */ f("nav", {
215
+ /* @__PURE__ */ d("div", {
216
+ className: "border-b border-border-seam",
217
+ children: /* @__PURE__ */ d("nav", {
181
218
  className: "-mb-px flex space-x-8",
182
- children: O.map((e) => /* @__PURE__ */ f("button", {
183
- onClick: () => w(e.id),
184
- className: `py-3 px-1 border-b-2 font-medium text-sm transition-colors ${C === e.id ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary"}`,
219
+ children: N.map((e) => /* @__PURE__ */ d("button", {
220
+ onClick: () => k(e.id),
221
+ "aria-pressed": O === e.id,
222
+ className: `py-3 px-1 border-b-2 font-medium text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${O === e.id ? "border-accent-blue text-accent-blue" : "border-transparent text-text-secondary hover:text-text-primary"}`,
185
223
  children: e.label
186
224
  }, e.id))
187
225
  })
188
226
  }),
189
- C === "overview" && /* @__PURE__ */ p("div", {
227
+ O === "overview" && /* @__PURE__ */ f("div", {
190
228
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
191
- children: [/* @__PURE__ */ p("div", {
229
+ children: [/* @__PURE__ */ f("div", {
192
230
  className: "lg:col-span-2 space-y-6",
193
231
  children: [
194
- /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "About" }) }), /* @__PURE__ */ f(_, { children: /* @__PURE__ */ f("p", {
195
- className: "text-text-secondary",
196
- children: T.description
197
- }) })] }),
198
- /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Specializations" }) }), /* @__PURE__ */ f(_, { children: /* @__PURE__ */ f("div", {
199
- className: "flex flex-wrap gap-2",
200
- children: T.specializations.map((e) => /* @__PURE__ */ f(m, {
201
- variant: "secondary",
202
- children: e
203
- }, e))
204
- }) })] }),
205
- /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Certifications" }) }), /* @__PURE__ */ f(_, {
206
- className: "space-y-3",
207
- children: T.certifications.map((e) => /* @__PURE__ */ p("div", {
208
- className: "flex items-center gap-3",
209
- children: [/* @__PURE__ */ f(n, { className: "h-5 w-5 text-blue-600" }), /* @__PURE__ */ f("span", { children: e })]
210
- }, e))
211
- })] })
232
+ /* @__PURE__ */ f(g, {
233
+ className: "border-border-seam",
234
+ children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, { children: "About" }) }), /* @__PURE__ */ d(_, { children: /* @__PURE__ */ d("p", {
235
+ className: "text-text-secondary",
236
+ children: A.description
237
+ }) })]
238
+ }),
239
+ /* @__PURE__ */ f(g, {
240
+ className: "border-border-seam",
241
+ children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, { children: "Specializations" }) }), /* @__PURE__ */ d(_, { children: /* @__PURE__ */ d("div", {
242
+ className: "flex flex-wrap gap-2",
243
+ children: A.specializations.map((e) => /* @__PURE__ */ d(p, {
244
+ variant: "secondary",
245
+ children: e
246
+ }, e))
247
+ }) })]
248
+ }),
249
+ /* @__PURE__ */ f(g, {
250
+ className: "border-border-seam",
251
+ children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, { children: "Certifications" }) }), /* @__PURE__ */ d(_, {
252
+ className: "space-y-3",
253
+ children: A.certifications.map((e) => /* @__PURE__ */ f("div", {
254
+ className: "flex items-center gap-3",
255
+ children: [/* @__PURE__ */ d(n, { className: "h-5 w-5 text-accent-blue" }), /* @__PURE__ */ d("span", { children: e })]
256
+ }, e))
257
+ })]
258
+ })
212
259
  ]
213
- }), /* @__PURE__ */ p("div", {
260
+ }), /* @__PURE__ */ f("div", {
214
261
  className: "space-y-6",
215
- children: [/* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Details" }) }), /* @__PURE__ */ p(_, {
216
- className: "space-y-3 text-sm",
217
- children: [
218
- /* @__PURE__ */ p("div", {
219
- className: "flex justify-between",
220
- children: [/* @__PURE__ */ f("span", {
221
- className: "text-text-secondary",
222
- children: "Location"
223
- }), /* @__PURE__ */ f("span", { children: T.location })]
224
- }),
225
- /* @__PURE__ */ p("div", {
226
- className: "flex justify-between",
227
- children: [/* @__PURE__ */ f("span", {
228
- className: "text-text-secondary",
229
- children: "Languages"
230
- }), /* @__PURE__ */ f("span", { children: T.languages.join(", ") })]
231
- }),
232
- /* @__PURE__ */ p("div", {
233
- className: "flex justify-between",
234
- children: [/* @__PURE__ */ f("span", {
235
- className: "text-text-secondary",
236
- children: "Member Since"
237
- }), /* @__PURE__ */ f("span", { children: new Date(T.joinedDate).toLocaleDateString("en-US", {
238
- month: "short",
239
- year: "numeric"
240
- }) })]
241
- }),
242
- /* @__PURE__ */ p("div", {
243
- className: "flex justify-between",
244
- children: [/* @__PURE__ */ f("span", {
245
- className: "text-text-secondary",
246
- children: "Category"
247
- }), /* @__PURE__ */ f("span", {
248
- className: "capitalize",
249
- children: T.category.replace("_", " ")
250
- })]
251
- })
252
- ]
253
- })] }), /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Similar Providers" }) }), /* @__PURE__ */ f(_, {
254
- className: "space-y-3",
255
- children: b.filter((e) => e.id !== T.id).slice(0, 3).map((e) => /* @__PURE__ */ p("div", {
256
- className: "flex items-center gap-3",
262
+ children: [/* @__PURE__ */ f(g, {
263
+ className: "border-border-seam",
264
+ children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, { children: "Details" }) }), /* @__PURE__ */ f(_, {
265
+ className: "space-y-3 text-sm",
257
266
  children: [
258
267
  /* @__PURE__ */ f("div", {
259
- className: "h-8 w-8 rounded-full bg-bg-sunken flex items-center justify-center text-xs font-medium",
260
- children: e.name.charAt(0)
268
+ className: "flex justify-between",
269
+ children: [/* @__PURE__ */ d("span", {
270
+ className: "text-text-secondary",
271
+ children: "Location"
272
+ }), /* @__PURE__ */ d("span", { children: A.location })]
261
273
  }),
262
- /* @__PURE__ */ p("div", {
263
- className: "flex-1 min-w-0",
264
- children: [/* @__PURE__ */ f("p", {
265
- className: "text-sm font-medium truncate",
266
- children: e.businessName
267
- }), /* @__PURE__ */ f("p", {
268
- className: "text-xs text-text-secondary",
269
- children: e.specializations[0]
270
- })]
274
+ /* @__PURE__ */ f("div", {
275
+ className: "flex justify-between",
276
+ children: [/* @__PURE__ */ d("span", {
277
+ className: "text-text-secondary",
278
+ children: "Languages"
279
+ }), /* @__PURE__ */ d("span", { children: A.languages.join(", ") })]
271
280
  }),
272
- /* @__PURE__ */ p("div", {
273
- className: "flex items-center text-xs",
274
- children: [/* @__PURE__ */ f(u, { className: "h-3 w-3 text-yellow-400 fill-current mr-0.5" }), e.rating.toFixed(1)]
281
+ /* @__PURE__ */ f("div", {
282
+ className: "flex justify-between",
283
+ children: [/* @__PURE__ */ d("span", {
284
+ className: "text-text-secondary",
285
+ children: "Member Since"
286
+ }), /* @__PURE__ */ d("span", { children: new Date(A.joinedDate).toLocaleDateString("en-US", {
287
+ month: "short",
288
+ year: "numeric"
289
+ }) })]
290
+ }),
291
+ /* @__PURE__ */ f("div", {
292
+ className: "flex justify-between",
293
+ children: [/* @__PURE__ */ d("span", {
294
+ className: "text-text-secondary",
295
+ children: "Category"
296
+ }), /* @__PURE__ */ d("span", {
297
+ className: "capitalize",
298
+ children: A.category.replace("_", " ")
299
+ })]
275
300
  })
276
301
  ]
277
- }, e.id))
278
- })] })]
302
+ })]
303
+ }), /* @__PURE__ */ f(g, {
304
+ className: "border-border-seam",
305
+ children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, { children: "Similar Providers" }) }), /* @__PURE__ */ d(_, {
306
+ className: "space-y-3",
307
+ children: T.filter((e) => e.id !== A.id).slice(0, 3).map((e) => /* @__PURE__ */ f("div", {
308
+ className: "flex items-center gap-3",
309
+ children: [
310
+ /* @__PURE__ */ d("div", {
311
+ className: "h-8 w-8 rounded-full bg-bg-sunken flex items-center justify-center text-xs font-medium",
312
+ children: e.name.charAt(0)
313
+ }),
314
+ /* @__PURE__ */ f("div", {
315
+ className: "flex-1 min-w-0",
316
+ children: [/* @__PURE__ */ d("p", {
317
+ className: "text-sm font-medium truncate",
318
+ children: e.businessName
319
+ }), /* @__PURE__ */ d("p", {
320
+ className: "text-xs text-text-secondary",
321
+ children: e.specializations[0]
322
+ })]
323
+ }),
324
+ /* @__PURE__ */ f("div", {
325
+ className: "flex items-center text-xs",
326
+ children: [/* @__PURE__ */ d(l, { className: "h-3 w-3 text-status-warning-text fill-current mr-0.5" }), /* @__PURE__ */ d("span", {
327
+ className: "tabular-nums",
328
+ children: e.rating.toFixed(1)
329
+ })]
330
+ })
331
+ ]
332
+ }, e.id))
333
+ })]
334
+ })]
279
335
  })]
280
336
  }),
281
- C === "services" && /* @__PURE__ */ f("div", {
337
+ O === "services" && /* @__PURE__ */ d("div", {
282
338
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
283
- children: E.length > 0 ? E.map((e) => /* @__PURE__ */ f(g, {
284
- className: "hover:shadow-md transition-shadow",
285
- children: /* @__PURE__ */ p(_, {
339
+ children: j.length > 0 ? j.map((e) => /* @__PURE__ */ d(x, {
340
+ treatment: "plain",
341
+ className: "border-border-seam transition-shadow hover:shadow-pop",
342
+ children: /* @__PURE__ */ f(_, {
286
343
  className: "p-6",
287
344
  children: [
288
- /* @__PURE__ */ f("h3", {
345
+ /* @__PURE__ */ d("h3", {
289
346
  className: "font-semibold mb-2",
290
347
  children: e.title
291
348
  }),
292
- /* @__PURE__ */ f("p", {
349
+ /* @__PURE__ */ d("p", {
293
350
  className: "text-sm text-text-secondary mb-3 line-clamp-2",
294
351
  children: e.description
295
352
  }),
296
- /* @__PURE__ */ f("div", {
353
+ /* @__PURE__ */ d("div", {
297
354
  className: "flex flex-wrap gap-1 mb-3",
298
- children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */ f(m, {
355
+ children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */ d(p, {
299
356
  variant: "outline",
300
357
  className: "text-xs",
301
358
  children: e
302
359
  }, e))
303
360
  }),
304
- /* @__PURE__ */ p("div", {
305
- className: "flex justify-between border-t pt-3",
306
- children: [/* @__PURE__ */ p("span", {
307
- className: "font-medium",
361
+ /* @__PURE__ */ f("div", {
362
+ className: "flex justify-between border-t border-border-seam pt-3",
363
+ children: [/* @__PURE__ */ f("span", {
364
+ className: "font-medium tabular-nums",
308
365
  children: ["From $", e.pricing.basePrice.toLocaleString()]
309
- }), /* @__PURE__ */ p("span", {
310
- className: "text-sm text-text-secondary",
366
+ }), /* @__PURE__ */ f("span", {
367
+ className: "text-sm text-text-secondary tabular-nums",
311
368
  children: [e.duration.typical, " days"]
312
369
  })]
313
370
  }),
314
- /* @__PURE__ */ f(h, {
371
+ /* @__PURE__ */ d(m, {
315
372
  variant: "outline",
316
373
  size: "sm",
317
374
  className: "w-full mt-3",
@@ -319,146 +376,163 @@ function b() {
319
376
  })
320
377
  ]
321
378
  })
322
- }, e.id)) : /* @__PURE__ */ p("div", {
323
- className: "col-span-full text-center py-12",
324
- children: [/* @__PURE__ */ f(o, { className: "h-12 w-12 mx-auto text-text-secondary mb-4" }), /* @__PURE__ */ f("p", {
325
- className: "text-text-secondary",
326
- children: "No services listed yet"
327
- })]
379
+ }, e.id)) : /* @__PURE__ */ d("div", {
380
+ className: "col-span-full",
381
+ children: /* @__PURE__ */ d(S, {
382
+ illustration: "empty-data",
383
+ title: "No services listed yet",
384
+ description: "This provider has not published any services."
385
+ })
328
386
  })
329
387
  }),
330
- C === "reviews" && /* @__PURE__ */ p("div", {
388
+ O === "reviews" && /* @__PURE__ */ f("div", {
331
389
  className: "space-y-4",
332
- children: [/* @__PURE__ */ f(g, { children: /* @__PURE__ */ f(_, {
333
- className: "p-6",
334
- children: /* @__PURE__ */ p("div", {
335
- className: "flex items-center gap-8",
336
- children: [/* @__PURE__ */ p("div", {
337
- className: "text-center",
338
- children: [
339
- /* @__PURE__ */ f("div", {
340
- className: "text-4xl font-bold",
341
- children: T.rating.toFixed(1)
342
- }),
343
- /* @__PURE__ */ f("div", {
344
- className: "flex justify-center mt-1",
345
- children: [
346
- 1,
347
- 2,
348
- 3,
349
- 4,
350
- 5
351
- ].map((e) => /* @__PURE__ */ f(u, { className: `h-4 w-4 ${e <= Math.round(T.rating) ? "text-yellow-400 fill-current" : "text-text-secondary"}` }, e))
352
- }),
353
- /* @__PURE__ */ p("p", {
354
- className: "text-sm text-text-secondary mt-1",
355
- children: [T.totalReviews, " reviews"]
390
+ children: [/* @__PURE__ */ d(x, {
391
+ treatment: "metric",
392
+ className: "border-border-seam",
393
+ children: /* @__PURE__ */ d(_, {
394
+ className: "p-6",
395
+ children: /* @__PURE__ */ f("div", {
396
+ className: "flex flex-col gap-8 sm:flex-row sm:items-center",
397
+ children: [/* @__PURE__ */ f("div", {
398
+ className: "text-center",
399
+ children: [
400
+ /* @__PURE__ */ d("div", {
401
+ className: "text-4xl font-bold tabular-nums",
402
+ children: A.rating.toFixed(1)
403
+ }),
404
+ /* @__PURE__ */ d("div", {
405
+ className: "flex justify-center mt-1",
406
+ children: [
407
+ 1,
408
+ 2,
409
+ 3,
410
+ 4,
411
+ 5
412
+ ].map((e) => /* @__PURE__ */ d(l, { className: `h-4 w-4 ${e <= Math.round(A.rating) ? "text-status-warning-text fill-current" : "text-text-secondary"}` }, e))
413
+ }),
414
+ /* @__PURE__ */ f("p", {
415
+ className: "text-sm text-text-secondary mt-1",
416
+ children: [A.totalReviews, " reviews"]
417
+ })
418
+ ]
419
+ }), /* @__PURE__ */ d("div", {
420
+ className: "flex-1 space-y-1",
421
+ children: [
422
+ 5,
423
+ 4,
424
+ 3,
425
+ 2,
426
+ 1
427
+ ].map((e) => {
428
+ let t = M.filter((t) => Math.round(t.rating) === e).length, n = M.length > 0 ? t / M.length * 100 : 0;
429
+ return /* @__PURE__ */ f("div", {
430
+ className: "flex items-center gap-2",
431
+ children: [
432
+ /* @__PURE__ */ d("span", {
433
+ className: "text-sm w-3 tabular-nums",
434
+ children: e
435
+ }),
436
+ /* @__PURE__ */ d(l, { className: "h-3 w-3 text-status-warning-text fill-current" }),
437
+ /* @__PURE__ */ d("div", {
438
+ className: "flex-1 bg-bg-sunken rounded-full h-2",
439
+ children: /* @__PURE__ */ d("div", {
440
+ className: "bg-status-warning-text h-2 rounded-full",
441
+ style: { width: `${n}%` }
442
+ })
443
+ }),
444
+ /* @__PURE__ */ d("span", {
445
+ className: "text-sm text-text-secondary w-6 text-right tabular-nums",
446
+ children: t
447
+ })
448
+ ]
449
+ }, e);
356
450
  })
357
- ]
358
- }), /* @__PURE__ */ f("div", {
359
- className: "flex-1 space-y-1",
360
- children: [
361
- 5,
362
- 4,
363
- 3,
364
- 2,
365
- 1
366
- ].map((e) => {
367
- let t = D.filter((t) => Math.round(t.rating) === e).length, n = D.length > 0 ? t / D.length * 100 : 0;
368
- return /* @__PURE__ */ p("div", {
451
+ })]
452
+ })
453
+ })
454
+ }), M.map((e) => /* @__PURE__ */ d(g, {
455
+ className: "border-border-seam",
456
+ children: /* @__PURE__ */ f(_, {
457
+ className: "p-6",
458
+ children: [
459
+ /* @__PURE__ */ f("div", {
460
+ className: "flex items-center gap-3 mb-3",
461
+ children: [/* @__PURE__ */ d("div", {
462
+ className: "h-10 w-10 rounded-full bg-accent-soft flex items-center justify-center",
463
+ children: /* @__PURE__ */ d("span", {
464
+ className: "text-text-primary font-medium",
465
+ children: e.clientName.charAt(0)
466
+ })
467
+ }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("div", {
369
468
  className: "flex items-center gap-2",
469
+ children: [/* @__PURE__ */ d("span", {
470
+ className: "font-medium",
471
+ children: e.clientName
472
+ }), /* @__PURE__ */ d("div", {
473
+ className: "flex",
474
+ children: [
475
+ 1,
476
+ 2,
477
+ 3,
478
+ 4,
479
+ 5
480
+ ].map((t) => /* @__PURE__ */ d(l, { className: `h-3 w-3 ${t <= e.rating ? "text-status-warning-text fill-current" : "text-text-secondary"}` }, t))
481
+ })]
482
+ }), /* @__PURE__ */ f("p", {
483
+ className: "text-xs text-text-secondary",
370
484
  children: [
371
- /* @__PURE__ */ f("span", {
372
- className: "text-sm w-3",
373
- children: e
374
- }),
375
- /* @__PURE__ */ f(u, { className: "h-3 w-3 text-yellow-400 fill-current" }),
376
- /* @__PURE__ */ f("div", {
377
- className: "flex-1 bg-bg-sunken rounded-full h-2",
378
- children: /* @__PURE__ */ f("div", {
379
- className: "bg-yellow-400 h-2 rounded-full",
380
- style: { width: `${n}%` }
381
- })
382
- }),
383
- /* @__PURE__ */ f("span", {
384
- className: "text-sm text-text-secondary w-6 text-right",
385
- children: t
485
+ e.serviceName,
486
+ " -",
487
+ " ",
488
+ new Date(e.createdAt).toLocaleDateString("en-US", {
489
+ month: "long",
490
+ day: "numeric",
491
+ year: "numeric"
386
492
  })
387
493
  ]
388
- }, e);
389
- })
390
- })]
391
- })
392
- }) }), D.map((e) => /* @__PURE__ */ f(g, { children: /* @__PURE__ */ p(_, {
393
- className: "p-6",
394
- children: [
395
- /* @__PURE__ */ p("div", {
396
- className: "flex items-center gap-3 mb-3",
397
- children: [/* @__PURE__ */ f("div", {
398
- className: "h-10 w-10 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
399
- children: /* @__PURE__ */ f("span", {
400
- className: "text-primary font-medium",
401
- children: e.clientName.charAt(0)
402
- })
403
- }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ p("div", {
404
- className: "flex items-center gap-2",
405
- children: [/* @__PURE__ */ f("span", {
406
- className: "font-medium",
407
- children: e.clientName
408
- }), /* @__PURE__ */ f("div", {
409
- className: "flex",
410
- children: [
411
- 1,
412
- 2,
413
- 3,
414
- 4,
415
- 5
416
- ].map((t) => /* @__PURE__ */ f(u, { className: `h-3 w-3 ${t <= e.rating ? "text-yellow-400 fill-current" : "text-text-secondary"}` }, t))
417
- })]
418
- }), /* @__PURE__ */ p("p", {
419
- className: "text-xs text-text-secondary",
494
+ })] })]
495
+ }),
496
+ /* @__PURE__ */ d("p", {
497
+ className: "text-sm text-text-secondary mb-3",
498
+ children: e.comment
499
+ }),
500
+ /* @__PURE__ */ f("div", {
501
+ className: "flex flex-wrap gap-4 text-xs text-text-secondary",
420
502
  children: [
421
- e.serviceName,
422
- " -",
423
- " ",
424
- new Date(e.createdAt).toLocaleDateString("en-US", {
425
- month: "long",
426
- day: "numeric",
427
- year: "numeric"
503
+ /* @__PURE__ */ f("span", {
504
+ className: "tabular-nums",
505
+ children: ["Value: $", e.projectValue.toLocaleString()]
506
+ }),
507
+ /* @__PURE__ */ f("span", {
508
+ className: "tabular-nums",
509
+ children: [
510
+ "Duration: ",
511
+ e.projectDuration,
512
+ " days"
513
+ ]
514
+ }),
515
+ /* @__PURE__ */ f("span", {
516
+ className: "flex items-center",
517
+ children: [
518
+ /* @__PURE__ */ d(u, { className: "h-3 w-3 mr-1" }),
519
+ /* @__PURE__ */ d("span", {
520
+ className: "tabular-nums",
521
+ children: e.helpful
522
+ }),
523
+ " helpful"
524
+ ]
428
525
  })
429
526
  ]
430
- })] })]
431
- }),
432
- /* @__PURE__ */ f("p", {
433
- className: "text-sm text-text-secondary mb-3",
434
- children: e.comment
435
- }),
436
- /* @__PURE__ */ p("div", {
437
- className: "flex gap-4 text-xs text-text-secondary",
438
- children: [
439
- /* @__PURE__ */ p("span", { children: ["Value: $", e.projectValue.toLocaleString()] }),
440
- /* @__PURE__ */ p("span", { children: [
441
- "Duration: ",
442
- e.projectDuration,
443
- " days"
444
- ] }),
445
- /* @__PURE__ */ p("span", {
446
- className: "flex items-center",
447
- children: [
448
- /* @__PURE__ */ f(d, { className: "h-3 w-3 mr-1" }),
449
- e.helpful,
450
- " helpful"
451
- ]
452
- })
453
- ]
454
- })
455
- ]
456
- }) }, e.id))]
527
+ })
528
+ ]
529
+ })
530
+ }, e.id))]
457
531
  })
458
532
  ]
459
533
  });
460
534
  }
461
535
  //#endregion
462
- export { b as ProviderDetailPage };
536
+ export { T as ProviderDetailPage };
463
537
 
464
538
  //# sourceMappingURL=ProviderDetailPage.js.map