@burdenoff/microfe-kadaikodi 2026.704.2 → 2026.704.4
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/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +76 -6
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +45 -107
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +30 -32
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +137 -120
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +2 -2
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +278 -283
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +105 -111
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +84 -70
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +202 -139
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +232 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +84 -79
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +243 -143
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +4 -4
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -4
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +6 -6
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +6 -4
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +6 -6
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +4 -4
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +409 -304
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +209 -162
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +207 -186
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +340 -272
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +122 -75
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,18 +3,19 @@ import { cn as t } from "../../utils/cn.js";
|
|
|
3
3
|
import { PageLayout as n } from "../../components/PageLayout.js";
|
|
4
4
|
import { StatusBadge as r } from "../../components/StatusBadge.js";
|
|
5
5
|
import { EmptyState as i } from "../../components/EmptyState.js";
|
|
6
|
-
import {
|
|
7
|
-
import { formatCurrency as
|
|
8
|
-
import { useMemo as
|
|
9
|
-
import { ArrowLeft as
|
|
10
|
-
import { useParams as
|
|
11
|
-
import { jsx as
|
|
12
|
-
import { GlassCard as
|
|
6
|
+
import { useCreateReview as a, useOrder as o, useUpdateOrderStatus as s } from "../../hooks/useKadaikodiApi.js";
|
|
7
|
+
import { formatCurrency as c, formatDate as l } from "../../utils/formatters.js";
|
|
8
|
+
import { useMemo as u, useState as d } from "react";
|
|
9
|
+
import { ArrowLeft as f, CalendarCheck as p, CheckCircle2 as m, Circle as h, Headphones as g, Loader2 as _, MapPin as v, ShoppingBag as y, Star as b, X as x, XCircle as S } from "lucide-react";
|
|
10
|
+
import { useParams as C } from "react-router-dom";
|
|
11
|
+
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
12
|
+
import { GlassCard as E, PagePurpose as D } from "@burdenoff/fe-libs/ui";
|
|
13
13
|
//#region src/kadaikodi/pages/customer/BookingDetailsPage.tsx
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
var O = "support@kadaikodi.com";
|
|
15
|
+
function k() {
|
|
16
|
+
let { bookingId: k } = C(), { navigateTo: A, currentUser: j } = e(), { data: M, isLoading: N } = o(k), P = a(), F = s(), [I, L] = d(null), [R, z] = d(!1), [B, V] = d(5), [H, U] = d(""), W = (e) => {
|
|
17
|
+
L(e), setTimeout(() => L(null), 3e3);
|
|
18
|
+
}, G = u(() => M ? M.timeline.length > 0 ? M.timeline.map((e) => ({
|
|
18
19
|
status: e.status,
|
|
19
20
|
label: e.description || e.status,
|
|
20
21
|
timestamp: e.timestamp,
|
|
@@ -22,328 +23,427 @@ function w() {
|
|
|
22
23
|
})) : [{
|
|
23
24
|
status: "placed",
|
|
24
25
|
label: "Order placed",
|
|
25
|
-
timestamp:
|
|
26
|
+
timestamp: M.orderDate,
|
|
26
27
|
completed: !0
|
|
27
|
-
}] : [], [
|
|
28
|
-
if (
|
|
28
|
+
}] : [], [M]);
|
|
29
|
+
if (N) return /* @__PURE__ */ w(n, {
|
|
29
30
|
title: "Booking Details",
|
|
30
|
-
children: /* @__PURE__ */
|
|
31
|
+
children: /* @__PURE__ */ w("div", {
|
|
31
32
|
className: "flex items-center justify-center py-20",
|
|
32
|
-
children: /* @__PURE__ */
|
|
33
|
+
children: /* @__PURE__ */ w("div", { className: "h-12 w-12 animate-spin rounded-full border-b-2 border-foreground" })
|
|
33
34
|
})
|
|
34
35
|
});
|
|
35
|
-
if (!
|
|
36
|
+
if (!M) return /* @__PURE__ */ w(n, {
|
|
36
37
|
title: "Booking Not Found",
|
|
37
|
-
children: /* @__PURE__ */
|
|
38
|
-
icon: /* @__PURE__ */
|
|
38
|
+
children: /* @__PURE__ */ w(i, {
|
|
39
|
+
icon: /* @__PURE__ */ w(p, { className: "h-12 w-12" }),
|
|
39
40
|
title: "Booking not found",
|
|
40
|
-
description: `No booking found with ID "${
|
|
41
|
-
action: /* @__PURE__ */
|
|
41
|
+
description: `No booking found with ID "${k}".`,
|
|
42
|
+
action: /* @__PURE__ */ w("button", {
|
|
42
43
|
type: "button",
|
|
43
|
-
onClick: () =>
|
|
44
|
+
onClick: () => A("/customer/dashboard"),
|
|
44
45
|
className: "rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
|
|
45
46
|
children: "Go to Dashboard"
|
|
46
47
|
})
|
|
47
48
|
})
|
|
48
49
|
});
|
|
49
|
-
let
|
|
50
|
-
return /* @__PURE__ */
|
|
51
|
-
title: /* @__PURE__ */
|
|
50
|
+
let K = M.status === "cancelled", q = M.status === "delivered", J = !K && !q, Y = M.deliveryAddress, X = !!(Y.street || Y.area || Y.city), Z = M.rating != null && M.rating > 0;
|
|
51
|
+
return /* @__PURE__ */ T(n, {
|
|
52
|
+
title: /* @__PURE__ */ T("div", {
|
|
52
53
|
className: "flex items-center gap-3",
|
|
53
|
-
children: [/* @__PURE__ */
|
|
54
|
+
children: [/* @__PURE__ */ w("button", {
|
|
54
55
|
type: "button",
|
|
55
|
-
onClick: () =>
|
|
56
|
+
onClick: () => A("/customer/dashboard"),
|
|
56
57
|
className: "rounded-md p-1 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
|
|
57
|
-
children: /* @__PURE__ */
|
|
58
|
-
}), /* @__PURE__ */
|
|
58
|
+
children: /* @__PURE__ */ w(f, { className: "h-5 w-5" })
|
|
59
|
+
}), /* @__PURE__ */ T("span", { children: ["Booking #", M.id] })]
|
|
59
60
|
}),
|
|
60
|
-
actions: /* @__PURE__ */
|
|
61
|
+
actions: /* @__PURE__ */ w(r, { status: M.status }),
|
|
61
62
|
children: [
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ w(D, {
|
|
63
64
|
className: "mb-4",
|
|
64
65
|
children: "The full picture of one service booking — who's providing it, what was ordered, what it costs, and the actions you can take such as contacting support or cancelling."
|
|
65
66
|
}),
|
|
66
|
-
|
|
67
|
+
I && /* @__PURE__ */ T("div", {
|
|
67
68
|
className: "mb-4 rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-3 flex items-center gap-2",
|
|
68
|
-
children: [/* @__PURE__ */
|
|
69
|
+
children: [/* @__PURE__ */ w(m, { className: "h-4 w-4 text-status-success-text shrink-0" }), /* @__PURE__ */ w("p", {
|
|
69
70
|
className: "text-sm text-status-success-text",
|
|
70
|
-
children:
|
|
71
|
+
children: I
|
|
71
72
|
})]
|
|
72
73
|
}),
|
|
73
|
-
/* @__PURE__ */
|
|
74
|
+
/* @__PURE__ */ T("div", {
|
|
74
75
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
75
|
-
children: [/* @__PURE__ */
|
|
76
|
+
children: [/* @__PURE__ */ T("div", {
|
|
76
77
|
className: "lg:col-span-2 space-y-6",
|
|
77
78
|
children: [
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ T(E, {
|
|
79
80
|
treatment: "glass",
|
|
80
81
|
glow: !0,
|
|
81
82
|
className: "p-6",
|
|
82
83
|
children: [
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ w("h2", {
|
|
84
85
|
className: "text-lg font-semibold text-text-primary",
|
|
85
|
-
children:
|
|
86
|
+
children: M.cartName
|
|
86
87
|
}),
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ T("p", {
|
|
88
89
|
className: "mt-1 text-sm text-text-secondary",
|
|
89
|
-
children: ["Order placed on ",
|
|
90
|
+
children: ["Order placed on ", l(M.orderDate)]
|
|
90
91
|
}),
|
|
91
|
-
|
|
92
|
+
M.items.length > 0 && /* @__PURE__ */ w("div", {
|
|
92
93
|
className: "mt-4 space-y-1.5",
|
|
93
|
-
children:
|
|
94
|
+
children: M.items.map((e, t) => /* @__PURE__ */ T("div", {
|
|
94
95
|
className: "flex justify-between text-sm",
|
|
95
|
-
children: [/* @__PURE__ */
|
|
96
|
+
children: [/* @__PURE__ */ T("span", {
|
|
96
97
|
className: "text-text-primary",
|
|
97
98
|
children: [
|
|
98
99
|
e.quantity,
|
|
99
100
|
"x ",
|
|
100
101
|
e.name
|
|
101
102
|
]
|
|
102
|
-
}), /* @__PURE__ */
|
|
103
|
+
}), /* @__PURE__ */ w("span", {
|
|
103
104
|
className: "text-text-secondary",
|
|
104
|
-
children:
|
|
105
|
+
children: c(e.price * e.quantity, { minimumFractionDigits: 0 })
|
|
105
106
|
})]
|
|
106
107
|
}, e.id || t))
|
|
107
108
|
})
|
|
108
109
|
]
|
|
109
110
|
}),
|
|
110
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ T("div", {
|
|
111
112
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
|
|
112
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ w("h2", {
|
|
113
114
|
className: "text-base font-semibold text-text-primary mb-4",
|
|
114
115
|
children: "Service Provider"
|
|
115
|
-
}), /* @__PURE__ */
|
|
116
|
+
}), /* @__PURE__ */ T("div", {
|
|
116
117
|
className: "flex items-center gap-4",
|
|
117
118
|
children: [
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ w("div", {
|
|
119
120
|
className: "flex h-12 w-12 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
|
|
120
|
-
children: /* @__PURE__ */
|
|
121
|
+
children: /* @__PURE__ */ w(y, { className: "h-6 w-6" })
|
|
121
122
|
}),
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ w("div", {
|
|
123
124
|
className: "flex-1 min-w-0",
|
|
124
|
-
children: /* @__PURE__ */
|
|
125
|
+
children: /* @__PURE__ */ w("p", {
|
|
125
126
|
className: "text-sm font-semibold text-text-primary",
|
|
126
|
-
children:
|
|
127
|
+
children: M.cartName
|
|
127
128
|
})
|
|
128
129
|
}),
|
|
129
|
-
/* @__PURE__ */
|
|
130
|
+
/* @__PURE__ */ w("button", {
|
|
130
131
|
type: "button",
|
|
131
|
-
onClick: () =>
|
|
132
|
+
onClick: () => A(`/customer/cart/${M.cartId}`),
|
|
132
133
|
className: "rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
133
134
|
children: "View Cart"
|
|
134
135
|
})
|
|
135
136
|
]
|
|
136
137
|
})]
|
|
137
138
|
}),
|
|
138
|
-
/* @__PURE__ */
|
|
139
|
+
/* @__PURE__ */ T("div", {
|
|
139
140
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
|
|
140
|
-
children: [/* @__PURE__ */
|
|
141
|
+
children: [/* @__PURE__ */ w("h2", {
|
|
141
142
|
className: "text-base font-semibold text-text-primary mb-5",
|
|
142
143
|
children: "Booking Timeline"
|
|
143
|
-
}), /* @__PURE__ */
|
|
144
|
+
}), /* @__PURE__ */ w("div", {
|
|
144
145
|
className: "relative",
|
|
145
|
-
children:
|
|
146
|
-
let r = n ===
|
|
147
|
-
return /* @__PURE__ */
|
|
146
|
+
children: G.map((e, n) => {
|
|
147
|
+
let r = n === G.length - 1, i = e.status === "cancelled", a = i ? S : e.completed ? m : h;
|
|
148
|
+
return /* @__PURE__ */ T("div", {
|
|
148
149
|
className: "flex gap-4",
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
+
children: [/* @__PURE__ */ T("div", {
|
|
150
151
|
className: "flex flex-col items-center",
|
|
151
|
-
children: [/* @__PURE__ */
|
|
152
|
+
children: [/* @__PURE__ */ w("div", {
|
|
152
153
|
className: t("flex h-8 w-8 shrink-0 items-center justify-center rounded-full", i ? "bg-status-error-bg-subtle text-status-error-text" : e.completed ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-secondary"),
|
|
153
|
-
children: /* @__PURE__ */
|
|
154
|
-
}), !r && /* @__PURE__ */
|
|
155
|
-
}), /* @__PURE__ */
|
|
154
|
+
children: /* @__PURE__ */ w(a, { className: "h-4 w-4" })
|
|
155
|
+
}), !r && /* @__PURE__ */ w("div", { className: t("w-0.5 flex-1 my-1", e.completed ? "bg-status-success-bg-subtle" : "bg-border") })]
|
|
156
|
+
}), /* @__PURE__ */ T("div", {
|
|
156
157
|
className: t("pb-6", r && "pb-0"),
|
|
157
|
-
children: [/* @__PURE__ */
|
|
158
|
+
children: [/* @__PURE__ */ w("p", {
|
|
158
159
|
className: "text-sm font-medium text-text-primary",
|
|
159
160
|
children: e.label
|
|
160
|
-
}), /* @__PURE__ */
|
|
161
|
+
}), /* @__PURE__ */ w("p", {
|
|
161
162
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
162
|
-
children: e.timestamp ?
|
|
163
|
+
children: e.timestamp ? l(e.timestamp) : "Pending"
|
|
163
164
|
})]
|
|
164
165
|
})]
|
|
165
166
|
}, `${e.status}-${n}`);
|
|
166
167
|
})
|
|
167
168
|
})]
|
|
168
169
|
}),
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ T("div", {
|
|
170
171
|
className: "flex flex-col sm:flex-row gap-3",
|
|
171
|
-
children: [/* @__PURE__ */
|
|
172
|
-
|
|
173
|
-
onClick: () => {
|
|
174
|
-
A("Support team will contact you shortly.");
|
|
175
|
-
},
|
|
172
|
+
children: [/* @__PURE__ */ T("a", {
|
|
173
|
+
href: `mailto:${O}?subject=${encodeURIComponent(`Support request — Booking #${M.id}`)}`,
|
|
176
174
|
className: "flex-1 flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-4 py-3 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
177
|
-
children: [/* @__PURE__ */
|
|
178
|
-
}),
|
|
175
|
+
children: [/* @__PURE__ */ w(g, { className: "h-4 w-4" }), "Contact Support"]
|
|
176
|
+
}), q && /* @__PURE__ */ T("button", {
|
|
179
177
|
type: "button",
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
children: [/* @__PURE__ */ b(_, { className: "h-4 w-4" }), "Rate Service"]
|
|
178
|
+
disabled: Z,
|
|
179
|
+
onClick: () => z(!0),
|
|
180
|
+
className: t("flex-1 flex items-center justify-center gap-2 rounded-lg px-4 py-3 text-sm font-medium transition-opacity", Z ? "bg-bg-sunken text-text-secondary cursor-not-allowed" : "bg-foreground text-background hover:opacity-90"),
|
|
181
|
+
children: [/* @__PURE__ */ w(b, { className: "h-4 w-4" }), Z ? "Rated" : "Rate Service"]
|
|
185
182
|
})]
|
|
186
183
|
})
|
|
187
184
|
]
|
|
188
|
-
}), /* @__PURE__ */
|
|
185
|
+
}), /* @__PURE__ */ T("div", {
|
|
189
186
|
className: "space-y-6",
|
|
190
187
|
children: [
|
|
191
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ T("div", {
|
|
192
189
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
193
190
|
children: [
|
|
194
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ w("h3", {
|
|
195
192
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
196
193
|
children: "Cart Information"
|
|
197
194
|
}),
|
|
198
|
-
/* @__PURE__ */
|
|
195
|
+
/* @__PURE__ */ T("div", {
|
|
199
196
|
className: "flex items-center gap-3 mb-4",
|
|
200
|
-
children: [/* @__PURE__ */
|
|
197
|
+
children: [/* @__PURE__ */ w("div", {
|
|
201
198
|
className: "flex h-14 w-14 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary",
|
|
202
|
-
children: /* @__PURE__ */
|
|
203
|
-
}), /* @__PURE__ */
|
|
199
|
+
children: /* @__PURE__ */ w(y, { className: "h-6 w-6" })
|
|
200
|
+
}), /* @__PURE__ */ w("div", {
|
|
204
201
|
className: "min-w-0",
|
|
205
|
-
children: /* @__PURE__ */
|
|
202
|
+
children: /* @__PURE__ */ w("p", {
|
|
206
203
|
className: "text-sm font-semibold text-text-primary",
|
|
207
|
-
children:
|
|
204
|
+
children: M.cartName
|
|
208
205
|
})
|
|
209
206
|
})]
|
|
210
207
|
}),
|
|
211
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ w("button", {
|
|
212
209
|
type: "button",
|
|
213
|
-
onClick: () =>
|
|
210
|
+
onClick: () => A(`/customer/cart/${M.cartId}`),
|
|
214
211
|
className: "w-full rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
215
212
|
children: "View Cart Menu"
|
|
216
213
|
})
|
|
217
214
|
]
|
|
218
215
|
}),
|
|
219
|
-
|
|
216
|
+
X && /* @__PURE__ */ T("div", {
|
|
220
217
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
221
|
-
children: [/* @__PURE__ */
|
|
218
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
222
219
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
223
220
|
children: "Service Location"
|
|
224
|
-
}), /* @__PURE__ */
|
|
221
|
+
}), /* @__PURE__ */ T("div", {
|
|
225
222
|
className: "flex items-start gap-3",
|
|
226
|
-
children: [/* @__PURE__ */
|
|
227
|
-
|
|
223
|
+
children: [/* @__PURE__ */ w(v, { className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary" }), /* @__PURE__ */ T("div", { children: [
|
|
224
|
+
Y.street && /* @__PURE__ */ w("p", {
|
|
228
225
|
className: "text-sm text-text-primary",
|
|
229
|
-
children:
|
|
226
|
+
children: Y.street
|
|
230
227
|
}),
|
|
231
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ T("p", {
|
|
232
229
|
className: "text-sm text-text-secondary",
|
|
233
|
-
children: [[
|
|
230
|
+
children: [[Y.area, Y.city].filter(Boolean).join(", "), Y.pincode ? ` - ${Y.pincode}` : ""]
|
|
234
231
|
}),
|
|
235
|
-
|
|
232
|
+
Y.landmark && /* @__PURE__ */ T("p", {
|
|
236
233
|
className: "text-xs text-text-secondary mt-1",
|
|
237
|
-
children: ["Landmark: ",
|
|
234
|
+
children: ["Landmark: ", Y.landmark]
|
|
238
235
|
})
|
|
239
236
|
] })]
|
|
240
237
|
})]
|
|
241
238
|
}),
|
|
242
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ T("div", {
|
|
243
240
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
241
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
245
242
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
246
243
|
children: "Price Breakdown"
|
|
247
|
-
}), /* @__PURE__ */
|
|
244
|
+
}), /* @__PURE__ */ T("div", {
|
|
248
245
|
className: "space-y-2.5 text-sm",
|
|
249
246
|
children: [
|
|
250
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ T("div", {
|
|
251
248
|
className: "flex justify-between",
|
|
252
|
-
children: [/* @__PURE__ */
|
|
249
|
+
children: [/* @__PURE__ */ w("span", {
|
|
253
250
|
className: "text-text-secondary",
|
|
254
251
|
children: "Subtotal"
|
|
255
|
-
}), /* @__PURE__ */
|
|
252
|
+
}), /* @__PURE__ */ w("span", {
|
|
256
253
|
className: "text-text-primary",
|
|
257
|
-
children:
|
|
254
|
+
children: c(M.subtotal, { minimumFractionDigits: 0 })
|
|
258
255
|
})]
|
|
259
256
|
}),
|
|
260
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ T("div", {
|
|
261
258
|
className: "flex justify-between",
|
|
262
|
-
children: [/* @__PURE__ */
|
|
259
|
+
children: [/* @__PURE__ */ w("span", {
|
|
263
260
|
className: "text-text-secondary",
|
|
264
261
|
children: "Delivery Fee"
|
|
265
|
-
}), /* @__PURE__ */
|
|
262
|
+
}), /* @__PURE__ */ w("span", {
|
|
266
263
|
className: "text-text-primary",
|
|
267
|
-
children:
|
|
264
|
+
children: M.deliveryFee === 0 ? "FREE" : c(M.deliveryFee, { minimumFractionDigits: 0 })
|
|
268
265
|
})]
|
|
269
266
|
}),
|
|
270
|
-
/* @__PURE__ */
|
|
267
|
+
/* @__PURE__ */ T("div", {
|
|
271
268
|
className: "flex justify-between",
|
|
272
|
-
children: [/* @__PURE__ */
|
|
269
|
+
children: [/* @__PURE__ */ w("span", {
|
|
273
270
|
className: "text-text-secondary",
|
|
274
271
|
children: "Tax"
|
|
275
|
-
}), /* @__PURE__ */
|
|
272
|
+
}), /* @__PURE__ */ w("span", {
|
|
276
273
|
className: "text-text-primary",
|
|
277
|
-
children:
|
|
274
|
+
children: c(M.taxes, { minimumFractionDigits: 0 })
|
|
278
275
|
})]
|
|
279
276
|
}),
|
|
280
|
-
|
|
277
|
+
M.discount != null && M.discount > 0 && /* @__PURE__ */ T("div", {
|
|
281
278
|
className: "flex justify-between",
|
|
282
|
-
children: [/* @__PURE__ */
|
|
279
|
+
children: [/* @__PURE__ */ w("span", {
|
|
283
280
|
className: "text-status-success-text",
|
|
284
281
|
children: "Discount"
|
|
285
|
-
}), /* @__PURE__ */
|
|
282
|
+
}), /* @__PURE__ */ T("span", {
|
|
286
283
|
className: "text-status-success-text",
|
|
287
|
-
children: ["-",
|
|
284
|
+
children: ["-", c(M.discount, { minimumFractionDigits: 0 })]
|
|
288
285
|
})]
|
|
289
286
|
}),
|
|
290
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ T("div", {
|
|
291
288
|
className: "flex justify-between border-t border-border-subtle pt-2.5",
|
|
292
|
-
children: [/* @__PURE__ */
|
|
289
|
+
children: [/* @__PURE__ */ w("span", {
|
|
293
290
|
className: "font-semibold text-text-primary",
|
|
294
291
|
children: "Total"
|
|
295
|
-
}), /* @__PURE__ */
|
|
292
|
+
}), /* @__PURE__ */ w("span", {
|
|
296
293
|
className: "font-bold text-text-primary",
|
|
297
|
-
children:
|
|
294
|
+
children: c(M.total, { minimumFractionDigits: 0 })
|
|
298
295
|
})]
|
|
299
296
|
})
|
|
300
297
|
]
|
|
301
298
|
})]
|
|
302
299
|
}),
|
|
303
|
-
/* @__PURE__ */
|
|
300
|
+
/* @__PURE__ */ T("div", {
|
|
304
301
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
305
|
-
children: [/* @__PURE__ */
|
|
302
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
306
303
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
307
304
|
children: "Booking Info"
|
|
308
|
-
}), /* @__PURE__ */
|
|
305
|
+
}), /* @__PURE__ */ T("div", {
|
|
309
306
|
className: "space-y-3",
|
|
310
|
-
children: [/* @__PURE__ */
|
|
307
|
+
children: [/* @__PURE__ */ T("div", {
|
|
311
308
|
className: "flex items-center gap-2",
|
|
312
|
-
children: [/* @__PURE__ */
|
|
309
|
+
children: [/* @__PURE__ */ w(p, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
313
310
|
className: "text-xs text-text-secondary",
|
|
314
311
|
children: "Booked On"
|
|
315
|
-
}), /* @__PURE__ */
|
|
312
|
+
}), /* @__PURE__ */ w("p", {
|
|
316
313
|
className: "text-sm text-text-primary",
|
|
317
|
-
children:
|
|
314
|
+
children: l(M.orderDate)
|
|
318
315
|
})] })]
|
|
319
|
-
}), /* @__PURE__ */
|
|
316
|
+
}), /* @__PURE__ */ T("div", {
|
|
320
317
|
className: "flex items-center gap-2",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
318
|
+
children: [/* @__PURE__ */ w(m, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
322
319
|
className: "text-xs text-text-secondary",
|
|
323
320
|
children: "Payment"
|
|
324
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ T("p", {
|
|
325
322
|
className: "text-sm text-text-primary capitalize",
|
|
326
323
|
children: [
|
|
327
|
-
|
|
324
|
+
M.paymentMethod,
|
|
328
325
|
" · ",
|
|
329
|
-
|
|
326
|
+
M.paymentStatus
|
|
330
327
|
]
|
|
331
328
|
})] })]
|
|
332
329
|
})]
|
|
333
330
|
})]
|
|
334
331
|
}),
|
|
335
|
-
|
|
332
|
+
J && /* @__PURE__ */ T("button", {
|
|
336
333
|
type: "button",
|
|
337
|
-
|
|
338
|
-
|
|
334
|
+
onClick: () => {
|
|
335
|
+
window.confirm("Cancel this booking? This cannot be undone.") && F.mutate({
|
|
336
|
+
id: M.id,
|
|
337
|
+
status: "CANCELLED"
|
|
338
|
+
}, {
|
|
339
|
+
onSuccess: () => W("Your booking has been cancelled."),
|
|
340
|
+
onError: () => W("Could not cancel the booking. Please try again.")
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
disabled: F.isPending,
|
|
344
|
+
className: t("w-full inline-flex items-center justify-center gap-2 rounded-lg border border-status-error-text/30 bg-status-error-bg-subtle px-4 py-3 text-sm font-medium text-status-error-text transition-colors", F.isPending ? "opacity-60 cursor-not-allowed" : "hover:bg-status-error-bg-subtle"),
|
|
345
|
+
children: [F.isPending ? /* @__PURE__ */ w(_, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ w(S, { className: "h-4 w-4" }), "Cancel Booking"]
|
|
339
346
|
})
|
|
340
347
|
]
|
|
341
348
|
})]
|
|
349
|
+
}),
|
|
350
|
+
R && /* @__PURE__ */ w("div", {
|
|
351
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
352
|
+
children: /* @__PURE__ */ w("div", {
|
|
353
|
+
className: "w-full max-w-md rounded-lg border border-border-subtle bg-bg-surface shadow-lg",
|
|
354
|
+
children: /* @__PURE__ */ T("div", {
|
|
355
|
+
className: "p-5",
|
|
356
|
+
children: [
|
|
357
|
+
/* @__PURE__ */ T("div", {
|
|
358
|
+
className: "flex items-center justify-between mb-4",
|
|
359
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
360
|
+
className: "text-lg font-semibold text-text-primary",
|
|
361
|
+
children: "Rate this service"
|
|
362
|
+
}), /* @__PURE__ */ w("button", {
|
|
363
|
+
type: "button",
|
|
364
|
+
onClick: () => z(!1),
|
|
365
|
+
className: "rounded-md p-2 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
|
|
366
|
+
children: /* @__PURE__ */ w(x, { className: "h-4 w-4" })
|
|
367
|
+
})]
|
|
368
|
+
}),
|
|
369
|
+
/* @__PURE__ */ T("div", {
|
|
370
|
+
className: "mb-4",
|
|
371
|
+
children: [/* @__PURE__ */ w("label", {
|
|
372
|
+
className: "block text-sm font-medium text-text-primary mb-2",
|
|
373
|
+
children: "Your rating"
|
|
374
|
+
}), /* @__PURE__ */ w("div", {
|
|
375
|
+
className: "flex items-center gap-1",
|
|
376
|
+
children: [
|
|
377
|
+
1,
|
|
378
|
+
2,
|
|
379
|
+
3,
|
|
380
|
+
4,
|
|
381
|
+
5
|
|
382
|
+
].map((e) => /* @__PURE__ */ w("button", {
|
|
383
|
+
type: "button",
|
|
384
|
+
onClick: () => V(e),
|
|
385
|
+
className: "p-0.5",
|
|
386
|
+
"aria-label": `${e} star${e > 1 ? "s" : ""}`,
|
|
387
|
+
children: /* @__PURE__ */ w(b, { className: t("h-7 w-7", e <= B ? "fill-status-warning-text text-status-warning-text" : "fill-none text-text-secondary/40") })
|
|
388
|
+
}, e))
|
|
389
|
+
})]
|
|
390
|
+
}),
|
|
391
|
+
/* @__PURE__ */ T("div", {
|
|
392
|
+
className: "mb-5",
|
|
393
|
+
children: [/* @__PURE__ */ T("label", {
|
|
394
|
+
className: "block text-sm font-medium text-text-primary mb-1.5",
|
|
395
|
+
children: ["Review ", /* @__PURE__ */ w("span", {
|
|
396
|
+
className: "text-text-secondary font-normal",
|
|
397
|
+
children: "(optional)"
|
|
398
|
+
})]
|
|
399
|
+
}), /* @__PURE__ */ w("textarea", {
|
|
400
|
+
rows: 4,
|
|
401
|
+
value: H,
|
|
402
|
+
onChange: (e) => U(e.target.value),
|
|
403
|
+
placeholder: "Share your experience with this service...",
|
|
404
|
+
className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] resize-none"
|
|
405
|
+
})]
|
|
406
|
+
}),
|
|
407
|
+
/* @__PURE__ */ T("div", {
|
|
408
|
+
className: "flex items-center gap-3",
|
|
409
|
+
children: [/* @__PURE__ */ T("button", {
|
|
410
|
+
type: "button",
|
|
411
|
+
onClick: () => {
|
|
412
|
+
if (!j?.id) {
|
|
413
|
+
W("Please sign in to rate this service.");
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
P.mutate({
|
|
417
|
+
providerId: M.cartId,
|
|
418
|
+
orderId: M.id,
|
|
419
|
+
customerId: j.id,
|
|
420
|
+
rating: B,
|
|
421
|
+
review: H.trim() || void 0
|
|
422
|
+
}, {
|
|
423
|
+
onSuccess: () => {
|
|
424
|
+
z(!1), U(""), W("Thanks! Your rating has been submitted.");
|
|
425
|
+
},
|
|
426
|
+
onError: () => W("Could not submit your rating. Please try again.")
|
|
427
|
+
});
|
|
428
|
+
},
|
|
429
|
+
disabled: P.isPending,
|
|
430
|
+
className: t("flex-1 inline-flex items-center justify-center gap-2 rounded-lg bg-foreground px-4 py-2.5 text-sm font-medium text-background transition-opacity", P.isPending ? "opacity-60 cursor-not-allowed" : "hover:opacity-90"),
|
|
431
|
+
children: [P.isPending && /* @__PURE__ */ w(_, { className: "h-4 w-4 animate-spin" }), "Submit Rating"]
|
|
432
|
+
}), /* @__PURE__ */ w("button", {
|
|
433
|
+
type: "button",
|
|
434
|
+
onClick: () => z(!1),
|
|
435
|
+
className: "rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
436
|
+
children: "Cancel"
|
|
437
|
+
})]
|
|
438
|
+
})
|
|
439
|
+
]
|
|
440
|
+
})
|
|
441
|
+
})
|
|
342
442
|
})
|
|
343
443
|
]
|
|
344
444
|
});
|
|
345
445
|
}
|
|
346
446
|
//#endregion
|
|
347
|
-
export {
|
|
447
|
+
export { k as BookingDetailsPage };
|
|
348
448
|
|
|
349
449
|
//# sourceMappingURL=BookingDetailsPage.js.map
|