@burdenoff/microfe-proserviceworld 2026.525.1 → 2026.624.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 +28 -28
  2. package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
  3. package/dist/proserviceworld/pages/AdminUsersPage.js +19 -19
  4. package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
  5. package/dist/proserviceworld/pages/AnalyticsPage.js +27 -27
  6. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  7. package/dist/proserviceworld/pages/BookingsPage.js +24 -24
  8. package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
  9. package/dist/proserviceworld/pages/DashboardPage.js +33 -33
  10. package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
  11. package/dist/proserviceworld/pages/DocumentsPage.js +29 -29
  12. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  13. package/dist/proserviceworld/pages/MessagesPage.js +15 -15
  14. package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
  15. package/dist/proserviceworld/pages/PaymentsPage.js +19 -19
  16. package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
  17. package/dist/proserviceworld/pages/ProjectsPage.js +36 -36
  18. package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
  19. package/dist/proserviceworld/pages/ProviderDetailPage.js +36 -36
  20. package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
  21. package/dist/proserviceworld/pages/ProvidersPage.js +19 -19
  22. package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
  23. package/dist/proserviceworld/pages/ReviewsPage.js +22 -22
  24. package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
  25. package/dist/proserviceworld/pages/ServiceDetailsPage.js +35 -35
  26. package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
  27. package/dist/proserviceworld/pages/ServicesPage.js +14 -14
  28. package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
  29. package/dist/proserviceworld/pages/VerificationPage.js +23 -23
  30. package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
  31. package/package.json +1 -1
@@ -31,7 +31,7 @@ function b() {
31
31
  children: /* @__PURE__ */ p("div", {
32
32
  className: "flex items-start space-x-6",
33
33
  children: [/* @__PURE__ */ f("div", {
34
- className: "h-20 w-20 rounded-full bg-primary/10 flex items-center justify-center shrink-0",
34
+ className: "h-20 w-20 rounded-full bg-action-primary-bg/10 flex items-center justify-center shrink-0",
35
35
  children: /* @__PURE__ */ p("span", {
36
36
  className: "text-primary text-2xl font-bold",
37
37
  children: [T.name.charAt(0), T.name.split(" ")[1]?.charAt(0)]
@@ -50,11 +50,11 @@ function b() {
50
50
  })]
51
51
  }),
52
52
  /* @__PURE__ */ f("p", {
53
- className: "text-muted-foreground mb-2",
53
+ className: "text-text-secondary mb-2",
54
54
  children: T.name
55
55
  }),
56
56
  /* @__PURE__ */ f("p", {
57
- className: "text-sm text-muted-foreground mb-4",
57
+ className: "text-sm text-text-secondary mb-4",
58
58
  children: T.tagline
59
59
  }),
60
60
  /* @__PURE__ */ p("div", {
@@ -69,7 +69,7 @@ function b() {
69
69
  children: T.rating.toFixed(1)
70
70
  }),
71
71
  /* @__PURE__ */ p("span", {
72
- className: "text-muted-foreground ml-1",
72
+ className: "text-text-secondary ml-1",
73
73
  children: [
74
74
  "(",
75
75
  T.totalReviews,
@@ -79,11 +79,11 @@ function b() {
79
79
  ]
80
80
  }),
81
81
  /* @__PURE__ */ p("div", {
82
- className: "flex items-center text-muted-foreground",
82
+ className: "flex items-center text-text-secondary",
83
83
  children: [/* @__PURE__ */ f(s, { className: "h-4 w-4 mr-1" }), T.location]
84
84
  }),
85
85
  /* @__PURE__ */ p("div", {
86
- className: "flex items-center text-muted-foreground",
86
+ className: "flex items-center text-text-secondary",
87
87
  children: [
88
88
  /* @__PURE__ */ f(r, { className: "h-4 w-4 mr-1" }),
89
89
  T.yearsExperience,
@@ -109,7 +109,7 @@ function b() {
109
109
  "/hr"
110
110
  ]
111
111
  }), /* @__PURE__ */ f("p", {
112
- className: "text-sm text-muted-foreground",
112
+ className: "text-sm text-text-secondary",
113
113
  children: "Starting rate"
114
114
  })]
115
115
  }),
@@ -131,42 +131,42 @@ function b() {
131
131
  className: "grid grid-cols-2 gap-4 text-sm pt-4 border-t",
132
132
  children: [
133
133
  /* @__PURE__ */ p("div", {
134
- className: "text-center p-3 bg-muted rounded",
134
+ className: "text-center p-3 bg-bg-sunken rounded",
135
135
  children: [/* @__PURE__ */ p("div", {
136
136
  className: "font-semibold",
137
137
  children: [T.responseTime, "h"]
138
138
  }), /* @__PURE__ */ f("div", {
139
- className: "text-muted-foreground",
139
+ className: "text-text-secondary",
140
140
  children: "Response"
141
141
  })]
142
142
  }),
143
143
  /* @__PURE__ */ p("div", {
144
- className: "text-center p-3 bg-muted rounded",
144
+ className: "text-center p-3 bg-bg-sunken rounded",
145
145
  children: [/* @__PURE__ */ p("div", {
146
146
  className: "font-semibold",
147
147
  children: [T.completionRate, "%"]
148
148
  }), /* @__PURE__ */ f("div", {
149
- className: "text-muted-foreground",
149
+ className: "text-text-secondary",
150
150
  children: "Completion"
151
151
  })]
152
152
  }),
153
153
  /* @__PURE__ */ p("div", {
154
- className: "text-center p-3 bg-muted rounded",
154
+ className: "text-center p-3 bg-bg-sunken rounded",
155
155
  children: [/* @__PURE__ */ f("div", {
156
156
  className: "font-semibold",
157
157
  children: T.projectsCompleted
158
158
  }), /* @__PURE__ */ f("div", {
159
- className: "text-muted-foreground",
159
+ className: "text-text-secondary",
160
160
  children: "Projects"
161
161
  })]
162
162
  }),
163
163
  /* @__PURE__ */ p("div", {
164
- className: "text-center p-3 bg-muted rounded",
164
+ className: "text-center p-3 bg-bg-sunken rounded",
165
165
  children: [/* @__PURE__ */ f("div", {
166
166
  className: "font-semibold",
167
167
  children: T.activeProjects
168
168
  }), /* @__PURE__ */ f("div", {
169
- className: "text-muted-foreground",
169
+ className: "text-text-secondary",
170
170
  children: "Active"
171
171
  })]
172
172
  })
@@ -181,7 +181,7 @@ function b() {
181
181
  className: "-mb-px flex space-x-8",
182
182
  children: O.map((e) => /* @__PURE__ */ f("button", {
183
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"}`,
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"}`,
185
185
  children: e.label
186
186
  }, e.id))
187
187
  })
@@ -192,7 +192,7 @@ function b() {
192
192
  className: "lg:col-span-2 space-y-6",
193
193
  children: [
194
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",
195
+ className: "text-text-secondary",
196
196
  children: T.description
197
197
  }) })] }),
198
198
  /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Specializations" }) }), /* @__PURE__ */ f(_, { children: /* @__PURE__ */ f("div", {
@@ -218,21 +218,21 @@ function b() {
218
218
  /* @__PURE__ */ p("div", {
219
219
  className: "flex justify-between",
220
220
  children: [/* @__PURE__ */ f("span", {
221
- className: "text-muted-foreground",
221
+ className: "text-text-secondary",
222
222
  children: "Location"
223
223
  }), /* @__PURE__ */ f("span", { children: T.location })]
224
224
  }),
225
225
  /* @__PURE__ */ p("div", {
226
226
  className: "flex justify-between",
227
227
  children: [/* @__PURE__ */ f("span", {
228
- className: "text-muted-foreground",
228
+ className: "text-text-secondary",
229
229
  children: "Languages"
230
230
  }), /* @__PURE__ */ f("span", { children: T.languages.join(", ") })]
231
231
  }),
232
232
  /* @__PURE__ */ p("div", {
233
233
  className: "flex justify-between",
234
234
  children: [/* @__PURE__ */ f("span", {
235
- className: "text-muted-foreground",
235
+ className: "text-text-secondary",
236
236
  children: "Member Since"
237
237
  }), /* @__PURE__ */ f("span", { children: new Date(T.joinedDate).toLocaleDateString("en-US", {
238
238
  month: "short",
@@ -242,7 +242,7 @@ function b() {
242
242
  /* @__PURE__ */ p("div", {
243
243
  className: "flex justify-between",
244
244
  children: [/* @__PURE__ */ f("span", {
245
- className: "text-muted-foreground",
245
+ className: "text-text-secondary",
246
246
  children: "Category"
247
247
  }), /* @__PURE__ */ f("span", {
248
248
  className: "capitalize",
@@ -256,7 +256,7 @@ function b() {
256
256
  className: "flex items-center gap-3",
257
257
  children: [
258
258
  /* @__PURE__ */ f("div", {
259
- className: "h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium",
259
+ className: "h-8 w-8 rounded-full bg-bg-sunken flex items-center justify-center text-xs font-medium",
260
260
  children: e.name.charAt(0)
261
261
  }),
262
262
  /* @__PURE__ */ p("div", {
@@ -265,7 +265,7 @@ function b() {
265
265
  className: "text-sm font-medium truncate",
266
266
  children: e.businessName
267
267
  }), /* @__PURE__ */ f("p", {
268
- className: "text-xs text-muted-foreground",
268
+ className: "text-xs text-text-secondary",
269
269
  children: e.specializations[0]
270
270
  })]
271
271
  }),
@@ -290,7 +290,7 @@ function b() {
290
290
  children: e.title
291
291
  }),
292
292
  /* @__PURE__ */ f("p", {
293
- className: "text-sm text-muted-foreground mb-3 line-clamp-2",
293
+ className: "text-sm text-text-secondary mb-3 line-clamp-2",
294
294
  children: e.description
295
295
  }),
296
296
  /* @__PURE__ */ f("div", {
@@ -307,7 +307,7 @@ function b() {
307
307
  className: "font-medium",
308
308
  children: ["From $", e.pricing.basePrice.toLocaleString()]
309
309
  }), /* @__PURE__ */ p("span", {
310
- className: "text-sm text-muted-foreground",
310
+ className: "text-sm text-text-secondary",
311
311
  children: [e.duration.typical, " days"]
312
312
  })]
313
313
  }),
@@ -321,8 +321,8 @@ function b() {
321
321
  })
322
322
  }, e.id)) : /* @__PURE__ */ p("div", {
323
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",
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
326
  children: "No services listed yet"
327
327
  })]
328
328
  })
@@ -348,10 +348,10 @@ function b() {
348
348
  3,
349
349
  4,
350
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))
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
352
  }),
353
353
  /* @__PURE__ */ p("p", {
354
- className: "text-sm text-muted-foreground mt-1",
354
+ className: "text-sm text-text-secondary mt-1",
355
355
  children: [T.totalReviews, " reviews"]
356
356
  })
357
357
  ]
@@ -374,14 +374,14 @@ function b() {
374
374
  }),
375
375
  /* @__PURE__ */ f(u, { className: "h-3 w-3 text-yellow-400 fill-current" }),
376
376
  /* @__PURE__ */ f("div", {
377
- className: "flex-1 bg-muted rounded-full h-2",
377
+ className: "flex-1 bg-bg-sunken rounded-full h-2",
378
378
  children: /* @__PURE__ */ f("div", {
379
379
  className: "bg-yellow-400 h-2 rounded-full",
380
380
  style: { width: `${n}%` }
381
381
  })
382
382
  }),
383
383
  /* @__PURE__ */ f("span", {
384
- className: "text-sm text-muted-foreground w-6 text-right",
384
+ className: "text-sm text-text-secondary w-6 text-right",
385
385
  children: t
386
386
  })
387
387
  ]
@@ -395,7 +395,7 @@ function b() {
395
395
  /* @__PURE__ */ p("div", {
396
396
  className: "flex items-center gap-3 mb-3",
397
397
  children: [/* @__PURE__ */ f("div", {
398
- className: "h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center",
398
+ className: "h-10 w-10 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
399
399
  children: /* @__PURE__ */ f("span", {
400
400
  className: "text-primary font-medium",
401
401
  children: e.clientName.charAt(0)
@@ -413,10 +413,10 @@ function b() {
413
413
  3,
414
414
  4,
415
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))
416
+ ].map((t) => /* @__PURE__ */ f(u, { className: `h-3 w-3 ${t <= e.rating ? "text-yellow-400 fill-current" : "text-text-secondary"}` }, t))
417
417
  })]
418
418
  }), /* @__PURE__ */ p("p", {
419
- className: "text-xs text-muted-foreground",
419
+ className: "text-xs text-text-secondary",
420
420
  children: [
421
421
  e.serviceName,
422
422
  " -",
@@ -430,11 +430,11 @@ function b() {
430
430
  })] })]
431
431
  }),
432
432
  /* @__PURE__ */ f("p", {
433
- className: "text-sm text-muted-foreground mb-3",
433
+ className: "text-sm text-text-secondary mb-3",
434
434
  children: e.comment
435
435
  }),
436
436
  /* @__PURE__ */ p("div", {
437
- className: "flex gap-4 text-xs text-muted-foreground",
437
+ className: "flex gap-4 text-xs text-text-secondary",
438
438
  children: [
439
439
  /* @__PURE__ */ p("span", { children: ["Value: $", e.projectValue.toLocaleString()] }),
440
440
  /* @__PURE__ */ p("span", { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDetailPage.js","names":[],"sources":["../../../src/proserviceworld/pages/ProviderDetailPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Badge } from '@burdenoff/fe-libs/ui';\nimport {\n Star,\n CheckCircle,\n Clock,\n MapPin,\n Briefcase,\n Globe,\n Award,\n MessageSquare,\n Share2,\n Calendar,\n Users,\n} from 'lucide-react';\nimport { useProServiceWorldStore } from '../store/proserviceworldStore';\n\ntype DetailTab = 'overview' | 'services' | 'reviews';\n\nexport function ProviderDetailPage() {\n const { providers, services, reviews } = useProServiceWorldStore();\n const [activeTab, setActiveTab] = useState<DetailTab>('overview');\n\n const provider = providers[0];\n const providerServices = services.filter((s) => s.providerId === provider.id);\n const providerReviews = reviews.filter((r) => r.providerName === provider.name);\n\n const tabs: { id: DetailTab; label: string }[] = [\n { id: 'overview', label: 'Overview' },\n { id: 'services', label: `Services (${providerServices.length})` },\n { id: 'reviews', label: `Reviews (${providerReviews.length})` },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-start space-x-6\">\n <div className=\"h-20 w-20 rounded-full bg-primary/10 flex items-center justify-center shrink-0\">\n <span className=\"text-primary text-2xl font-bold\">\n {provider.name.charAt(0)}\n {provider.name.split(' ')[1]?.charAt(0)}\n </span>\n </div>\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-3 mb-1\">\n <h1 className=\"text-2xl font-bold\">{provider.businessName}</h1>\n {provider.verified && (\n <Badge variant=\"default\">\n <CheckCircle className=\"h-3 w-3 mr-1\" />\n Verified\n </Badge>\n )}\n </div>\n <p className=\"text-muted-foreground mb-2\">{provider.name}</p>\n <p className=\"text-sm text-muted-foreground mb-4\">{provider.tagline}</p>\n <div className=\"flex items-center gap-4 text-sm\">\n <div className=\"flex items-center\">\n <Star className=\"h-4 w-4 text-yellow-400 fill-current mr-1\" />\n <span className=\"font-medium\">{provider.rating.toFixed(1)}</span>\n <span className=\"text-muted-foreground ml-1\">\n ({provider.totalReviews} reviews)\n </span>\n </div>\n <div className=\"flex items-center text-muted-foreground\">\n <MapPin className=\"h-4 w-4 mr-1\" />\n {provider.location}\n </div>\n <div className=\"flex items-center text-muted-foreground\">\n <Briefcase className=\"h-4 w-4 mr-1\" />\n {provider.yearsExperience} years\n </div>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardContent className=\"p-6 space-y-4\">\n <div className=\"text-center\">\n <div className=\"text-2xl font-bold\">${provider.hourlyRate}/hr</div>\n <p className=\"text-sm text-muted-foreground\">Starting rate</p>\n </div>\n <Button className=\"w-full\">\n <MessageSquare className=\"h-4 w-4 mr-2\" />\n Contact Provider\n </Button>\n <Button variant=\"outline\" className=\"w-full\">\n <Calendar className=\"h-4 w-4 mr-2\" />\n Book Consultation\n </Button>\n <Button variant=\"ghost\" className=\"w-full\">\n <Share2 className=\"h-4 w-4 mr-2\" />\n Share Profile\n </Button>\n <div className=\"grid grid-cols-2 gap-4 text-sm pt-4 border-t\">\n <div className=\"text-center p-3 bg-muted rounded\">\n <div className=\"font-semibold\">{provider.responseTime}h</div>\n <div className=\"text-muted-foreground\">Response</div>\n </div>\n <div className=\"text-center p-3 bg-muted rounded\">\n <div className=\"font-semibold\">{provider.completionRate}%</div>\n <div className=\"text-muted-foreground\">Completion</div>\n </div>\n <div className=\"text-center p-3 bg-muted rounded\">\n <div className=\"font-semibold\">{provider.projectsCompleted}</div>\n <div className=\"text-muted-foreground\">Projects</div>\n </div>\n <div className=\"text-center p-3 bg-muted rounded\">\n <div className=\"font-semibold\">{provider.activeProjects}</div>\n <div className=\"text-muted-foreground\">Active</div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"border-b\">\n <nav className=\"-mb-px flex space-x-8\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={`py-3 px-1 border-b-2 font-medium text-sm transition-colors ${activeTab === tab.id ? 'border-primary text-primary' : 'border-transparent text-muted-foreground hover:text-foreground'}`}\n >\n {tab.label}\n </button>\n ))}\n </nav>\n </div>\n\n {activeTab === 'overview' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>About</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-muted-foreground\">{provider.description}</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Specializations</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {provider.specializations.map((s) => (\n <Badge key={s} variant=\"secondary\">\n {s}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Certifications</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {provider.certifications.map((c) => (\n <div key={c} className=\"flex items-center gap-3\">\n <Award className=\"h-5 w-5 text-blue-600\" />\n <span>{c}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Location</span>\n <span>{provider.location}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Languages</span>\n <span>{provider.languages.join(', ')}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Member Since</span>\n <span>\n {new Date(provider.joinedDate).toLocaleDateString('en-US', {\n month: 'short',\n year: 'numeric',\n })}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Category</span>\n <span className=\"capitalize\">{provider.category.replace('_', ' ')}</span>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Similar Providers</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {providers\n .filter((p) => p.id !== provider.id)\n .slice(0, 3)\n .map((p) => (\n <div key={p.id} className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium\">\n {p.name.charAt(0)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">{p.businessName}</p>\n <p className=\"text-xs text-muted-foreground\">{p.specializations[0]}</p>\n </div>\n <div className=\"flex items-center text-xs\">\n <Star className=\"h-3 w-3 text-yellow-400 fill-current mr-0.5\" />\n {p.rating.toFixed(1)}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </div>\n )}\n\n {activeTab === 'services' && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {providerServices.length > 0 ? (\n providerServices.map((svc) => (\n <Card key={svc.id} className=\"hover:shadow-md transition-shadow\">\n <CardContent className=\"p-6\">\n <h3 className=\"font-semibold mb-2\">{svc.title}</h3>\n <p className=\"text-sm text-muted-foreground mb-3 line-clamp-2\">\n {svc.description}\n </p>\n <div className=\"flex flex-wrap gap-1 mb-3\">\n {svc.tags.slice(0, 3).map((t) => (\n <Badge key={t} variant=\"outline\" className=\"text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n <div className=\"flex justify-between border-t pt-3\">\n <span className=\"font-medium\">\n From ${svc.pricing.basePrice.toLocaleString()}\n </span>\n <span className=\"text-sm text-muted-foreground\">\n {svc.duration.typical} days\n </span>\n </div>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full mt-3\">\n View Details\n </Button>\n </CardContent>\n </Card>\n ))\n ) : (\n <div className=\"col-span-full text-center py-12\">\n <Globe className=\"h-12 w-12 mx-auto text-muted-foreground mb-4\" />\n <p className=\"text-muted-foreground\">No services listed yet</p>\n </div>\n )}\n </div>\n )}\n\n {activeTab === 'reviews' && (\n <div className=\"space-y-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center gap-8\">\n <div className=\"text-center\">\n <div className=\"text-4xl font-bold\">{provider.rating.toFixed(1)}</div>\n <div className=\"flex justify-center mt-1\">\n {[1, 2, 3, 4, 5].map((s) => (\n <Star\n key={s}\n className={`h-4 w-4 ${s <= Math.round(provider.rating) ? 'text-yellow-400 fill-current' : 'text-muted-foreground'}`}\n />\n ))}\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {provider.totalReviews} reviews\n </p>\n </div>\n <div className=\"flex-1 space-y-1\">\n {[5, 4, 3, 2, 1].map((r) => {\n const c = providerReviews.filter((rv) => Math.round(rv.rating) === r).length;\n const p = providerReviews.length > 0 ? (c / providerReviews.length) * 100 : 0;\n return (\n <div key={r} className=\"flex items-center gap-2\">\n <span className=\"text-sm w-3\">{r}</span>\n <Star className=\"h-3 w-3 text-yellow-400 fill-current\" />\n <div className=\"flex-1 bg-muted rounded-full h-2\">\n <div\n className=\"bg-yellow-400 h-2 rounded-full\"\n style={{ width: `${p}%` }}\n />\n </div>\n <span className=\"text-sm text-muted-foreground w-6 text-right\">{c}</span>\n </div>\n );\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n {providerReviews.map((rev) => (\n <Card key={rev.id}>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center gap-3 mb-3\">\n <div className=\"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center\">\n <span className=\"text-primary font-medium\">{rev.clientName.charAt(0)}</span>\n </div>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{rev.clientName}</span>\n <div className=\"flex\">\n {[1, 2, 3, 4, 5].map((s) => (\n <Star\n key={s}\n className={`h-3 w-3 ${s <= rev.rating ? 'text-yellow-400 fill-current' : 'text-muted-foreground'}`}\n />\n ))}\n </div>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {rev.serviceName} -{' '}\n {new Date(rev.createdAt).toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })}\n </p>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground mb-3\">{rev.comment}</p>\n <div className=\"flex gap-4 text-xs text-muted-foreground\">\n <span>Value: ${rev.projectValue.toLocaleString()}</span>\n <span>Duration: {rev.projectDuration} days</span>\n <span className=\"flex items-center\">\n <Users className=\"h-3 w-3 mr-1\" />\n {rev.helpful} helpful\n </span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProviderDetailPage.js","names":[],"sources":["../../../src/proserviceworld/pages/ProviderDetailPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Badge } from '@burdenoff/fe-libs/ui';\nimport {\n Star,\n CheckCircle,\n Clock,\n MapPin,\n Briefcase,\n Globe,\n Award,\n MessageSquare,\n Share2,\n Calendar,\n Users,\n} from 'lucide-react';\nimport { useProServiceWorldStore } from '../store/proserviceworldStore';\n\ntype DetailTab = 'overview' | 'services' | 'reviews';\n\nexport function ProviderDetailPage() {\n const { providers, services, reviews } = useProServiceWorldStore();\n const [activeTab, setActiveTab] = useState<DetailTab>('overview');\n\n const provider = providers[0];\n const providerServices = services.filter((s) => s.providerId === provider.id);\n const providerReviews = reviews.filter((r) => r.providerName === provider.name);\n\n const tabs: { id: DetailTab; label: string }[] = [\n { id: 'overview', label: 'Overview' },\n { id: 'services', label: `Services (${providerServices.length})` },\n { id: 'reviews', label: `Reviews (${providerReviews.length})` },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-start space-x-6\">\n <div className=\"h-20 w-20 rounded-full bg-action-primary-bg/10 flex items-center justify-center shrink-0\">\n <span className=\"text-primary text-2xl font-bold\">\n {provider.name.charAt(0)}\n {provider.name.split(' ')[1]?.charAt(0)}\n </span>\n </div>\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-3 mb-1\">\n <h1 className=\"text-2xl font-bold\">{provider.businessName}</h1>\n {provider.verified && (\n <Badge variant=\"default\">\n <CheckCircle className=\"h-3 w-3 mr-1\" />\n Verified\n </Badge>\n )}\n </div>\n <p className=\"text-text-secondary mb-2\">{provider.name}</p>\n <p className=\"text-sm text-text-secondary mb-4\">{provider.tagline}</p>\n <div className=\"flex items-center gap-4 text-sm\">\n <div className=\"flex items-center\">\n <Star className=\"h-4 w-4 text-yellow-400 fill-current mr-1\" />\n <span className=\"font-medium\">{provider.rating.toFixed(1)}</span>\n <span className=\"text-text-secondary ml-1\">\n ({provider.totalReviews} reviews)\n </span>\n </div>\n <div className=\"flex items-center text-text-secondary\">\n <MapPin className=\"h-4 w-4 mr-1\" />\n {provider.location}\n </div>\n <div className=\"flex items-center text-text-secondary\">\n <Briefcase className=\"h-4 w-4 mr-1\" />\n {provider.yearsExperience} years\n </div>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardContent className=\"p-6 space-y-4\">\n <div className=\"text-center\">\n <div className=\"text-2xl font-bold\">${provider.hourlyRate}/hr</div>\n <p className=\"text-sm text-text-secondary\">Starting rate</p>\n </div>\n <Button className=\"w-full\">\n <MessageSquare className=\"h-4 w-4 mr-2\" />\n Contact Provider\n </Button>\n <Button variant=\"outline\" className=\"w-full\">\n <Calendar className=\"h-4 w-4 mr-2\" />\n Book Consultation\n </Button>\n <Button variant=\"ghost\" className=\"w-full\">\n <Share2 className=\"h-4 w-4 mr-2\" />\n Share Profile\n </Button>\n <div className=\"grid grid-cols-2 gap-4 text-sm pt-4 border-t\">\n <div className=\"text-center p-3 bg-bg-sunken rounded\">\n <div className=\"font-semibold\">{provider.responseTime}h</div>\n <div className=\"text-text-secondary\">Response</div>\n </div>\n <div className=\"text-center p-3 bg-bg-sunken rounded\">\n <div className=\"font-semibold\">{provider.completionRate}%</div>\n <div className=\"text-text-secondary\">Completion</div>\n </div>\n <div className=\"text-center p-3 bg-bg-sunken rounded\">\n <div className=\"font-semibold\">{provider.projectsCompleted}</div>\n <div className=\"text-text-secondary\">Projects</div>\n </div>\n <div className=\"text-center p-3 bg-bg-sunken rounded\">\n <div className=\"font-semibold\">{provider.activeProjects}</div>\n <div className=\"text-text-secondary\">Active</div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"border-b\">\n <nav className=\"-mb-px flex space-x-8\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={`py-3 px-1 border-b-2 font-medium text-sm transition-colors ${activeTab === tab.id ? 'border-primary text-primary' : 'border-transparent text-text-secondary hover:text-text-primary'}`}\n >\n {tab.label}\n </button>\n ))}\n </nav>\n </div>\n\n {activeTab === 'overview' && (\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>About</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-text-secondary\">{provider.description}</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Specializations</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {provider.specializations.map((s) => (\n <Badge key={s} variant=\"secondary\">\n {s}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Certifications</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {provider.certifications.map((c) => (\n <div key={c} className=\"flex items-center gap-3\">\n <Award className=\"h-5 w-5 text-blue-600\" />\n <span>{c}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-text-secondary\">Location</span>\n <span>{provider.location}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-text-secondary\">Languages</span>\n <span>{provider.languages.join(', ')}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-text-secondary\">Member Since</span>\n <span>\n {new Date(provider.joinedDate).toLocaleDateString('en-US', {\n month: 'short',\n year: 'numeric',\n })}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-text-secondary\">Category</span>\n <span className=\"capitalize\">{provider.category.replace('_', ' ')}</span>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Similar Providers</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {providers\n .filter((p) => p.id !== provider.id)\n .slice(0, 3)\n .map((p) => (\n <div key={p.id} className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-bg-sunken flex items-center justify-center text-xs font-medium\">\n {p.name.charAt(0)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">{p.businessName}</p>\n <p className=\"text-xs text-text-secondary\">{p.specializations[0]}</p>\n </div>\n <div className=\"flex items-center text-xs\">\n <Star className=\"h-3 w-3 text-yellow-400 fill-current mr-0.5\" />\n {p.rating.toFixed(1)}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </div>\n )}\n\n {activeTab === 'services' && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {providerServices.length > 0 ? (\n providerServices.map((svc) => (\n <Card key={svc.id} className=\"hover:shadow-md transition-shadow\">\n <CardContent className=\"p-6\">\n <h3 className=\"font-semibold mb-2\">{svc.title}</h3>\n <p className=\"text-sm text-text-secondary mb-3 line-clamp-2\">\n {svc.description}\n </p>\n <div className=\"flex flex-wrap gap-1 mb-3\">\n {svc.tags.slice(0, 3).map((t) => (\n <Badge key={t} variant=\"outline\" className=\"text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n <div className=\"flex justify-between border-t pt-3\">\n <span className=\"font-medium\">\n From ${svc.pricing.basePrice.toLocaleString()}\n </span>\n <span className=\"text-sm text-text-secondary\">\n {svc.duration.typical} days\n </span>\n </div>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full mt-3\">\n View Details\n </Button>\n </CardContent>\n </Card>\n ))\n ) : (\n <div className=\"col-span-full text-center py-12\">\n <Globe className=\"h-12 w-12 mx-auto text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">No services listed yet</p>\n </div>\n )}\n </div>\n )}\n\n {activeTab === 'reviews' && (\n <div className=\"space-y-4\">\n <Card>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center gap-8\">\n <div className=\"text-center\">\n <div className=\"text-4xl font-bold\">{provider.rating.toFixed(1)}</div>\n <div className=\"flex justify-center mt-1\">\n {[1, 2, 3, 4, 5].map((s) => (\n <Star\n key={s}\n className={`h-4 w-4 ${s <= Math.round(provider.rating) ? 'text-yellow-400 fill-current' : 'text-text-secondary'}`}\n />\n ))}\n </div>\n <p className=\"text-sm text-text-secondary mt-1\">\n {provider.totalReviews} reviews\n </p>\n </div>\n <div className=\"flex-1 space-y-1\">\n {[5, 4, 3, 2, 1].map((r) => {\n const c = providerReviews.filter((rv) => Math.round(rv.rating) === r).length;\n const p = providerReviews.length > 0 ? (c / providerReviews.length) * 100 : 0;\n return (\n <div key={r} className=\"flex items-center gap-2\">\n <span className=\"text-sm w-3\">{r}</span>\n <Star className=\"h-3 w-3 text-yellow-400 fill-current\" />\n <div className=\"flex-1 bg-bg-sunken rounded-full h-2\">\n <div\n className=\"bg-yellow-400 h-2 rounded-full\"\n style={{ width: `${p}%` }}\n />\n </div>\n <span className=\"text-sm text-text-secondary w-6 text-right\">{c}</span>\n </div>\n );\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n {providerReviews.map((rev) => (\n <Card key={rev.id}>\n <CardContent className=\"p-6\">\n <div className=\"flex items-center gap-3 mb-3\">\n <div className=\"h-10 w-10 rounded-full bg-action-primary-bg/10 flex items-center justify-center\">\n <span className=\"text-primary font-medium\">{rev.clientName.charAt(0)}</span>\n </div>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{rev.clientName}</span>\n <div className=\"flex\">\n {[1, 2, 3, 4, 5].map((s) => (\n <Star\n key={s}\n className={`h-3 w-3 ${s <= rev.rating ? 'text-yellow-400 fill-current' : 'text-text-secondary'}`}\n />\n ))}\n </div>\n </div>\n <p className=\"text-xs text-text-secondary\">\n {rev.serviceName} -{' '}\n {new Date(rev.createdAt).toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })}\n </p>\n </div>\n </div>\n <p className=\"text-sm text-text-secondary mb-3\">{rev.comment}</p>\n <div className=\"flex gap-4 text-xs text-text-secondary\">\n <span>Value: ${rev.projectValue.toLocaleString()}</span>\n <span>Duration: {rev.projectDuration} days</span>\n <span className=\"flex items-center\">\n <Users className=\"h-3 w-3 mr-1\" />\n {rev.helpful} helpful\n </span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -86,7 +86,7 @@ function x() {
86
86
  className: "text-2xl font-semibold",
87
87
  children: S("proserviceworld.providers.title", "Service Providers")
88
88
  }), /* @__PURE__ */ p("p", {
89
- className: "text-sm text-muted-foreground",
89
+ className: "text-sm text-text-secondary",
90
90
  children: I
91
91
  })] }), /* @__PURE__ */ m(g, {
92
92
  variant: "outline",
@@ -98,7 +98,7 @@ function x() {
98
98
  className: "flex gap-4",
99
99
  children: /* @__PURE__ */ m("div", {
100
100
  className: "flex-1 relative",
101
- children: [/* @__PURE__ */ p(l, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground" }), /* @__PURE__ */ p(y, {
101
+ children: [/* @__PURE__ */ p(l, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-text-secondary" }), /* @__PURE__ */ p(y, {
102
102
  type: "text",
103
103
  placeholder: S("proserviceworld.providers.search.placeholder", "Search providers by name, business, or specialization..."),
104
104
  value: w,
@@ -118,7 +118,7 @@ function x() {
118
118
  }), /* @__PURE__ */ p("select", {
119
119
  value: E,
120
120
  onChange: (e) => D(e.target.value),
121
- className: "w-full p-2 border border-input rounded-md bg-background text-foreground",
121
+ className: "w-full p-2 border border-border-default rounded-md bg-bg-surface text-text-primary",
122
122
  children: b.map((e) => /* @__PURE__ */ p("option", {
123
123
  value: e.value,
124
124
  children: S(e.key, e.fallback)
@@ -130,7 +130,7 @@ function x() {
130
130
  }), /* @__PURE__ */ m("select", {
131
131
  value: O,
132
132
  onChange: (e) => k(e.target.value ? Number(e.target.value) : ""),
133
- className: "w-full p-2 border border-input rounded-md bg-background text-foreground",
133
+ className: "w-full p-2 border border-border-default rounded-md bg-bg-surface text-text-primary",
134
134
  children: [
135
135
  /* @__PURE__ */ p("option", {
136
136
  value: "",
@@ -173,7 +173,7 @@ function x() {
173
173
  className: "flex items-center space-x-4 mb-4",
174
174
  children: [
175
175
  /* @__PURE__ */ p("div", {
176
- className: "h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center",
176
+ className: "h-12 w-12 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
177
177
  children: /* @__PURE__ */ p("span", {
178
178
  className: "text-primary font-bold",
179
179
  children: e.name.charAt(0)
@@ -185,7 +185,7 @@ function x() {
185
185
  className: "font-semibold truncate",
186
186
  children: e.businessName
187
187
  }), /* @__PURE__ */ p("p", {
188
- className: "text-sm text-muted-foreground truncate",
188
+ className: "text-sm text-text-secondary truncate",
189
189
  children: e.name
190
190
  })]
191
191
  }),
@@ -193,7 +193,7 @@ function x() {
193
193
  ]
194
194
  }),
195
195
  /* @__PURE__ */ p("p", {
196
- className: "text-sm text-muted-foreground mb-3 line-clamp-2",
196
+ className: "text-sm text-text-secondary mb-3 line-clamp-2",
197
197
  children: e.tagline
198
198
  }),
199
199
  /* @__PURE__ */ m("div", {
@@ -219,7 +219,7 @@ function x() {
219
219
  children: e.rating.toFixed(1)
220
220
  }),
221
221
  /* @__PURE__ */ m("span", {
222
- className: "text-muted-foreground ml-1",
222
+ className: "text-text-secondary ml-1",
223
223
  children: [
224
224
  "(",
225
225
  e.totalReviews,
@@ -228,12 +228,12 @@ function x() {
228
228
  })
229
229
  ]
230
230
  }), /* @__PURE__ */ m("div", {
231
- className: "flex items-center text-muted-foreground",
231
+ className: "flex items-center text-text-secondary",
232
232
  children: [/* @__PURE__ */ p(c, { className: "h-3 w-3 mr-1" }), /* @__PURE__ */ p("span", { children: e.location })]
233
233
  })]
234
234
  }),
235
235
  /* @__PURE__ */ m("div", {
236
- className: "grid grid-cols-2 gap-2 text-xs text-muted-foreground border-t pt-3",
236
+ className: "grid grid-cols-2 gap-2 text-xs text-text-secondary border-t pt-3",
237
237
  children: [/* @__PURE__ */ m("div", {
238
238
  className: "flex items-center",
239
239
  children: [/* @__PURE__ */ p(o, { className: "h-3 w-3 mr-1" }), S("proserviceworld.providers.card.responseTime", "{{count}}h response", { count: e.responseTime })]
@@ -254,19 +254,19 @@ function x() {
254
254
  }) : /* @__PURE__ */ m("div", {
255
255
  className: "text-center py-12",
256
256
  children: [
257
- /* @__PURE__ */ p(d, { className: "h-12 w-12 mx-auto text-muted-foreground mb-4" }),
257
+ /* @__PURE__ */ p(d, { className: "h-12 w-12 mx-auto text-text-secondary mb-4" }),
258
258
  /* @__PURE__ */ p("h3", {
259
259
  className: "text-lg font-medium mb-2",
260
260
  children: S("proserviceworld.providers.empty.title", "No providers found")
261
261
  }),
262
262
  /* @__PURE__ */ p("p", {
263
- className: "text-muted-foreground",
263
+ className: "text-text-secondary",
264
264
  children: S("proserviceworld.shared.empty.adjustFilters", "Try adjusting your search criteria or filters.")
265
265
  })
266
266
  ]
267
267
  }),
268
268
  M.length > 0 && /* @__PURE__ */ p(_, {
269
- className: "bg-primary/5",
269
+ className: "bg-action-primary-bg/5",
270
270
  children: /* @__PURE__ */ m(v, {
271
271
  className: "p-8",
272
272
  children: [/* @__PURE__ */ p("div", {
@@ -282,7 +282,7 @@ function x() {
282
282
  className: "text-center",
283
283
  children: [
284
284
  /* @__PURE__ */ p("div", {
285
- className: "flex items-center justify-center w-12 h-12 mx-auto bg-primary/10 rounded-lg mb-4",
285
+ className: "flex items-center justify-center w-12 h-12 mx-auto bg-action-primary-bg/10 rounded-lg mb-4",
286
286
  children: /* @__PURE__ */ p(u, { className: "h-6 w-6 text-primary" })
287
287
  }),
288
288
  /* @__PURE__ */ p("div", {
@@ -290,7 +290,7 @@ function x() {
290
290
  children: N
291
291
  }),
292
292
  /* @__PURE__ */ p("div", {
293
- className: "text-sm text-muted-foreground",
293
+ className: "text-sm text-text-secondary",
294
294
  children: S("proserviceworld.providers.stats.averageRating", "Average Rating")
295
295
  })
296
296
  ]
@@ -299,7 +299,7 @@ function x() {
299
299
  className: "text-center",
300
300
  children: [
301
301
  /* @__PURE__ */ p("div", {
302
- className: "flex items-center justify-center w-12 h-12 mx-auto bg-primary/10 rounded-lg mb-4",
302
+ className: "flex items-center justify-center w-12 h-12 mx-auto bg-action-primary-bg/10 rounded-lg mb-4",
303
303
  children: /* @__PURE__ */ p(d, { className: "h-6 w-6 text-primary" })
304
304
  }),
305
305
  /* @__PURE__ */ p("div", {
@@ -307,7 +307,7 @@ function x() {
307
307
  children: M.length
308
308
  }),
309
309
  /* @__PURE__ */ p("div", {
310
- className: "text-sm text-muted-foreground",
310
+ className: "text-sm text-text-secondary",
311
311
  children: S("proserviceworld.providers.stats.expertProviders", "Expert Providers")
312
312
  })
313
313
  ]
@@ -316,7 +316,7 @@ function x() {
316
316
  className: "text-center",
317
317
  children: [
318
318
  /* @__PURE__ */ p("div", {
319
- className: "flex items-center justify-center w-12 h-12 mx-auto bg-primary/10 rounded-lg mb-4",
319
+ className: "flex items-center justify-center w-12 h-12 mx-auto bg-action-primary-bg/10 rounded-lg mb-4",
320
320
  children: /* @__PURE__ */ p(c, { className: "h-6 w-6 text-primary" })
321
321
  }),
322
322
  /* @__PURE__ */ p("div", {
@@ -324,7 +324,7 @@ function x() {
324
324
  children: P
325
325
  }),
326
326
  /* @__PURE__ */ p("div", {
327
- className: "text-sm text-muted-foreground",
327
+ className: "text-sm text-text-secondary",
328
328
  children: S("proserviceworld.providers.stats.countries", "Countries")
329
329
  })
330
330
  ]