@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.
Files changed (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. package/package.json +1 -1
@@ -1,66 +1,49 @@
1
1
  import { useKadaikodi as e } from "../../context/KadaikodiContext.js";
2
2
  import { cn as t } from "../../utils/cn.js";
3
3
  import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { StatusBadge as r } from "../../components/StatusBadge.js";
5
- import { EmptyState as i } from "../../components/EmptyState.js";
6
- import { useUpdateWorkerTaskStatus as a, useWorkerTasks as o } from "../../hooks/useKadaikodiApi.js";
4
+ import { EmptyState as r } from "../../components/EmptyState.js";
5
+ import { useUpdateWorkerTask as i, useUpdateWorkerTaskStatus as a, useWorkerTasks as o } from "../../hooks/useKadaikodiApi.js";
7
6
  import { formatCurrency as s, formatDate as c } from "../../utils/formatters.js";
8
- import { useEffect as ee, useMemo as l, useState as u } from "react";
9
- import { AlertTriangle as d, ArrowLeft as f, Boxes as p, Camera as m, CheckCircle2 as h, ChefHat as g, Circle as _, Clock as v, FileText as y, IndianRupee as b, Loader2 as x, MapPin as S, Navigation as C, Package as w, Phone as T, PlayCircle as E, Save as D, ShoppingBag as O, Sparkles as k, StickyNote as te, Timer as A, Truck as j, User as M } from "lucide-react";
10
- import { useParams as N } from "react-router-dom";
11
- import { jsx as P, jsxs as F } from "react/jsx-runtime";
12
- import { EmphasisPanel as I, NextSteps as L, PagePurpose as R } from "@burdenoff/fe-libs/ui";
7
+ import { Timeline as l } from "../../components/viz/Timeline.js";
8
+ import { StepProgress as u } from "../../components/viz/StepProgress.js";
9
+ import "../../components/viz/index.js";
10
+ import { useEffect as d, useMemo as f, useState as p } from "react";
11
+ import { AlertTriangle as m, ArrowLeft as ee, CheckCircle2 as te, Clock as h, FileText as g, IndianRupee as _, Loader2 as v, MapPin as y, Navigation as b, Package as x, Phone as S, ShoppingBag as C, ShoppingCart as w, StickyNote as T, Truck as E, User as D } from "lucide-react";
12
+ import { useParams as O } from "react-router-dom";
13
+ import { jsx as k, jsxs as A } from "react/jsx-runtime";
14
+ import { GlassCard as j, PagePurpose as M } from "@burdenoff/fe-libs/ui";
13
15
  //#region src/kadaikodi/pages/worker/TaskDetailsPage.tsx
14
- function z(e) {
16
+ var N = {
17
+ delivery: "Delivery",
18
+ pickup: "Pickup",
19
+ service: "Service"
20
+ };
21
+ function P(e) {
15
22
  switch (e) {
16
- case "delivery": return j;
17
- case "preparation": return g;
18
- case "inventory": return p;
19
- case "cleanup": return k;
20
- case "pickup": return O;
21
- case "service": return w;
22
- default: return y;
23
+ case "delivery": return E;
24
+ case "pickup": return C;
25
+ case "service": return x;
26
+ default: return g;
23
27
  }
24
28
  }
25
- function B(e) {
29
+ function F(e) {
26
30
  switch (e) {
27
- case "urgent": return "bg-status-error-bg-subtle text-status-error-text";
28
- case "high": return "bg-status-warning-bg-subtle text-status-warning-text";
31
+ case "urgent":
32
+ case "high": return "bg-status-error-bg-subtle text-status-error-text";
29
33
  case "medium": return "bg-status-warning-bg-subtle text-status-warning-text";
30
34
  case "low": return "bg-status-success-bg-subtle text-status-success-text";
31
35
  default: return "bg-bg-sunken text-text-secondary";
32
36
  }
33
37
  }
34
- function V(e) {
35
- return [
36
- {
37
- status: "assigned",
38
- label: "Task Assigned",
39
- timestamp: e.assignedTime || null,
40
- completed: !0
41
- },
42
- {
43
- status: "in_progress",
44
- label: "Work Started",
45
- timestamp: null,
46
- completed: e.status === "in_progress" || e.status === "completed"
47
- },
48
- {
49
- status: "completed",
50
- label: "Task Completed",
51
- timestamp: e.status === "completed" ? e.completedAt ?? null : null,
52
- completed: e.status === "completed"
53
- }
54
- ];
55
- }
56
- function H(e) {
57
- return new Date(e).toLocaleTimeString("en-IN", {
38
+ function I(e) {
39
+ let t = new Date(e);
40
+ return Number.isNaN(t.getTime()) ? e : t.toLocaleTimeString("en-IN", {
58
41
  hour: "numeric",
59
42
  minute: "2-digit",
60
43
  hour12: !0
61
44
  });
62
45
  }
63
- function U(e) {
46
+ function L(e) {
64
47
  let t = e.deliveryAddress ? [
65
48
  e.deliveryAddress.street,
66
49
  e.deliveryAddress.area,
@@ -89,443 +72,457 @@ function U(e) {
89
72
  phone: e.customerPhone,
90
73
  address: t
91
74
  },
92
- orderItems: [],
93
75
  specialInstructions: e.notes ?? void 0,
94
76
  notes: e.notes ?? "",
95
77
  completedAt: e.completedAt
96
78
  };
97
79
  }
98
- function W() {
99
- let { taskId: p } = N(), { navigateTo: g, currentUser: w } = e(), { data: k = [], isLoading: j } = o(w?.id ?? ""), W = a(), [G, K] = u(null), [q, J] = u("");
100
- ee(() => {
101
- let e = k.find((e) => e.id === p);
80
+ var R = [
81
+ { label: "Assigned" },
82
+ { label: "Picked Up" },
83
+ { label: "Delivered" }
84
+ ];
85
+ function z(e) {
86
+ switch (e) {
87
+ case "pending": return 1;
88
+ case "in_progress": return 2;
89
+ case "completed": return 3;
90
+ default: return 0;
91
+ }
92
+ }
93
+ function B({ pickupLabel: e, dropLabel: t, distance: n }) {
94
+ return /* @__PURE__ */ A("div", {
95
+ className: "relative overflow-hidden rounded-[var(--radius-card)] border border-border-subtle bg-bg-sunken",
96
+ children: [
97
+ /* @__PURE__ */ A("svg", {
98
+ viewBox: "0 0 400 190",
99
+ className: "block w-full",
100
+ role: "img",
101
+ "aria-label": `Illustrative route from ${e} to ${t}`,
102
+ children: [
103
+ /* @__PURE__ */ A("g", {
104
+ stroke: "var(--color-border-subtle)",
105
+ strokeWidth: "1",
106
+ opacity: "0.7",
107
+ children: [/* @__PURE__ */ k("path", { d: "M0 45 H400 M0 95 H400 M0 145 H400" }), /* @__PURE__ */ k("path", { d: "M70 0 V190 M160 0 V190 M250 0 V190 M330 0 V190" })]
108
+ }),
109
+ /* @__PURE__ */ k("path", {
110
+ d: "M70 55 H150 Q165 55 165 70 V120 Q165 135 180 135 H300",
111
+ fill: "none",
112
+ stroke: "var(--color-accent-primary)",
113
+ strokeWidth: "3.5",
114
+ strokeLinecap: "round",
115
+ strokeLinejoin: "round",
116
+ strokeDasharray: "1 0"
117
+ }),
118
+ /* @__PURE__ */ k("circle", {
119
+ cx: "70",
120
+ cy: "55",
121
+ r: "7",
122
+ fill: "var(--color-accent-primary)"
123
+ }),
124
+ /* @__PURE__ */ k("circle", {
125
+ cx: "70",
126
+ cy: "55",
127
+ r: "12",
128
+ fill: "var(--color-accent-primary)",
129
+ opacity: "0.18"
130
+ }),
131
+ /* @__PURE__ */ k("circle", {
132
+ cx: "300",
133
+ cy: "135",
134
+ r: "7",
135
+ fill: "var(--color-status-success-text)"
136
+ }),
137
+ /* @__PURE__ */ k("circle", {
138
+ cx: "300",
139
+ cy: "135",
140
+ r: "12",
141
+ fill: "var(--color-status-success-text)",
142
+ opacity: "0.18"
143
+ })
144
+ ]
145
+ }),
146
+ /* @__PURE__ */ A("div", {
147
+ className: "pointer-events-none absolute left-3 top-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur",
148
+ children: [/* @__PURE__ */ k(x, { className: "h-3.5 w-3.5 text-accent-primary" }), /* @__PURE__ */ k("span", {
149
+ className: "max-w-[9rem] truncate text-[11px] font-medium text-text-primary",
150
+ children: e
151
+ })]
152
+ }),
153
+ /* @__PURE__ */ A("div", {
154
+ className: "pointer-events-none absolute bottom-3 right-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur",
155
+ children: [/* @__PURE__ */ k(y, { className: "h-3.5 w-3.5 text-status-success-text" }), /* @__PURE__ */ k("span", {
156
+ className: "max-w-[9rem] truncate text-[11px] font-medium text-text-primary",
157
+ children: t
158
+ })]
159
+ }),
160
+ /* @__PURE__ */ A("div", {
161
+ className: "flex items-center justify-between border-t border-border-subtle px-3 py-2",
162
+ children: [/* @__PURE__ */ k("span", {
163
+ className: "text-[11px] text-text-muted",
164
+ children: "Illustrative route · not to scale"
165
+ }), n != null && /* @__PURE__ */ A("span", {
166
+ className: "text-[11px] font-medium text-text-secondary tabular-nums",
167
+ children: [n, " km"]
168
+ })]
169
+ })
170
+ ]
171
+ });
172
+ }
173
+ function V() {
174
+ let { taskId: y } = O(), { navigateTo: x, currentUser: C } = e(), { data: E = [], isLoading: V } = o(C?.id ?? ""), H = a(), U = i(), [W, G] = p(null), [K, q] = p(""), [J, Y] = p(!1);
175
+ d(() => {
176
+ let e = E.find((e) => e.id === y);
102
177
  if (e) {
103
- let t = U(e);
104
- K(t), J(t.notes ?? "");
105
- } else K(null);
106
- }, [k, p]);
107
- let Y = () => {
108
- G && (K({
109
- ...G,
178
+ let t = L(e);
179
+ G(t), q(t.notes ?? "");
180
+ } else G(null);
181
+ }, [E, y]);
182
+ let X = () => {
183
+ W && (W.status === "pending" ? (G({
184
+ ...W,
110
185
  status: "in_progress"
111
- }), W.mutate({
112
- taskId: G.id,
186
+ }), H.mutate({
187
+ taskId: W.id,
113
188
  status: "IN_PROGRESS"
114
- }));
115
- }, X = () => {
116
- G && (K({
117
- ...G,
189
+ })) : W.status === "in_progress" && (G({
190
+ ...W,
118
191
  status: "completed"
119
- }), W.mutate({
120
- taskId: G.id,
192
+ }), H.mutate({
193
+ taskId: W.id,
121
194
  status: "COMPLETED"
122
- }));
195
+ })));
123
196
  }, Z = () => {
124
- G?.customerInfo?.phone && (window.location.href = `tel:${G.customerInfo.phone.replace(/\s/g, "")}`);
125
- }, Q = () => {
126
- if (G?.customerInfo?.address) {
127
- let e = encodeURIComponent(G.customerInfo.address);
128
- window.open(`https://maps.google.com?q=${e}`, "_blank");
197
+ W?.customerInfo?.phone && (window.location.href = `tel:${W.customerInfo.phone.replace(/\s/g, "")}`);
198
+ }, Q = (e) => {
199
+ e && window.open(`https://maps.google.com?q=${encodeURIComponent(e)}`, "_blank");
200
+ }, $ = () => {
201
+ W && (Y(!1), U.mutate({
202
+ taskId: W.id,
203
+ notes: K
204
+ }, { onSuccess: () => {
205
+ G((e) => e && {
206
+ ...e,
207
+ notes: K
208
+ }), Y(!0);
209
+ } }));
210
+ }, ne = f(() => W ? [
211
+ {
212
+ title: "Task assigned",
213
+ time: W.assignedTime ? I(W.assignedTime) : void 0,
214
+ meta: W.assignedBy || void 0,
215
+ tone: "success"
216
+ },
217
+ {
218
+ title: "Picked up",
219
+ time: W.status === "in_progress" || W.status === "completed" ? "Done" : void 0,
220
+ tone: W.status === "in_progress" || W.status === "completed" ? "success" : "muted"
221
+ },
222
+ {
223
+ title: "Delivered",
224
+ time: W.status === "completed" ? W.completedAt ? I(W.completedAt) : "Done" : void 0,
225
+ tone: W.status === "completed" ? "success" : "muted"
129
226
  }
130
- }, ne = () => {
131
- G && (K({
132
- ...G,
133
- notes: q
134
- }), alert("Notes saved successfully"));
135
- }, $ = l(() => G ? V(G) : [], [G]);
136
- if (j) return /* @__PURE__ */ P(n, {
227
+ ] : [], [W]);
228
+ if (V) return /* @__PURE__ */ k(n, {
137
229
  title: "Task Details",
138
- children: /* @__PURE__ */ P("div", {
230
+ children: /* @__PURE__ */ k("div", {
139
231
  className: "flex items-center justify-center py-24",
140
- children: /* @__PURE__ */ F("div", {
232
+ children: /* @__PURE__ */ A("div", {
141
233
  className: "text-center",
142
- children: [/* @__PURE__ */ P(x, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ P("p", {
234
+ children: [/* @__PURE__ */ k(v, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ k("p", {
143
235
  className: "text-sm text-text-secondary",
144
236
  children: "Loading task details..."
145
237
  })]
146
238
  })
147
239
  })
148
240
  });
149
- if (!G) return /* @__PURE__ */ P(n, {
241
+ if (!W) return /* @__PURE__ */ k(n, {
150
242
  title: "Task Not Found",
151
- children: /* @__PURE__ */ P(i, {
152
- icon: /* @__PURE__ */ P(y, { className: "h-12 w-12" }),
243
+ children: /* @__PURE__ */ k(r, {
244
+ icon: /* @__PURE__ */ k(g, { className: "h-12 w-12" }),
153
245
  title: "Task not found",
154
- description: `No task found with ID "${p}".`,
155
- action: /* @__PURE__ */ P("button", {
246
+ description: `No task found with ID "${y}".`,
247
+ action: /* @__PURE__ */ k("button", {
156
248
  type: "button",
157
- onClick: () => g("/worker/orders"),
158
- className: "rounded-lg bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors",
249
+ onClick: () => x("/worker/orders"),
250
+ className: "rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg-hover transition-colors",
159
251
  children: "View All Orders"
160
252
  })
161
253
  })
162
254
  });
163
- let re = z(G.type);
164
- return /* @__PURE__ */ F(n, {
165
- title: /* @__PURE__ */ F("div", {
166
- className: "flex items-center gap-3",
167
- children: [/* @__PURE__ */ P("button", {
255
+ let re = P(W.type), ie = N[W.type] ?? "Task", ae = W.cartName || "Pickup", oe = W.customerInfo.address || W.customerInfo.name || "Drop-off", se = W.status === "pending" ? "Mark Picked Up" : W.status === "in_progress" ? "Mark Delivered" : "Delivered";
256
+ return /* @__PURE__ */ A(n, {
257
+ title: /* @__PURE__ */ A("div", {
258
+ className: "flex items-center gap-3 min-w-0",
259
+ children: [/* @__PURE__ */ k("button", {
168
260
  type: "button",
169
- onClick: () => g("/worker/orders"),
170
- className: "rounded-md p-1 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
171
- children: /* @__PURE__ */ P(f, { className: "h-5 w-5" })
172
- }), /* @__PURE__ */ P("span", { children: "Task Details" })]
261
+ onClick: () => x("/worker/orders"),
262
+ className: "rounded-md p-1 text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors shrink-0",
263
+ "aria-label": "Back to orders",
264
+ children: /* @__PURE__ */ k(ee, { className: "h-5 w-5" })
265
+ }), /* @__PURE__ */ A("span", {
266
+ className: "truncate",
267
+ children: [ie, W.orderId ? /* @__PURE__ */ A("span", {
268
+ className: "text-text-secondary",
269
+ children: [" · #", W.orderId]
270
+ }) : null]
271
+ })]
173
272
  }),
174
- description: "Manage and track your assigned task",
175
- children: [
176
- /* @__PURE__ */ P(R, {
177
- className: "mb-6",
178
- children: "Everything you need to complete one assigned task, in order. Use this page to see exactly what to do, reach the customer, navigate to their location, jot down notes, and mark the task started and then completed as you go — so nothing gets missed and your completion stats stay strong."
179
- }),
180
- /* @__PURE__ */ P(L, {
181
- storageKey: "kadaikodi-task-details",
182
- className: "mb-6",
183
- steps: [
184
- {
185
- id: "navigate",
186
- label: "Head to the location",
187
- description: "Open directions to the customer.",
188
- onClick: Q
189
- },
190
- {
191
- id: "call",
192
- label: "Call the customer",
193
- description: "Confirm details before you start.",
194
- onClick: Z
195
- },
196
- {
197
- id: "start",
198
- label: G.status === "completed" ? "Task completed" : "Start & complete the task",
199
- description: G.status === "completed" ? "This task is done — nice work." : "Mark it started, then completed when finished.",
200
- onClick: G.status === "completed" ? X : Y,
201
- done: G.status === "completed"
202
- }
203
- ]
204
- }),
205
- /* @__PURE__ */ F("div", {
206
- className: "space-y-6",
207
- children: [/* @__PURE__ */ F(I, { children: [/* @__PURE__ */ F("div", {
208
- className: "flex items-start justify-between mb-4",
209
- children: [/* @__PURE__ */ F("div", {
210
- className: "flex items-start gap-3",
211
- children: [/* @__PURE__ */ P("div", {
212
- className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
213
- children: /* @__PURE__ */ P(re, { className: "h-5 w-5 text-text-secondary" })
214
- }), /* @__PURE__ */ F("div", { children: [
215
- /* @__PURE__ */ P("h2", {
216
- className: "text-xl font-bold text-text-primary",
217
- children: G.title
218
- }),
219
- /* @__PURE__ */ P("p", {
220
- className: "text-sm text-text-secondary mt-1",
221
- children: G.description
222
- }),
223
- /* @__PURE__ */ F("div", {
224
- className: "flex flex-wrap items-center gap-2 mt-3",
273
+ description: "Everything you need to complete this delivery",
274
+ children: [/* @__PURE__ */ k(M, {
275
+ className: "mb-6",
276
+ children: "One delivery, start to finish. Reach the customer, follow the route, jot a note, and advance the job — mark it picked up, then delivered — so nothing gets missed and your completion stats stay strong."
277
+ }), /* @__PURE__ */ A("div", {
278
+ className: "space-y-6",
279
+ children: [/* @__PURE__ */ A(j, {
280
+ treatment: "metric",
281
+ className: "p-5",
282
+ children: [/* @__PURE__ */ A("div", {
283
+ className: "mb-4 flex flex-wrap items-center gap-2",
284
+ children: [
285
+ /* @__PURE__ */ k("span", {
286
+ className: "flex h-8 w-8 items-center justify-center rounded-lg bg-accent-primary/12 text-accent-primary",
287
+ children: /* @__PURE__ */ k(re, { className: "h-4.5 w-4.5" })
288
+ }),
289
+ /* @__PURE__ */ k("h2", {
290
+ className: "text-base font-semibold text-text-primary",
291
+ children: W.title
292
+ }),
293
+ /* @__PURE__ */ k("span", {
294
+ className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium uppercase", F(W.priority)),
295
+ children: W.priority
296
+ })
297
+ ]
298
+ }), /* @__PURE__ */ k(u, {
299
+ steps: R,
300
+ current: z(W.status)
301
+ })]
302
+ }), /* @__PURE__ */ A("div", {
303
+ className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
304
+ children: [/* @__PURE__ */ A("div", {
305
+ className: "lg:col-span-2 space-y-6",
306
+ children: [
307
+ /* @__PURE__ */ k(B, {
308
+ pickupLabel: ae,
309
+ dropLabel: oe,
310
+ distance: W.distance
311
+ }),
312
+ /* @__PURE__ */ A("div", {
313
+ className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
314
+ children: [/* @__PURE__ */ A(j, {
315
+ className: "p-5",
225
316
  children: [
226
- /* @__PURE__ */ P("span", {
227
- className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium uppercase", B(G.priority)),
228
- children: G.priority
317
+ /* @__PURE__ */ k("p", {
318
+ className: "text-xs font-medium uppercase tracking-wide text-text-muted",
319
+ children: "Pickup"
229
320
  }),
230
- /* @__PURE__ */ P(r, { status: G.status }),
231
- G.estimatedTime > 0 && /* @__PURE__ */ F("span", {
232
- className: "text-xs text-text-secondary flex items-center gap-1",
233
- children: [
234
- /* @__PURE__ */ P(v, { className: "h-3 w-3" }),
235
- G.estimatedTime,
236
- " min"
237
- ]
238
- })
239
- ]
240
- })
241
- ] })]
242
- }), (G.assignedBy || G.assignedTime) && /* @__PURE__ */ F("div", {
243
- className: "text-right shrink-0",
244
- children: [
245
- /* @__PURE__ */ P("p", {
246
- className: "text-xs text-text-secondary",
247
- children: "Assigned"
248
- }),
249
- G.assignedBy && /* @__PURE__ */ P("p", {
250
- className: "text-sm font-medium text-text-primary",
251
- children: G.assignedBy
252
- }),
253
- G.assignedTime && /* @__PURE__ */ P("p", {
254
- className: "text-xs text-text-secondary mt-1",
255
- children: H(G.assignedTime)
256
- })
257
- ]
258
- })]
259
- }), G.dueTime && G.status !== "completed" && /* @__PURE__ */ P("div", {
260
- className: "rounded-md bg-status-warning-bg-subtle border border-status-warning-text/20 p-3",
261
- children: /* @__PURE__ */ F("div", {
262
- className: "flex items-center gap-2",
263
- children: [/* @__PURE__ */ P(A, { className: "h-4 w-4 text-status-warning-text shrink-0" }), /* @__PURE__ */ F("span", {
264
- className: "text-xs font-medium text-status-warning-text",
265
- children: ["Due by ", H(G.dueTime)]
266
- })]
267
- })
268
- })] }), /* @__PURE__ */ F("div", {
269
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
270
- children: [/* @__PURE__ */ F("div", {
271
- className: "lg:col-span-2 space-y-6",
272
- children: [
273
- /* @__PURE__ */ F("div", {
274
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
275
- children: [/* @__PURE__ */ P("h3", {
276
- className: "text-base font-semibold text-text-primary mb-4",
277
- children: "Customer Information"
278
- }), /* @__PURE__ */ F("div", {
279
- className: "grid grid-cols-1 md:grid-cols-2 gap-5",
280
- children: [/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("div", {
281
- className: "space-y-3",
282
- children: /* @__PURE__ */ F("div", {
283
- className: "flex items-center gap-3",
284
- children: [/* @__PURE__ */ P("div", {
285
- className: "flex h-10 w-10 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
286
- children: /* @__PURE__ */ P(M, { className: "h-5 w-5" })
287
- }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
288
- className: "text-sm font-medium text-text-primary",
289
- children: G.customerInfo.name
290
- }), /* @__PURE__ */ P("p", {
291
- className: "text-xs text-text-secondary",
292
- children: G.customerInfo.phone
293
- })] })]
294
- })
295
- }), /* @__PURE__ */ F("div", {
296
- className: "flex gap-2 mt-4",
297
- children: [/* @__PURE__ */ F("button", {
298
- type: "button",
299
- onClick: Z,
300
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
301
- children: [/* @__PURE__ */ P(T, { className: "h-3.5 w-3.5" }), "Call Customer"]
302
- }), /* @__PURE__ */ F("button", {
321
+ /* @__PURE__ */ k("p", {
322
+ className: "mt-1 text-sm font-semibold text-text-primary",
323
+ children: W.cartName
324
+ }),
325
+ W.location && /* @__PURE__ */ k("p", {
326
+ className: "mt-0.5 text-xs text-text-secondary",
327
+ children: W.location
328
+ }),
329
+ /* @__PURE__ */ k("div", {
330
+ className: "mt-4",
331
+ children: /* @__PURE__ */ A("button", {
303
332
  type: "button",
304
- onClick: Q,
305
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
306
- children: [/* @__PURE__ */ P(C, { className: "h-3.5 w-3.5" }), "Navigate"]
307
- })]
308
- })] }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
309
- className: "text-xs text-text-secondary mb-2",
310
- children: "Delivery Address"
311
- }), /* @__PURE__ */ P("div", {
312
- className: "rounded-md bg-bg-sunken/50 p-3",
313
- children: /* @__PURE__ */ F("p", {
314
- className: "text-xs text-text-primary flex items-start gap-2",
315
- children: [/* @__PURE__ */ P(S, { className: "h-3.5 w-3.5 shrink-0 mt-0.5 text-text-secondary" }), G.customerInfo.address]
333
+ onClick: () => Q(W.location || W.cartName),
334
+ className: "inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
335
+ children: [/* @__PURE__ */ k(b, { className: "h-3.5 w-3.5" }), "Navigate"]
316
336
  })
317
- })] })]
318
- })]
319
- }),
320
- G.orderItems.length > 0 && /* @__PURE__ */ F("div", {
321
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
322
- children: [/* @__PURE__ */ P("h3", {
323
- className: "text-base font-semibold text-text-primary mb-3",
324
- children: "Order Items"
325
- }), /* @__PURE__ */ P("div", {
326
- className: "space-y-2",
327
- children: G.orderItems.map((e, t) => /* @__PURE__ */ P("div", {
328
- className: "flex items-start justify-between p-3 rounded-md bg-bg-sunken/50",
329
- children: /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ F("p", {
330
- className: "text-sm font-medium text-text-primary",
331
- children: [
332
- e.quantity,
333
- "x ",
334
- e.name
335
- ]
336
- }), e.specialInstructions && /* @__PURE__ */ F("p", {
337
- className: "text-xs text-text-secondary mt-0.5",
338
- children: ["Note: ", e.specialInstructions]
339
- })] })
340
- }, t))
341
- })]
342
- }),
343
- G.specialInstructions && /* @__PURE__ */ F("div", {
344
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
345
- children: [/* @__PURE__ */ P("h3", {
346
- className: "text-base font-semibold text-text-primary mb-3",
347
- children: "Special Instructions"
348
- }), /* @__PURE__ */ P("div", {
349
- className: "rounded-md bg-status-warning-bg-subtle border border-status-warning-text/20 p-4",
350
- children: /* @__PURE__ */ F("p", {
351
- className: "text-sm text-status-warning-text flex items-start gap-2",
352
- children: [/* @__PURE__ */ P(d, { className: "h-4 w-4 shrink-0 mt-0.5 text-status-warning-text" }), G.specialInstructions]
353
337
  })
354
- })]
355
- }),
356
- G.photos && G.photos.length > 0 && /* @__PURE__ */ F("div", {
357
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
358
- children: [/* @__PURE__ */ F("h3", {
359
- className: "text-base font-semibold text-text-primary flex items-center gap-2 mb-3",
360
- children: [/* @__PURE__ */ P(m, { className: "h-4 w-4 text-text-secondary" }), "Reference Photos"]
361
- }), /* @__PURE__ */ P("div", {
362
- className: "grid grid-cols-2 md:grid-cols-3 gap-3",
363
- children: G.photos.map((e, t) => /* @__PURE__ */ P("img", {
364
- src: e,
365
- alt: `Reference ${t + 1}`,
366
- className: "w-full h-32 object-cover rounded-lg border border-border-subtle"
367
- }, t))
368
- })]
369
- }),
370
- /* @__PURE__ */ F("div", {
371
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
338
+ ]
339
+ }), /* @__PURE__ */ A(j, {
340
+ className: "p-5",
372
341
  children: [
373
- /* @__PURE__ */ F("h3", {
374
- className: "text-base font-semibold text-text-primary flex items-center gap-2 mb-3",
375
- children: [/* @__PURE__ */ P(te, { className: "h-4 w-4 text-text-secondary" }), "Task Notes"]
342
+ /* @__PURE__ */ k("p", {
343
+ className: "text-xs font-medium uppercase tracking-wide text-text-muted",
344
+ children: "Drop"
345
+ }),
346
+ /* @__PURE__ */ k("p", {
347
+ className: "mt-1 text-sm font-semibold text-text-primary",
348
+ children: W.customerInfo.name || "Customer"
349
+ }),
350
+ W.customerInfo.address && /* @__PURE__ */ k("p", {
351
+ className: "mt-0.5 text-xs text-text-secondary",
352
+ children: W.customerInfo.address
376
353
  }),
377
- /* @__PURE__ */ P("textarea", {
378
- value: q,
379
- onChange: (e) => J(e.target.value),
380
- placeholder: "Add your notes about this task...",
381
- rows: 4,
382
- className: "w-full rounded-md 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-border-focus/40 resize-none"
354
+ W.customerInfo.phone && /* @__PURE__ */ k("p", {
355
+ className: "mt-0.5 text-xs text-text-secondary",
356
+ children: W.customerInfo.phone
383
357
  }),
384
- /* @__PURE__ */ F("button", {
385
- type: "button",
386
- onClick: ne,
387
- className: "mt-3 inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
388
- children: [/* @__PURE__ */ P(D, { className: "h-3.5 w-3.5" }), "Save Notes"]
358
+ /* @__PURE__ */ A("div", {
359
+ className: "mt-4 flex gap-2",
360
+ children: [W.customerInfo.phone && /* @__PURE__ */ A("button", {
361
+ type: "button",
362
+ onClick: Z,
363
+ className: "inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
364
+ children: [/* @__PURE__ */ k(S, { className: "h-3.5 w-3.5" }), "Call"]
365
+ }), W.customerInfo.address && /* @__PURE__ */ A("button", {
366
+ type: "button",
367
+ onClick: () => Q(W.customerInfo.address),
368
+ className: "inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
369
+ children: [/* @__PURE__ */ k(b, { className: "h-3.5 w-3.5" }), "Navigate"]
370
+ })]
389
371
  })
390
372
  ]
373
+ })]
374
+ }),
375
+ /* @__PURE__ */ k(j, {
376
+ treatment: "insight",
377
+ className: "p-5",
378
+ children: /* @__PURE__ */ A("div", {
379
+ className: "flex flex-wrap items-center justify-between gap-3",
380
+ children: [/* @__PURE__ */ A("div", {
381
+ className: "flex items-center gap-3",
382
+ children: [/* @__PURE__ */ k("span", {
383
+ className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle text-status-success-text",
384
+ children: /* @__PURE__ */ k(_, { className: "h-4.5 w-4.5" })
385
+ }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("p", {
386
+ className: "text-xs text-text-secondary",
387
+ children: "You earn"
388
+ }), /* @__PURE__ */ k("p", {
389
+ className: "text-lg font-bold text-text-primary",
390
+ children: s(W.earnings, { minimumFractionDigits: 0 })
391
+ })] })]
392
+ }), /* @__PURE__ */ A("div", {
393
+ className: "flex flex-wrap items-center gap-4 text-sm",
394
+ children: [/* @__PURE__ */ A("span", {
395
+ className: "flex items-center gap-1.5 text-text-secondary",
396
+ children: [/* @__PURE__ */ k(w, { className: "h-4 w-4" }), W.cartName]
397
+ }), W.dueTime && /* @__PURE__ */ A("span", {
398
+ className: "flex items-center gap-1.5 text-text-secondary",
399
+ children: [
400
+ /* @__PURE__ */ k(h, { className: "h-4 w-4" }),
401
+ "Due ",
402
+ I(W.dueTime)
403
+ ]
404
+ })]
405
+ })]
391
406
  })
392
- ]
393
- }), /* @__PURE__ */ F("div", {
394
- className: "space-y-6",
395
- children: [
396
- /* @__PURE__ */ F("div", {
397
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
398
- children: [/* @__PURE__ */ P("h3", {
399
- className: "text-base font-semibold text-text-primary mb-3",
400
- children: "Task Details"
401
- }), /* @__PURE__ */ F("div", {
402
- className: "space-y-3",
407
+ }),
408
+ W.specialInstructions && /* @__PURE__ */ k("div", {
409
+ className: "rounded-[var(--radius-card)] border border-status-warning-text/20 bg-status-warning-bg-subtle p-4",
410
+ children: /* @__PURE__ */ A("p", {
411
+ className: "text-sm text-status-warning-text flex items-start gap-2",
412
+ children: [/* @__PURE__ */ k(m, { className: "h-4 w-4 shrink-0 mt-0.5" }), W.specialInstructions]
413
+ })
414
+ }),
415
+ /* @__PURE__ */ A(j, {
416
+ className: "p-5",
417
+ children: [
418
+ /* @__PURE__ */ A("h3", {
419
+ className: "mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary",
420
+ children: [/* @__PURE__ */ k(T, { className: "h-4 w-4 text-text-secondary" }), "Delivery note"]
421
+ }),
422
+ /* @__PURE__ */ k("textarea", {
423
+ value: K,
424
+ onChange: (e) => {
425
+ q(e.target.value), Y(!1);
426
+ },
427
+ placeholder: "Add a delivery note...",
428
+ rows: 3,
429
+ className: "w-full resize-none rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-border-focus/40"
430
+ }),
431
+ /* @__PURE__ */ A("div", {
432
+ className: "mt-3 flex items-center gap-3",
403
433
  children: [
404
- /* @__PURE__ */ F("div", {
405
- className: "flex items-center gap-2",
406
- children: [/* @__PURE__ */ P(y, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
407
- className: "text-xs text-text-secondary",
408
- children: "Order ID"
409
- }), /* @__PURE__ */ P("p", {
410
- className: "text-sm font-medium font-mono text-text-primary",
411
- children: G.orderId
412
- })] })]
413
- }),
414
- /* @__PURE__ */ F("div", {
415
- className: "flex items-center gap-2",
416
- children: [/* @__PURE__ */ P(O, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
417
- className: "text-xs text-text-secondary",
418
- children: "Cart"
419
- }), /* @__PURE__ */ P("p", {
420
- className: "text-sm font-medium text-text-primary",
421
- children: G.cartName
422
- })] })]
423
- }),
424
- G.dueTime && /* @__PURE__ */ F("div", {
425
- className: "flex items-center gap-2",
426
- children: [/* @__PURE__ */ P(v, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
427
- className: "text-xs text-text-secondary",
428
- children: "Due At"
429
- }), /* @__PURE__ */ P("p", {
430
- className: "text-sm text-text-primary",
431
- children: c(G.dueTime)
432
- })] })]
433
- }),
434
- /* @__PURE__ */ F("div", {
435
- className: "flex items-center gap-2",
436
- children: [/* @__PURE__ */ P(b, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
437
- className: "text-xs text-text-secondary",
438
- children: "Earnings"
439
- }), /* @__PURE__ */ P("p", {
440
- className: "text-sm font-medium text-status-success-text",
441
- children: s(G.earnings, { minimumFractionDigits: 0 })
442
- })] })]
434
+ /* @__PURE__ */ A("button", {
435
+ type: "button",
436
+ onClick: $,
437
+ disabled: U.isPending,
438
+ className: "inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-50",
439
+ children: [U.isPending ? /* @__PURE__ */ k(v, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ k(T, { className: "h-3.5 w-3.5" }), U.isPending ? "Saving..." : "Save note"]
443
440
  }),
444
- G.distance != null && /* @__PURE__ */ F("div", {
445
- className: "flex items-center gap-2",
446
- children: [/* @__PURE__ */ P(C, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
447
- className: "text-xs text-text-secondary",
448
- children: "Distance"
449
- }), /* @__PURE__ */ F("p", {
450
- className: "text-sm text-text-primary",
451
- children: [G.distance, " km"]
452
- })] })]
441
+ J && !U.isPending && /* @__PURE__ */ k("span", {
442
+ className: "text-xs text-status-success-text",
443
+ children: "Note saved"
453
444
  }),
454
- G.assignedTime && /* @__PURE__ */ F("div", {
455
- className: "flex items-center gap-2",
456
- children: [/* @__PURE__ */ P(v, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
457
- className: "text-xs text-text-secondary",
458
- children: "Assigned At"
459
- }), /* @__PURE__ */ P("p", {
460
- className: "text-sm text-text-primary",
461
- children: c(G.assignedTime)
462
- })] })]
445
+ U.isError && /* @__PURE__ */ k("span", {
446
+ className: "text-xs text-status-error-text",
447
+ children: "Couldn't save — retry"
463
448
  })
464
449
  ]
465
- })]
466
- }),
467
- /* @__PURE__ */ F("div", {
468
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
469
- children: [/* @__PURE__ */ P("h3", {
470
- className: "text-base font-semibold text-text-primary mb-4",
471
- children: "Status Timeline"
472
- }), /* @__PURE__ */ P("div", {
473
- className: "relative",
474
- children: $.map((e, n) => {
475
- let r = n === $.length - 1, i = e.completed ? h : _;
476
- return /* @__PURE__ */ F("div", {
477
- className: "flex gap-3",
478
- children: [/* @__PURE__ */ F("div", {
479
- className: "flex flex-col items-center",
480
- children: [/* @__PURE__ */ P("div", {
481
- className: t("flex h-7 w-7 shrink-0 items-center justify-center rounded-full", e.completed ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-secondary"),
482
- children: /* @__PURE__ */ P(i, { className: "h-3.5 w-3.5" })
483
- }), !r && /* @__PURE__ */ P("div", { className: t("w-0.5 flex-1 my-1", e.completed ? "bg-status-success-bg-subtle" : "bg-border") })]
484
- }), /* @__PURE__ */ F("div", {
485
- className: t("pb-5", r && "pb-0"),
486
- children: [/* @__PURE__ */ P("p", {
487
- className: "text-sm font-medium text-text-primary",
488
- children: e.label
489
- }), /* @__PURE__ */ P("p", {
490
- className: "mt-0.5 text-xs text-text-secondary",
491
- children: e.timestamp ? c(e.timestamp) : "Pending"
492
- })]
493
- })]
494
- }, e.status);
495
- })
496
- })]
497
- }),
498
- /* @__PURE__ */ F("div", {
499
- className: "space-y-3",
500
- children: [
501
- G.status === "pending" && /* @__PURE__ */ F("button", {
502
- type: "button",
503
- onClick: Y,
504
- className: "w-full inline-flex items-center justify-center gap-2 rounded-lg bg-[var(--color-accent-soft)] px-4 py-3 text-sm font-medium text-text-primary hover:bg-[var(--color-accent-soft)] transition-colors",
505
- children: [/* @__PURE__ */ P(E, { className: "h-4 w-4" }), "Start Task"]
506
- }),
507
- G.status === "in_progress" && /* @__PURE__ */ F("button", {
508
- type: "button",
509
- onClick: X,
510
- className: "w-full inline-flex items-center justify-center gap-2 rounded-lg bg-status-success-bg-subtle px-4 py-3 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
511
- children: [/* @__PURE__ */ P(h, { className: "h-4 w-4" }), "Complete Task"]
512
- }),
513
- /* @__PURE__ */ F("button", {
514
- type: "button",
515
- onClick: () => g("/worker/orders"),
516
- className: "w-full inline-flex items-center justify-center gap-2 rounded-lg bg-accent px-4 py-3 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors",
517
- children: [/* @__PURE__ */ P(f, { className: "h-4 w-4" }), "Back to Tasks"]
518
- })
519
- ]
520
- })
521
- ]
450
+ })
451
+ ]
452
+ }),
453
+ /* @__PURE__ */ A("button", {
454
+ type: "button",
455
+ onClick: X,
456
+ disabled: W.status === "completed" || H.isPending,
457
+ className: t("w-full inline-flex items-center justify-center gap-2 rounded-[var(--radius-card)] px-4 py-3.5 text-base font-semibold transition-colors", W.status === "completed" ? "bg-status-success-bg-subtle text-status-success-text cursor-default" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-60"),
458
+ children: [H.isPending ? /* @__PURE__ */ k(v, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ k(te, { className: "h-5 w-5" }), se]
459
+ })
460
+ ]
461
+ }), /* @__PURE__ */ A("div", {
462
+ className: "space-y-6",
463
+ children: [/* @__PURE__ */ A(j, {
464
+ className: "p-5",
465
+ children: [/* @__PURE__ */ k("h3", {
466
+ className: "mb-3 text-sm font-semibold text-text-primary",
467
+ children: "Delivery timeline"
468
+ }), /* @__PURE__ */ k(l, { items: ne })]
469
+ }), /* @__PURE__ */ A(j, {
470
+ className: "p-5",
471
+ children: [/* @__PURE__ */ k("h3", {
472
+ className: "mb-3 text-sm font-semibold text-text-primary",
473
+ children: "Job details"
474
+ }), /* @__PURE__ */ A("dl", {
475
+ className: "space-y-3 text-sm",
476
+ children: [
477
+ W.orderId && /* @__PURE__ */ A("div", {
478
+ className: "flex items-center gap-2",
479
+ children: [/* @__PURE__ */ k(g, { className: "h-4 w-4 text-text-secondary shrink-0" }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("dt", {
480
+ className: "text-xs text-text-secondary",
481
+ children: "Order ID"
482
+ }), /* @__PURE__ */ k("dd", {
483
+ className: "font-mono font-medium text-text-primary",
484
+ children: W.orderId
485
+ })] })]
486
+ }),
487
+ W.customerInfo.name && /* @__PURE__ */ A("div", {
488
+ className: "flex items-center gap-2",
489
+ children: [/* @__PURE__ */ k(D, { className: "h-4 w-4 text-text-secondary shrink-0" }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("dt", {
490
+ className: "text-xs text-text-secondary",
491
+ children: "Customer"
492
+ }), /* @__PURE__ */ k("dd", {
493
+ className: "font-medium text-text-primary",
494
+ children: W.customerInfo.name
495
+ })] })]
496
+ }),
497
+ W.distance != null && /* @__PURE__ */ A("div", {
498
+ className: "flex items-center gap-2",
499
+ children: [/* @__PURE__ */ k(b, { className: "h-4 w-4 text-text-secondary shrink-0" }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("dt", {
500
+ className: "text-xs text-text-secondary",
501
+ children: "Distance"
502
+ }), /* @__PURE__ */ A("dd", {
503
+ className: "font-medium text-text-primary",
504
+ children: [W.distance, " km"]
505
+ })] })]
506
+ }),
507
+ W.assignedTime && /* @__PURE__ */ A("div", {
508
+ className: "flex items-center gap-2",
509
+ children: [/* @__PURE__ */ k(h, { className: "h-4 w-4 text-text-secondary shrink-0" }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("dt", {
510
+ className: "text-xs text-text-secondary",
511
+ children: "Assigned"
512
+ }), /* @__PURE__ */ k("dd", {
513
+ className: "font-medium text-text-primary",
514
+ children: c(W.assignedTime)
515
+ })] })]
516
+ })
517
+ ]
518
+ })]
522
519
  })]
523
520
  })]
524
- })
525
- ]
521
+ })]
522
+ })]
526
523
  });
527
524
  }
528
525
  //#endregion
529
- export { W as TaskDetailsPage };
526
+ export { V as TaskDetailsPage };
530
527
 
531
528
  //# sourceMappingURL=TaskDetailsPage.js.map