@burdenoff/microfe-subscriberbot 2026.624.1 → 2026.626.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 (104) hide show
  1. package/dist/subscriberbot/components/EmptyState.js +17 -10
  2. package/dist/subscriberbot/components/EmptyState.js.map +1 -1
  3. package/dist/subscriberbot/components/InvestmentCard.js +23 -22
  4. package/dist/subscriberbot/components/InvestmentCard.js.map +1 -1
  5. package/dist/subscriberbot/components/MetricsCard.js +15 -12
  6. package/dist/subscriberbot/components/MetricsCard.js.map +1 -1
  7. package/dist/subscriberbot/components/PageLayout.js +27 -15
  8. package/dist/subscriberbot/components/PageLayout.js.map +1 -1
  9. package/dist/subscriberbot/components/RatingDisplay.js +3 -3
  10. package/dist/subscriberbot/components/RatingDisplay.js.map +1 -1
  11. package/dist/subscriberbot/components/StatusBadge.js +25 -13
  12. package/dist/subscriberbot/components/StatusBadge.js.map +1 -1
  13. package/dist/subscriberbot/context/SubscriberBotContext.js.map +1 -1
  14. package/dist/subscriberbot/pages/HomePage.js +72 -63
  15. package/dist/subscriberbot/pages/HomePage.js.map +1 -1
  16. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +106 -100
  17. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +1 -1
  18. package/dist/subscriberbot/pages/admin/AdminDashboard.js +125 -85
  19. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +1 -1
  20. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +51 -45
  21. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +1 -1
  22. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +246 -241
  23. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +1 -1
  24. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +131 -129
  25. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +1 -1
  26. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +247 -242
  27. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +1 -1
  28. package/dist/subscriberbot/pages/admin/CartManagementPage.js +307 -302
  29. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +1 -1
  30. package/dist/subscriberbot/pages/admin/UserManagementPage.js +308 -303
  31. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +1 -1
  32. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +89 -84
  33. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  34. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +269 -264
  35. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  36. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +269 -227
  37. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  38. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +191 -186
  39. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  40. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +168 -166
  41. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  42. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +344 -347
  43. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  44. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +270 -272
  45. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +1 -1
  46. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +294 -289
  47. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +1 -1
  48. package/dist/subscriberbot/pages/common/HelpSupportPage.js +156 -158
  49. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +1 -1
  50. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +94 -87
  51. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +1 -1
  52. package/dist/subscriberbot/pages/common/SettingsPage.js +749 -740
  53. package/dist/subscriberbot/pages/common/SettingsPage.js.map +1 -1
  54. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +357 -324
  55. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +1 -1
  56. package/dist/subscriberbot/pages/customer/CartDetailPage.js +281 -247
  57. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +1 -1
  58. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +106 -98
  59. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +1 -1
  60. package/dist/subscriberbot/pages/customer/CheckoutPage.js +235 -238
  61. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +1 -1
  62. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +426 -390
  63. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +1 -1
  64. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +488 -479
  65. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +1 -1
  66. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +522 -512
  67. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +1 -1
  68. package/dist/subscriberbot/pages/customer/FavoritesPage.js +73 -66
  69. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +1 -1
  70. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +75 -67
  71. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +1 -1
  72. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +82 -76
  73. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +1 -1
  74. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +100 -93
  75. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +1 -1
  76. package/dist/subscriberbot/pages/customer/ReviewsPage.js +97 -90
  77. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +1 -1
  78. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +86 -79
  79. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +1 -1
  80. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +330 -293
  81. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +1 -1
  82. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +269 -261
  83. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  84. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +97 -91
  85. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  86. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +354 -322
  87. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +1 -1
  88. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +118 -111
  89. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  90. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +75 -69
  91. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +1 -1
  92. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +435 -430
  93. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +1 -1
  94. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +328 -289
  95. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +1 -1
  96. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +135 -103
  97. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +1 -1
  98. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +120 -114
  99. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +1 -1
  100. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +125 -120
  101. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +1 -1
  102. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +354 -344
  103. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +1 -1
  104. package/package.json +3 -3
@@ -8,8 +8,9 @@ import { useMemo as s, useState as c } from "react";
8
8
  import { AlertTriangle as l, ArrowLeft as u, Calendar as d, CalendarCheck as f, CheckCircle2 as p, Circle as m, Clock as h, Headphones as g, MapPin as _, Phone as v, ShoppingBag as y, Star as b, XCircle as x } from "lucide-react";
9
9
  import { useParams as S } from "react-router-dom";
10
10
  import { jsx as C, jsxs as w } from "react/jsx-runtime";
11
+ import { EmphasisPanel as T, NextSteps as E, PagePurpose as D } from "@burdenoff/fe-libs/ui";
11
12
  //#region src/subscriberbot/pages/customer/BookingDetailsPage.tsx
12
- var T = [
13
+ var O = [
13
14
  {
14
15
  id: "BK-001",
15
16
  serviceName: "Men's Haircut + Beard Trim",
@@ -184,410 +185,442 @@ var T = [
184
185
  }
185
186
  ]
186
187
  }
187
- ], E = (e) => T.find((t) => t.id === e);
188
- function D() {
189
- let { bookingId: T } = S(), { navigateTo: D } = e(), [O, k] = c(null), A = s(() => T ? E(T) : void 0, [T]), j = (e) => {
190
- k(e), setTimeout(() => k(null), 3e3);
188
+ ], k = (e) => O.find((t) => t.id === e);
189
+ function A() {
190
+ let { bookingId: O } = S(), { navigateTo: A } = e(), [j, M] = c(null), N = s(() => O ? k(O) : void 0, [O]), P = (e) => {
191
+ M(e), setTimeout(() => M(null), 3e3);
191
192
  };
192
- if (!A) return /* @__PURE__ */ C(n, {
193
+ if (!N) return /* @__PURE__ */ C(n, {
193
194
  title: "Booking Not Found",
194
195
  children: /* @__PURE__ */ C(i, {
196
+ illustration: "empty-generic",
195
197
  icon: /* @__PURE__ */ C(f, { className: "h-12 w-12" }),
196
198
  title: "Booking not found",
197
- description: `No booking found with ID "${T}".`,
199
+ description: `No booking found with ID "${O}".`,
198
200
  action: /* @__PURE__ */ C("button", {
199
201
  type: "button",
200
- onClick: () => D("/customer/dashboard"),
202
+ onClick: () => A("/customer/dashboard"),
201
203
  className: "rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
202
204
  children: "Go to Dashboard"
203
205
  })
204
206
  })
205
207
  });
206
- let M = A.status === "cancelled", N = A.status === "completed", P = !M && !N;
208
+ let F = N.status === "cancelled", I = N.status === "completed", L = !F && !I, R = () => {
209
+ P("Support team will contact you shortly.");
210
+ }, z = () => {
211
+ P("Thank you! Rating feature coming soon.");
212
+ };
207
213
  return /* @__PURE__ */ w(n, {
208
214
  title: /* @__PURE__ */ w("div", {
209
215
  className: "flex items-center gap-3",
210
216
  children: [/* @__PURE__ */ C("button", {
211
217
  type: "button",
212
- onClick: () => D("/customer/dashboard"),
218
+ onClick: () => A("/customer/dashboard"),
213
219
  className: "rounded-md p-1 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
214
220
  children: /* @__PURE__ */ C(u, { className: "h-5 w-5" })
215
- }), /* @__PURE__ */ w("span", { children: ["Booking #", A.id] })]
221
+ }), /* @__PURE__ */ w("span", { children: ["Booking #", N.id] })]
216
222
  }),
217
- actions: /* @__PURE__ */ C(r, { status: A.status }),
218
- children: [O && /* @__PURE__ */ w("div", {
219
- className: "mb-4 rounded-lg border border-green-500/30 bg-green-500/10 p-3 flex items-center gap-2",
220
- children: [/* @__PURE__ */ C(p, { className: "h-4 w-4 text-green-600 dark:text-green-400 shrink-0" }), /* @__PURE__ */ C("p", {
221
- className: "text-sm text-green-600 dark:text-green-400",
222
- children: O
223
- })]
224
- }), /* @__PURE__ */ w("div", {
225
- className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
226
- children: [/* @__PURE__ */ w("div", {
227
- className: "lg:col-span-2 space-y-6",
228
- children: [
229
- /* @__PURE__ */ w("div", {
230
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
231
- children: [
223
+ actions: /* @__PURE__ */ C(r, { status: N.status }),
224
+ children: [
225
+ j && /* @__PURE__ */ w("div", {
226
+ className: "mb-4 rounded-lg border border-status-success-border/30 bg-status-success-bg/10 p-3 flex items-center gap-2",
227
+ children: [/* @__PURE__ */ C(p, { className: "h-4 w-4 text-status-success-text shrink-0" }), /* @__PURE__ */ C("p", {
228
+ className: "text-sm text-status-success-text",
229
+ children: j
230
+ })]
231
+ }),
232
+ /* @__PURE__ */ C(D, {
233
+ icon: /* @__PURE__ */ C(d, { className: "h-4 w-4" }),
234
+ className: "mb-6",
235
+ children: "Everything about one of your bookings — what was booked, when it's scheduled, who's providing it and what it costs. Follow the status timeline to see progress, contact the provider or support if plans change, and rate the service once it's done. Manage the whole booking from here without any back-and-forth."
236
+ }),
237
+ /* @__PURE__ */ C(E, {
238
+ storageKey: "subscriberbot-booking-details",
239
+ steps: [
240
+ {
241
+ id: "contact-support",
242
+ label: "Contact support",
243
+ description: "Get help with anything about this booking.",
244
+ icon: /* @__PURE__ */ C(v, { className: "h-4 w-4" }),
245
+ onClick: R
246
+ },
247
+ {
248
+ id: "view-provider",
249
+ label: "View the provider",
250
+ description: "See the cart behind this service or book again.",
251
+ icon: /* @__PURE__ */ C(d, { className: "h-4 w-4" }),
252
+ onClick: () => A(`/customer/carts/${N.provider.id}`)
253
+ },
254
+ {
255
+ id: "rate-service",
256
+ label: "Rate the service",
257
+ description: "Leave a review once your booking is complete.",
258
+ icon: /* @__PURE__ */ C(p, { className: "h-4 w-4" }),
259
+ onClick: z
260
+ }
261
+ ]
262
+ }),
263
+ /* @__PURE__ */ w("div", {
264
+ className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
265
+ children: [/* @__PURE__ */ w("div", {
266
+ className: "lg:col-span-2 space-y-6",
267
+ children: [
268
+ /* @__PURE__ */ w(T, { children: [
232
269
  /* @__PURE__ */ C("h2", {
233
270
  className: "text-lg font-semibold text-text-primary",
234
- children: A.serviceName
271
+ children: N.serviceName
235
272
  }),
236
273
  /* @__PURE__ */ C("p", {
237
274
  className: "mt-1 text-sm text-text-secondary",
238
- children: A.serviceDescription
275
+ children: N.serviceDescription
239
276
  }),
240
277
  /* @__PURE__ */ w("div", {
241
278
  className: "mt-4 flex flex-wrap gap-4 text-sm text-text-secondary",
242
279
  children: [
243
280
  /* @__PURE__ */ w("div", {
244
281
  className: "flex items-center gap-1.5",
245
- children: [/* @__PURE__ */ C(d, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", { children: A.scheduledDate })]
282
+ children: [/* @__PURE__ */ C(d, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", { children: N.scheduledDate })]
246
283
  }),
247
284
  /* @__PURE__ */ w("div", {
248
285
  className: "flex items-center gap-1.5",
249
- children: [/* @__PURE__ */ C(h, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", { children: A.scheduledTime })]
286
+ children: [/* @__PURE__ */ C(h, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", { children: N.scheduledTime })]
250
287
  }),
251
288
  /* @__PURE__ */ w("div", {
252
289
  className: "flex items-center gap-1.5",
253
- children: [/* @__PURE__ */ C(h, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", { children: [A.duration, " min"] })]
290
+ children: [/* @__PURE__ */ C(h, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", { children: [N.duration, " min"] })]
254
291
  })
255
292
  ]
256
293
  }),
257
- A.notes && /* @__PURE__ */ w("div", {
294
+ N.notes && /* @__PURE__ */ w("div", {
258
295
  className: "mt-4 rounded-md bg-bg-sunken p-3",
259
296
  children: [/* @__PURE__ */ C("p", {
260
297
  className: "text-xs text-text-secondary mb-1",
261
298
  children: "Notes"
262
299
  }), /* @__PURE__ */ C("p", {
263
300
  className: "text-sm text-text-primary",
264
- children: A.notes
301
+ children: N.notes
265
302
  })]
266
303
  }),
267
- A.cancellationReason && /* @__PURE__ */ w("div", {
268
- className: "mt-4 rounded-md bg-red-500/5 border border-red-500/20 p-3",
304
+ N.cancellationReason && /* @__PURE__ */ w("div", {
305
+ className: "mt-4 rounded-md bg-status-error-bg/5 border border-status-error-border/20 p-3",
269
306
  children: [/* @__PURE__ */ w("div", {
270
307
  className: "flex items-center gap-2 mb-1",
271
- children: [/* @__PURE__ */ C(l, { className: "h-3.5 w-3.5 text-red-600 dark:text-red-400" }), /* @__PURE__ */ C("p", {
272
- className: "text-xs font-medium text-red-600 dark:text-red-400",
308
+ children: [/* @__PURE__ */ C(l, { className: "h-3.5 w-3.5 text-status-error-text" }), /* @__PURE__ */ C("p", {
309
+ className: "text-xs font-medium text-status-error-text",
273
310
  children: "Cancellation Reason"
274
311
  })]
275
312
  }), /* @__PURE__ */ C("p", {
276
313
  className: "text-sm text-text-primary",
277
- children: A.cancellationReason
314
+ children: N.cancellationReason
278
315
  })]
279
316
  })
280
- ]
281
- }),
282
- /* @__PURE__ */ w("div", {
283
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
284
- children: [
285
- /* @__PURE__ */ C("h2", {
286
- className: "text-base font-semibold text-text-primary mb-4",
287
- children: "Service Provider"
288
- }),
289
- /* @__PURE__ */ w("div", {
290
- className: "flex items-center gap-4",
291
- children: [
292
- /* @__PURE__ */ C("div", {
293
- className: "flex h-12 w-12 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
294
- children: /* @__PURE__ */ C(y, { className: "h-6 w-6" })
295
- }),
296
- /* @__PURE__ */ w("div", {
297
- className: "flex-1 min-w-0",
298
- children: [
299
- /* @__PURE__ */ C("p", {
300
- className: "text-sm font-semibold text-text-primary",
301
- children: A.provider.name
302
- }),
303
- /* @__PURE__ */ C("p", {
304
- className: "text-xs text-text-secondary",
305
- children: A.provider.category
306
- }),
307
- /* @__PURE__ */ w("div", {
308
- className: "flex items-center gap-1 mt-1",
309
- children: [/* @__PURE__ */ C(b, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), /* @__PURE__ */ C("span", {
310
- className: "text-xs font-medium text-text-primary",
311
- children: A.provider.rating
312
- })]
313
- })
314
- ]
315
- }),
316
- /* @__PURE__ */ C("a", {
317
- href: `tel:${A.provider.phone}`,
318
- className: "flex h-10 w-10 items-center justify-center rounded-full bg-bg-sunken text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
319
- children: /* @__PURE__ */ C(v, { className: "h-4 w-4" })
320
- })
321
- ]
322
- }),
323
- /* @__PURE__ */ w("div", {
324
- className: "mt-3 flex items-center gap-2 text-sm text-text-secondary",
325
- children: [/* @__PURE__ */ C(v, { className: "h-4 w-4 shrink-0" }), /* @__PURE__ */ C("span", { children: A.provider.phone })]
326
- })
327
- ]
328
- }),
329
- /* @__PURE__ */ w("div", {
330
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
331
- children: [/* @__PURE__ */ C("h2", {
332
- className: "text-base font-semibold text-text-primary mb-5",
333
- children: "Booking Timeline"
334
- }), /* @__PURE__ */ C("div", {
335
- className: "relative",
336
- children: A.timeline.map((e, n) => {
337
- let r = n === A.timeline.length - 1, i = e.status === "cancelled", a = i ? x : e.completed ? p : m;
338
- return /* @__PURE__ */ w("div", {
339
- className: "flex gap-4",
340
- children: [/* @__PURE__ */ w("div", {
341
- className: "flex flex-col items-center",
342
- children: [/* @__PURE__ */ C("div", {
343
- className: t("flex h-8 w-8 shrink-0 items-center justify-center rounded-full", i ? "bg-red-500/10 text-red-600 dark:text-red-400" : e.completed ? "bg-green-500/10 text-green-600 dark:text-green-400" : "bg-bg-sunken text-text-secondary"),
344
- children: /* @__PURE__ */ C(a, { className: "h-4 w-4" })
345
- }), !r && /* @__PURE__ */ C("div", { className: t("w-0.5 flex-1 my-1", e.completed ? "bg-green-500/30" : "bg-border") })]
346
- }), /* @__PURE__ */ w("div", {
347
- className: t("pb-6", r && "pb-0"),
348
- children: [/* @__PURE__ */ C("p", {
349
- className: "text-sm font-medium text-text-primary",
350
- children: e.label
351
- }), /* @__PURE__ */ C("p", {
352
- className: "mt-0.5 text-xs text-text-secondary",
353
- children: e.timestamp ? o(e.timestamp) : "Pending"
354
- })]
355
- })]
356
- }, `${e.status}-${n}`);
357
- })
358
- })]
359
- }),
360
- /* @__PURE__ */ w("div", {
361
- className: "flex flex-col sm:flex-row gap-3",
362
- children: [/* @__PURE__ */ w("button", {
363
- type: "button",
364
- onClick: () => {
365
- j("Support team will contact you shortly.");
366
- },
367
- className: "flex-1 flex items-center justify-center gap-2 rounded-lg border border-border-subtle px-4 py-3 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
368
- children: [/* @__PURE__ */ C(g, { className: "h-4 w-4" }), "Contact Support"]
369
- }), N && /* @__PURE__ */ w("button", {
370
- type: "button",
371
- onClick: () => {
372
- j("Thank you! Rating feature coming soon.");
373
- },
374
- className: "flex-1 flex items-center justify-center gap-2 rounded-lg bg-foreground px-4 py-3 text-sm font-medium text-background hover:opacity-90 transition-opacity",
375
- children: [/* @__PURE__ */ C(b, { className: "h-4 w-4" }), "Rate Service"]
376
- })]
377
- })
378
- ]
379
- }), /* @__PURE__ */ w("div", {
380
- className: "space-y-6",
381
- children: [
382
- /* @__PURE__ */ w("div", {
383
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
384
- children: [
385
- /* @__PURE__ */ C("h3", {
386
- className: "text-base font-semibold text-text-primary mb-3",
387
- children: "Cart Information"
388
- }),
389
- /* @__PURE__ */ w("div", {
390
- className: "flex items-center gap-3 mb-4",
391
- children: [/* @__PURE__ */ C("img", {
392
- src: A.provider.image,
393
- alt: A.provider.name,
394
- className: "h-14 w-14 rounded-lg object-cover"
395
- }), /* @__PURE__ */ w("div", {
396
- className: "min-w-0",
317
+ ] }),
318
+ /* @__PURE__ */ w("div", {
319
+ className: "rounded-lg border border-border-seam bg-bg-surface p-6",
320
+ children: [
321
+ /* @__PURE__ */ C("h2", {
322
+ className: "text-base font-semibold text-text-primary mb-4",
323
+ children: "Service Provider"
324
+ }),
325
+ /* @__PURE__ */ w("div", {
326
+ className: "flex items-center gap-4",
397
327
  children: [
398
- /* @__PURE__ */ C("p", {
399
- className: "text-sm font-semibold text-text-primary",
400
- children: A.provider.name
401
- }),
402
- /* @__PURE__ */ C("p", {
403
- className: "text-xs text-text-secondary",
404
- children: A.provider.category
328
+ /* @__PURE__ */ C("div", {
329
+ className: "flex h-12 w-12 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
330
+ children: /* @__PURE__ */ C(y, { className: "h-6 w-6" })
405
331
  }),
406
332
  /* @__PURE__ */ w("div", {
407
- className: "flex items-center gap-1 mt-0.5",
333
+ className: "flex-1 min-w-0",
408
334
  children: [
409
- /* @__PURE__ */ C(b, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }),
410
- /* @__PURE__ */ C("span", {
411
- className: "text-xs font-medium text-text-primary",
412
- children: A.provider.rating
335
+ /* @__PURE__ */ C("p", {
336
+ className: "text-sm font-semibold text-text-primary",
337
+ children: N.provider.name
413
338
  }),
414
- /* @__PURE__ */ w("span", {
339
+ /* @__PURE__ */ C("p", {
415
340
  className: "text-xs text-text-secondary",
416
- children: [
417
- "(",
418
- A.provider.reviewCount,
419
- ")"
420
- ]
341
+ children: N.provider.category
342
+ }),
343
+ /* @__PURE__ */ w("div", {
344
+ className: "flex items-center gap-1 mt-1",
345
+ children: [/* @__PURE__ */ C(b, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }), /* @__PURE__ */ C("span", {
346
+ className: "text-xs font-medium text-text-primary",
347
+ children: N.provider.rating
348
+ })]
421
349
  })
422
350
  ]
351
+ }),
352
+ /* @__PURE__ */ C("a", {
353
+ href: `tel:${N.provider.phone}`,
354
+ className: "flex h-10 w-10 items-center justify-center rounded-full bg-bg-sunken text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
355
+ children: /* @__PURE__ */ C(v, { className: "h-4 w-4" })
423
356
  })
424
357
  ]
425
- })]
426
- }),
427
- /* @__PURE__ */ C("div", {
428
- className: "space-y-2 text-sm mb-4",
429
- children: /* @__PURE__ */ w("div", {
430
- className: "flex items-start gap-2",
431
- children: [/* @__PURE__ */ C(_, { className: "h-4 w-4 text-text-secondary shrink-0 mt-0.5" }), /* @__PURE__ */ C("span", {
432
- className: "text-text-secondary",
433
- children: A.provider.location
434
- })]
435
- })
436
- }),
437
- /* @__PURE__ */ C("button", {
438
- type: "button",
439
- onClick: () => D(`/customer/carts/${A.provider.id}`),
440
- className: "w-full rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
441
- children: "View Cart Menu"
442
- })
443
- ]
444
- }),
445
- /* @__PURE__ */ w("div", {
446
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
447
- children: [/* @__PURE__ */ C("h3", {
448
- className: "text-base font-semibold text-text-primary mb-3",
449
- children: "Service Location"
450
- }), /* @__PURE__ */ w("div", {
451
- className: "flex items-start gap-3",
452
- children: [/* @__PURE__ */ C(_, { className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [
453
- /* @__PURE__ */ C("p", {
454
- className: "text-sm text-text-primary",
455
- children: A.location.street
456
- }),
457
- /* @__PURE__ */ w("p", {
458
- className: "text-sm text-text-secondary",
459
- children: [
460
- A.location.area,
461
- ", ",
462
- A.location.city,
463
- " - ",
464
- A.location.pincode
465
- ]
466
358
  }),
467
- A.location.landmark && /* @__PURE__ */ w("p", {
468
- className: "text-xs text-text-secondary mt-1",
469
- children: ["Landmark: ", A.location.landmark]
359
+ /* @__PURE__ */ w("div", {
360
+ className: "mt-3 flex items-center gap-2 text-sm text-text-secondary",
361
+ children: [/* @__PURE__ */ C(v, { className: "h-4 w-4 shrink-0" }), /* @__PURE__ */ C("span", { children: N.provider.phone })]
362
+ })
363
+ ]
364
+ }),
365
+ /* @__PURE__ */ w("div", {
366
+ className: "rounded-lg border border-border-seam bg-bg-surface p-6",
367
+ children: [/* @__PURE__ */ C("h2", {
368
+ className: "text-base font-semibold text-text-primary mb-5",
369
+ children: "Booking Timeline"
370
+ }), /* @__PURE__ */ C("div", {
371
+ className: "relative",
372
+ children: N.timeline.map((e, n) => {
373
+ let r = n === N.timeline.length - 1, i = e.status === "cancelled", a = i ? x : e.completed ? p : m;
374
+ return /* @__PURE__ */ w("div", {
375
+ className: "flex gap-4",
376
+ children: [/* @__PURE__ */ w("div", {
377
+ className: "flex flex-col items-center",
378
+ children: [/* @__PURE__ */ C("div", {
379
+ className: t("flex h-8 w-8 shrink-0 items-center justify-center rounded-full", i ? "bg-status-error-bg/10 text-status-error-text" : e.completed ? "bg-status-success-bg/10 text-status-success-text" : "bg-bg-sunken text-text-secondary"),
380
+ children: /* @__PURE__ */ C(a, { className: "h-4 w-4" })
381
+ }), !r && /* @__PURE__ */ C("div", { className: t("w-0.5 flex-1 my-1", e.completed ? "bg-status-success-bg/30" : "bg-border") })]
382
+ }), /* @__PURE__ */ w("div", {
383
+ className: t("pb-6", r && "pb-0"),
384
+ children: [/* @__PURE__ */ C("p", {
385
+ className: "text-sm font-medium text-text-primary",
386
+ children: e.label
387
+ }), /* @__PURE__ */ C("p", {
388
+ className: "mt-0.5 text-xs text-text-secondary",
389
+ children: e.timestamp ? o(e.timestamp) : "Pending"
390
+ })]
391
+ })]
392
+ }, `${e.status}-${n}`);
470
393
  })
471
- ] })]
472
- })]
473
- }),
474
- /* @__PURE__ */ w("div", {
475
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
476
- children: [/* @__PURE__ */ C("h3", {
477
- className: "text-base font-semibold text-text-primary mb-3",
478
- children: "Price Breakdown"
479
- }), /* @__PURE__ */ w("div", {
480
- className: "space-y-2.5 text-sm",
394
+ })]
395
+ }),
396
+ /* @__PURE__ */ w("div", {
397
+ className: "flex flex-col sm:flex-row gap-3",
398
+ children: [/* @__PURE__ */ w("button", {
399
+ type: "button",
400
+ onClick: R,
401
+ className: "flex-1 flex items-center justify-center gap-2 rounded-lg border border-border-seam px-4 py-3 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
402
+ children: [/* @__PURE__ */ C(g, { className: "h-4 w-4" }), "Contact Support"]
403
+ }), I && /* @__PURE__ */ w("button", {
404
+ type: "button",
405
+ onClick: z,
406
+ className: "flex-1 flex items-center justify-center gap-2 rounded-lg bg-foreground px-4 py-3 text-sm font-medium text-background hover:opacity-90 transition-opacity",
407
+ children: [/* @__PURE__ */ C(b, { className: "h-4 w-4" }), "Rate Service"]
408
+ })]
409
+ })
410
+ ]
411
+ }), /* @__PURE__ */ w("div", {
412
+ className: "space-y-6",
413
+ children: [
414
+ /* @__PURE__ */ w("div", {
415
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5",
481
416
  children: [
482
- /* @__PURE__ */ w("div", {
483
- className: "flex justify-between",
484
- children: [/* @__PURE__ */ C("span", {
485
- className: "text-text-secondary",
486
- children: "Service Charge"
487
- }), /* @__PURE__ */ C("span", {
488
- className: "text-text-primary",
489
- children: a(A.pricing.serviceCharge, { minimumFractionDigits: 0 })
490
- })]
417
+ /* @__PURE__ */ C("h3", {
418
+ className: "text-base font-semibold text-text-primary mb-3",
419
+ children: "Cart Information"
491
420
  }),
492
421
  /* @__PURE__ */ w("div", {
493
- className: "flex justify-between",
494
- children: [/* @__PURE__ */ C("span", {
495
- className: "text-text-secondary",
496
- children: "Convenience Fee"
497
- }), /* @__PURE__ */ C("span", {
498
- className: "text-text-primary",
499
- children: a(A.pricing.convenienceFee, { minimumFractionDigits: 0 })
500
- })]
501
- }),
502
- /* @__PURE__ */ w("div", {
503
- className: "flex justify-between",
504
- children: [/* @__PURE__ */ C("span", {
505
- className: "text-text-secondary",
506
- children: "Tax"
507
- }), /* @__PURE__ */ C("span", {
508
- className: "text-text-primary",
509
- children: a(A.pricing.tax, { minimumFractionDigits: 0 })
422
+ className: "flex items-center gap-3 mb-4",
423
+ children: [/* @__PURE__ */ C("img", {
424
+ src: N.provider.image,
425
+ alt: N.provider.name,
426
+ className: "h-14 w-14 rounded-lg object-cover"
427
+ }), /* @__PURE__ */ w("div", {
428
+ className: "min-w-0",
429
+ children: [
430
+ /* @__PURE__ */ C("p", {
431
+ className: "text-sm font-semibold text-text-primary",
432
+ children: N.provider.name
433
+ }),
434
+ /* @__PURE__ */ C("p", {
435
+ className: "text-xs text-text-secondary",
436
+ children: N.provider.category
437
+ }),
438
+ /* @__PURE__ */ w("div", {
439
+ className: "flex items-center gap-1 mt-0.5",
440
+ children: [
441
+ /* @__PURE__ */ C(b, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }),
442
+ /* @__PURE__ */ C("span", {
443
+ className: "text-xs font-medium text-text-primary",
444
+ children: N.provider.rating
445
+ }),
446
+ /* @__PURE__ */ w("span", {
447
+ className: "text-xs text-text-secondary",
448
+ children: [
449
+ "(",
450
+ N.provider.reviewCount,
451
+ ")"
452
+ ]
453
+ })
454
+ ]
455
+ })
456
+ ]
510
457
  })]
511
458
  }),
512
- A.pricing.discount > 0 && /* @__PURE__ */ w("div", {
513
- className: "flex justify-between",
514
- children: [/* @__PURE__ */ C("span", {
515
- className: "text-green-600 dark:text-green-400",
516
- children: "Discount"
517
- }), /* @__PURE__ */ w("span", {
518
- className: "text-green-600 dark:text-green-400",
519
- children: ["-", a(A.pricing.discount, { minimumFractionDigits: 0 })]
520
- })]
459
+ /* @__PURE__ */ C("div", {
460
+ className: "space-y-2 text-sm mb-4",
461
+ children: /* @__PURE__ */ w("div", {
462
+ className: "flex items-start gap-2",
463
+ children: [/* @__PURE__ */ C(_, { className: "h-4 w-4 text-text-secondary shrink-0 mt-0.5" }), /* @__PURE__ */ C("span", {
464
+ className: "text-text-secondary",
465
+ children: N.provider.location
466
+ })]
467
+ })
521
468
  }),
522
- /* @__PURE__ */ w("div", {
523
- className: "flex justify-between border-t border-border-subtle pt-2.5",
524
- children: [/* @__PURE__ */ C("span", {
525
- className: "font-semibold text-text-primary",
526
- children: "Total"
527
- }), /* @__PURE__ */ C("span", {
528
- className: "font-bold text-text-primary",
529
- children: a(A.pricing.total, { minimumFractionDigits: 0 })
530
- })]
469
+ /* @__PURE__ */ C("button", {
470
+ type: "button",
471
+ onClick: () => A(`/customer/carts/${N.provider.id}`),
472
+ className: "w-full rounded-lg border border-border-seam px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
473
+ children: "View Cart Menu"
531
474
  })
532
475
  ]
533
- })]
534
- }),
535
- /* @__PURE__ */ w("div", {
536
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
537
- children: [/* @__PURE__ */ C("h3", {
538
- className: "text-base font-semibold text-text-primary mb-3",
539
- children: "Booking Info"
540
- }), /* @__PURE__ */ w("div", {
541
- className: "space-y-3",
542
- children: [
543
- /* @__PURE__ */ w("div", {
544
- className: "flex items-center gap-2",
545
- children: [/* @__PURE__ */ C(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
546
- className: "text-xs text-text-secondary",
547
- children: "Booked On"
548
- }), /* @__PURE__ */ C("p", {
549
- className: "text-sm text-text-primary",
550
- children: o(A.createdAt)
551
- })] })]
552
- }),
553
- /* @__PURE__ */ w("div", {
554
- className: "flex items-center gap-2",
555
- children: [/* @__PURE__ */ C(d, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
556
- className: "text-xs text-text-secondary",
557
- children: "Scheduled"
558
- }), /* @__PURE__ */ w("p", {
476
+ }),
477
+ /* @__PURE__ */ w("div", {
478
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5",
479
+ children: [/* @__PURE__ */ C("h3", {
480
+ className: "text-base font-semibold text-text-primary mb-3",
481
+ children: "Service Location"
482
+ }), /* @__PURE__ */ w("div", {
483
+ className: "flex items-start gap-3",
484
+ children: [/* @__PURE__ */ C(_, { className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [
485
+ /* @__PURE__ */ C("p", {
559
486
  className: "text-sm text-text-primary",
487
+ children: N.location.street
488
+ }),
489
+ /* @__PURE__ */ w("p", {
490
+ className: "text-sm text-text-secondary",
560
491
  children: [
561
- A.scheduledDate,
562
- " at ",
563
- A.scheduledTime
492
+ N.location.area,
493
+ ", ",
494
+ N.location.city,
495
+ " - ",
496
+ N.location.pincode
564
497
  ]
565
- })] })]
566
- }),
567
- /* @__PURE__ */ w("div", {
568
- className: "flex items-center gap-2",
569
- children: [/* @__PURE__ */ C(h, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
570
- className: "text-xs text-text-secondary",
571
- children: "Duration"
572
- }), /* @__PURE__ */ w("p", {
573
- className: "text-sm text-text-primary",
574
- children: [A.duration, " minutes"]
575
- })] })]
576
- })
577
- ]
578
- })]
579
- }),
580
- P && /* @__PURE__ */ w("button", {
581
- type: "button",
582
- className: "w-full inline-flex items-center justify-center gap-2 rounded-lg border border-red-500/30 bg-red-500/5 px-4 py-3 text-sm font-medium text-red-600 dark:text-red-400 hover:bg-red-500/10 transition-colors",
583
- children: [/* @__PURE__ */ C(x, { className: "h-4 w-4" }), "Cancel Booking"]
584
- })
585
- ]
586
- })]
587
- })]
498
+ }),
499
+ N.location.landmark && /* @__PURE__ */ w("p", {
500
+ className: "text-xs text-text-secondary mt-1",
501
+ children: ["Landmark: ", N.location.landmark]
502
+ })
503
+ ] })]
504
+ })]
505
+ }),
506
+ /* @__PURE__ */ w("div", {
507
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5",
508
+ children: [/* @__PURE__ */ C("h3", {
509
+ className: "text-base font-semibold text-text-primary mb-3",
510
+ children: "Price Breakdown"
511
+ }), /* @__PURE__ */ w("div", {
512
+ className: "space-y-2.5 text-sm",
513
+ children: [
514
+ /* @__PURE__ */ w("div", {
515
+ className: "flex justify-between",
516
+ children: [/* @__PURE__ */ C("span", {
517
+ className: "text-text-secondary",
518
+ children: "Service Charge"
519
+ }), /* @__PURE__ */ C("span", {
520
+ className: "text-text-primary",
521
+ children: a(N.pricing.serviceCharge, { minimumFractionDigits: 0 })
522
+ })]
523
+ }),
524
+ /* @__PURE__ */ w("div", {
525
+ className: "flex justify-between",
526
+ children: [/* @__PURE__ */ C("span", {
527
+ className: "text-text-secondary",
528
+ children: "Convenience Fee"
529
+ }), /* @__PURE__ */ C("span", {
530
+ className: "text-text-primary",
531
+ children: a(N.pricing.convenienceFee, { minimumFractionDigits: 0 })
532
+ })]
533
+ }),
534
+ /* @__PURE__ */ w("div", {
535
+ className: "flex justify-between",
536
+ children: [/* @__PURE__ */ C("span", {
537
+ className: "text-text-secondary",
538
+ children: "Tax"
539
+ }), /* @__PURE__ */ C("span", {
540
+ className: "text-text-primary",
541
+ children: a(N.pricing.tax, { minimumFractionDigits: 0 })
542
+ })]
543
+ }),
544
+ N.pricing.discount > 0 && /* @__PURE__ */ w("div", {
545
+ className: "flex justify-between",
546
+ children: [/* @__PURE__ */ C("span", {
547
+ className: "text-status-success-text",
548
+ children: "Discount"
549
+ }), /* @__PURE__ */ w("span", {
550
+ className: "text-status-success-text",
551
+ children: ["-", a(N.pricing.discount, { minimumFractionDigits: 0 })]
552
+ })]
553
+ }),
554
+ /* @__PURE__ */ w("div", {
555
+ className: "flex justify-between border-t border-border-seam pt-2.5",
556
+ children: [/* @__PURE__ */ C("span", {
557
+ className: "font-semibold text-text-primary",
558
+ children: "Total"
559
+ }), /* @__PURE__ */ C("span", {
560
+ className: "font-bold text-text-primary",
561
+ children: a(N.pricing.total, { minimumFractionDigits: 0 })
562
+ })]
563
+ })
564
+ ]
565
+ })]
566
+ }),
567
+ /* @__PURE__ */ w("div", {
568
+ className: "rounded-lg border border-border-seam bg-bg-surface p-5",
569
+ children: [/* @__PURE__ */ C("h3", {
570
+ className: "text-base font-semibold text-text-primary mb-3",
571
+ children: "Booking Info"
572
+ }), /* @__PURE__ */ w("div", {
573
+ className: "space-y-3",
574
+ children: [
575
+ /* @__PURE__ */ w("div", {
576
+ className: "flex items-center gap-2",
577
+ children: [/* @__PURE__ */ C(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
578
+ className: "text-xs text-text-secondary",
579
+ children: "Booked On"
580
+ }), /* @__PURE__ */ C("p", {
581
+ className: "text-sm text-text-primary",
582
+ children: o(N.createdAt)
583
+ })] })]
584
+ }),
585
+ /* @__PURE__ */ w("div", {
586
+ className: "flex items-center gap-2",
587
+ children: [/* @__PURE__ */ C(d, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
588
+ className: "text-xs text-text-secondary",
589
+ children: "Scheduled"
590
+ }), /* @__PURE__ */ w("p", {
591
+ className: "text-sm text-text-primary",
592
+ children: [
593
+ N.scheduledDate,
594
+ " at ",
595
+ N.scheduledTime
596
+ ]
597
+ })] })]
598
+ }),
599
+ /* @__PURE__ */ w("div", {
600
+ className: "flex items-center gap-2",
601
+ children: [/* @__PURE__ */ C(h, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
602
+ className: "text-xs text-text-secondary",
603
+ children: "Duration"
604
+ }), /* @__PURE__ */ w("p", {
605
+ className: "text-sm text-text-primary",
606
+ children: [N.duration, " minutes"]
607
+ })] })]
608
+ })
609
+ ]
610
+ })]
611
+ }),
612
+ L && /* @__PURE__ */ w("button", {
613
+ type: "button",
614
+ className: "w-full inline-flex items-center justify-center gap-2 rounded-lg border border-status-error-border/30 bg-status-error-bg/5 px-4 py-3 text-sm font-medium text-status-error-text hover:bg-status-error-bg/10 transition-colors",
615
+ children: [/* @__PURE__ */ C(x, { className: "h-4 w-4" }), "Cancel Booking"]
616
+ })
617
+ ]
618
+ })]
619
+ })
620
+ ]
588
621
  });
589
622
  }
590
623
  //#endregion
591
- export { D as BookingDetailsPage };
624
+ export { A as BookingDetailsPage };
592
625
 
593
626
  //# sourceMappingURL=BookingDetailsPage.js.map