@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.
- package/dist/proserviceworld/pages/AdminReportsPage.js +396 -329
- package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
- package/dist/proserviceworld/pages/AdminUsersPage.js +261 -237
- package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
- package/dist/proserviceworld/pages/AnalyticsPage.js +373 -315
- package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
- package/dist/proserviceworld/pages/BookingsPage.js +221 -200
- package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
- package/dist/proserviceworld/pages/DashboardPage.js +474 -405
- package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.js +386 -317
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/MessagesPage.js +201 -192
- package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
- package/dist/proserviceworld/pages/PaymentsPage.js +398 -340
- package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProjectsPage.js +543 -463
- package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProviderDetailPage.js +420 -346
- package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProvidersPage.js +249 -244
- package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
- package/dist/proserviceworld/pages/ReviewsPage.js +93 -76
- package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServiceDetailsPage.js +377 -309
- package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServicesPage.js +116 -109
- package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
- package/dist/proserviceworld/pages/VerificationPage.js +264 -251
- package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
- 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,
|
|
4
|
-
import { jsx as
|
|
5
|
-
import { Badge as
|
|
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
|
|
8
|
-
let { providers:
|
|
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 (${
|
|
15
|
+
label: `Services (${j.length})`
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
id: "reviews",
|
|
19
|
-
label: `Reviews (${
|
|
19
|
+
label: `Reviews (${M.length})`
|
|
20
20
|
}
|
|
21
21
|
];
|
|
22
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
57
|
+
children: [/* @__PURE__ */ d("div", {
|
|
28
58
|
className: "lg:col-span-2",
|
|
29
|
-
children: /* @__PURE__ */
|
|
30
|
-
className: "
|
|
31
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
34
|
-
className: "h-20 w-20 rounded-full bg-
|
|
35
|
-
children: /* @__PURE__ */
|
|
36
|
-
className: "text-primary text-2xl font-bold",
|
|
37
|
-
children: [
|
|
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__ */
|
|
69
|
+
}), /* @__PURE__ */ f("div", {
|
|
40
70
|
className: "flex-1",
|
|
41
71
|
children: [
|
|
42
|
-
/* @__PURE__ */
|
|
72
|
+
/* @__PURE__ */ f("div", {
|
|
43
73
|
className: "flex items-center gap-3 mb-1",
|
|
44
|
-
children: [/* @__PURE__ */
|
|
45
|
-
className: "text-2xl font-bold",
|
|
46
|
-
children:
|
|
47
|
-
}),
|
|
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__ */
|
|
79
|
+
children: [/* @__PURE__ */ d(a, { className: "h-3 w-3 mr-1" }), "Verified"]
|
|
50
80
|
})]
|
|
51
81
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ d("p", {
|
|
53
83
|
className: "text-text-secondary mb-2",
|
|
54
|
-
children:
|
|
84
|
+
children: A.name
|
|
55
85
|
}),
|
|
56
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ d("p", {
|
|
57
87
|
className: "text-sm text-text-secondary mb-4",
|
|
58
|
-
children:
|
|
88
|
+
children: A.tagline
|
|
59
89
|
}),
|
|
60
|
-
/* @__PURE__ */
|
|
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__ */
|
|
93
|
+
/* @__PURE__ */ f("div", {
|
|
64
94
|
className: "flex items-center",
|
|
65
95
|
children: [
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
-
className: "font-medium",
|
|
69
|
-
children:
|
|
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__ */
|
|
101
|
+
/* @__PURE__ */ f("span", {
|
|
72
102
|
className: "text-text-secondary ml-1",
|
|
73
103
|
children: [
|
|
74
104
|
"(",
|
|
75
|
-
|
|
105
|
+
A.totalReviews,
|
|
76
106
|
" reviews)"
|
|
77
107
|
]
|
|
78
108
|
})
|
|
79
109
|
]
|
|
80
110
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ f("div", {
|
|
82
112
|
className: "flex items-center text-text-secondary",
|
|
83
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ d(o, { className: "h-4 w-4 mr-1" }), A.location]
|
|
84
114
|
}),
|
|
85
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ f("div", {
|
|
86
116
|
className: "flex items-center text-text-secondary",
|
|
87
117
|
children: [
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
-
|
|
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__ */
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
109
|
-
|
|
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
|
-
})
|
|
112
|
-
|
|
113
|
-
|
|
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__ */
|
|
179
|
-
className: "border-b",
|
|
180
|
-
children: /* @__PURE__ */
|
|
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:
|
|
183
|
-
onClick: () =>
|
|
184
|
-
|
|
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
|
-
|
|
227
|
+
O === "overview" && /* @__PURE__ */ f("div", {
|
|
190
228
|
className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
|
|
191
|
-
children: [/* @__PURE__ */
|
|
229
|
+
children: [/* @__PURE__ */ f("div", {
|
|
192
230
|
className: "lg:col-span-2 space-y-6",
|
|
193
231
|
children: [
|
|
194
|
-
/* @__PURE__ */
|
|
195
|
-
className: "
|
|
196
|
-
children:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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__ */
|
|
260
|
+
}), /* @__PURE__ */ f("div", {
|
|
214
261
|
className: "space-y-6",
|
|
215
|
-
children: [/* @__PURE__ */
|
|
216
|
-
className: "
|
|
217
|
-
children: [
|
|
218
|
-
|
|
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: "
|
|
260
|
-
children:
|
|
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__ */
|
|
263
|
-
className: "flex
|
|
264
|
-
children: [/* @__PURE__ */
|
|
265
|
-
className: "text-
|
|
266
|
-
children:
|
|
267
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
273
|
-
className: "flex
|
|
274
|
-
children: [/* @__PURE__ */
|
|
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
|
-
}
|
|
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
|
-
|
|
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:
|
|
284
|
-
|
|
285
|
-
|
|
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__ */
|
|
345
|
+
/* @__PURE__ */ d("h3", {
|
|
289
346
|
className: "font-semibold mb-2",
|
|
290
347
|
children: e.title
|
|
291
348
|
}),
|
|
292
|
-
/* @__PURE__ */
|
|
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__ */
|
|
353
|
+
/* @__PURE__ */ d("div", {
|
|
297
354
|
className: "flex flex-wrap gap-1 mb-3",
|
|
298
|
-
children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */
|
|
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__ */
|
|
305
|
-
className: "flex justify-between border-t pt-3",
|
|
306
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
323
|
-
className: "col-span-full
|
|
324
|
-
children:
|
|
325
|
-
|
|
326
|
-
|
|
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
|
-
|
|
388
|
+
O === "reviews" && /* @__PURE__ */ f("div", {
|
|
331
389
|
className: "space-y-4",
|
|
332
|
-
children: [/* @__PURE__ */
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
})
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
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
|
-
}
|
|
389
|
-
})
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
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
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
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
|
-
|
|
433
|
-
|
|
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 {
|
|
536
|
+
export { T as ProviderDetailPage };
|
|
463
537
|
|
|
464
538
|
//# sourceMappingURL=ProviderDetailPage.js.map
|