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