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