@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
|
@@ -2,65 +2,65 @@ import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
|
|
|
2
2
|
import { useMemo as t, useState as n } from "react";
|
|
3
3
|
import { ArrowUpDown as r, Calendar as i, CheckCircle2 as a, ChevronRight as o, Clock as s, DollarSign as c, Filter as l, Loader2 as u, Search as d, User as f, XCircle as p } from "lucide-react";
|
|
4
4
|
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
5
|
-
import { Badge as g, Button as _, Card as v, CardContent as y,
|
|
5
|
+
import { Badge as g, Button as _, Card as v, CardContent as y, GlassCard as b, IllustratedEmptyState as x, Input as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/proserviceworld/pages/BookingsPage.tsx
|
|
7
|
-
var
|
|
7
|
+
var w = {
|
|
8
8
|
pending: {
|
|
9
9
|
label: "Pending",
|
|
10
|
-
color: "text-
|
|
10
|
+
color: "text-status-warning-text",
|
|
11
11
|
icon: s,
|
|
12
12
|
badgeVariant: "secondary"
|
|
13
13
|
},
|
|
14
14
|
in_progress: {
|
|
15
15
|
label: "In Progress",
|
|
16
|
-
color: "text-blue
|
|
16
|
+
color: "text-accent-blue",
|
|
17
17
|
icon: u,
|
|
18
18
|
badgeVariant: "default"
|
|
19
19
|
},
|
|
20
20
|
completed: {
|
|
21
21
|
label: "Completed",
|
|
22
|
-
color: "text-
|
|
22
|
+
color: "text-status-success-text",
|
|
23
23
|
icon: a,
|
|
24
24
|
badgeVariant: "outline"
|
|
25
25
|
},
|
|
26
26
|
cancelled: {
|
|
27
27
|
label: "Cancelled",
|
|
28
|
-
color: "text-
|
|
28
|
+
color: "text-status-error-text",
|
|
29
29
|
icon: p,
|
|
30
30
|
badgeVariant: "destructive"
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
function
|
|
34
|
-
let { bookings: s } = e(), [p,
|
|
33
|
+
function T() {
|
|
34
|
+
let { bookings: s } = e(), [p, T] = n(""), [E, D] = n("all"), [O, k] = n("date"), [A, j] = n(!1), [M, N] = n(null), P = t(() => {
|
|
35
35
|
let e = s;
|
|
36
|
-
if (
|
|
36
|
+
if (E !== "all" && (e = e.filter((e) => e.status === E)), p.trim()) {
|
|
37
37
|
let t = p.toLowerCase();
|
|
38
38
|
e = e.filter((e) => e.title.toLowerCase().includes(t) || e.providerName.toLowerCase().includes(t) || e.serviceName.toLowerCase().includes(t));
|
|
39
39
|
}
|
|
40
40
|
return e = [...e].sort((e, t) => {
|
|
41
|
-
let n =
|
|
42
|
-
return
|
|
41
|
+
let n = O === "date" ? new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime() : O === "budget" ? t.budget - e.budget : t.progress - e.progress;
|
|
42
|
+
return A ? -n : n;
|
|
43
43
|
}), e;
|
|
44
44
|
}, [
|
|
45
45
|
s,
|
|
46
46
|
p,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
]),
|
|
47
|
+
E,
|
|
48
|
+
O,
|
|
49
|
+
A
|
|
50
|
+
]), F = M ? s.find((e) => e.id === M) : null, I = t(() => {
|
|
51
51
|
let e = { all: s.length };
|
|
52
52
|
for (let t of s) e[t.status] = (e[t.status] ?? 0) + 1;
|
|
53
53
|
return e;
|
|
54
|
-
}, [s]),
|
|
55
|
-
|
|
54
|
+
}, [s]), L = s.reduce((e, t) => e + t.budget, 0), R = Math.round(s.filter((e) => e.status === "in_progress").reduce((e, t) => e + t.progress, 0) / Math.max(1, s.filter((e) => e.status === "in_progress").length)), z = (e) => {
|
|
55
|
+
O === e ? j(!A) : (k(e), j(!1));
|
|
56
56
|
};
|
|
57
57
|
return /* @__PURE__ */ h("div", {
|
|
58
|
-
className: "space-y-6 p-6",
|
|
58
|
+
className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
|
|
59
59
|
children: [
|
|
60
60
|
/* @__PURE__ */ h("div", {
|
|
61
61
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
62
62
|
children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
|
|
63
|
-
className: "text-2xl font-semibold",
|
|
63
|
+
className: "text-2xl font-semibold tracking-tight",
|
|
64
64
|
children: "Bookings"
|
|
65
65
|
}), /* @__PURE__ */ m("p", {
|
|
66
66
|
className: "text-sm text-text-secondary",
|
|
@@ -70,73 +70,82 @@ function w() {
|
|
|
70
70
|
children: [/* @__PURE__ */ m(i, { className: "mr-2 h-4 w-4" }), " New Booking"]
|
|
71
71
|
})]
|
|
72
72
|
}),
|
|
73
|
+
/* @__PURE__ */ m(C, {
|
|
74
|
+
icon: /* @__PURE__ */ m(i, { className: "h-4 w-4" }),
|
|
75
|
+
children: "Every engagement you have booked, in one timeline. Filter by status, search by provider or service, and open any booking to follow its progress, payment status, and key dates — then message the provider or take action right from the detail panel."
|
|
76
|
+
}),
|
|
73
77
|
/* @__PURE__ */ h("div", {
|
|
74
78
|
className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
75
79
|
children: [
|
|
76
|
-
/* @__PURE__ */ m(
|
|
77
|
-
|
|
80
|
+
/* @__PURE__ */ m(b, {
|
|
81
|
+
treatment: "metric",
|
|
82
|
+
className: "border-border-seam",
|
|
78
83
|
children: /* @__PURE__ */ h("div", {
|
|
79
84
|
className: "flex items-center gap-3",
|
|
80
85
|
children: [/* @__PURE__ */ m("div", {
|
|
81
|
-
className: "rounded-lg bg-
|
|
82
|
-
children: /* @__PURE__ */ m(i, { className: "h-5 w-5 text-blue
|
|
86
|
+
className: "rounded-lg bg-status-info-bg-subtle p-2",
|
|
87
|
+
children: /* @__PURE__ */ m(i, { className: "h-5 w-5 text-accent-blue" })
|
|
83
88
|
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
84
|
-
className: "text-2xl font-bold",
|
|
89
|
+
className: "text-2xl font-bold tabular-nums",
|
|
85
90
|
children: s.length
|
|
86
91
|
}), /* @__PURE__ */ m("p", {
|
|
87
92
|
className: "text-xs text-text-secondary",
|
|
88
93
|
children: "Total Bookings"
|
|
89
94
|
})] })]
|
|
90
95
|
})
|
|
91
|
-
})
|
|
92
|
-
/* @__PURE__ */ m(
|
|
93
|
-
|
|
96
|
+
}),
|
|
97
|
+
/* @__PURE__ */ m(b, {
|
|
98
|
+
treatment: "metric",
|
|
99
|
+
className: "border-border-seam",
|
|
94
100
|
children: /* @__PURE__ */ h("div", {
|
|
95
101
|
className: "flex items-center gap-3",
|
|
96
102
|
children: [/* @__PURE__ */ m("div", {
|
|
97
|
-
className: "rounded-lg bg-
|
|
98
|
-
children: /* @__PURE__ */ m(a, { className: "h-5 w-5 text-
|
|
103
|
+
className: "rounded-lg bg-status-success-bg-subtle p-2",
|
|
104
|
+
children: /* @__PURE__ */ m(a, { className: "h-5 w-5 text-status-success-text" })
|
|
99
105
|
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
100
|
-
className: "text-2xl font-bold",
|
|
101
|
-
children:
|
|
106
|
+
className: "text-2xl font-bold tabular-nums",
|
|
107
|
+
children: I.completed ?? 0
|
|
102
108
|
}), /* @__PURE__ */ m("p", {
|
|
103
109
|
className: "text-xs text-text-secondary",
|
|
104
110
|
children: "Completed"
|
|
105
111
|
})] })]
|
|
106
112
|
})
|
|
107
|
-
})
|
|
108
|
-
/* @__PURE__ */ m(
|
|
109
|
-
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ m(b, {
|
|
115
|
+
treatment: "metric",
|
|
116
|
+
className: "border-border-seam",
|
|
110
117
|
children: /* @__PURE__ */ h("div", {
|
|
111
118
|
className: "flex items-center gap-3",
|
|
112
119
|
children: [/* @__PURE__ */ m("div", {
|
|
113
|
-
className: "rounded-lg bg-
|
|
114
|
-
children: /* @__PURE__ */ m(u, { className: "h-5 w-5 text-
|
|
120
|
+
className: "rounded-lg bg-status-warning-bg-subtle p-2",
|
|
121
|
+
children: /* @__PURE__ */ m(u, { className: "h-5 w-5 text-status-warning-text" })
|
|
115
122
|
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
|
|
116
|
-
className: "text-2xl font-bold",
|
|
117
|
-
children: [
|
|
123
|
+
className: "text-2xl font-bold tabular-nums",
|
|
124
|
+
children: [R, "%"]
|
|
118
125
|
}), /* @__PURE__ */ m("p", {
|
|
119
126
|
className: "text-xs text-text-secondary",
|
|
120
127
|
children: "Avg. In-Progress"
|
|
121
128
|
})] })]
|
|
122
129
|
})
|
|
123
|
-
})
|
|
124
|
-
/* @__PURE__ */ m(
|
|
125
|
-
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ m(b, {
|
|
132
|
+
treatment: "glass",
|
|
133
|
+
glow: !0,
|
|
134
|
+
className: "border-border-seam",
|
|
126
135
|
children: /* @__PURE__ */ h("div", {
|
|
127
136
|
className: "flex items-center gap-3",
|
|
128
137
|
children: [/* @__PURE__ */ m("div", {
|
|
129
|
-
className: "rounded-lg bg-purple-
|
|
130
|
-
children: /* @__PURE__ */ m(c, { className: "h-5 w-5 text-purple
|
|
138
|
+
className: "rounded-lg bg-accent-purple-subtle p-2",
|
|
139
|
+
children: /* @__PURE__ */ m(c, { className: "h-5 w-5 text-accent-purple" })
|
|
131
140
|
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
|
|
132
|
-
className: "text-2xl font-bold",
|
|
133
|
-
children: ["$",
|
|
141
|
+
className: "text-2xl font-bold tabular-nums",
|
|
142
|
+
children: ["$", L.toLocaleString()]
|
|
134
143
|
}), /* @__PURE__ */ m("p", {
|
|
135
144
|
className: "text-xs text-text-secondary",
|
|
136
145
|
children: "Total Budget"
|
|
137
146
|
})] })]
|
|
138
147
|
})
|
|
139
|
-
})
|
|
148
|
+
})
|
|
140
149
|
]
|
|
141
150
|
}),
|
|
142
151
|
/* @__PURE__ */ h("div", {
|
|
@@ -146,11 +155,11 @@ function w() {
|
|
|
146
155
|
children: [/* @__PURE__ */ m(d, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ m(S, {
|
|
147
156
|
placeholder: "Search bookings by title, provider, or service...",
|
|
148
157
|
value: p,
|
|
149
|
-
onChange: (e) =>
|
|
158
|
+
onChange: (e) => T(e.target.value),
|
|
150
159
|
className: "pl-10"
|
|
151
160
|
})]
|
|
152
161
|
}), /* @__PURE__ */ h("div", {
|
|
153
|
-
className: "flex items-center gap-2",
|
|
162
|
+
className: "flex flex-wrap items-center gap-2",
|
|
154
163
|
children: [/* @__PURE__ */ m(l, { className: "h-4 w-4 text-text-secondary" }), [
|
|
155
164
|
"all",
|
|
156
165
|
"pending",
|
|
@@ -158,14 +167,14 @@ function w() {
|
|
|
158
167
|
"completed",
|
|
159
168
|
"cancelled"
|
|
160
169
|
].map((e) => /* @__PURE__ */ h(_, {
|
|
161
|
-
variant:
|
|
170
|
+
variant: E === e ? "default" : "outline",
|
|
162
171
|
size: "sm",
|
|
163
|
-
onClick: () =>
|
|
164
|
-
children: [e === "all" ? "All" :
|
|
165
|
-
className: "ml-1 text-xs opacity-70",
|
|
172
|
+
onClick: () => D(e),
|
|
173
|
+
children: [e === "all" ? "All" : w[e].label, /* @__PURE__ */ h("span", {
|
|
174
|
+
className: "ml-1 text-xs opacity-70 tabular-nums",
|
|
166
175
|
children: [
|
|
167
176
|
"(",
|
|
168
|
-
|
|
177
|
+
I[e] ?? 0,
|
|
169
178
|
")"
|
|
170
179
|
]
|
|
171
180
|
})]
|
|
@@ -173,7 +182,7 @@ function w() {
|
|
|
173
182
|
})]
|
|
174
183
|
}),
|
|
175
184
|
/* @__PURE__ */ m("div", {
|
|
176
|
-
className: "flex gap-2",
|
|
185
|
+
className: "flex flex-wrap gap-2",
|
|
177
186
|
children: [
|
|
178
187
|
{
|
|
179
188
|
field: "date",
|
|
@@ -188,23 +197,31 @@ function w() {
|
|
|
188
197
|
label: "Progress"
|
|
189
198
|
}
|
|
190
199
|
].map(({ field: e, label: t }) => /* @__PURE__ */ h("button", {
|
|
191
|
-
onClick: () =>
|
|
192
|
-
|
|
200
|
+
onClick: () => z(e),
|
|
201
|
+
"aria-pressed": O === e,
|
|
202
|
+
className: `flex items-center gap-1 rounded border px-3 py-1 text-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${O === e ? "border-border-strong bg-accent-soft text-text-primary" : "border-border-seam text-text-secondary hover:bg-bg-sunken/50"}`,
|
|
193
203
|
children: [/* @__PURE__ */ m(r, { className: "h-3 w-3" }), t]
|
|
194
204
|
}, e))
|
|
195
205
|
}),
|
|
196
206
|
/* @__PURE__ */ h("div", {
|
|
197
207
|
className: "grid gap-6 lg:grid-cols-3",
|
|
198
208
|
children: [/* @__PURE__ */ m("div", {
|
|
199
|
-
className: `space-y-3 ${
|
|
200
|
-
children:
|
|
201
|
-
className: "
|
|
202
|
-
children:
|
|
203
|
-
|
|
204
|
-
|
|
209
|
+
className: `space-y-3 ${F ? "lg:col-span-2" : "lg:col-span-3"}`,
|
|
210
|
+
children: P.length === 0 ? /* @__PURE__ */ m(v, {
|
|
211
|
+
className: "border-border-seam",
|
|
212
|
+
children: /* @__PURE__ */ m(y, {
|
|
213
|
+
className: "py-4",
|
|
214
|
+
children: /* @__PURE__ */ m(x, {
|
|
215
|
+
illustration: "empty-search",
|
|
216
|
+
title: "No bookings found",
|
|
217
|
+
description: "No bookings match your current filters."
|
|
218
|
+
})
|
|
219
|
+
})
|
|
220
|
+
}) : P.map((e) => {
|
|
221
|
+
let t = w[e.status], n = t.icon;
|
|
205
222
|
return /* @__PURE__ */ m(v, {
|
|
206
|
-
className: `cursor-pointer transition-
|
|
207
|
-
onClick: () => M
|
|
223
|
+
className: `cursor-pointer border-border-seam transition-shadow hover:shadow-pop ${M === e.id ? "border-border-strong ring-1 ring-border-focus" : ""}`,
|
|
224
|
+
onClick: () => N(M === e.id ? null : e.id),
|
|
208
225
|
children: /* @__PURE__ */ h(y, {
|
|
209
226
|
className: "pt-4",
|
|
210
227
|
children: [/* @__PURE__ */ h("div", {
|
|
@@ -243,7 +260,7 @@ function w() {
|
|
|
243
260
|
]
|
|
244
261
|
}),
|
|
245
262
|
/* @__PURE__ */ h("span", {
|
|
246
|
-
className: "flex items-center gap-1",
|
|
263
|
+
className: "flex items-center gap-1 tabular-nums",
|
|
247
264
|
children: [
|
|
248
265
|
/* @__PURE__ */ m(c, { className: "h-3 w-3" }),
|
|
249
266
|
" $",
|
|
@@ -261,7 +278,7 @@ function w() {
|
|
|
261
278
|
children: t.label
|
|
262
279
|
}),
|
|
263
280
|
e.status === "in_progress" && /* @__PURE__ */ h("span", {
|
|
264
|
-
className: "text-sm font-medium",
|
|
281
|
+
className: "text-sm font-medium tabular-nums",
|
|
265
282
|
children: [e.progress, "%"]
|
|
266
283
|
}),
|
|
267
284
|
/* @__PURE__ */ m(o, { className: "h-4 w-4 text-text-secondary" })
|
|
@@ -272,7 +289,7 @@ function w() {
|
|
|
272
289
|
children: /* @__PURE__ */ m("div", {
|
|
273
290
|
className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
274
291
|
children: /* @__PURE__ */ m("div", {
|
|
275
|
-
className: "h-2 rounded-full bg-
|
|
292
|
+
className: "h-2 rounded-full bg-action-primary-bg transition-all",
|
|
276
293
|
style: { width: `${e.progress}%` }
|
|
277
294
|
})
|
|
278
295
|
})
|
|
@@ -280,146 +297,150 @@ function w() {
|
|
|
280
297
|
})
|
|
281
298
|
}, e.id);
|
|
282
299
|
})
|
|
283
|
-
}),
|
|
300
|
+
}), F && /* @__PURE__ */ m("div", {
|
|
284
301
|
className: "space-y-4",
|
|
285
|
-
children: /* @__PURE__ */ h(
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
className: "space-y-2 border-t pt-3 text-sm",
|
|
328
|
-
children: [
|
|
329
|
-
/* @__PURE__ */ h("div", {
|
|
330
|
-
className: "flex justify-between",
|
|
331
|
-
children: [/* @__PURE__ */ m("span", {
|
|
332
|
-
className: "text-text-secondary",
|
|
333
|
-
children: "Service"
|
|
334
|
-
}), /* @__PURE__ */ m("span", {
|
|
335
|
-
className: "font-medium",
|
|
336
|
-
children: P.serviceName
|
|
337
|
-
})]
|
|
338
|
-
}),
|
|
339
|
-
/* @__PURE__ */ h("div", {
|
|
340
|
-
className: "flex justify-between",
|
|
341
|
-
children: [/* @__PURE__ */ m("span", {
|
|
342
|
-
className: "text-text-secondary",
|
|
343
|
-
children: "Provider"
|
|
344
|
-
}), /* @__PURE__ */ m("span", {
|
|
345
|
-
className: "font-medium",
|
|
346
|
-
children: P.providerName
|
|
347
|
-
})]
|
|
348
|
-
}),
|
|
349
|
-
/* @__PURE__ */ h("div", {
|
|
350
|
-
className: "flex justify-between",
|
|
351
|
-
children: [/* @__PURE__ */ m("span", {
|
|
352
|
-
className: "text-text-secondary",
|
|
353
|
-
children: "Budget"
|
|
354
|
-
}), /* @__PURE__ */ h("span", {
|
|
355
|
-
className: "font-medium",
|
|
356
|
-
children: ["$", P.budget.toLocaleString()]
|
|
357
|
-
})]
|
|
358
|
-
}),
|
|
359
|
-
/* @__PURE__ */ h("div", {
|
|
360
|
-
className: "flex justify-between",
|
|
361
|
-
children: [/* @__PURE__ */ m("span", {
|
|
362
|
-
className: "text-text-secondary",
|
|
363
|
-
children: "Start Date"
|
|
364
|
-
}), /* @__PURE__ */ m("span", {
|
|
365
|
-
className: "font-medium",
|
|
366
|
-
children: P.startDate
|
|
367
|
-
})]
|
|
368
|
-
}),
|
|
369
|
-
/* @__PURE__ */ h("div", {
|
|
370
|
-
className: "flex justify-between",
|
|
371
|
-
children: [/* @__PURE__ */ m("span", {
|
|
372
|
-
className: "text-text-secondary",
|
|
373
|
-
children: "End Date"
|
|
374
|
-
}), /* @__PURE__ */ m("span", {
|
|
375
|
-
className: "font-medium",
|
|
376
|
-
children: P.endDate
|
|
377
|
-
})]
|
|
378
|
-
}),
|
|
379
|
-
/* @__PURE__ */ h("div", {
|
|
380
|
-
className: "flex justify-between",
|
|
381
|
-
children: [/* @__PURE__ */ m("span", {
|
|
382
|
-
className: "text-text-secondary",
|
|
383
|
-
children: "Payment"
|
|
384
|
-
}), /* @__PURE__ */ m(g, {
|
|
385
|
-
variant: "secondary",
|
|
386
|
-
children: P.paymentStatus
|
|
387
|
-
})]
|
|
388
|
-
}),
|
|
389
|
-
/* @__PURE__ */ h("div", {
|
|
390
|
-
className: "flex justify-between",
|
|
391
|
-
children: [/* @__PURE__ */ m("span", {
|
|
392
|
-
className: "text-text-secondary",
|
|
393
|
-
children: "Method"
|
|
394
|
-
}), /* @__PURE__ */ m("span", {
|
|
395
|
-
className: "font-medium",
|
|
396
|
-
children: P.paymentMethod.replace("_", " ")
|
|
397
|
-
})]
|
|
302
|
+
children: /* @__PURE__ */ h(b, {
|
|
303
|
+
treatment: "glass",
|
|
304
|
+
className: "border-border-seam lg:sticky lg:top-6",
|
|
305
|
+
children: [/* @__PURE__ */ h("div", {
|
|
306
|
+
className: "flex items-center justify-between",
|
|
307
|
+
children: [/* @__PURE__ */ m("h2", {
|
|
308
|
+
className: "text-base font-semibold tracking-tight",
|
|
309
|
+
children: "Booking Details"
|
|
310
|
+
}), /* @__PURE__ */ m(_, {
|
|
311
|
+
variant: "outline",
|
|
312
|
+
size: "sm",
|
|
313
|
+
onClick: () => N(null),
|
|
314
|
+
children: "Close"
|
|
315
|
+
})]
|
|
316
|
+
}), /* @__PURE__ */ h("div", {
|
|
317
|
+
className: "mt-4 space-y-4",
|
|
318
|
+
children: [
|
|
319
|
+
/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h3", {
|
|
320
|
+
className: "font-semibold",
|
|
321
|
+
children: F.title
|
|
322
|
+
}), /* @__PURE__ */ m("p", {
|
|
323
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
324
|
+
children: F.description
|
|
325
|
+
})] }),
|
|
326
|
+
/* @__PURE__ */ m(g, {
|
|
327
|
+
variant: w[F.status].badgeVariant,
|
|
328
|
+
children: w[F.status].label
|
|
329
|
+
}),
|
|
330
|
+
F.status === "in_progress" && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("div", {
|
|
331
|
+
className: "flex items-center justify-between text-sm",
|
|
332
|
+
children: [/* @__PURE__ */ m("span", {
|
|
333
|
+
className: "text-text-secondary",
|
|
334
|
+
children: "Progress"
|
|
335
|
+
}), /* @__PURE__ */ h("span", {
|
|
336
|
+
className: "font-medium tabular-nums",
|
|
337
|
+
children: [F.progress, "%"]
|
|
338
|
+
})]
|
|
339
|
+
}), /* @__PURE__ */ m("div", {
|
|
340
|
+
className: "mt-1 h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
341
|
+
children: /* @__PURE__ */ m("div", {
|
|
342
|
+
className: "h-2 rounded-full bg-action-primary-bg",
|
|
343
|
+
style: { width: `${F.progress}%` }
|
|
398
344
|
})
|
|
399
|
-
]
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
345
|
+
})] }),
|
|
346
|
+
/* @__PURE__ */ h("div", {
|
|
347
|
+
className: "space-y-2 border-t border-border-seam pt-3 text-sm",
|
|
348
|
+
children: [
|
|
349
|
+
/* @__PURE__ */ h("div", {
|
|
350
|
+
className: "flex justify-between",
|
|
351
|
+
children: [/* @__PURE__ */ m("span", {
|
|
352
|
+
className: "text-text-secondary",
|
|
353
|
+
children: "Service"
|
|
354
|
+
}), /* @__PURE__ */ m("span", {
|
|
355
|
+
className: "font-medium",
|
|
356
|
+
children: F.serviceName
|
|
357
|
+
})]
|
|
358
|
+
}),
|
|
359
|
+
/* @__PURE__ */ h("div", {
|
|
360
|
+
className: "flex justify-between",
|
|
361
|
+
children: [/* @__PURE__ */ m("span", {
|
|
362
|
+
className: "text-text-secondary",
|
|
363
|
+
children: "Provider"
|
|
364
|
+
}), /* @__PURE__ */ m("span", {
|
|
365
|
+
className: "font-medium",
|
|
366
|
+
children: F.providerName
|
|
367
|
+
})]
|
|
368
|
+
}),
|
|
369
|
+
/* @__PURE__ */ h("div", {
|
|
370
|
+
className: "flex justify-between",
|
|
371
|
+
children: [/* @__PURE__ */ m("span", {
|
|
372
|
+
className: "text-text-secondary",
|
|
373
|
+
children: "Budget"
|
|
374
|
+
}), /* @__PURE__ */ h("span", {
|
|
375
|
+
className: "font-medium tabular-nums",
|
|
376
|
+
children: ["$", F.budget.toLocaleString()]
|
|
377
|
+
})]
|
|
378
|
+
}),
|
|
379
|
+
/* @__PURE__ */ h("div", {
|
|
380
|
+
className: "flex justify-between",
|
|
381
|
+
children: [/* @__PURE__ */ m("span", {
|
|
382
|
+
className: "text-text-secondary",
|
|
383
|
+
children: "Start Date"
|
|
384
|
+
}), /* @__PURE__ */ m("span", {
|
|
385
|
+
className: "font-medium",
|
|
386
|
+
children: F.startDate
|
|
387
|
+
})]
|
|
388
|
+
}),
|
|
389
|
+
/* @__PURE__ */ h("div", {
|
|
390
|
+
className: "flex justify-between",
|
|
391
|
+
children: [/* @__PURE__ */ m("span", {
|
|
392
|
+
className: "text-text-secondary",
|
|
393
|
+
children: "End Date"
|
|
394
|
+
}), /* @__PURE__ */ m("span", {
|
|
395
|
+
className: "font-medium",
|
|
396
|
+
children: F.endDate
|
|
397
|
+
})]
|
|
398
|
+
}),
|
|
399
|
+
/* @__PURE__ */ h("div", {
|
|
400
|
+
className: "flex justify-between",
|
|
401
|
+
children: [/* @__PURE__ */ m("span", {
|
|
402
|
+
className: "text-text-secondary",
|
|
403
|
+
children: "Payment"
|
|
404
|
+
}), /* @__PURE__ */ m(g, {
|
|
405
|
+
variant: "secondary",
|
|
406
|
+
children: F.paymentStatus
|
|
407
|
+
})]
|
|
408
|
+
}),
|
|
409
|
+
/* @__PURE__ */ h("div", {
|
|
410
|
+
className: "flex justify-between",
|
|
411
|
+
children: [/* @__PURE__ */ m("span", {
|
|
412
|
+
className: "text-text-secondary",
|
|
413
|
+
children: "Method"
|
|
414
|
+
}), /* @__PURE__ */ m("span", {
|
|
415
|
+
className: "font-medium",
|
|
416
|
+
children: F.paymentMethod.replace("_", " ")
|
|
417
|
+
})]
|
|
418
|
+
})
|
|
419
|
+
]
|
|
420
|
+
}),
|
|
421
|
+
/* @__PURE__ */ h("div", {
|
|
422
|
+
className: "flex gap-2 border-t border-border-seam pt-3",
|
|
423
|
+
children: [/* @__PURE__ */ m(_, {
|
|
424
|
+
className: "flex-1",
|
|
425
|
+
size: "sm",
|
|
426
|
+
variant: "outline",
|
|
427
|
+
children: "Message Provider"
|
|
428
|
+
}), F.status === "pending" && /* @__PURE__ */ m(_, {
|
|
429
|
+
className: "flex-1",
|
|
430
|
+
size: "sm",
|
|
431
|
+
variant: "destructive",
|
|
432
|
+
children: "Cancel"
|
|
433
|
+
})]
|
|
434
|
+
})
|
|
435
|
+
]
|
|
436
|
+
})]
|
|
437
|
+
})
|
|
417
438
|
})]
|
|
418
439
|
})
|
|
419
440
|
]
|
|
420
441
|
});
|
|
421
442
|
}
|
|
422
443
|
//#endregion
|
|
423
|
-
export {
|
|
444
|
+
export { T as BookingsPage };
|
|
424
445
|
|
|
425
446
|
//# sourceMappingURL=BookingsPage.js.map
|