@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.
Files changed (77) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/hooks/useKadaikodiApi.js +76 -6
  4. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  5. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +45 -107
  6. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  7. package/dist/kadaikodi/pages/admin/AdminDashboard.js +30 -32
  8. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  9. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +137 -120
  10. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  11. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +2 -2
  12. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  13. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  14. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  15. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  16. package/dist/kadaikodi/pages/admin/CartManagementPage.js +278 -283
  17. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  18. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  19. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  20. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +105 -111
  21. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  22. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  23. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  24. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +84 -70
  25. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  26. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  27. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  28. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  29. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  30. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +202 -139
  31. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  32. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +232 -0
  33. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  34. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +84 -79
  35. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  36. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  38. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  39. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  40. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  41. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  42. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +243 -143
  43. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  44. package/dist/kadaikodi/pages/customer/CartDetailPage.js +4 -4
  45. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  46. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
  47. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  48. package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -4
  49. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  50. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +6 -6
  51. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  52. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  53. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  54. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +6 -4
  55. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  56. package/dist/kadaikodi/pages/customer/FavoritesPage.js +6 -6
  57. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +4 -4
  59. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  60. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +409 -304
  61. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/customer/ReviewsPage.js +209 -162
  63. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  65. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  66. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  68. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  69. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  70. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +207 -186
  71. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  72. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  73. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +340 -272
  74. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  75. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +122 -75
  76. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  77. 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 { useOrder as a } from "../../hooks/useKadaikodiApi.js";
7
- import { formatCurrency as o, formatDate as s } from "../../utils/formatters.js";
8
- import { useMemo as c, useState as l } from "react";
9
- import { ArrowLeft as u, CalendarCheck as d, CheckCircle2 as f, Circle as p, Headphones as m, MapPin as h, ShoppingBag as g, Star as _, XCircle as v } from "lucide-react";
10
- import { useParams as y } from "react-router-dom";
11
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
12
- import { GlassCard as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
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
- function w() {
15
- let { bookingId: w } = y(), { navigateTo: T } = e(), { data: E, isLoading: D } = a(w), [O, k] = l(null), A = (e) => {
16
- k(e), setTimeout(() => k(null), 3e3);
17
- }, j = c(() => E ? E.timeline.length > 0 ? E.timeline.map((e) => ({
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: E.orderDate,
26
+ timestamp: M.orderDate,
26
27
  completed: !0
27
- }] : [], [E]);
28
- if (D) return /* @__PURE__ */ b(n, {
28
+ }] : [], [M]);
29
+ if (N) return /* @__PURE__ */ w(n, {
29
30
  title: "Booking Details",
30
- children: /* @__PURE__ */ b("div", {
31
+ children: /* @__PURE__ */ w("div", {
31
32
  className: "flex items-center justify-center py-20",
32
- children: /* @__PURE__ */ b("div", { className: "h-12 w-12 animate-spin rounded-full border-b-2 border-foreground" })
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 (!E) return /* @__PURE__ */ b(n, {
36
+ if (!M) return /* @__PURE__ */ w(n, {
36
37
  title: "Booking Not Found",
37
- children: /* @__PURE__ */ b(i, {
38
- icon: /* @__PURE__ */ b(d, { className: "h-12 w-12" }),
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 "${w}".`,
41
- action: /* @__PURE__ */ b("button", {
41
+ description: `No booking found with ID "${k}".`,
42
+ action: /* @__PURE__ */ w("button", {
42
43
  type: "button",
43
- onClick: () => T("/customer/dashboard"),
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 M = E.status === "cancelled", N = E.status === "delivered", P = !M && !N, F = E.deliveryAddress, I = !!(F.street || F.area || F.city);
50
- return /* @__PURE__ */ x(n, {
51
- title: /* @__PURE__ */ x("div", {
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__ */ b("button", {
54
+ children: [/* @__PURE__ */ w("button", {
54
55
  type: "button",
55
- onClick: () => T("/customer/dashboard"),
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__ */ b(u, { className: "h-5 w-5" })
58
- }), /* @__PURE__ */ x("span", { children: ["Booking #", E.id] })]
58
+ children: /* @__PURE__ */ w(f, { className: "h-5 w-5" })
59
+ }), /* @__PURE__ */ T("span", { children: ["Booking #", M.id] })]
59
60
  }),
60
- actions: /* @__PURE__ */ b(r, { status: E.status }),
61
+ actions: /* @__PURE__ */ w(r, { status: M.status }),
61
62
  children: [
62
- /* @__PURE__ */ b(C, {
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
- O && /* @__PURE__ */ x("div", {
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__ */ b(f, { className: "h-4 w-4 text-status-success-text shrink-0" }), /* @__PURE__ */ b("p", {
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: O
71
+ children: I
71
72
  })]
72
73
  }),
73
- /* @__PURE__ */ x("div", {
74
+ /* @__PURE__ */ T("div", {
74
75
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
75
- children: [/* @__PURE__ */ x("div", {
76
+ children: [/* @__PURE__ */ T("div", {
76
77
  className: "lg:col-span-2 space-y-6",
77
78
  children: [
78
- /* @__PURE__ */ x(S, {
79
+ /* @__PURE__ */ T(E, {
79
80
  treatment: "glass",
80
81
  glow: !0,
81
82
  className: "p-6",
82
83
  children: [
83
- /* @__PURE__ */ b("h2", {
84
+ /* @__PURE__ */ w("h2", {
84
85
  className: "text-lg font-semibold text-text-primary",
85
- children: E.cartName
86
+ children: M.cartName
86
87
  }),
87
- /* @__PURE__ */ x("p", {
88
+ /* @__PURE__ */ T("p", {
88
89
  className: "mt-1 text-sm text-text-secondary",
89
- children: ["Order placed on ", s(E.orderDate)]
90
+ children: ["Order placed on ", l(M.orderDate)]
90
91
  }),
91
- E.items.length > 0 && /* @__PURE__ */ b("div", {
92
+ M.items.length > 0 && /* @__PURE__ */ w("div", {
92
93
  className: "mt-4 space-y-1.5",
93
- children: E.items.map((e, t) => /* @__PURE__ */ x("div", {
94
+ children: M.items.map((e, t) => /* @__PURE__ */ T("div", {
94
95
  className: "flex justify-between text-sm",
95
- children: [/* @__PURE__ */ x("span", {
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__ */ b("span", {
103
+ }), /* @__PURE__ */ w("span", {
103
104
  className: "text-text-secondary",
104
- children: o(e.price * e.quantity, { minimumFractionDigits: 0 })
105
+ children: c(e.price * e.quantity, { minimumFractionDigits: 0 })
105
106
  })]
106
107
  }, e.id || t))
107
108
  })
108
109
  ]
109
110
  }),
110
- /* @__PURE__ */ x("div", {
111
+ /* @__PURE__ */ T("div", {
111
112
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
112
- children: [/* @__PURE__ */ b("h2", {
113
+ children: [/* @__PURE__ */ w("h2", {
113
114
  className: "text-base font-semibold text-text-primary mb-4",
114
115
  children: "Service Provider"
115
- }), /* @__PURE__ */ x("div", {
116
+ }), /* @__PURE__ */ T("div", {
116
117
  className: "flex items-center gap-4",
117
118
  children: [
118
- /* @__PURE__ */ b("div", {
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__ */ b(g, { className: "h-6 w-6" })
121
+ children: /* @__PURE__ */ w(y, { className: "h-6 w-6" })
121
122
  }),
122
- /* @__PURE__ */ b("div", {
123
+ /* @__PURE__ */ w("div", {
123
124
  className: "flex-1 min-w-0",
124
- children: /* @__PURE__ */ b("p", {
125
+ children: /* @__PURE__ */ w("p", {
125
126
  className: "text-sm font-semibold text-text-primary",
126
- children: E.cartName
127
+ children: M.cartName
127
128
  })
128
129
  }),
129
- /* @__PURE__ */ b("button", {
130
+ /* @__PURE__ */ w("button", {
130
131
  type: "button",
131
- onClick: () => T(`/customer/carts/${E.cartId}`),
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__ */ x("div", {
139
+ /* @__PURE__ */ T("div", {
139
140
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
140
- children: [/* @__PURE__ */ b("h2", {
141
+ children: [/* @__PURE__ */ w("h2", {
141
142
  className: "text-base font-semibold text-text-primary mb-5",
142
143
  children: "Booking Timeline"
143
- }), /* @__PURE__ */ b("div", {
144
+ }), /* @__PURE__ */ w("div", {
144
145
  className: "relative",
145
- children: j.map((e, n) => {
146
- let r = n === j.length - 1, i = e.status === "cancelled", a = i ? v : e.completed ? f : p;
147
- return /* @__PURE__ */ x("div", {
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__ */ x("div", {
150
+ children: [/* @__PURE__ */ T("div", {
150
151
  className: "flex flex-col items-center",
151
- children: [/* @__PURE__ */ b("div", {
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__ */ 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", {
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__ */ b("p", {
158
+ children: [/* @__PURE__ */ w("p", {
158
159
  className: "text-sm font-medium text-text-primary",
159
160
  children: e.label
160
- }), /* @__PURE__ */ b("p", {
161
+ }), /* @__PURE__ */ w("p", {
161
162
  className: "mt-0.5 text-xs text-text-secondary",
162
- children: e.timestamp ? s(e.timestamp) : "Pending"
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__ */ x("div", {
170
+ /* @__PURE__ */ T("div", {
170
171
  className: "flex flex-col sm:flex-row gap-3",
171
- children: [/* @__PURE__ */ x("button", {
172
- type: "button",
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__ */ b(m, { className: "h-4 w-4" }), "Contact Support"]
178
- }), N && /* @__PURE__ */ x("button", {
175
+ children: [/* @__PURE__ */ w(g, { className: "h-4 w-4" }), "Contact Support"]
176
+ }), q && /* @__PURE__ */ T("button", {
179
177
  type: "button",
180
- onClick: () => {
181
- A("Thank you! Rating feature coming soon.");
182
- },
183
- className: "flex-1 flex items-center justify-center gap-2 rounded-lg bg-foreground px-4 py-3 text-sm font-medium text-background hover:opacity-90 transition-opacity",
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__ */ x("div", {
185
+ }), /* @__PURE__ */ T("div", {
189
186
  className: "space-y-6",
190
187
  children: [
191
- /* @__PURE__ */ x("div", {
188
+ /* @__PURE__ */ T("div", {
192
189
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
193
190
  children: [
194
- /* @__PURE__ */ b("h3", {
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__ */ x("div", {
195
+ /* @__PURE__ */ T("div", {
199
196
  className: "flex items-center gap-3 mb-4",
200
- children: [/* @__PURE__ */ b("div", {
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__ */ b(g, { className: "h-6 w-6" })
203
- }), /* @__PURE__ */ b("div", {
199
+ children: /* @__PURE__ */ w(y, { className: "h-6 w-6" })
200
+ }), /* @__PURE__ */ w("div", {
204
201
  className: "min-w-0",
205
- children: /* @__PURE__ */ b("p", {
202
+ children: /* @__PURE__ */ w("p", {
206
203
  className: "text-sm font-semibold text-text-primary",
207
- children: E.cartName
204
+ children: M.cartName
208
205
  })
209
206
  })]
210
207
  }),
211
- /* @__PURE__ */ b("button", {
208
+ /* @__PURE__ */ w("button", {
212
209
  type: "button",
213
- onClick: () => T(`/customer/carts/${E.cartId}`),
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
- I && /* @__PURE__ */ x("div", {
216
+ X && /* @__PURE__ */ T("div", {
220
217
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
221
- children: [/* @__PURE__ */ b("h3", {
218
+ children: [/* @__PURE__ */ w("h3", {
222
219
  className: "text-base font-semibold text-text-primary mb-3",
223
220
  children: "Service Location"
224
- }), /* @__PURE__ */ x("div", {
221
+ }), /* @__PURE__ */ T("div", {
225
222
  className: "flex items-start gap-3",
226
- children: [/* @__PURE__ */ b(h, { className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary" }), /* @__PURE__ */ x("div", { children: [
227
- F.street && /* @__PURE__ */ b("p", {
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: F.street
226
+ children: Y.street
230
227
  }),
231
- /* @__PURE__ */ x("p", {
228
+ /* @__PURE__ */ T("p", {
232
229
  className: "text-sm text-text-secondary",
233
- children: [[F.area, F.city].filter(Boolean).join(", "), F.pincode ? ` - ${F.pincode}` : ""]
230
+ children: [[Y.area, Y.city].filter(Boolean).join(", "), Y.pincode ? ` - ${Y.pincode}` : ""]
234
231
  }),
235
- F.landmark && /* @__PURE__ */ x("p", {
232
+ Y.landmark && /* @__PURE__ */ T("p", {
236
233
  className: "text-xs text-text-secondary mt-1",
237
- children: ["Landmark: ", F.landmark]
234
+ children: ["Landmark: ", Y.landmark]
238
235
  })
239
236
  ] })]
240
237
  })]
241
238
  }),
242
- /* @__PURE__ */ x("div", {
239
+ /* @__PURE__ */ T("div", {
243
240
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
244
- children: [/* @__PURE__ */ b("h3", {
241
+ children: [/* @__PURE__ */ w("h3", {
245
242
  className: "text-base font-semibold text-text-primary mb-3",
246
243
  children: "Price Breakdown"
247
- }), /* @__PURE__ */ x("div", {
244
+ }), /* @__PURE__ */ T("div", {
248
245
  className: "space-y-2.5 text-sm",
249
246
  children: [
250
- /* @__PURE__ */ x("div", {
247
+ /* @__PURE__ */ T("div", {
251
248
  className: "flex justify-between",
252
- children: [/* @__PURE__ */ b("span", {
249
+ children: [/* @__PURE__ */ w("span", {
253
250
  className: "text-text-secondary",
254
251
  children: "Subtotal"
255
- }), /* @__PURE__ */ b("span", {
252
+ }), /* @__PURE__ */ w("span", {
256
253
  className: "text-text-primary",
257
- children: o(E.subtotal, { minimumFractionDigits: 0 })
254
+ children: c(M.subtotal, { minimumFractionDigits: 0 })
258
255
  })]
259
256
  }),
260
- /* @__PURE__ */ x("div", {
257
+ /* @__PURE__ */ T("div", {
261
258
  className: "flex justify-between",
262
- children: [/* @__PURE__ */ b("span", {
259
+ children: [/* @__PURE__ */ w("span", {
263
260
  className: "text-text-secondary",
264
261
  children: "Delivery Fee"
265
- }), /* @__PURE__ */ b("span", {
262
+ }), /* @__PURE__ */ w("span", {
266
263
  className: "text-text-primary",
267
- children: E.deliveryFee === 0 ? "FREE" : o(E.deliveryFee, { minimumFractionDigits: 0 })
264
+ children: M.deliveryFee === 0 ? "FREE" : c(M.deliveryFee, { minimumFractionDigits: 0 })
268
265
  })]
269
266
  }),
270
- /* @__PURE__ */ x("div", {
267
+ /* @__PURE__ */ T("div", {
271
268
  className: "flex justify-between",
272
- children: [/* @__PURE__ */ b("span", {
269
+ children: [/* @__PURE__ */ w("span", {
273
270
  className: "text-text-secondary",
274
271
  children: "Tax"
275
- }), /* @__PURE__ */ b("span", {
272
+ }), /* @__PURE__ */ w("span", {
276
273
  className: "text-text-primary",
277
- children: o(E.taxes, { minimumFractionDigits: 0 })
274
+ children: c(M.taxes, { minimumFractionDigits: 0 })
278
275
  })]
279
276
  }),
280
- E.discount != null && E.discount > 0 && /* @__PURE__ */ x("div", {
277
+ M.discount != null && M.discount > 0 && /* @__PURE__ */ T("div", {
281
278
  className: "flex justify-between",
282
- children: [/* @__PURE__ */ b("span", {
279
+ children: [/* @__PURE__ */ w("span", {
283
280
  className: "text-status-success-text",
284
281
  children: "Discount"
285
- }), /* @__PURE__ */ x("span", {
282
+ }), /* @__PURE__ */ T("span", {
286
283
  className: "text-status-success-text",
287
- children: ["-", o(E.discount, { minimumFractionDigits: 0 })]
284
+ children: ["-", c(M.discount, { minimumFractionDigits: 0 })]
288
285
  })]
289
286
  }),
290
- /* @__PURE__ */ x("div", {
287
+ /* @__PURE__ */ T("div", {
291
288
  className: "flex justify-between border-t border-border-subtle pt-2.5",
292
- children: [/* @__PURE__ */ b("span", {
289
+ children: [/* @__PURE__ */ w("span", {
293
290
  className: "font-semibold text-text-primary",
294
291
  children: "Total"
295
- }), /* @__PURE__ */ b("span", {
292
+ }), /* @__PURE__ */ w("span", {
296
293
  className: "font-bold text-text-primary",
297
- children: o(E.total, { minimumFractionDigits: 0 })
294
+ children: c(M.total, { minimumFractionDigits: 0 })
298
295
  })]
299
296
  })
300
297
  ]
301
298
  })]
302
299
  }),
303
- /* @__PURE__ */ x("div", {
300
+ /* @__PURE__ */ T("div", {
304
301
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
305
- children: [/* @__PURE__ */ b("h3", {
302
+ children: [/* @__PURE__ */ w("h3", {
306
303
  className: "text-base font-semibold text-text-primary mb-3",
307
304
  children: "Booking Info"
308
- }), /* @__PURE__ */ x("div", {
305
+ }), /* @__PURE__ */ T("div", {
309
306
  className: "space-y-3",
310
- children: [/* @__PURE__ */ x("div", {
307
+ children: [/* @__PURE__ */ T("div", {
311
308
  className: "flex items-center gap-2",
312
- children: [/* @__PURE__ */ b(d, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
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__ */ b("p", {
312
+ }), /* @__PURE__ */ w("p", {
316
313
  className: "text-sm text-text-primary",
317
- children: s(E.orderDate)
314
+ children: l(M.orderDate)
318
315
  })] })]
319
- }), /* @__PURE__ */ x("div", {
316
+ }), /* @__PURE__ */ T("div", {
320
317
  className: "flex items-center gap-2",
321
- children: [/* @__PURE__ */ b(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
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__ */ x("p", {
321
+ }), /* @__PURE__ */ T("p", {
325
322
  className: "text-sm text-text-primary capitalize",
326
323
  children: [
327
- E.paymentMethod,
324
+ M.paymentMethod,
328
325
  " · ",
329
- E.paymentStatus
326
+ M.paymentStatus
330
327
  ]
331
328
  })] })]
332
329
  })]
333
330
  })]
334
331
  }),
335
- P && /* @__PURE__ */ x("button", {
332
+ J && /* @__PURE__ */ T("button", {
336
333
  type: "button",
337
- className: "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 hover:bg-status-error-bg-subtle transition-colors",
338
- children: [/* @__PURE__ */ b(v, { className: "h-4 w-4" }), "Cancel Booking"]
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 { w as BookingDetailsPage };
447
+ export { k as BookingDetailsPage };
348
448
 
349
449
  //# sourceMappingURL=BookingDetailsPage.js.map