@burdenoff/microfe-proserviceworld 2026.509.101
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/README.md +12 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/proserviceworld/ProServiceWorldRoot.d.ts +5 -0
- package/dist/proserviceworld/ProServiceWorldRoot.d.ts.map +1 -0
- package/dist/proserviceworld/ProServiceWorldRoot.js +151 -0
- package/dist/proserviceworld/ProServiceWorldRoot.js.map +1 -0
- package/dist/proserviceworld/ProServiceWorldRoutes.d.ts +2 -0
- package/dist/proserviceworld/ProServiceWorldRoutes.d.ts.map +1 -0
- package/dist/proserviceworld/ProServiceWorldRoutes.js +91 -0
- package/dist/proserviceworld/ProServiceWorldRoutes.js.map +1 -0
- package/dist/proserviceworld/index.d.ts +5 -0
- package/dist/proserviceworld/index.d.ts.map +1 -0
- package/dist/proserviceworld/index.js +3 -0
- package/dist/proserviceworld/pages/AdminReportsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/AdminReportsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/AdminReportsPage.js +512 -0
- package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -0
- package/dist/proserviceworld/pages/AdminUsersPage.d.ts +2 -0
- package/dist/proserviceworld/pages/AdminUsersPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/AdminUsersPage.js +444 -0
- package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -0
- package/dist/proserviceworld/pages/AnalyticsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/AnalyticsPage.js +433 -0
- package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -0
- package/dist/proserviceworld/pages/BookingsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/BookingsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/BookingsPage.js +425 -0
- package/dist/proserviceworld/pages/BookingsPage.js.map +1 -0
- package/dist/proserviceworld/pages/DashboardPage.d.ts +2 -0
- package/dist/proserviceworld/pages/DashboardPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/DashboardPage.js +583 -0
- package/dist/proserviceworld/pages/DashboardPage.js.map +1 -0
- package/dist/proserviceworld/pages/DocumentsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/DocumentsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/DocumentsPage.js +494 -0
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -0
- package/dist/proserviceworld/pages/MessagesPage.d.ts +2 -0
- package/dist/proserviceworld/pages/MessagesPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/MessagesPage.js +229 -0
- package/dist/proserviceworld/pages/MessagesPage.js.map +1 -0
- package/dist/proserviceworld/pages/PaymentsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/PaymentsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/PaymentsPage.js +479 -0
- package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -0
- package/dist/proserviceworld/pages/ProjectsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ProjectsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ProjectsPage.js +547 -0
- package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -0
- package/dist/proserviceworld/pages/ProviderDetailPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ProviderDetailPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ProviderDetailPage.js +464 -0
- package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -0
- package/dist/proserviceworld/pages/ProvidersPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ProvidersPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ProvidersPage.js +342 -0
- package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -0
- package/dist/proserviceworld/pages/ReviewsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ReviewsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ReviewsPage.js +339 -0
- package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -0
- package/dist/proserviceworld/pages/ServiceDetailsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ServiceDetailsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ServiceDetailsPage.js +563 -0
- package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -0
- package/dist/proserviceworld/pages/ServicesPage.d.ts +2 -0
- package/dist/proserviceworld/pages/ServicesPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/ServicesPage.js +337 -0
- package/dist/proserviceworld/pages/ServicesPage.js.map +1 -0
- package/dist/proserviceworld/pages/VerificationPage.d.ts +2 -0
- package/dist/proserviceworld/pages/VerificationPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/VerificationPage.js +357 -0
- package/dist/proserviceworld/pages/VerificationPage.js.map +1 -0
- package/dist/proserviceworld/providers/ProServiceWorldProvider.d.ts +6 -0
- package/dist/proserviceworld/providers/ProServiceWorldProvider.d.ts.map +1 -0
- package/dist/proserviceworld/providers/ProServiceWorldProvider.js +27 -0
- package/dist/proserviceworld/providers/ProServiceWorldProvider.js.map +1 -0
- package/dist/proserviceworld/store/proserviceworldStore.d.ts +32 -0
- package/dist/proserviceworld/store/proserviceworldStore.d.ts.map +1 -0
- package/dist/proserviceworld/store/proserviceworldStore.js +2490 -0
- package/dist/proserviceworld/store/proserviceworldStore.js.map +1 -0
- package/dist/proserviceworld/types/index.d.ts +338 -0
- package/dist/proserviceworld/types/index.d.ts.map +1 -0
- package/dist/proserviceworld/utils/cn.d.ts +4 -0
- package/dist/proserviceworld/utils/cn.d.ts.map +1 -0
- package/dist/proserviceworld/utils/i18n.d.ts +6 -0
- package/dist/proserviceworld/utils/i18n.d.ts.map +1 -0
- package/dist/proserviceworld/utils/i18n.js +15 -0
- package/dist/proserviceworld/utils/i18n.js.map +1 -0
- package/dist/proserviceworld/utils/navigation.d.ts +2 -0
- package/dist/proserviceworld/utils/navigation.d.ts.map +1 -0
- package/dist/proserviceworld/utils/navigation.js +8 -0
- package/dist/proserviceworld/utils/navigation.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
|
|
2
|
+
import { useMemo as t, useState as n } from "react";
|
|
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
|
+
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Input as S } from "@burdenoff/fe-libs/ui";
|
|
6
|
+
//#region src/proserviceworld/pages/BookingsPage.tsx
|
|
7
|
+
var C = {
|
|
8
|
+
pending: {
|
|
9
|
+
label: "Pending",
|
|
10
|
+
color: "text-yellow-600",
|
|
11
|
+
icon: s,
|
|
12
|
+
badgeVariant: "secondary"
|
|
13
|
+
},
|
|
14
|
+
in_progress: {
|
|
15
|
+
label: "In Progress",
|
|
16
|
+
color: "text-blue-600",
|
|
17
|
+
icon: u,
|
|
18
|
+
badgeVariant: "default"
|
|
19
|
+
},
|
|
20
|
+
completed: {
|
|
21
|
+
label: "Completed",
|
|
22
|
+
color: "text-green-600",
|
|
23
|
+
icon: a,
|
|
24
|
+
badgeVariant: "outline"
|
|
25
|
+
},
|
|
26
|
+
cancelled: {
|
|
27
|
+
label: "Cancelled",
|
|
28
|
+
color: "text-red-600",
|
|
29
|
+
icon: p,
|
|
30
|
+
badgeVariant: "destructive"
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function w() {
|
|
34
|
+
let { bookings: s } = e(), [p, w] = n(""), [T, E] = n("all"), [D, O] = n("date"), [k, A] = n(!1), [j, M] = n(null), N = t(() => {
|
|
35
|
+
let e = s;
|
|
36
|
+
if (T !== "all" && (e = e.filter((e) => e.status === T)), p.trim()) {
|
|
37
|
+
let t = p.toLowerCase();
|
|
38
|
+
e = e.filter((e) => e.title.toLowerCase().includes(t) || e.providerName.toLowerCase().includes(t) || e.serviceName.toLowerCase().includes(t));
|
|
39
|
+
}
|
|
40
|
+
return e = [...e].sort((e, t) => {
|
|
41
|
+
let n = D === "date" ? new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime() : D === "budget" ? t.budget - e.budget : t.progress - e.progress;
|
|
42
|
+
return k ? -n : n;
|
|
43
|
+
}), e;
|
|
44
|
+
}, [
|
|
45
|
+
s,
|
|
46
|
+
p,
|
|
47
|
+
T,
|
|
48
|
+
D,
|
|
49
|
+
k
|
|
50
|
+
]), P = j ? s.find((e) => e.id === j) : null, F = t(() => {
|
|
51
|
+
let e = { all: s.length };
|
|
52
|
+
for (let t of s) e[t.status] = (e[t.status] ?? 0) + 1;
|
|
53
|
+
return e;
|
|
54
|
+
}, [s]), I = s.reduce((e, t) => e + t.budget, 0), L = 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)), R = (e) => {
|
|
55
|
+
D === e ? A(!k) : (O(e), A(!1));
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */ h("div", {
|
|
58
|
+
className: "space-y-6 p-6",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ h("div", {
|
|
61
|
+
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
62
|
+
children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
|
|
63
|
+
className: "text-2xl font-semibold",
|
|
64
|
+
children: "Bookings"
|
|
65
|
+
}), /* @__PURE__ */ m("p", {
|
|
66
|
+
className: "text-sm text-muted-foreground",
|
|
67
|
+
children: "Manage and track all your service bookings."
|
|
68
|
+
})] }), /* @__PURE__ */ h(_, {
|
|
69
|
+
size: "sm",
|
|
70
|
+
children: [/* @__PURE__ */ m(i, { className: "mr-2 h-4 w-4" }), " New Booking"]
|
|
71
|
+
})]
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ h("div", {
|
|
74
|
+
className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
|
|
77
|
+
className: "pt-4",
|
|
78
|
+
children: /* @__PURE__ */ h("div", {
|
|
79
|
+
className: "flex items-center gap-3",
|
|
80
|
+
children: [/* @__PURE__ */ m("div", {
|
|
81
|
+
className: "rounded-lg bg-blue-100 p-2 dark:bg-blue-950",
|
|
82
|
+
children: /* @__PURE__ */ m(i, { className: "h-5 w-5 text-blue-600" })
|
|
83
|
+
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
84
|
+
className: "text-2xl font-bold",
|
|
85
|
+
children: s.length
|
|
86
|
+
}), /* @__PURE__ */ m("p", {
|
|
87
|
+
className: "text-xs text-muted-foreground",
|
|
88
|
+
children: "Total Bookings"
|
|
89
|
+
})] })]
|
|
90
|
+
})
|
|
91
|
+
}) }),
|
|
92
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
|
|
93
|
+
className: "pt-4",
|
|
94
|
+
children: /* @__PURE__ */ h("div", {
|
|
95
|
+
className: "flex items-center gap-3",
|
|
96
|
+
children: [/* @__PURE__ */ m("div", {
|
|
97
|
+
className: "rounded-lg bg-green-100 p-2 dark:bg-green-950",
|
|
98
|
+
children: /* @__PURE__ */ m(a, { className: "h-5 w-5 text-green-600" })
|
|
99
|
+
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
100
|
+
className: "text-2xl font-bold",
|
|
101
|
+
children: F.completed ?? 0
|
|
102
|
+
}), /* @__PURE__ */ m("p", {
|
|
103
|
+
className: "text-xs text-muted-foreground",
|
|
104
|
+
children: "Completed"
|
|
105
|
+
})] })]
|
|
106
|
+
})
|
|
107
|
+
}) }),
|
|
108
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
|
|
109
|
+
className: "pt-4",
|
|
110
|
+
children: /* @__PURE__ */ h("div", {
|
|
111
|
+
className: "flex items-center gap-3",
|
|
112
|
+
children: [/* @__PURE__ */ m("div", {
|
|
113
|
+
className: "rounded-lg bg-yellow-100 p-2 dark:bg-yellow-950",
|
|
114
|
+
children: /* @__PURE__ */ m(u, { className: "h-5 w-5 text-yellow-600" })
|
|
115
|
+
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
|
|
116
|
+
className: "text-2xl font-bold",
|
|
117
|
+
children: [L, "%"]
|
|
118
|
+
}), /* @__PURE__ */ m("p", {
|
|
119
|
+
className: "text-xs text-muted-foreground",
|
|
120
|
+
children: "Avg. In-Progress"
|
|
121
|
+
})] })]
|
|
122
|
+
})
|
|
123
|
+
}) }),
|
|
124
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
|
|
125
|
+
className: "pt-4",
|
|
126
|
+
children: /* @__PURE__ */ h("div", {
|
|
127
|
+
className: "flex items-center gap-3",
|
|
128
|
+
children: [/* @__PURE__ */ m("div", {
|
|
129
|
+
className: "rounded-lg bg-purple-100 p-2 dark:bg-purple-950",
|
|
130
|
+
children: /* @__PURE__ */ m(c, { className: "h-5 w-5 text-purple-600" })
|
|
131
|
+
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
|
|
132
|
+
className: "text-2xl font-bold",
|
|
133
|
+
children: ["$", I.toLocaleString()]
|
|
134
|
+
}), /* @__PURE__ */ m("p", {
|
|
135
|
+
className: "text-xs text-muted-foreground",
|
|
136
|
+
children: "Total Budget"
|
|
137
|
+
})] })]
|
|
138
|
+
})
|
|
139
|
+
}) })
|
|
140
|
+
]
|
|
141
|
+
}),
|
|
142
|
+
/* @__PURE__ */ h("div", {
|
|
143
|
+
className: "flex flex-col gap-4 sm:flex-row sm:items-center",
|
|
144
|
+
children: [/* @__PURE__ */ h("div", {
|
|
145
|
+
className: "relative flex-1",
|
|
146
|
+
children: [/* @__PURE__ */ m(d, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ m(S, {
|
|
147
|
+
placeholder: "Search bookings by title, provider, or service...",
|
|
148
|
+
value: p,
|
|
149
|
+
onChange: (e) => w(e.target.value),
|
|
150
|
+
className: "pl-10"
|
|
151
|
+
})]
|
|
152
|
+
}), /* @__PURE__ */ h("div", {
|
|
153
|
+
className: "flex items-center gap-2",
|
|
154
|
+
children: [/* @__PURE__ */ m(l, { className: "h-4 w-4 text-muted-foreground" }), [
|
|
155
|
+
"all",
|
|
156
|
+
"pending",
|
|
157
|
+
"in_progress",
|
|
158
|
+
"completed",
|
|
159
|
+
"cancelled"
|
|
160
|
+
].map((e) => /* @__PURE__ */ h(_, {
|
|
161
|
+
variant: T === e ? "default" : "outline",
|
|
162
|
+
size: "sm",
|
|
163
|
+
onClick: () => E(e),
|
|
164
|
+
children: [e === "all" ? "All" : C[e].label, /* @__PURE__ */ h("span", {
|
|
165
|
+
className: "ml-1 text-xs opacity-70",
|
|
166
|
+
children: [
|
|
167
|
+
"(",
|
|
168
|
+
F[e] ?? 0,
|
|
169
|
+
")"
|
|
170
|
+
]
|
|
171
|
+
})]
|
|
172
|
+
}, e))]
|
|
173
|
+
})]
|
|
174
|
+
}),
|
|
175
|
+
/* @__PURE__ */ m("div", {
|
|
176
|
+
className: "flex gap-2",
|
|
177
|
+
children: [
|
|
178
|
+
{
|
|
179
|
+
field: "date",
|
|
180
|
+
label: "Date"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
field: "budget",
|
|
184
|
+
label: "Budget"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
field: "progress",
|
|
188
|
+
label: "Progress"
|
|
189
|
+
}
|
|
190
|
+
].map(({ field: e, label: t }) => /* @__PURE__ */ h("button", {
|
|
191
|
+
onClick: () => R(e),
|
|
192
|
+
className: `flex items-center gap-1 rounded border px-3 py-1 text-xs ${D === e ? "border-primary bg-primary/5 text-primary" : "text-muted-foreground hover:bg-muted/50"}`,
|
|
193
|
+
children: [/* @__PURE__ */ m(r, { className: "h-3 w-3" }), t]
|
|
194
|
+
}, e))
|
|
195
|
+
}),
|
|
196
|
+
/* @__PURE__ */ h("div", {
|
|
197
|
+
className: "grid gap-6 lg:grid-cols-3",
|
|
198
|
+
children: [/* @__PURE__ */ m("div", {
|
|
199
|
+
className: `space-y-3 ${P ? "lg:col-span-2" : "lg:col-span-3"}`,
|
|
200
|
+
children: N.length === 0 ? /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
|
|
201
|
+
className: "py-12 text-center text-muted-foreground",
|
|
202
|
+
children: "No bookings match your filters."
|
|
203
|
+
}) }) : N.map((e) => {
|
|
204
|
+
let t = C[e.status], n = t.icon;
|
|
205
|
+
return /* @__PURE__ */ m(v, {
|
|
206
|
+
className: `cursor-pointer transition-colors hover:bg-muted/30 ${j === e.id ? "border-primary ring-1 ring-primary" : ""}`,
|
|
207
|
+
onClick: () => M(j === e.id ? null : e.id),
|
|
208
|
+
children: /* @__PURE__ */ h(y, {
|
|
209
|
+
className: "pt-4",
|
|
210
|
+
children: [/* @__PURE__ */ h("div", {
|
|
211
|
+
className: "flex items-start justify-between gap-4",
|
|
212
|
+
children: [/* @__PURE__ */ h("div", {
|
|
213
|
+
className: "flex-1 space-y-2",
|
|
214
|
+
children: [
|
|
215
|
+
/* @__PURE__ */ h("div", {
|
|
216
|
+
className: "flex items-center gap-2",
|
|
217
|
+
children: [/* @__PURE__ */ m(n, { className: `h-4 w-4 ${t.color}` }), /* @__PURE__ */ m("h3", {
|
|
218
|
+
className: "font-medium",
|
|
219
|
+
children: e.title
|
|
220
|
+
})]
|
|
221
|
+
}),
|
|
222
|
+
/* @__PURE__ */ m("p", {
|
|
223
|
+
className: "text-sm text-muted-foreground line-clamp-1",
|
|
224
|
+
children: e.description
|
|
225
|
+
}),
|
|
226
|
+
/* @__PURE__ */ h("div", {
|
|
227
|
+
className: "flex flex-wrap items-center gap-4 text-xs text-muted-foreground",
|
|
228
|
+
children: [
|
|
229
|
+
/* @__PURE__ */ h("span", {
|
|
230
|
+
className: "flex items-center gap-1",
|
|
231
|
+
children: [
|
|
232
|
+
/* @__PURE__ */ m(f, { className: "h-3 w-3" }),
|
|
233
|
+
" ",
|
|
234
|
+
e.providerName
|
|
235
|
+
]
|
|
236
|
+
}),
|
|
237
|
+
/* @__PURE__ */ h("span", {
|
|
238
|
+
className: "flex items-center gap-1",
|
|
239
|
+
children: [
|
|
240
|
+
/* @__PURE__ */ m(i, { className: "h-3 w-3" }),
|
|
241
|
+
" ",
|
|
242
|
+
e.startDate
|
|
243
|
+
]
|
|
244
|
+
}),
|
|
245
|
+
/* @__PURE__ */ h("span", {
|
|
246
|
+
className: "flex items-center gap-1",
|
|
247
|
+
children: [
|
|
248
|
+
/* @__PURE__ */ m(c, { className: "h-3 w-3" }),
|
|
249
|
+
" $",
|
|
250
|
+
e.budget.toLocaleString()
|
|
251
|
+
]
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
})
|
|
255
|
+
]
|
|
256
|
+
}), /* @__PURE__ */ h("div", {
|
|
257
|
+
className: "flex flex-col items-end gap-2",
|
|
258
|
+
children: [
|
|
259
|
+
/* @__PURE__ */ m(g, {
|
|
260
|
+
variant: t.badgeVariant,
|
|
261
|
+
children: t.label
|
|
262
|
+
}),
|
|
263
|
+
e.status === "in_progress" && /* @__PURE__ */ h("span", {
|
|
264
|
+
className: "text-sm font-medium",
|
|
265
|
+
children: [e.progress, "%"]
|
|
266
|
+
}),
|
|
267
|
+
/* @__PURE__ */ m(o, { className: "h-4 w-4 text-muted-foreground" })
|
|
268
|
+
]
|
|
269
|
+
})]
|
|
270
|
+
}), e.status === "in_progress" && /* @__PURE__ */ m("div", {
|
|
271
|
+
className: "mt-3",
|
|
272
|
+
children: /* @__PURE__ */ m("div", {
|
|
273
|
+
className: "h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
274
|
+
children: /* @__PURE__ */ m("div", {
|
|
275
|
+
className: "h-2 rounded-full bg-blue-500 transition-all",
|
|
276
|
+
style: { width: `${e.progress}%` }
|
|
277
|
+
})
|
|
278
|
+
})
|
|
279
|
+
})]
|
|
280
|
+
})
|
|
281
|
+
}, e.id);
|
|
282
|
+
})
|
|
283
|
+
}), P && /* @__PURE__ */ m("div", {
|
|
284
|
+
className: "space-y-4",
|
|
285
|
+
children: /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ h("div", {
|
|
286
|
+
className: "flex items-center justify-between",
|
|
287
|
+
children: [/* @__PURE__ */ m(x, {
|
|
288
|
+
className: "text-base",
|
|
289
|
+
children: "Booking Details"
|
|
290
|
+
}), /* @__PURE__ */ m(_, {
|
|
291
|
+
variant: "outline",
|
|
292
|
+
size: "sm",
|
|
293
|
+
onClick: () => M(null),
|
|
294
|
+
children: "Close"
|
|
295
|
+
})]
|
|
296
|
+
}) }), /* @__PURE__ */ h(y, {
|
|
297
|
+
className: "space-y-4",
|
|
298
|
+
children: [
|
|
299
|
+
/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h3", {
|
|
300
|
+
className: "font-semibold",
|
|
301
|
+
children: P.title
|
|
302
|
+
}), /* @__PURE__ */ m("p", {
|
|
303
|
+
className: "mt-1 text-sm text-muted-foreground",
|
|
304
|
+
children: P.description
|
|
305
|
+
})] }),
|
|
306
|
+
/* @__PURE__ */ m(g, {
|
|
307
|
+
variant: C[P.status].badgeVariant,
|
|
308
|
+
children: C[P.status].label
|
|
309
|
+
}),
|
|
310
|
+
P.status === "in_progress" && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("div", {
|
|
311
|
+
className: "flex items-center justify-between text-sm",
|
|
312
|
+
children: [/* @__PURE__ */ m("span", {
|
|
313
|
+
className: "text-muted-foreground",
|
|
314
|
+
children: "Progress"
|
|
315
|
+
}), /* @__PURE__ */ h("span", {
|
|
316
|
+
className: "font-medium",
|
|
317
|
+
children: [P.progress, "%"]
|
|
318
|
+
})]
|
|
319
|
+
}), /* @__PURE__ */ m("div", {
|
|
320
|
+
className: "mt-1 h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
321
|
+
children: /* @__PURE__ */ m("div", {
|
|
322
|
+
className: "h-2 rounded-full bg-blue-500",
|
|
323
|
+
style: { width: `${P.progress}%` }
|
|
324
|
+
})
|
|
325
|
+
})] }),
|
|
326
|
+
/* @__PURE__ */ h("div", {
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
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-muted-foreground",
|
|
393
|
+
children: "Method"
|
|
394
|
+
}), /* @__PURE__ */ m("span", {
|
|
395
|
+
className: "font-medium",
|
|
396
|
+
children: P.paymentMethod.replace("_", " ")
|
|
397
|
+
})]
|
|
398
|
+
})
|
|
399
|
+
]
|
|
400
|
+
}),
|
|
401
|
+
/* @__PURE__ */ h("div", {
|
|
402
|
+
className: "flex gap-2 border-t pt-3",
|
|
403
|
+
children: [/* @__PURE__ */ m(_, {
|
|
404
|
+
className: "flex-1",
|
|
405
|
+
size: "sm",
|
|
406
|
+
variant: "outline",
|
|
407
|
+
children: "Message Provider"
|
|
408
|
+
}), P.status === "pending" && /* @__PURE__ */ m(_, {
|
|
409
|
+
className: "flex-1",
|
|
410
|
+
size: "sm",
|
|
411
|
+
variant: "destructive",
|
|
412
|
+
children: "Cancel"
|
|
413
|
+
})]
|
|
414
|
+
})
|
|
415
|
+
]
|
|
416
|
+
})] })
|
|
417
|
+
})]
|
|
418
|
+
})
|
|
419
|
+
]
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
//#endregion
|
|
423
|
+
export { w as BookingsPage };
|
|
424
|
+
|
|
425
|
+
//# sourceMappingURL=BookingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BookingsPage.js","names":[],"sources":["../../../src/proserviceworld/pages/BookingsPage.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Search,\n Clock,\n CheckCircle2,\n XCircle,\n Loader2,\n Calendar,\n DollarSign,\n User,\n ChevronRight,\n Filter,\n ArrowUpDown,\n} from 'lucide-react';\nimport { useProServiceWorldStore } from '../store/proserviceworldStore';\nimport type { BookingStatus } from '../types';\n\nconst statusConfig: Record<\n BookingStatus,\n {\n label: string;\n color: string;\n icon: typeof Clock;\n badgeVariant: 'default' | 'secondary' | 'outline' | 'destructive';\n }\n> = {\n pending: { label: 'Pending', color: 'text-yellow-600', icon: Clock, badgeVariant: 'secondary' },\n in_progress: {\n label: 'In Progress',\n color: 'text-blue-600',\n icon: Loader2,\n badgeVariant: 'default',\n },\n completed: {\n label: 'Completed',\n color: 'text-green-600',\n icon: CheckCircle2,\n badgeVariant: 'outline',\n },\n cancelled: {\n label: 'Cancelled',\n color: 'text-red-600',\n icon: XCircle,\n badgeVariant: 'destructive',\n },\n};\n\ntype SortField = 'date' | 'budget' | 'progress';\n\nexport function BookingsPage() {\n const { bookings } = useProServiceWorldStore();\n const [searchQuery, setSearchQuery] = useState('');\n const [statusFilter, setStatusFilter] = useState<BookingStatus | 'all'>('all');\n const [sortField, setSortField] = useState<SortField>('date');\n const [sortAsc, setSortAsc] = useState(false);\n const [selectedBookingId, setSelectedBookingId] = useState<string | null>(null);\n\n const filtered = useMemo(() => {\n let result = bookings;\n\n if (statusFilter !== 'all') {\n result = result.filter((b) => b.status === statusFilter);\n }\n\n if (searchQuery.trim()) {\n const q = searchQuery.toLowerCase();\n result = result.filter(\n (b) =>\n b.title.toLowerCase().includes(q) ||\n b.providerName.toLowerCase().includes(q) ||\n b.serviceName.toLowerCase().includes(q)\n );\n }\n\n result = [...result].sort((a, b) => {\n const cmp =\n sortField === 'date'\n ? new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n : sortField === 'budget'\n ? b.budget - a.budget\n : b.progress - a.progress;\n return sortAsc ? -cmp : cmp;\n });\n\n return result;\n }, [bookings, searchQuery, statusFilter, sortField, sortAsc]);\n\n const selectedBooking = selectedBookingId\n ? bookings.find((b) => b.id === selectedBookingId)\n : null;\n\n const statusCounts = useMemo(() => {\n const counts: Record<string, number> = { all: bookings.length };\n for (const b of bookings) {\n counts[b.status] = (counts[b.status] ?? 0) + 1;\n }\n return counts;\n }, [bookings]);\n\n const totalBudget = bookings.reduce((sum, b) => sum + b.budget, 0);\n const avgProgress = Math.round(\n bookings.filter((b) => b.status === 'in_progress').reduce((sum, b) => sum + b.progress, 0) /\n Math.max(1, bookings.filter((b) => b.status === 'in_progress').length)\n );\n\n const handleSort = (field: SortField) => {\n if (sortField === field) setSortAsc(!sortAsc);\n else {\n setSortField(field);\n setSortAsc(false);\n }\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Header */}\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Bookings</h1>\n <p className=\"text-sm text-muted-foreground\">\n Manage and track all your service bookings.\n </p>\n </div>\n <Button size=\"sm\">\n <Calendar className=\"mr-2 h-4 w-4\" /> New Booking\n </Button>\n </div>\n\n {/* Stats */}\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-blue-100 p-2 dark:bg-blue-950\">\n <Calendar className=\"h-5 w-5 text-blue-600\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold\">{bookings.length}</p>\n <p className=\"text-xs text-muted-foreground\">Total Bookings</p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-green-100 p-2 dark:bg-green-950\">\n <CheckCircle2 className=\"h-5 w-5 text-green-600\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold\">{statusCounts.completed ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">Completed</p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-yellow-100 p-2 dark:bg-yellow-950\">\n <Loader2 className=\"h-5 w-5 text-yellow-600\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold\">{avgProgress}%</p>\n <p className=\"text-xs text-muted-foreground\">Avg. In-Progress</p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-purple-100 p-2 dark:bg-purple-950\">\n <DollarSign className=\"h-5 w-5 text-purple-600\" />\n </div>\n <div>\n <p className=\"text-2xl font-bold\">${totalBudget.toLocaleString()}</p>\n <p className=\"text-xs text-muted-foreground\">Total Budget</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Filters */}\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder=\"Search bookings by title, provider, or service...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <Filter className=\"h-4 w-4 text-muted-foreground\" />\n {(['all', 'pending', 'in_progress', 'completed', 'cancelled'] as const).map((status) => (\n <Button\n key={status}\n variant={statusFilter === status ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setStatusFilter(status)}\n >\n {status === 'all' ? 'All' : statusConfig[status].label}\n <span className=\"ml-1 text-xs opacity-70\">({statusCounts[status] ?? 0})</span>\n </Button>\n ))}\n </div>\n </div>\n\n {/* Sort controls */}\n <div className=\"flex gap-2\">\n {[\n { field: 'date' as SortField, label: 'Date' },\n { field: 'budget' as SortField, label: 'Budget' },\n { field: 'progress' as SortField, label: 'Progress' },\n ].map(({ field, label }) => (\n <button\n key={field}\n onClick={() => handleSort(field)}\n className={`flex items-center gap-1 rounded border px-3 py-1 text-xs ${\n sortField === field\n ? 'border-primary bg-primary/5 text-primary'\n : 'text-muted-foreground hover:bg-muted/50'\n }`}\n >\n <ArrowUpDown className=\"h-3 w-3\" />\n {label}\n </button>\n ))}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n {/* Booking list */}\n <div className={`space-y-3 ${selectedBooking ? 'lg:col-span-2' : 'lg:col-span-3'}`}>\n {filtered.length === 0 ? (\n <Card>\n <CardContent className=\"py-12 text-center text-muted-foreground\">\n No bookings match your filters.\n </CardContent>\n </Card>\n ) : (\n filtered.map((booking) => {\n const config = statusConfig[booking.status];\n const StatusIcon = config.icon;\n return (\n <Card\n key={booking.id}\n className={`cursor-pointer transition-colors hover:bg-muted/30 ${\n selectedBookingId === booking.id ? 'border-primary ring-1 ring-primary' : ''\n }`}\n onClick={() =>\n setSelectedBookingId(selectedBookingId === booking.id ? null : booking.id)\n }\n >\n <CardContent className=\"pt-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-2\">\n <StatusIcon className={`h-4 w-4 ${config.color}`} />\n <h3 className=\"font-medium\">{booking.title}</h3>\n </div>\n <p className=\"text-sm text-muted-foreground line-clamp-1\">\n {booking.description}\n </p>\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <User className=\"h-3 w-3\" /> {booking.providerName}\n </span>\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" /> {booking.startDate}\n </span>\n <span className=\"flex items-center gap-1\">\n <DollarSign className=\"h-3 w-3\" /> ${booking.budget.toLocaleString()}\n </span>\n </div>\n </div>\n <div className=\"flex flex-col items-end gap-2\">\n <Badge variant={config.badgeVariant}>{config.label}</Badge>\n {booking.status === 'in_progress' && (\n <span className=\"text-sm font-medium\">{booking.progress}%</span>\n )}\n <ChevronRight className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n </div>\n\n {/* Progress bar for in-progress bookings */}\n {booking.status === 'in_progress' && (\n <div className=\"mt-3\">\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-blue-500 transition-all\"\n style={{ width: `${booking.progress}%` }}\n />\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n );\n })\n )}\n </div>\n\n {/* Detail panel */}\n {selectedBooking && (\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">Booking Details</CardTitle>\n <Button variant=\"outline\" size=\"sm\" onClick={() => setSelectedBookingId(null)}>\n Close\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <h3 className=\"font-semibold\">{selectedBooking.title}</h3>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {selectedBooking.description}\n </p>\n </div>\n\n <Badge variant={statusConfig[selectedBooking.status].badgeVariant}>\n {statusConfig[selectedBooking.status].label}\n </Badge>\n\n {selectedBooking.status === 'in_progress' && (\n <div>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-muted-foreground\">Progress</span>\n <span className=\"font-medium\">{selectedBooking.progress}%</span>\n </div>\n <div className=\"mt-1 h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-blue-500\"\n style={{ width: `${selectedBooking.progress}%` }}\n />\n </div>\n </div>\n )}\n\n <div className=\"space-y-2 border-t pt-3 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Service</span>\n <span className=\"font-medium\">{selectedBooking.serviceName}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Provider</span>\n <span className=\"font-medium\">{selectedBooking.providerName}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Budget</span>\n <span className=\"font-medium\">${selectedBooking.budget.toLocaleString()}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Start Date</span>\n <span className=\"font-medium\">{selectedBooking.startDate}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">End Date</span>\n <span className=\"font-medium\">{selectedBooking.endDate}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Payment</span>\n <Badge variant=\"secondary\">{selectedBooking.paymentStatus}</Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Method</span>\n <span className=\"font-medium\">\n {selectedBooking.paymentMethod.replace('_', ' ')}\n </span>\n </div>\n </div>\n\n <div className=\"flex gap-2 border-t pt-3\">\n <Button className=\"flex-1\" size=\"sm\" variant=\"outline\">\n Message Provider\n </Button>\n {selectedBooking.status === 'pending' && (\n <Button className=\"flex-1\" size=\"sm\" variant=\"destructive\">\n Cancel\n </Button>\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/pages/DashboardPage.tsx"],"names":[],"mappings":"AAwBA,wBAAgB,aAAa,4CAypB5B"}
|