@burdenoff/microfe-kadaikodi 2026.704.4 → 2026.704.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
  65. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  66. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
  68. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  69. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
  70. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
  72. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
  74. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  76. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  77. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
  78. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  80. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  82. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
  84. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  85. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  86. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  87. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  88. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  90. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
  92. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
  94. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  95. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  96. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  97. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
  98. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  99. package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
  100. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  101. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  102. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  103. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  104. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  105. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  106. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  107. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  108. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  109. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  110. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  111. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  112. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  113. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  114. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  115. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  116. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
  117. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  119. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  120. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  121. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  122. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
  123. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  124. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
  125. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  126. package/package.json +1 -1
@@ -4,10 +4,13 @@ import { PageLayout as n } from "../../components/PageLayout.js";
4
4
  import { EmptyState as r } from "../../components/EmptyState.js";
5
5
  import { useOfferings as i, useOrders as a, useProviderWorkers as o, useProviders as ee, useReviews as te, useUpdateOrderStatus as s, useUpdateProvider as c } from "../../hooks/useKadaikodiApi.js";
6
6
  import { formatCurrency as l } from "../../utils/formatters.js";
7
- import { useEffect as u, useMemo as d, useState as f } from "react";
8
- import { Activity as p, ArrowRight as ne, BarChart3 as re, Bell as ie, CheckCircle as m, ChevronRight as ae, Clock as h, Edit as g, Eye as _, Flame as v, IndianRupee as y, MapPin as b, Package as x, Plus as S, Settings as C, ShoppingCart as w, Star as T, TrendingUp as E, UserCheck as oe, Users as se } from "lucide-react";
9
- import { Fragment as ce, jsx as D, jsxs as O } from "react/jsx-runtime";
10
- import { EmphasisPanel as le, NextSteps as ue, PagePurpose as de } from "@burdenoff/fe-libs/ui";
7
+ import { AreaChart as ne } from "../../components/viz/AreaChart.js";
8
+ import { StatCard as u } from "../../components/viz/StatCard.js";
9
+ import "../../components/viz/index.js";
10
+ import { useEffect as d, useMemo as f, useState as p } from "react";
11
+ import { Activity as m, ArrowRight as h, BarChart3 as g, Bell as re, CheckCircle as _, ChevronRight as v, Clock as y, Edit as ie, Eye as ae, Flame as oe, IndianRupee as se, MapPin as b, Package as x, Plus as S, Settings as C, ShoppingCart as w, Star as T, TrendingUp as E, UserCheck as ce, Users as le } from "lucide-react";
12
+ import { Fragment as ue, jsx as D, jsxs as O } from "react/jsx-runtime";
13
+ import { EmphasisPanel as de, NextSteps as fe, PagePurpose as pe } from "@burdenoff/fe-libs/ui";
11
14
  //#region src/kadaikodi/pages/cart-owner/CartOwnerDashboard.tsx
12
15
  var k = () => {
13
16
  let e = (/* @__PURE__ */ new Date()).getHours();
@@ -29,18 +32,18 @@ var k = () => {
29
32
  month: "short"
30
33
  });
31
34
  }, N = () => {
32
- let { navigateTo: N, currentUser: P } = e(), { data: F = [], isLoading: I } = ee(), L = d(() => F.find((e) => e.ownerId === P?.id) ?? F[0], [F, P?.id]), R = L?.id, { data: z = [] } = a({ providerId: R }), { data: B = [] } = i(R), { data: V = [] } = te(R ?? ""), { data: H = [] } = o(R), fe = s(), U = c(), W = P?.firstName ?? P?.name?.split(" ")[0] ?? "", [G, K] = f(!0);
33
- u(() => {
34
- L && K(L.isOpen);
35
+ let { navigateTo: N, currentUser: P } = e(), { data: F = [], isLoading: I } = ee(), L = f(() => F.find((e) => e.ownerId === P?.id) ?? F[0], [F, P?.id]), R = L?.id, { data: z = [] } = a({ providerId: R }), { data: B = [] } = i(R), { data: me = [] } = te(R ?? ""), { data: V = [] } = o(R), he = s(), H = c(), U = P?.firstName ?? P?.name?.split(" ")[0] ?? "", [W, G] = p(!0);
36
+ d(() => {
37
+ L && G(L.isOpen);
35
38
  }, [L]);
36
- let pe = () => {
39
+ let ge = () => {
37
40
  if (!L) return;
38
- let e = !G;
39
- K(e), U.mutate({
41
+ let e = !W;
42
+ G(e), H.mutate({
40
43
  id: L.id,
41
44
  input: { status: e ? "ACTIVE" : "PAUSED" }
42
- }, { onError: () => K(!e) });
43
- }, q = d(() => {
45
+ }, { onError: () => G(!e) });
46
+ }, K = f(() => {
44
47
  let e = j(), t = z.filter((e) => e.status === "delivered"), n = z.filter((t) => new Date(t.orderDate) >= e), r = t.filter((t) => new Date(t.orderDate) >= e), i = t.reduce((e, t) => e + t.total, 0), a = r.reduce((e, t) => e + t.total, 0), o = t.length > 0 ? Math.round(i / t.length) : Math.round(L?.averageOrderValue ?? 0);
45
48
  return {
46
49
  totalRevenue: i,
@@ -56,7 +59,7 @@ var k = () => {
56
59
  z,
57
60
  B,
58
61
  L
59
- ]), J = d(() => [...z].sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime()).slice(0, 4), [z]), Y = d(() => {
62
+ ]), q = f(() => [...z].sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime()).slice(0, 4), [z]), J = f(() => {
60
63
  let e = [];
61
64
  for (let t = 6; t >= 0; t--) {
62
65
  let n = j();
@@ -74,7 +77,19 @@ var k = () => {
74
77
  });
75
78
  }
76
79
  return e;
77
- }, [z]), X = d(() => {
80
+ }, [z]), Y = f(() => {
81
+ let e = J.map((e) => e.revenue), t = J.map((e) => e.orders), n = (e, t) => t > 0 ? Math.round((e - t) / t * 100) : void 0, r = J[J.length - 1]?.revenue ?? 0, i = J[J.length - 2]?.revenue ?? 0, a = J[J.length - 1]?.orders ?? 0, o = J[J.length - 2]?.orders ?? 0;
82
+ return {
83
+ revenueSpark: e,
84
+ ordersSpark: t,
85
+ revenueSeries: J.map((e) => ({
86
+ label: new Date(e.date).toLocaleDateString("en-US", { weekday: "short" }),
87
+ value: e.revenue
88
+ })),
89
+ revenueDelta: n(r, i),
90
+ ordersDelta: n(a, o)
91
+ };
92
+ }, [J]), X = f(() => {
78
93
  let e = /* @__PURE__ */ new Map();
79
94
  return z.forEach((t) => t.items.forEach((t) => {
80
95
  let n = e.get(t.name) ?? {
@@ -86,8 +101,8 @@ var k = () => {
86
101
  name: e,
87
102
  ...t
88
103
  })).sort((e, t) => t.revenue - e.revenue).slice(0, 5);
89
- }, [z]), me = (/* @__PURE__ */ new Date()).toLocaleDateString("en-US", { weekday: "long" }).toLowerCase(), Z = L?.businessHours?.[me], Q = Z && Z.isOpen ? `${Z.open} - ${Z.close}` : null, he = L?.location?.address?.trim() || null, $ = (e, t) => {
90
- fe.mutate({
104
+ }, [z]), _e = (/* @__PURE__ */ new Date()).toLocaleDateString("en-US", { weekday: "long" }).toLowerCase(), Z = L?.businessHours?.[_e], Q = Z && Z.isOpen ? `${Z.open} - ${Z.close}` : null, ve = L?.location?.address?.trim() || null, $ = (e, t) => {
105
+ he.mutate({
91
106
  id: e,
92
107
  status: t
93
108
  });
@@ -100,22 +115,22 @@ var k = () => {
100
115
  children: /* @__PURE__ */ D("div", { className: "h-10 w-10 animate-spin rounded-full border-b-2 border-foreground" })
101
116
  })
102
117
  }) : L ? /* @__PURE__ */ D(n, {
103
- title: /* @__PURE__ */ O("span", { children: [k(), W && /* @__PURE__ */ O(ce, { children: [", ", /* @__PURE__ */ D("span", {
118
+ title: /* @__PURE__ */ O("span", { children: [k(), U && /* @__PURE__ */ O(ue, { children: [", ", /* @__PURE__ */ D("span", {
104
119
  className: "text-text-secondary font-normal",
105
- children: W
120
+ children: U
106
121
  })] })] }),
107
122
  description: L.name,
108
123
  actions: /* @__PURE__ */ O("button", {
109
124
  type: "button",
110
125
  onClick: () => N("/cart-owner/orders"),
111
126
  className: "inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors",
112
- children: ["View All Orders", /* @__PURE__ */ D(ne, { className: "h-4 w-4" })]
127
+ children: ["View All Orders", /* @__PURE__ */ D(h, { className: "h-4 w-4" })]
113
128
  }),
114
129
  children: /* @__PURE__ */ O("div", {
115
130
  className: "space-y-6",
116
131
  children: [
117
- /* @__PURE__ */ D(de, { children: "Run your mobile cart business from one screen — flip your service open or closed, watch today's revenue and orders roll in, and jump to your menu, staff, or order queue. Open your service and set up your offerings to start taking orders." }),
118
- /* @__PURE__ */ D(ue, {
132
+ /* @__PURE__ */ D(pe, { children: "Run your mobile cart business from one screen — flip your service open or closed, watch today's revenue and orders roll in, and jump to your menu, staff, or order queue. Open your service and set up your offerings to start taking orders." }),
133
+ /* @__PURE__ */ D(fe, {
119
134
  storageKey: "kadaikodi-cartowner-dashboard",
120
135
  steps: [
121
136
  {
@@ -139,22 +154,22 @@ var k = () => {
139
154
  ]
140
155
  }),
141
156
  /* @__PURE__ */ D("div", {
142
- className: t("p-4 rounded-lg border-l-4", G ? "border-status-success-text bg-status-success-bg-subtle" : "border-status-error-text bg-status-error-bg-subtle"),
157
+ className: t("p-4 rounded-lg border-l-4", W ? "border-status-success-text bg-status-success-bg-subtle" : "border-status-error-text bg-status-error-bg-subtle"),
143
158
  children: /* @__PURE__ */ O("div", {
144
159
  className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4",
145
160
  children: [/* @__PURE__ */ O("div", {
146
161
  className: "flex items-start gap-3",
147
- children: [/* @__PURE__ */ D("div", { className: t("w-3 h-3 rounded-full mt-1 shrink-0", G ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("h3", {
162
+ children: [/* @__PURE__ */ D("div", { className: t("w-3 h-3 rounded-full mt-1 shrink-0", W ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("h3", {
148
163
  className: "font-semibold text-text-primary text-sm",
149
- children: ["Service Status: ", G ? "Open" : "Closed"]
164
+ children: ["Service Status: ", W ? "Open" : "Closed"]
150
165
  }), /* @__PURE__ */ O("div", {
151
166
  className: "flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4 mt-1 text-xs text-text-secondary",
152
167
  children: [/* @__PURE__ */ O("span", {
153
168
  className: "flex items-center gap-1",
154
- children: [/* @__PURE__ */ D(b, { className: "h-3 w-3 shrink-0" }), he ?? "Location not set"]
169
+ children: [/* @__PURE__ */ D(b, { className: "h-3 w-3 shrink-0" }), ve ?? "Location not set"]
155
170
  }), Q && /* @__PURE__ */ O("span", {
156
171
  className: "flex items-center gap-1",
157
- children: [/* @__PURE__ */ D(h, { className: "h-3 w-3 shrink-0" }), Q]
172
+ children: [/* @__PURE__ */ D(y, { className: "h-3 w-3 shrink-0" }), Q]
158
173
  })]
159
174
  })] })]
160
175
  }), /* @__PURE__ */ O("div", {
@@ -166,70 +181,59 @@ var k = () => {
166
181
  children: [/* @__PURE__ */ D(b, { className: "h-3 w-3" }), "Update Location"]
167
182
  }), /* @__PURE__ */ D("button", {
168
183
  type: "button",
169
- onClick: pe,
170
- disabled: U.isPending,
171
- className: t("inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors disabled:opacity-60 disabled:cursor-not-allowed", G ? "bg-status-error-bg-subtle text-status-error-text hover:bg-status-error-bg-subtle" : "bg-status-success-bg-subtle text-status-success-text hover:bg-status-success-bg-subtle"),
172
- children: G ? "Close Service" : "Open Service"
184
+ onClick: ge,
185
+ disabled: H.isPending,
186
+ className: t("inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors disabled:opacity-60 disabled:cursor-not-allowed", W ? "bg-status-error-bg-subtle text-status-error-text hover:bg-status-error-bg-subtle" : "bg-status-success-bg-subtle text-status-success-text hover:bg-status-success-bg-subtle"),
187
+ children: W ? "Close Service" : "Open Service"
173
188
  })]
174
189
  })]
175
190
  })
176
191
  }),
177
- /* @__PURE__ */ O(le, { children: [/* @__PURE__ */ D("h2", {
192
+ /* @__PURE__ */ O(de, { children: [/* @__PURE__ */ D("h2", {
178
193
  className: "text-base font-semibold text-text-primary mb-3",
179
194
  children: "Today's Performance"
180
- }), /* @__PURE__ */ D("div", {
195
+ }), /* @__PURE__ */ O("div", {
181
196
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
182
197
  children: [
183
- {
198
+ /* @__PURE__ */ D(u, {
184
199
  label: "Daily Revenue",
185
- value: l(q.dailyRevenue, { minimumFractionDigits: 0 }),
186
- icon: y,
187
- sublabel: null
188
- },
189
- {
200
+ value: l(K.dailyRevenue, { minimumFractionDigits: 0 }),
201
+ delta: Y.revenueDelta,
202
+ deltaLabel: "vs yesterday",
203
+ icon: /* @__PURE__ */ D(se, { className: "h-4 w-4" }),
204
+ sparkline: Y.revenueSpark,
205
+ sparklineVariant: "area"
206
+ }),
207
+ /* @__PURE__ */ D(u, {
190
208
  label: "Orders Today",
191
- value: String(q.ordersToday),
192
- icon: w,
193
- sublabel: null
194
- },
195
- {
209
+ value: K.ordersToday,
210
+ delta: Y.ordersDelta,
211
+ deltaLabel: "vs yesterday",
212
+ icon: /* @__PURE__ */ D(w, { className: "h-4 w-4" }),
213
+ sparkline: Y.ordersSpark,
214
+ sparklineVariant: "line"
215
+ }),
216
+ /* @__PURE__ */ D(u, {
196
217
  label: "Avg Order Value",
197
- value: l(q.averageOrderValue, { minimumFractionDigits: 0 }),
198
- icon: E,
199
- sublabel: null
200
- },
201
- {
218
+ value: l(K.averageOrderValue, { minimumFractionDigits: 0 }),
219
+ icon: /* @__PURE__ */ D(E, { className: "h-4 w-4" })
220
+ }),
221
+ /* @__PURE__ */ D(u, {
202
222
  label: "Service Rating",
203
- value: q.rating.toFixed(1),
204
- icon: T,
205
- sublabel: q.totalRatings > 0 ? `Based on ${q.totalRatings} ${q.totalRatings === 1 ? "rating" : "ratings"}` : "No ratings yet"
206
- }
207
- ].map((e) => {
208
- let t = e.icon;
209
- return /* @__PURE__ */ O("div", {
210
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm",
211
- children: [
212
- /* @__PURE__ */ O("div", {
213
- className: "flex items-center justify-between",
214
- children: [/* @__PURE__ */ D("div", {
215
- className: "rounded-md bg-accent p-2",
216
- children: /* @__PURE__ */ D(t, { className: "h-5 w-5 text-text-secondary" })
217
- }), e.sublabel && /* @__PURE__ */ D("span", {
218
- className: "text-xs text-text-secondary",
219
- children: e.sublabel
220
- })]
221
- }),
222
- /* @__PURE__ */ D("p", {
223
- className: "mt-3 text-2xl font-bold text-text-primary",
224
- children: e.value
225
- }),
226
- /* @__PURE__ */ D("p", {
227
- className: "mt-1 text-sm text-text-secondary",
228
- children: e.label
229
- })
230
- ]
231
- }, e.label);
232
- })
223
+ value: /* @__PURE__ */ O("span", {
224
+ className: "flex items-baseline gap-1.5",
225
+ children: [
226
+ K.rating.toFixed(1),
227
+ /* @__PURE__ */ D(T, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }),
228
+ /* @__PURE__ */ D("span", {
229
+ className: "text-xs font-normal text-text-muted",
230
+ children: K.totalRatings > 0 ? `${K.totalRatings} ${K.totalRatings === 1 ? "rating" : "ratings"}` : "No ratings yet"
231
+ })
232
+ ]
233
+ }),
234
+ icon: /* @__PURE__ */ D(T, { className: "h-4 w-4" })
235
+ })
236
+ ]
233
237
  })] }),
234
238
  /* @__PURE__ */ O("div", {
235
239
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
@@ -262,13 +266,13 @@ var k = () => {
262
266
  },
263
267
  {
264
268
  label: "Analytics",
265
- icon: re,
269
+ icon: g,
266
270
  color: "bg-accent-purple-subtle text-text-primary",
267
271
  path: "/cart-owner/analytics"
268
272
  },
269
273
  {
270
274
  label: "Staff",
271
- icon: oe,
275
+ icon: ce,
272
276
  color: "bg-accent-purple-subtle text-text-primary",
273
277
  path: "/cart-owner/staff"
274
278
  },
@@ -302,12 +306,12 @@ var k = () => {
302
306
  className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
303
307
  children: "View All Orders"
304
308
  })]
305
- }), J.length === 0 ? /* @__PURE__ */ D("div", {
309
+ }), q.length === 0 ? /* @__PURE__ */ D("div", {
306
310
  className: "rounded-lg border border-border-subtle bg-bg-surface p-8 text-center text-sm text-text-secondary shadow-sm",
307
311
  children: "No orders yet. New orders from customers will appear here."
308
312
  }) : /* @__PURE__ */ D("div", {
309
313
  className: "space-y-3",
310
- children: J.map((e) => /* @__PURE__ */ D("div", {
314
+ children: q.map((e) => /* @__PURE__ */ D("div", {
311
315
  className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
312
316
  children: /* @__PURE__ */ O("div", {
313
317
  className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-3",
@@ -335,7 +339,7 @@ var k = () => {
335
339
  children: l(e.total, { minimumFractionDigits: 0 })
336
340
  }), /* @__PURE__ */ O("span", {
337
341
  className: "flex items-center gap-1",
338
- children: [/* @__PURE__ */ D(h, { className: "h-3 w-3" }), M(e.orderDate)]
342
+ children: [/* @__PURE__ */ D(y, { className: "h-3 w-3" }), M(e.orderDate)]
339
343
  })]
340
344
  })
341
345
  ]
@@ -346,19 +350,19 @@ var k = () => {
346
350
  type: "button",
347
351
  onClick: () => N("/cart-owner/orders"),
348
352
  className: "inline-flex items-center gap-1 rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
349
- children: [/* @__PURE__ */ D(_, { className: "h-3 w-3" }), "View"]
353
+ children: [/* @__PURE__ */ D(ae, { className: "h-3 w-3" }), "View"]
350
354
  }),
351
355
  e.status === "pending" && /* @__PURE__ */ O("button", {
352
356
  type: "button",
353
357
  onClick: () => $(e.id, "CONFIRMED"),
354
358
  className: "inline-flex items-center gap-1 rounded-md bg-status-success-bg-subtle px-3 py-1.5 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
355
- children: [/* @__PURE__ */ D(m, { className: "h-3 w-3" }), "Accept"]
359
+ children: [/* @__PURE__ */ D(_, { className: "h-3 w-3" }), "Accept"]
356
360
  }),
357
361
  (e.status === "confirmed" || e.status === "preparing") && /* @__PURE__ */ O("button", {
358
362
  type: "button",
359
363
  onClick: () => $(e.id, "READY"),
360
364
  className: "inline-flex items-center gap-1 rounded-md bg-[var(--color-accent-soft)] px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-[var(--color-accent-soft)] transition-colors",
361
- children: [/* @__PURE__ */ D(m, { className: "h-3 w-3" }), "Mark Ready"]
365
+ children: [/* @__PURE__ */ D(_, { className: "h-3 w-3" }), "Mark Ready"]
362
366
  })
363
367
  ]
364
368
  })]
@@ -369,73 +373,34 @@ var k = () => {
369
373
  className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
370
374
  children: [/* @__PURE__ */ O("div", {
371
375
  className: "flex items-center justify-between border-b border-border-subtle px-5 py-4",
372
- children: [/* @__PURE__ */ D("h3", {
376
+ children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("h3", {
373
377
  className: "text-base font-semibold text-text-primary",
374
- children: "Revenue (Last 7 Days)"
375
- }), /* @__PURE__ */ D("button", {
378
+ children: "Last 7 days Revenue"
379
+ }), /* @__PURE__ */ O("p", {
380
+ className: "mt-0.5 text-xs text-text-secondary",
381
+ children: [
382
+ l(J.reduce((e, t) => e + t.revenue, 0), { minimumFractionDigits: 0 }),
383
+ " ",
384
+ "delivered · ",
385
+ J.reduce((e, t) => e + t.orders, 0),
386
+ " orders"
387
+ ]
388
+ })] }), /* @__PURE__ */ D("button", {
376
389
  type: "button",
377
390
  onClick: () => N("/cart-owner/analytics"),
378
391
  className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
379
392
  children: "View Analytics"
380
393
  })]
381
394
  }), /* @__PURE__ */ D("div", {
382
- className: "overflow-x-auto",
383
- children: /* @__PURE__ */ O("table", {
384
- className: "w-full text-sm",
385
- children: [/* @__PURE__ */ D("thead", { children: /* @__PURE__ */ O("tr", {
386
- className: "border-b border-border-subtle",
387
- children: [
388
- /* @__PURE__ */ D("th", {
389
- className: "px-5 py-3 text-left font-medium text-text-secondary",
390
- children: "Date"
391
- }),
392
- /* @__PURE__ */ D("th", {
393
- className: "px-5 py-3 text-right font-medium text-text-secondary",
394
- children: "Orders"
395
- }),
396
- /* @__PURE__ */ D("th", {
397
- className: "px-5 py-3 text-right font-medium text-text-secondary",
398
- children: "Revenue"
399
- }),
400
- /* @__PURE__ */ D("th", {
401
- className: "px-5 py-3 text-left font-medium text-text-secondary",
402
- children: "Trend"
403
- })
404
- ]
405
- }) }), /* @__PURE__ */ D("tbody", { children: Y.map((e) => {
406
- let t = Math.max(...Y.map((e) => e.revenue), 1), n = e.revenue / t * 100;
407
- return /* @__PURE__ */ O("tr", {
408
- className: "border-b border-border-subtle last:border-0",
409
- children: [
410
- /* @__PURE__ */ D("td", {
411
- className: "px-5 py-3 text-text-primary text-xs",
412
- children: new Date(e.date).toLocaleDateString("en-IN", {
413
- day: "2-digit",
414
- month: "short",
415
- weekday: "short"
416
- })
417
- }),
418
- /* @__PURE__ */ D("td", {
419
- className: "px-5 py-3 text-right text-text-primary",
420
- children: e.orders
421
- }),
422
- /* @__PURE__ */ D("td", {
423
- className: "px-5 py-3 text-right font-medium text-text-primary",
424
- children: l(e.revenue, { minimumFractionDigits: 0 })
425
- }),
426
- /* @__PURE__ */ D("td", {
427
- className: "px-5 py-3 w-40",
428
- children: /* @__PURE__ */ D("div", {
429
- className: "h-4 rounded bg-bg-sunken overflow-hidden",
430
- children: /* @__PURE__ */ D("div", {
431
- className: "h-full rounded bg-[var(--color-accent-soft)]",
432
- style: { width: `${n}%` }
433
- })
434
- })
435
- })
436
- ]
437
- }, e.date);
438
- }) })]
395
+ className: "p-5",
396
+ children: J.some((e) => e.revenue > 0) ? /* @__PURE__ */ D(ne, {
397
+ series: Y.revenueSeries,
398
+ height: 220,
399
+ title: "Revenue over the last 7 days",
400
+ valueFormatter: (e) => l(e, { minimumFractionDigits: 0 })
401
+ }) : /* @__PURE__ */ D("p", {
402
+ className: "py-10 text-center text-sm text-text-secondary",
403
+ children: "No delivered revenue in the last 7 days yet. Completed orders will chart here."
439
404
  })
440
405
  })]
441
406
  }),
@@ -451,7 +416,7 @@ var k = () => {
451
416
  className: "text-center p-3 rounded-lg bg-bg-sunken/50",
452
417
  children: [/* @__PURE__ */ D("div", {
453
418
  className: "text-xl font-bold text-text-primary",
454
- children: l(q.totalRevenue, { minimumFractionDigits: 0 })
419
+ children: l(K.totalRevenue, { minimumFractionDigits: 0 })
455
420
  }), /* @__PURE__ */ D("div", {
456
421
  className: "text-xs text-text-secondary mt-1",
457
422
  children: "Total Revenue"
@@ -461,7 +426,7 @@ var k = () => {
461
426
  className: "text-center p-3 rounded-lg bg-bg-sunken/50",
462
427
  children: [/* @__PURE__ */ D("div", {
463
428
  className: "text-xl font-bold text-text-primary",
464
- children: q.totalOrders
429
+ children: K.totalOrders
465
430
  }), /* @__PURE__ */ D("div", {
466
431
  className: "text-xs text-text-secondary mt-1",
467
432
  children: "Total Orders"
@@ -471,7 +436,7 @@ var k = () => {
471
436
  className: "text-center p-3 rounded-lg bg-bg-sunken/50",
472
437
  children: [/* @__PURE__ */ D("div", {
473
438
  className: "text-xl font-bold text-text-primary",
474
- children: l(q.averageOrderValue, { minimumFractionDigits: 0 })
439
+ children: l(K.averageOrderValue, { minimumFractionDigits: 0 })
475
440
  }), /* @__PURE__ */ D("div", {
476
441
  className: "text-xs text-text-secondary mt-1",
477
442
  children: "Avg Order Value"
@@ -490,7 +455,7 @@ var k = () => {
490
455
  className: "flex items-center justify-between mb-4",
491
456
  children: /* @__PURE__ */ O("h3", {
492
457
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
493
- children: [/* @__PURE__ */ D(ie, { className: "h-4 w-4" }), "Notifications"]
458
+ children: [/* @__PURE__ */ D(re, { className: "h-4 w-4" }), "Notifications"]
494
459
  })
495
460
  }), /* @__PURE__ */ D("p", {
496
461
  className: "text-xs text-text-secondary",
@@ -501,7 +466,7 @@ var k = () => {
501
466
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm",
502
467
  children: [/* @__PURE__ */ O("h3", {
503
468
  className: "text-base font-semibold text-text-primary mb-4 flex items-center gap-2",
504
- children: [/* @__PURE__ */ D(v, { className: "h-4 w-4 text-status-warning-text" }), "Top Selling Items"]
469
+ children: [/* @__PURE__ */ D(oe, { className: "h-4 w-4 text-status-warning-text" }), "Top Selling Items"]
505
470
  }), X.length === 0 ? /* @__PURE__ */ D("p", {
506
471
  className: "text-xs text-text-secondary",
507
472
  children: "No sales yet. Your best sellers will appear here once orders come in."
@@ -537,19 +502,19 @@ var k = () => {
537
502
  className: "flex items-center justify-between mb-4",
538
503
  children: [/* @__PURE__ */ O("h3", {
539
504
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
540
- children: [/* @__PURE__ */ D(se, { className: "h-4 w-4" }), "Staff Overview"]
505
+ children: [/* @__PURE__ */ D(le, { className: "h-4 w-4" }), "Staff Overview"]
541
506
  }), /* @__PURE__ */ D("button", {
542
507
  type: "button",
543
508
  onClick: () => N("/cart-owner/staff"),
544
509
  className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
545
510
  children: "Manage"
546
511
  })]
547
- }), H.length === 0 ? /* @__PURE__ */ D("p", {
512
+ }), V.length === 0 ? /* @__PURE__ */ D("p", {
548
513
  className: "text-xs text-text-secondary",
549
514
  children: "No staff added yet. Invite workers and delivery partners from Staff."
550
515
  }) : /* @__PURE__ */ D("div", {
551
516
  className: "space-y-3",
552
- children: H.map((e) => /* @__PURE__ */ O("div", {
517
+ children: V.map((e) => /* @__PURE__ */ O("div", {
553
518
  className: "flex items-center justify-between",
554
519
  children: [/* @__PURE__ */ O("div", {
555
520
  className: "flex items-center gap-2",
@@ -582,7 +547,7 @@ var k = () => {
582
547
  children: "Active Offerings"
583
548
  }), /* @__PURE__ */ D("span", {
584
549
  className: "text-sm font-semibold text-text-primary",
585
- children: q.activeOfferings
550
+ children: K.activeOfferings
586
551
  })]
587
552
  }),
588
553
  /* @__PURE__ */ O("div", {
@@ -592,7 +557,7 @@ var k = () => {
592
557
  children: "Customer Rating"
593
558
  }), /* @__PURE__ */ O("span", {
594
559
  className: "text-sm font-semibold text-text-primary flex items-center gap-1",
595
- children: [/* @__PURE__ */ D(T, { className: "h-3 w-3 text-status-warning-text fill-status-warning-text" }), q.rating.toFixed(1)]
560
+ children: [/* @__PURE__ */ D(T, { className: "h-3 w-3 text-status-warning-text fill-status-warning-text" }), K.rating.toFixed(1)]
596
561
  })]
597
562
  }),
598
563
  /* @__PURE__ */ O("div", {
@@ -602,7 +567,7 @@ var k = () => {
602
567
  children: "Reviews"
603
568
  }), /* @__PURE__ */ D("span", {
604
569
  className: "text-sm font-semibold text-text-primary",
605
- children: V.length
570
+ children: me.length
606
571
  })]
607
572
  })
608
573
  ]
@@ -623,7 +588,7 @@ var k = () => {
623
588
  },
624
589
  {
625
590
  label: "Business Profile",
626
- icon: g,
591
+ icon: ie,
627
592
  path: "/cart-owner/profile"
628
593
  },
629
594
  {
@@ -640,7 +605,7 @@ var k = () => {
640
605
  children: [/* @__PURE__ */ O("span", {
641
606
  className: "flex items-center gap-2",
642
607
  children: [/* @__PURE__ */ D(t, { className: "h-3.5 w-3.5" }), e.label]
643
- }), /* @__PURE__ */ D(ae, { className: "h-3 w-3 text-text-secondary" })]
608
+ }), /* @__PURE__ */ D(v, { className: "h-3 w-3 text-text-secondary" })]
644
609
  }, e.label);
645
610
  })
646
611
  })]
@@ -650,14 +615,14 @@ var k = () => {
650
615
  children: [/* @__PURE__ */ D("h3", {
651
616
  className: "text-base font-semibold text-text-primary mb-3",
652
617
  children: "Recent Activity"
653
- }), J.length === 0 ? /* @__PURE__ */ D("p", {
618
+ }), q.length === 0 ? /* @__PURE__ */ D("p", {
654
619
  className: "text-xs text-text-secondary",
655
620
  children: "No recent activity yet."
656
621
  }) : /* @__PURE__ */ D("div", {
657
622
  className: "space-y-2 text-xs",
658
- children: J.map((e) => /* @__PURE__ */ O("div", {
623
+ children: q.map((e) => /* @__PURE__ */ O("div", {
659
624
  className: "flex items-center gap-2",
660
- children: [/* @__PURE__ */ D(p, { className: "h-3.5 w-3.5 text-text-secondary shrink-0" }), /* @__PURE__ */ O("span", {
625
+ children: [/* @__PURE__ */ D(m, { className: "h-3.5 w-3.5 text-text-secondary shrink-0" }), /* @__PURE__ */ O("span", {
661
626
  className: "text-text-secondary truncate",
662
627
  children: [
663
628
  "Order #",
@@ -683,8 +648,8 @@ var k = () => {
683
648
  description: "You don't have a service provider yet. Set up your cart, add your offerings and configure your service to start taking orders.",
684
649
  action: /* @__PURE__ */ O("button", {
685
650
  type: "button",
686
- onClick: () => N("/cart-owner/service-config"),
687
- className: "inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80",
651
+ onClick: () => N("/cart-owner/onboarding"),
652
+ className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover",
688
653
  children: [/* @__PURE__ */ D(S, { className: "h-4 w-4" }), "Set up your cart"]
689
654
  })
690
655
  })