@burdenoff/microfe-adaptercloud 2026.614.1 → 2026.625.1

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 (110) hide show
  1. package/dist/adaptercloud/components/EmptyState.js +17 -21
  2. package/dist/adaptercloud/components/EmptyState.js.map +1 -1
  3. package/dist/adaptercloud/components/InvestmentCard.js +30 -28
  4. package/dist/adaptercloud/components/InvestmentCard.js.map +1 -1
  5. package/dist/adaptercloud/components/MetricsCard.js +21 -15
  6. package/dist/adaptercloud/components/MetricsCard.js.map +1 -1
  7. package/dist/adaptercloud/components/PageLayout.js +38 -19
  8. package/dist/adaptercloud/components/PageLayout.js.map +1 -1
  9. package/dist/adaptercloud/components/RatingDisplay.js +3 -3
  10. package/dist/adaptercloud/components/RatingDisplay.js.map +1 -1
  11. package/dist/adaptercloud/components/StatusBadge.js +36 -16
  12. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  13. package/dist/adaptercloud/pages/HomePage.js +286 -275
  14. package/dist/adaptercloud/pages/HomePage.js.map +1 -1
  15. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +87 -87
  16. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +1 -1
  17. package/dist/adaptercloud/pages/admin/AdminDashboard.js +101 -101
  18. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +1 -1
  19. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +48 -48
  20. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +1 -1
  21. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +95 -95
  22. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +1 -1
  23. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +34 -34
  24. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +1 -1
  25. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +40 -40
  26. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +1 -1
  27. package/dist/adaptercloud/pages/admin/CartManagementPage.js +107 -107
  28. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +1 -1
  29. package/dist/adaptercloud/pages/admin/UserManagementPage.js +98 -98
  30. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +1 -1
  31. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +117 -117
  32. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  33. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +33 -33
  34. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  35. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +112 -109
  36. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  37. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +115 -115
  38. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  39. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +85 -85
  40. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  41. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +106 -106
  42. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  43. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +88 -88
  44. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +1 -1
  45. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +94 -94
  46. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +1 -1
  47. package/dist/adaptercloud/pages/common/HelpSupportPage.js +142 -142
  48. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +1 -1
  49. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +67 -66
  50. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +1 -1
  51. package/dist/adaptercloud/pages/common/SettingsPage.js +115 -115
  52. package/dist/adaptercloud/pages/common/SettingsPage.js.map +1 -1
  53. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +74 -73
  54. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +1 -1
  55. package/dist/adaptercloud/pages/customer/CartDetailPage.js +87 -86
  56. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +1 -1
  57. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +66 -65
  58. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +1 -1
  59. package/dist/adaptercloud/pages/customer/CheckoutPage.js +80 -80
  60. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +1 -1
  61. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +88 -88
  62. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +1 -1
  63. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +84 -84
  64. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +1 -1
  65. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +92 -91
  66. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +1 -1
  67. package/dist/adaptercloud/pages/customer/FavoritesPage.js +34 -33
  68. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +1 -1
  69. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +44 -43
  70. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +1 -1
  71. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +61 -60
  72. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +1 -1
  73. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +58 -57
  74. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +1 -1
  75. package/dist/adaptercloud/pages/customer/ReviewsPage.js +48 -47
  76. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +1 -1
  77. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +46 -45
  78. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +1 -1
  79. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +128 -128
  80. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +1 -1
  81. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +88 -87
  82. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  83. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +88 -88
  84. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  85. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +62 -62
  86. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +1 -1
  87. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +39 -38
  88. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  89. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +66 -66
  90. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +1 -1
  91. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +153 -153
  92. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +1 -1
  93. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +81 -80
  94. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +1 -1
  95. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +106 -106
  96. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +1 -1
  97. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +73 -72
  98. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +1 -1
  99. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +107 -107
  100. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +1 -1
  101. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +71 -69
  102. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +1 -1
  103. package/dist/adaptercloud/utils/cn.js +2 -2
  104. package/dist/node_modules/{.bun/clsx@2.1.1/node_modules/clsx → clsx}/dist/clsx.js +1 -1
  105. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  106. package/dist/node_modules/{.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge → tailwind-merge}/dist/bundle-mjs.js +212 -170
  107. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  108. package/package.json +3 -3
  109. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +0 -1
  110. package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
@@ -53,7 +53,7 @@ function A() {
53
53
  children: /* @__PURE__ */ T("div", {
54
54
  className: "flex flex-col items-center justify-center py-16 text-center",
55
55
  children: [/* @__PURE__ */ w("div", { className: "animate-spin rounded-full h-12 w-12 border-b-2 border-foreground mx-auto mb-4" }), /* @__PURE__ */ w("p", {
56
- className: "text-sm text-muted-foreground",
56
+ className: "text-sm text-text-secondary",
57
57
  children: "Loading order details..."
58
58
  })]
59
59
  })
@@ -61,6 +61,7 @@ function A() {
61
61
  if (!j) return /* @__PURE__ */ w(n, {
62
62
  title: "Order Not Found",
63
63
  children: /* @__PURE__ */ w(i, {
64
+ illustration: "empty-data",
64
65
  icon: /* @__PURE__ */ w(y, { className: "h-12 w-12" }),
65
66
  title: "Order not found",
66
67
  description: "The order you're looking for doesn't exist.",
@@ -79,7 +80,7 @@ function A() {
79
80
  children: [/* @__PURE__ */ w("button", {
80
81
  type: "button",
81
82
  onClick: () => _("/customer/orders"),
82
- className: "rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
83
+ className: "rounded-md p-1 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
83
84
  children: /* @__PURE__ */ w(u, { className: "h-5 w-5" })
84
85
  }), /* @__PURE__ */ w("span", { children: "Track Order" })]
85
86
  }),
@@ -90,56 +91,56 @@ function A() {
90
91
  className: "lg:col-span-2 space-y-6",
91
92
  children: [
92
93
  /* @__PURE__ */ T("div", {
93
- className: "rounded-lg border border-border bg-card p-5",
94
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
94
95
  children: [/* @__PURE__ */ T("div", {
95
96
  className: "flex flex-col sm:flex-row sm:justify-between sm:items-start gap-3",
96
97
  children: [/* @__PURE__ */ T("div", {
97
98
  className: "flex-1",
98
99
  children: [
99
100
  /* @__PURE__ */ T("h2", {
100
- className: "text-lg font-semibold text-foreground",
101
+ className: "text-lg font-semibold text-text-primary",
101
102
  children: ["Order #", j.id]
102
103
  }),
103
104
  /* @__PURE__ */ w("p", {
104
- className: "text-sm text-muted-foreground",
105
+ className: "text-sm text-text-secondary",
105
106
  children: j.cartName
106
107
  }),
107
108
  /* @__PURE__ */ w("p", {
108
- className: "text-xs text-muted-foreground mt-0.5",
109
+ className: "text-xs text-text-secondary mt-0.5",
109
110
  children: o(j.orderDate)
110
111
  })
111
112
  ]
112
113
  }), /* @__PURE__ */ T("div", {
113
114
  className: "text-left sm:text-right",
114
115
  children: [/* @__PURE__ */ w("p", {
115
- className: "text-xl font-bold text-foreground",
116
+ className: "text-xl font-bold text-text-primary",
116
117
  children: a(j.total, { minimumFractionDigits: 0 })
117
118
  }), /* @__PURE__ */ w("p", {
118
- className: "text-xs text-muted-foreground uppercase",
119
+ className: "text-xs text-text-secondary uppercase",
119
120
  children: j.paymentMethod
120
121
  })]
121
122
  })]
122
123
  }), N ? /* @__PURE__ */ T("div", {
123
- className: "mt-4 flex items-start gap-3 rounded-lg bg-destructive/10 p-4 border border-destructive/20",
124
- children: [/* @__PURE__ */ w(S, { className: "h-5 w-5 text-destructive mt-0.5 shrink-0" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
125
- className: "font-medium text-destructive",
124
+ className: "mt-4 flex items-start gap-3 rounded-lg bg-status-error-bg/10 p-4 border border-status-error-border/20",
125
+ children: [/* @__PURE__ */ w(S, { className: "h-5 w-5 text-status-error-text mt-0.5 shrink-0" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
126
+ className: "font-medium text-status-error-text",
126
127
  children: "Order Cancelled"
127
128
  }), j.cancellationReason && /* @__PURE__ */ w("p", {
128
- className: "text-sm text-destructive/80 mt-0.5",
129
+ className: "text-sm text-status-error-text/80 mt-0.5",
129
130
  children: j.cancellationReason
130
131
  })] })]
131
132
  }) : /* @__PURE__ */ T("div", {
132
- className: t("mt-4 flex items-start gap-3 rounded-lg p-4 border", P ? "bg-green-500/10 border-green-500/20" : "bg-blue-500/10 border-blue-500/20"),
133
- children: [P ? /* @__PURE__ */ w(d, { className: "h-5 w-5 text-green-600 dark:text-green-400 mt-0.5 shrink-0" }) : /* @__PURE__ */ w(m, { className: "h-5 w-5 text-blue-600 dark:text-blue-400 mt-0.5 shrink-0" }), /* @__PURE__ */ w("p", {
134
- className: t("text-sm font-medium", P ? "text-green-600 dark:text-green-400" : "text-blue-600 dark:text-blue-400"),
133
+ className: t("mt-4 flex items-start gap-3 rounded-lg p-4 border", P ? "bg-status-success-bg-subtle/10 border-status-success-border/20" : "bg-accent-blue-subtle/10 border-accent-blue-subtle/20"),
134
+ children: [P ? /* @__PURE__ */ w(d, { className: "h-5 w-5 text-status-success-text mt-0.5 shrink-0" }) : /* @__PURE__ */ w(m, { className: "h-5 w-5 text-accent-blue mt-0.5 shrink-0" }), /* @__PURE__ */ w("p", {
135
+ className: t("text-sm font-medium", P ? "text-status-success-text" : "text-accent-blue"),
135
136
  children: P ? `Delivered at ${o(j.actualDeliveryTime)}` : j.estimatedDeliveryTime ? `Estimated delivery by ${o(j.estimatedDeliveryTime)}` : "Estimated delivery time: TBD"
136
137
  })]
137
138
  })]
138
139
  }),
139
140
  !N && /* @__PURE__ */ T("div", {
140
- className: "rounded-lg border border-border bg-card p-5",
141
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
141
142
  children: [/* @__PURE__ */ w("h3", {
142
- className: "text-base font-semibold text-foreground mb-5",
143
+ className: "text-base font-semibold text-text-primary mb-5",
143
144
  children: "Order Status"
144
145
  }), /* @__PURE__ */ w("div", {
145
146
  className: "relative space-y-0",
@@ -148,24 +149,24 @@ function A() {
148
149
  return /* @__PURE__ */ T("div", {
149
150
  className: "flex items-start relative",
150
151
  children: [
151
- !a && /* @__PURE__ */ w("div", { className: t("absolute left-5 top-10 w-0.5 h-8 z-0", r ? "bg-green-500" : "bg-border") }),
152
+ !a && /* @__PURE__ */ w("div", { className: t("absolute left-5 top-10 w-0.5 h-8 z-0", r ? "bg-status-success-bg-subtle" : "bg-border") }),
152
153
  /* @__PURE__ */ w("div", {
153
- className: t("relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full", r ? "bg-green-500/10 border-2 border-green-500 text-green-600 dark:text-green-400" : "bg-muted border-2 border-border text-muted-foreground", i && "ring-4 ring-green-500/20"),
154
+ className: t("relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full", r ? "bg-status-success-bg-subtle/10 border-2 border-status-success-border text-status-success-text" : "bg-bg-sunken border-2 border-border-subtle text-text-secondary", i && "ring-4 ring-status-success-border/20"),
154
155
  children: /* @__PURE__ */ w(o, { className: "h-4 w-4" })
155
156
  }),
156
157
  /* @__PURE__ */ T("div", {
157
158
  className: "ml-4 flex-1 pb-8",
158
159
  children: [
159
160
  /* @__PURE__ */ w("h4", {
160
- className: t("text-sm font-semibold", r ? "text-foreground" : "text-muted-foreground"),
161
+ className: t("text-sm font-semibold", r ? "text-text-primary" : "text-text-secondary"),
161
162
  children: O[e]
162
163
  }),
163
164
  /* @__PURE__ */ w("p", {
164
- className: t("text-xs", r ? "text-muted-foreground" : "text-muted-foreground/50"),
165
+ className: t("text-xs", r ? "text-text-secondary" : "text-text-secondary/50"),
165
166
  children: k[e]
166
167
  }),
167
168
  i && j.assignedWorker && /* @__PURE__ */ T("div", {
168
- className: "mt-1.5 text-xs text-blue-600 dark:text-blue-400",
169
+ className: "mt-1.5 text-xs text-accent-blue",
169
170
  children: [/* @__PURE__ */ T("p", { children: ["Driver: ", j.assignedWorker.name] }), /* @__PURE__ */ T("p", { children: ["Contact: ", j.assignedWorker.phone] })]
170
171
  })
171
172
  ]
@@ -176,29 +177,29 @@ function A() {
176
177
  })]
177
178
  }),
178
179
  /* @__PURE__ */ T("div", {
179
- className: "rounded-lg border border-border bg-card p-5",
180
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
180
181
  children: [
181
182
  /* @__PURE__ */ w("h3", {
182
- className: "text-base font-semibold text-foreground mb-3",
183
+ className: "text-base font-semibold text-text-primary mb-3",
183
184
  children: "Order Items"
184
185
  }),
185
186
  /* @__PURE__ */ w("div", {
186
187
  className: "space-y-2",
187
188
  children: j.items.map((e, t) => /* @__PURE__ */ T("div", {
188
- className: "flex justify-between items-start pb-2 border-b border-border last:border-b-0",
189
+ className: "flex justify-between items-start pb-2 border-b border-border-subtle last:border-b-0",
189
190
  children: [/* @__PURE__ */ T("div", {
190
191
  className: "flex-1 pr-2",
191
192
  children: [
192
193
  /* @__PURE__ */ w("p", {
193
- className: "text-sm font-medium text-foreground",
194
+ className: "text-sm font-medium text-text-primary",
194
195
  children: e.name
195
196
  }),
196
197
  e.customizations && e.customizations.length > 0 && /* @__PURE__ */ w("p", {
197
- className: "text-xs text-muted-foreground",
198
+ className: "text-xs text-text-secondary",
198
199
  children: e.customizations.join(", ")
199
200
  }),
200
201
  /* @__PURE__ */ T("p", {
201
- className: "text-xs text-muted-foreground",
202
+ className: "text-xs text-text-secondary",
202
203
  children: [
203
204
  a(e.price, { minimumFractionDigits: 0 }),
204
205
  " x ",
@@ -207,32 +208,32 @@ function A() {
207
208
  })
208
209
  ]
209
210
  }), /* @__PURE__ */ w("p", {
210
- className: "text-sm font-medium text-foreground",
211
+ className: "text-sm font-medium text-text-primary",
211
212
  children: a(e.price * e.quantity, { minimumFractionDigits: 0 })
212
213
  })]
213
214
  }, t))
214
215
  }),
215
216
  /* @__PURE__ */ T("div", {
216
- className: "mt-4 pt-4 border-t border-border space-y-2 text-sm",
217
+ className: "mt-4 pt-4 border-t border-border-subtle space-y-2 text-sm",
217
218
  children: [
218
219
  /* @__PURE__ */ T("div", {
219
- className: "flex justify-between text-muted-foreground",
220
+ className: "flex justify-between text-text-secondary",
220
221
  children: [/* @__PURE__ */ w("span", { children: "Subtotal" }), /* @__PURE__ */ w("span", { children: a(j.subtotal, { minimumFractionDigits: 0 }) })]
221
222
  }),
222
223
  /* @__PURE__ */ T("div", {
223
- className: "flex justify-between text-muted-foreground",
224
+ className: "flex justify-between text-text-secondary",
224
225
  children: [/* @__PURE__ */ w("span", { children: "Delivery Fee" }), /* @__PURE__ */ w("span", { children: j.deliveryFee === 0 ? "FREE" : a(j.deliveryFee, { minimumFractionDigits: 0 }) })]
225
226
  }),
226
227
  /* @__PURE__ */ T("div", {
227
- className: "flex justify-between text-muted-foreground",
228
+ className: "flex justify-between text-text-secondary",
228
229
  children: [/* @__PURE__ */ w("span", { children: "Tax" }), /* @__PURE__ */ w("span", { children: a(j.taxes, { minimumFractionDigits: 0 }) })]
229
230
  }),
230
231
  j.discount && j.discount > 0 && /* @__PURE__ */ T("div", {
231
- className: "flex justify-between text-green-600 dark:text-green-400",
232
+ className: "flex justify-between text-status-success-text",
232
233
  children: [/* @__PURE__ */ w("span", { children: "Discount" }), /* @__PURE__ */ T("span", { children: ["-", a(j.discount, { minimumFractionDigits: 0 })] })]
233
234
  }),
234
235
  /* @__PURE__ */ T("div", {
235
- className: "flex justify-between font-semibold pt-2 border-t border-border text-foreground",
236
+ className: "flex justify-between font-semibold pt-2 border-t border-border-subtle text-text-primary",
236
237
  children: [/* @__PURE__ */ w("span", { children: "Total" }), /* @__PURE__ */ w("span", { children: a(j.total, { minimumFractionDigits: 0 }) })]
237
238
  })
238
239
  ]
@@ -244,30 +245,30 @@ function A() {
244
245
  className: "lg:col-span-1 space-y-6",
245
246
  children: [
246
247
  /* @__PURE__ */ T("div", {
247
- className: "rounded-lg border border-border bg-card p-5",
248
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
248
249
  children: [/* @__PURE__ */ w("h3", {
249
- className: "text-base font-semibold text-foreground mb-3",
250
+ className: "text-base font-semibold text-text-primary mb-3",
250
251
  children: "Delivery Details"
251
252
  }), /* @__PURE__ */ T("div", {
252
253
  className: "space-y-3",
253
254
  children: [
254
255
  /* @__PURE__ */ T("div", {
255
256
  className: "flex items-start gap-2",
256
- children: [/* @__PURE__ */ w(h, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }), /* @__PURE__ */ T("div", { children: [
257
+ children: [/* @__PURE__ */ w(h, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-secondary" }), /* @__PURE__ */ T("div", { children: [
257
258
  /* @__PURE__ */ w("p", {
258
- className: "text-xs text-muted-foreground",
259
+ className: "text-xs text-text-secondary",
259
260
  children: "Delivery Address"
260
261
  }),
261
262
  /* @__PURE__ */ w("p", {
262
- className: "text-sm font-medium text-foreground",
263
+ className: "text-sm font-medium text-text-primary",
263
264
  children: j.deliveryAddress.street
264
265
  }),
265
266
  /* @__PURE__ */ w("p", {
266
- className: "text-sm text-muted-foreground",
267
+ className: "text-sm text-text-secondary",
267
268
  children: j.deliveryAddress.area
268
269
  }),
269
270
  /* @__PURE__ */ T("p", {
270
- className: "text-sm text-muted-foreground",
271
+ className: "text-sm text-text-secondary",
271
272
  children: [
272
273
  j.deliveryAddress.city,
273
274
  ", ",
@@ -275,29 +276,29 @@ function A() {
275
276
  ]
276
277
  }),
277
278
  j.deliveryAddress.landmark && /* @__PURE__ */ T("p", {
278
- className: "text-xs text-muted-foreground mt-0.5",
279
+ className: "text-xs text-text-secondary mt-0.5",
279
280
  children: ["Landmark: ", j.deliveryAddress.landmark]
280
281
  })
281
282
  ] })]
282
283
  }),
283
284
  j.customerNotes && /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
284
- className: "text-xs text-muted-foreground",
285
+ className: "text-xs text-text-secondary",
285
286
  children: "Customer Notes"
286
287
  }), /* @__PURE__ */ w("p", {
287
- className: "text-sm text-foreground",
288
+ className: "text-sm text-text-primary",
288
289
  children: j.customerNotes
289
290
  })] }),
290
291
  /* @__PURE__ */ T("div", { children: [
291
292
  /* @__PURE__ */ w("p", {
292
- className: "text-xs text-muted-foreground",
293
+ className: "text-xs text-text-secondary",
293
294
  children: "Payment Method"
294
295
  }),
295
296
  /* @__PURE__ */ w("p", {
296
- className: "text-sm font-medium text-foreground capitalize",
297
+ className: "text-sm font-medium text-text-primary capitalize",
297
298
  children: j.paymentMethod
298
299
  }),
299
300
  /* @__PURE__ */ w("p", {
300
- className: "text-xs text-muted-foreground",
301
+ className: "text-xs text-text-secondary",
301
302
  children: j.paymentStatus === "completed" ? "Paid" : "Payment Pending"
302
303
  })
303
304
  ] })
@@ -305,9 +306,9 @@ function A() {
305
306
  })]
306
307
  }),
307
308
  j.assignedWorker && /* @__PURE__ */ T("div", {
308
- className: "rounded-lg border border-border bg-card p-5",
309
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
309
310
  children: [/* @__PURE__ */ w("h3", {
310
- className: "text-base font-semibold text-foreground mb-3",
311
+ className: "text-base font-semibold text-text-primary mb-3",
311
312
  children: "Delivery Partner"
312
313
  }), /* @__PURE__ */ T("div", {
313
314
  className: "space-y-3",
@@ -315,7 +316,7 @@ function A() {
315
316
  className: "flex items-center gap-3",
316
317
  children: [
317
318
  /* @__PURE__ */ w("div", {
318
- className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground",
319
+ className: "flex h-10 w-10 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
319
320
  children: /* @__PURE__ */ w("span", {
320
321
  className: "text-sm font-semibold",
321
322
  children: j.assignedWorker.name.charAt(0)
@@ -324,34 +325,34 @@ function A() {
324
325
  /* @__PURE__ */ T("div", {
325
326
  className: "flex-1 min-w-0",
326
327
  children: [/* @__PURE__ */ w("p", {
327
- className: "text-sm font-medium text-foreground",
328
+ className: "text-sm font-medium text-text-primary",
328
329
  children: j.assignedWorker.name
329
330
  }), /* @__PURE__ */ T("div", {
330
331
  className: "flex items-center gap-1.5 mt-0.5",
331
- children: [/* @__PURE__ */ w(b, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), /* @__PURE__ */ T("span", {
332
- className: "text-xs text-muted-foreground",
332
+ children: [/* @__PURE__ */ w(b, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }), /* @__PURE__ */ T("span", {
333
+ className: "text-xs text-text-secondary",
333
334
  children: [j.assignedWorker.rating, "/5"]
334
335
  })]
335
336
  })]
336
337
  }),
337
338
  /* @__PURE__ */ w("a", {
338
339
  href: `tel:${j.assignedWorker.phone}`,
339
- className: "flex h-9 w-9 items-center justify-center rounded-full bg-muted text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
340
+ className: "flex h-9 w-9 items-center justify-center rounded-full bg-bg-sunken text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
340
341
  children: /* @__PURE__ */ w(v, { className: "h-4 w-4" })
341
342
  })
342
343
  ]
343
344
  }), /* @__PURE__ */ T("button", {
344
345
  type: "button",
345
346
  onClick: () => window.location.href = `tel:${j.assignedWorker.phone}`,
346
- className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors",
347
+ className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
347
348
  children: [/* @__PURE__ */ w(v, { className: "h-4 w-4" }), "Call Driver"]
348
349
  })]
349
350
  })]
350
351
  }),
351
352
  /* @__PURE__ */ T("div", {
352
- className: "rounded-lg border border-border bg-card p-5",
353
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
353
354
  children: [/* @__PURE__ */ w("h3", {
354
- className: "text-base font-semibold text-foreground mb-3",
355
+ className: "text-base font-semibold text-text-primary mb-3",
355
356
  children: "Need Help?"
356
357
  }), /* @__PURE__ */ T("div", {
357
358
  className: "space-y-2",
@@ -359,13 +360,13 @@ function A() {
359
360
  /* @__PURE__ */ T("button", {
360
361
  type: "button",
361
362
  onClick: () => alert("Chat support coming soon!"),
362
- className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors",
363
+ className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
363
364
  children: [/* @__PURE__ */ w(g, { className: "h-4 w-4" }), "Chat Support"]
364
365
  }),
365
366
  /* @__PURE__ */ T("button", {
366
367
  type: "button",
367
368
  onClick: () => window.location.href = "tel:7012270561",
368
- className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors",
369
+ className: "w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
369
370
  children: [/* @__PURE__ */ w(v, { className: "h-4 w-4" }), "Call Support"]
370
371
  }),
371
372
  P && !j.rating && /* @__PURE__ */ T("button", {
@@ -1 +1 @@
1
- {"version":3,"file":"OrderTrackingPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/customer/OrderTrackingPage.tsx"],"sourcesContent":["/**\n * Order Tracking Page\n * @module adaptercloud/pages/customer\n *\n * Real-time order tracking with status timeline, delivery partner info,\n * price breakdown, Need Help sidebar, and rate order functionality.\n */\n\nimport { useState, useMemo } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n ArrowLeft,\n CheckCircle2,\n Circle,\n Clock,\n MapPin,\n Phone,\n Star,\n Package,\n Truck,\n ChefHat,\n ShoppingBag,\n XCircle,\n MessageCircle,\n AlertTriangle,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useAdapterCloud } from '../../context/AdapterCloudContext';\nimport { getOrderById } from '../../mocks/data';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatDate } from '../../utils/formatters';\nimport type { OrderStatus } from '../../types';\n\nconst statusIcons: Record<string, typeof Package> = {\n pending: Clock,\n confirmed: CheckCircle2,\n preparing: ChefHat,\n ready: Package,\n picked_up: Package,\n out_for_delivery: Truck,\n delivered: CheckCircle2,\n cancelled: XCircle,\n};\n\nconst statusOrder: OrderStatus[] = [\n 'pending',\n 'confirmed',\n 'preparing',\n 'ready',\n 'out_for_delivery',\n 'delivered',\n];\n\nconst statusLabels: Record<string, string> = {\n pending: 'Order Placed',\n confirmed: 'Confirmed',\n preparing: 'Preparing',\n ready: 'Ready',\n out_for_delivery: 'Out for Delivery',\n delivered: 'Delivered',\n};\n\nconst statusDescriptions: Record<string, string> = {\n pending: 'Your order has been received',\n confirmed: 'Cart has accepted your order',\n preparing: 'Your food is being prepared',\n ready: 'Order is ready for pickup/delivery',\n out_for_delivery: 'Your order is on the way',\n delivered: 'Order has been delivered',\n};\n\nexport function OrderTrackingPage() {\n const { orderId } = useParams<{ orderId: string }>();\n const { navigateTo } = useAdapterCloud();\n const [isLoading, setIsLoading] = useState(true);\n\n // Simulate loading\n useMemo(() => {\n const timer = setTimeout(() => setIsLoading(false), 800);\n return () => clearTimeout(timer);\n }, []);\n\n const order = useMemo(() => (orderId ? getOrderById(orderId) : undefined), [orderId]);\n\n if (isLoading) {\n return (\n <PageLayout title=\"Track Order\">\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-foreground mx-auto mb-4\" />\n <p className=\"text-sm text-muted-foreground\">Loading order details...</p>\n </div>\n </PageLayout>\n );\n }\n\n if (!order) {\n return (\n <PageLayout title=\"Order Not Found\">\n <EmptyState\n icon={<ShoppingBag className=\"h-12 w-12\" />}\n title=\"Order not found\"\n description={`The order you're looking for doesn't exist.`}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className=\"rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n View All Orders\n </button>\n }\n />\n </PageLayout>\n );\n }\n\n const currentStatusIndex = statusOrder.indexOf(order.status);\n const isCancelled = order.status === 'cancelled';\n const isDelivered = order.status === 'delivered';\n\n const isStepCompleted = (stepStatus: string): boolean => {\n const stepIndex = statusOrder.indexOf(stepStatus as OrderStatus);\n return stepIndex <= currentStatusIndex;\n };\n\n const isCurrentStep = (stepStatus: string): boolean => {\n return stepStatus === order.status;\n };\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className=\"rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground transition-colors\"\n >\n <ArrowLeft className=\"h-5 w-5\" />\n </button>\n <span>Track Order</span>\n </div>\n }\n actions={<StatusBadge status={order.status} />}\n >\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Left: Order Details & Timeline */}\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Order Header */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <div className=\"flex flex-col sm:flex-row sm:justify-between sm:items-start gap-3\">\n <div className=\"flex-1\">\n <h2 className=\"text-lg font-semibold text-foreground\">Order #{order.id}</h2>\n <p className=\"text-sm text-muted-foreground\">{order.cartName}</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {formatDate(order.orderDate)}\n </p>\n </div>\n <div className=\"text-left sm:text-right\">\n <p className=\"text-xl font-bold text-foreground\">\n {formatCurrency(order.total, { minimumFractionDigits: 0 })}\n </p>\n <p className=\"text-xs text-muted-foreground uppercase\">{order.paymentMethod}</p>\n </div>\n </div>\n\n {/* Status Banner */}\n {isCancelled ? (\n <div className=\"mt-4 flex items-start gap-3 rounded-lg bg-destructive/10 p-4 border border-destructive/20\">\n <XCircle className=\"h-5 w-5 text-destructive mt-0.5 shrink-0\" />\n <div>\n <p className=\"font-medium text-destructive\">Order Cancelled</p>\n {order.cancellationReason && (\n <p className=\"text-sm text-destructive/80 mt-0.5\">{order.cancellationReason}</p>\n )}\n </div>\n </div>\n ) : (\n <div\n className={cn(\n 'mt-4 flex items-start gap-3 rounded-lg p-4 border',\n isDelivered\n ? 'bg-green-500/10 border-green-500/20'\n : 'bg-blue-500/10 border-blue-500/20'\n )}\n >\n {isDelivered ? (\n <CheckCircle2 className=\"h-5 w-5 text-green-600 dark:text-green-400 mt-0.5 shrink-0\" />\n ) : (\n <Clock className=\"h-5 w-5 text-blue-600 dark:text-blue-400 mt-0.5 shrink-0\" />\n )}\n <p\n className={cn(\n 'text-sm font-medium',\n isDelivered\n ? 'text-green-600 dark:text-green-400'\n : 'text-blue-600 dark:text-blue-400'\n )}\n >\n {isDelivered\n ? `Delivered at ${formatDate(order.actualDeliveryTime!)}`\n : order.estimatedDeliveryTime\n ? `Estimated delivery by ${formatDate(order.estimatedDeliveryTime)}`\n : 'Estimated delivery time: TBD'}\n </p>\n </div>\n )}\n </div>\n\n {/* Tracking Progress Timeline */}\n {!isCancelled && (\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-5\">Order Status</h3>\n <div className=\"relative space-y-0\">\n {statusOrder.map((stepStatus, index) => {\n const completed = isStepCompleted(stepStatus);\n const current = isCurrentStep(stepStatus);\n const isLast = index === statusOrder.length - 1;\n const StepIcon = statusIcons[stepStatus] ?? Circle;\n\n return (\n <div key={stepStatus} className=\"flex items-start relative\">\n {/* Connecting line */}\n {!isLast && (\n <div\n className={cn(\n 'absolute left-5 top-10 w-0.5 h-8 z-0',\n completed ? 'bg-green-500' : 'bg-border'\n )}\n />\n )}\n\n {/* Step circle */}\n <div\n className={cn(\n 'relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full',\n completed\n ? 'bg-green-500/10 border-2 border-green-500 text-green-600 dark:text-green-400'\n : 'bg-muted border-2 border-border text-muted-foreground',\n current && 'ring-4 ring-green-500/20'\n )}\n >\n <StepIcon className=\"h-4 w-4\" />\n </div>\n\n {/* Step content */}\n <div className=\"ml-4 flex-1 pb-8\">\n <h4\n className={cn(\n 'text-sm font-semibold',\n completed ? 'text-foreground' : 'text-muted-foreground'\n )}\n >\n {statusLabels[stepStatus]}\n </h4>\n <p\n className={cn(\n 'text-xs',\n completed ? 'text-muted-foreground' : 'text-muted-foreground/50'\n )}\n >\n {statusDescriptions[stepStatus]}\n </p>\n {/* Show driver info at current step */}\n {current && order.assignedWorker && (\n <div className=\"mt-1.5 text-xs text-blue-600 dark:text-blue-400\">\n <p>Driver: {order.assignedWorker.name}</p>\n <p>Contact: {order.assignedWorker.phone}</p>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Order Items & Price Breakdown */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">Order Items</h3>\n <div className=\"space-y-2\">\n {order.items.map((item, index) => (\n <div\n key={index}\n className=\"flex justify-between items-start pb-2 border-b border-border last:border-b-0\"\n >\n <div className=\"flex-1 pr-2\">\n <p className=\"text-sm font-medium text-foreground\">{item.name}</p>\n {item.customizations && item.customizations.length > 0 && (\n <p className=\"text-xs text-muted-foreground\">\n {item.customizations.join(', ')}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground\">\n {formatCurrency(item.price, { minimumFractionDigits: 0 })} x {item.quantity}\n </p>\n </div>\n <p className=\"text-sm font-medium text-foreground\">\n {formatCurrency(item.price * item.quantity, { minimumFractionDigits: 0 })}\n </p>\n </div>\n ))}\n </div>\n\n {/* Price Breakdown */}\n <div className=\"mt-4 pt-4 border-t border-border space-y-2 text-sm\">\n <div className=\"flex justify-between text-muted-foreground\">\n <span>Subtotal</span>\n <span>{formatCurrency(order.subtotal, { minimumFractionDigits: 0 })}</span>\n </div>\n <div className=\"flex justify-between text-muted-foreground\">\n <span>Delivery Fee</span>\n <span>\n {order.deliveryFee === 0\n ? 'FREE'\n : formatCurrency(order.deliveryFee, { minimumFractionDigits: 0 })}\n </span>\n </div>\n <div className=\"flex justify-between text-muted-foreground\">\n <span>Tax</span>\n <span>{formatCurrency(order.taxes, { minimumFractionDigits: 0 })}</span>\n </div>\n {order.discount && order.discount > 0 && (\n <div className=\"flex justify-between text-green-600 dark:text-green-400\">\n <span>Discount</span>\n <span>-{formatCurrency(order.discount, { minimumFractionDigits: 0 })}</span>\n </div>\n )}\n <div className=\"flex justify-between font-semibold pt-2 border-t border-border text-foreground\">\n <span>Total</span>\n <span>{formatCurrency(order.total, { minimumFractionDigits: 0 })}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Right: Sidebar */}\n <div className=\"lg:col-span-1 space-y-6\">\n {/* Delivery Details */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">Delivery Details</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-start gap-2\">\n <MapPin className=\"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground\" />\n <div>\n <p className=\"text-xs text-muted-foreground\">Delivery Address</p>\n <p className=\"text-sm font-medium text-foreground\">\n {order.deliveryAddress.street}\n </p>\n <p className=\"text-sm text-muted-foreground\">{order.deliveryAddress.area}</p>\n <p className=\"text-sm text-muted-foreground\">\n {order.deliveryAddress.city}, {order.deliveryAddress.pincode}\n </p>\n {order.deliveryAddress.landmark && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Landmark: {order.deliveryAddress.landmark}\n </p>\n )}\n </div>\n </div>\n\n {/* Customer Notes */}\n {order.customerNotes && (\n <div>\n <p className=\"text-xs text-muted-foreground\">Customer Notes</p>\n <p className=\"text-sm text-foreground\">{order.customerNotes}</p>\n </div>\n )}\n\n {/* Payment */}\n <div>\n <p className=\"text-xs text-muted-foreground\">Payment Method</p>\n <p className=\"text-sm font-medium text-foreground capitalize\">\n {order.paymentMethod}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {order.paymentStatus === 'completed' ? 'Paid' : 'Payment Pending'}\n </p>\n </div>\n </div>\n </div>\n\n {/* Delivery Partner */}\n {order.assignedWorker && (\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">Delivery Partner</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n <span className=\"text-sm font-semibold\">\n {order.assignedWorker.name.charAt(0)}\n </span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-foreground\">\n {order.assignedWorker.name}\n </p>\n <div className=\"flex items-center gap-1.5 mt-0.5\">\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n <span className=\"text-xs text-muted-foreground\">\n {order.assignedWorker.rating}/5\n </span>\n </div>\n </div>\n <a\n href={`tel:${order.assignedWorker.phone}`}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-muted text-muted-foreground hover:bg-accent hover:text-foreground transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n </a>\n </div>\n <button\n type=\"button\"\n onClick={() => (window.location.href = `tel:${order.assignedWorker!.phone}`)}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n Call Driver\n </button>\n </div>\n </div>\n )}\n\n {/* Need Help */}\n <div className=\"rounded-lg border border-border bg-card p-5\">\n <h3 className=\"text-base font-semibold text-foreground mb-3\">Need Help?</h3>\n <div className=\"space-y-2\">\n <button\n type=\"button\"\n onClick={() => alert('Chat support coming soon!')}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <MessageCircle className=\"h-4 w-4\" />\n Chat Support\n </button>\n <button\n type=\"button\"\n onClick={() => (window.location.href = 'tel:7012270561')}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n Call Support\n </button>\n {isDelivered && !order.rating && (\n <button\n type=\"button\"\n onClick={() => navigateTo(`/customer/orders/${order.id}/rate`)}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg bg-foreground px-3 py-2.5 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n <Star className=\"h-4 w-4\" />\n Rate Order\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OrderTrackingPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/customer/OrderTrackingPage.tsx"],"sourcesContent":["/**\n * Order Tracking Page\n * @module adaptercloud/pages/customer\n *\n * Real-time order tracking with status timeline, delivery partner info,\n * price breakdown, Need Help sidebar, and rate order functionality.\n */\n\nimport { useState, useMemo } from'react';\nimport { useParams } from'react-router-dom';\nimport {\n ArrowLeft,\n CheckCircle2,\n Circle,\n Clock,\n MapPin,\n Phone,\n Star,\n Package,\n Truck,\n ChefHat,\n ShoppingBag,\n XCircle,\n MessageCircle,\n AlertTriangle,\n} from'lucide-react';\nimport { PageLayout } from'../../components/PageLayout';\nimport { StatusBadge } from'../../components/StatusBadge';\nimport { EmptyState } from'../../components/EmptyState';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { getOrderById } from'../../mocks/data';\nimport { cn } from'../../utils/cn';\nimport { formatCurrency, formatDate } from'../../utils/formatters';\nimport type { OrderStatus } from'../../types';\n\nconst statusIcons: Record<string, typeof Package> = {\n pending: Clock,\n confirmed: CheckCircle2,\n preparing: ChefHat,\n ready: Package,\n picked_up: Package,\n out_for_delivery: Truck,\n delivered: CheckCircle2,\n cancelled: XCircle,\n};\n\nconst statusOrder: OrderStatus[] = [\n 'pending',\n 'confirmed',\n 'preparing',\n 'ready',\n 'out_for_delivery',\n 'delivered',\n];\n\nconst statusLabels: Record<string, string> = {\n pending: 'Order Placed',\n confirmed: 'Confirmed',\n preparing: 'Preparing',\n ready: 'Ready',\n out_for_delivery: 'Out for Delivery',\n delivered: 'Delivered',\n};\n\nconst statusDescriptions: Record<string, string> = {\n pending: 'Your order has been received',\n confirmed: 'Cart has accepted your order',\n preparing: 'Your food is being prepared',\n ready: 'Order is ready for pickup/delivery',\n out_for_delivery: 'Your order is on the way',\n delivered: 'Order has been delivered',\n};\n\nexport function OrderTrackingPage() {\n const { orderId } = useParams<{ orderId: string }>();\n const { navigateTo } = useAdapterCloud();\n const [isLoading, setIsLoading] = useState(true);\n\n // Simulate loading\n useMemo(() => {\n const timer = setTimeout(() => setIsLoading(false), 800);\n return () => clearTimeout(timer);\n }, []);\n\n const order = useMemo(() => (orderId ? getOrderById(orderId) : undefined), [orderId]);\n\n if (isLoading) {\n return (\n <PageLayout title=\"Track Order\">\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-foreground mx-auto mb-4\" />\n <p className=\"text-sm text-text-secondary\">Loading order details...</p>\n </div>\n </PageLayout>\n );\n }\n\n if (!order) {\n return (\n <PageLayout title=\"Order Not Found\">\n <EmptyState\n illustration=\"empty-data\"\n icon={<ShoppingBag className=\"h-12 w-12\" />}\n title=\"Order not found\"\n description={`The order you're looking for doesn't exist.`}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className=\"rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n View All Orders\n </button>\n }\n />\n </PageLayout>\n );\n }\n\n const currentStatusIndex = statusOrder.indexOf(order.status);\n const isCancelled = order.status === 'cancelled';\n const isDelivered = order.status === 'delivered';\n\n const isStepCompleted = (stepStatus: string): boolean => {\n const stepIndex = statusOrder.indexOf(stepStatus as OrderStatus);\n return stepIndex <= currentStatusIndex;\n };\n\n const isCurrentStep = (stepStatus: string): boolean => {\n return stepStatus === order.status;\n };\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/customer/orders')}\n className=\"rounded-md p-1 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"h-5 w-5\" />\n </button>\n <span>Track Order</span>\n </div>\n }\n actions={<StatusBadge status={order.status} />}\n >\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Left: Order Details & Timeline */}\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Order Header */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <div className=\"flex flex-col sm:flex-row sm:justify-between sm:items-start gap-3\">\n <div className=\"flex-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Order #{order.id}</h2>\n <p className=\"text-sm text-text-secondary\">{order.cartName}</p>\n <p className=\"text-xs text-text-secondary mt-0.5\">\n {formatDate(order.orderDate)}\n </p>\n </div>\n <div className=\"text-left sm:text-right\">\n <p className=\"text-xl font-bold text-text-primary\">\n {formatCurrency(order.total, { minimumFractionDigits: 0 })}\n </p>\n <p className=\"text-xs text-text-secondary uppercase\">{order.paymentMethod}</p>\n </div>\n </div>\n\n {/* Status Banner */}\n {isCancelled ? (\n <div className=\"mt-4 flex items-start gap-3 rounded-lg bg-status-error-bg/10 p-4 border border-status-error-border/20\">\n <XCircle className=\"h-5 w-5 text-status-error-text mt-0.5 shrink-0\" />\n <div>\n <p className=\"font-medium text-status-error-text\">Order Cancelled</p>\n {order.cancellationReason && (\n <p className=\"text-sm text-status-error-text/80 mt-0.5\">{order.cancellationReason}</p>\n )}\n </div>\n </div>\n ) : (\n <div\n className={cn(\n 'mt-4 flex items-start gap-3 rounded-lg p-4 border',\n isDelivered\n ? 'bg-status-success-bg-subtle/10 border-status-success-border/20'\n : 'bg-accent-blue-subtle/10 border-accent-blue-subtle/20'\n )}\n >\n {isDelivered ? (\n <CheckCircle2 className=\"h-5 w-5 text-status-success-text mt-0.5 shrink-0\" />\n ) : (\n <Clock className=\"h-5 w-5 text-accent-blue mt-0.5 shrink-0\" />\n )}\n <p\n className={cn(\n 'text-sm font-medium',\n isDelivered\n ? 'text-status-success-text'\n : 'text-accent-blue'\n )}\n >\n {isDelivered\n ? `Delivered at ${formatDate(order.actualDeliveryTime!)}`\n : order.estimatedDeliveryTime\n ? `Estimated delivery by ${formatDate(order.estimatedDeliveryTime)}`\n : 'Estimated delivery time: TBD'}\n </p>\n </div>\n )}\n </div>\n\n {/* Tracking Progress Timeline */}\n {!isCancelled && (\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <h3 className=\"text-base font-semibold text-text-primary mb-5\">Order Status</h3>\n <div className=\"relative space-y-0\">\n {statusOrder.map((stepStatus, index) => {\n const completed = isStepCompleted(stepStatus);\n const current = isCurrentStep(stepStatus);\n const isLast = index === statusOrder.length - 1;\n const StepIcon = statusIcons[stepStatus] ?? Circle;\n\n return (\n <div key={stepStatus} className=\"flex items-start relative\">\n {/* Connecting line */}\n {!isLast && (\n <div\n className={cn(\n 'absolute left-5 top-10 w-0.5 h-8 z-0',\n completed ? 'bg-status-success-bg-subtle' : 'bg-border'\n )}\n />\n )}\n\n {/* Step circle */}\n <div\n className={cn(\n 'relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full',\n completed\n ? 'bg-status-success-bg-subtle/10 border-2 border-status-success-border text-status-success-text'\n : 'bg-bg-sunken border-2 border-border-subtle text-text-secondary',\n current && 'ring-4 ring-status-success-border/20'\n )}\n >\n <StepIcon className=\"h-4 w-4\" />\n </div>\n\n {/* Step content */}\n <div className=\"ml-4 flex-1 pb-8\">\n <h4\n className={cn(\n 'text-sm font-semibold',\n completed ? 'text-text-primary' : 'text-text-secondary'\n )}\n >\n {statusLabels[stepStatus]}\n </h4>\n <p\n className={cn(\n 'text-xs',\n completed ? 'text-text-secondary' : 'text-text-secondary/50'\n )}\n >\n {statusDescriptions[stepStatus]}\n </p>\n {/* Show driver info at current step */}\n {current && order.assignedWorker && (\n <div className=\"mt-1.5 text-xs text-accent-blue\">\n <p>Driver: {order.assignedWorker.name}</p>\n <p>Contact: {order.assignedWorker.phone}</p>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Order Items & Price Breakdown */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Order Items</h3>\n <div className=\"space-y-2\">\n {order.items.map((item, index) => (\n <div\n key={index}\n className=\"flex justify-between items-start pb-2 border-b border-border-subtle last:border-b-0\"\n >\n <div className=\"flex-1 pr-2\">\n <p className=\"text-sm font-medium text-text-primary\">{item.name}</p>\n {item.customizations && item.customizations.length > 0 && (\n <p className=\"text-xs text-text-secondary\">\n {item.customizations.join(', ')}\n </p>\n )}\n <p className=\"text-xs text-text-secondary\">\n {formatCurrency(item.price, { minimumFractionDigits: 0 })} x {item.quantity}\n </p>\n </div>\n <p className=\"text-sm font-medium text-text-primary\">\n {formatCurrency(item.price * item.quantity, { minimumFractionDigits: 0 })}\n </p>\n </div>\n ))}\n </div>\n\n {/* Price Breakdown */}\n <div className=\"mt-4 pt-4 border-t border-border-subtle space-y-2 text-sm\">\n <div className=\"flex justify-between text-text-secondary\">\n <span>Subtotal</span>\n <span>{formatCurrency(order.subtotal, { minimumFractionDigits: 0 })}</span>\n </div>\n <div className=\"flex justify-between text-text-secondary\">\n <span>Delivery Fee</span>\n <span>\n {order.deliveryFee === 0\n ? 'FREE'\n : formatCurrency(order.deliveryFee, { minimumFractionDigits: 0 })}\n </span>\n </div>\n <div className=\"flex justify-between text-text-secondary\">\n <span>Tax</span>\n <span>{formatCurrency(order.taxes, { minimumFractionDigits: 0 })}</span>\n </div>\n {order.discount && order.discount > 0 && (\n <div className=\"flex justify-between text-status-success-text\">\n <span>Discount</span>\n <span>-{formatCurrency(order.discount, { minimumFractionDigits: 0 })}</span>\n </div>\n )}\n <div className=\"flex justify-between font-semibold pt-2 border-t border-border-subtle text-text-primary\">\n <span>Total</span>\n <span>{formatCurrency(order.total, { minimumFractionDigits: 0 })}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Right: Sidebar */}\n <div className=\"lg:col-span-1 space-y-6\">\n {/* Delivery Details */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Delivery Details</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-start gap-2\">\n <MapPin className=\"mt-0.5 h-4 w-4 shrink-0 text-text-secondary\" />\n <div>\n <p className=\"text-xs text-text-secondary\">Delivery Address</p>\n <p className=\"text-sm font-medium text-text-primary\">\n {order.deliveryAddress.street}\n </p>\n <p className=\"text-sm text-text-secondary\">{order.deliveryAddress.area}</p>\n <p className=\"text-sm text-text-secondary\">\n {order.deliveryAddress.city}, {order.deliveryAddress.pincode}\n </p>\n {order.deliveryAddress.landmark && (\n <p className=\"text-xs text-text-secondary mt-0.5\">\n Landmark: {order.deliveryAddress.landmark}\n </p>\n )}\n </div>\n </div>\n\n {/* Customer Notes */}\n {order.customerNotes && (\n <div>\n <p className=\"text-xs text-text-secondary\">Customer Notes</p>\n <p className=\"text-sm text-text-primary\">{order.customerNotes}</p>\n </div>\n )}\n\n {/* Payment */}\n <div>\n <p className=\"text-xs text-text-secondary\">Payment Method</p>\n <p className=\"text-sm font-medium text-text-primary capitalize\">\n {order.paymentMethod}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {order.paymentStatus === 'completed' ? 'Paid' : 'Payment Pending'}\n </p>\n </div>\n </div>\n </div>\n\n {/* Delivery Partner */}\n {order.assignedWorker && (\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Delivery Partner</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-bg-sunken text-text-secondary\">\n <span className=\"text-sm font-semibold\">\n {order.assignedWorker.name.charAt(0)}\n </span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-text-primary\">\n {order.assignedWorker.name}\n </p>\n <div className=\"flex items-center gap-1.5 mt-0.5\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n <span className=\"text-xs text-text-secondary\">\n {order.assignedWorker.rating}/5\n </span>\n </div>\n </div>\n <a\n href={`tel:${order.assignedWorker.phone}`}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-bg-sunken text-text-secondary hover:bg-accent hover:text-text-primary transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n </a>\n </div>\n <button\n type=\"button\"\n onClick={() => (window.location.href = `tel:${order.assignedWorker!.phone}`)}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n Call Driver\n </button>\n </div>\n </div>\n )}\n\n {/* Need Help */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Need Help?</h3>\n <div className=\"space-y-2\">\n <button\n type=\"button\"\n onClick={() => alert('Chat support coming soon!')}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <MessageCircle className=\"h-4 w-4\" />\n Chat Support\n </button>\n <button\n type=\"button\"\n onClick={() => (window.location.href = 'tel:7012270561')}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-3 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <Phone className=\"h-4 w-4\" />\n Call Support\n </button>\n {isDelivered && !order.rating && (\n <button\n type=\"button\"\n onClick={() => navigateTo(`/customer/orders/${order.id}/rate`)}\n className=\"w-full flex items-center justify-center gap-2 rounded-lg bg-foreground px-3 py-2.5 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n <Star className=\"h-4 w-4\" />\n Rate Order\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}