@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,8 +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, useProviders as o, useReviews as s } from "../../hooks/useKadaikodiApi.js";
6
6
  import { formatCurrency as c } from "../../utils/formatters.js";
7
- import { useMemo as l } from "react";
8
- import { ArrowDownRight as u, ArrowUpRight as d, BarChart3 as f, CalendarDays as p, Clock as m, Download as h, IndianRupee as g, Percent as _, ShoppingCart as v, Star as y, Target as b, ThumbsUp as x, TrendingUp as S } from "lucide-react";
7
+ import { AreaChart as l } from "../../components/viz/AreaChart.js";
8
+ import { HBarFunnel as u } from "../../components/viz/HBarFunnel.js";
9
+ import { DonutChart as d } from "../../components/viz/DonutChart.js";
10
+ import { StatCard as ee } from "../../components/viz/StatCard.js";
11
+ import "../../components/viz/index.js";
12
+ import { useMemo as f } from "react";
13
+ import { BarChart3 as p, CalendarDays as m, Clock as h, Download as g, IndianRupee as _, Percent as v, ShoppingCart as y, Star as b, Target as x, ThumbsUp as te, TrendingUp as S } from "lucide-react";
9
14
  import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
10
15
  import { EmphasisPanel as E, NextSteps as D, PagePurpose as O } from "@burdenoff/fe-libs/ui";
11
16
  //#region src/kadaikodi/pages/cart-owner/AnalyticsDashboard.tsx
@@ -29,7 +34,7 @@ var k = 864e5, A = {
29
34
  let n = t.map((e) => e.map(M).join(",")).join("\n"), r = new Blob([n], { type: "text/csv;charset=utf-8;" }), i = URL.createObjectURL(r), a = document.createElement("a");
30
35
  a.href = i, a.download = e, document.body.appendChild(a), a.click(), document.body.removeChild(a), URL.revokeObjectURL(i);
31
36
  }, P = () => {
32
- let { navigateTo: M, currentUser: P } = e(), { data: F = [], isLoading: I } = o(), L = l(() => 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 = [] } = s(R ?? ""), H = l(() => new Map(B.map((e) => [e.name, A[e.category] ?? e.category])), [B]), U = l(() => {
37
+ let { navigateTo: M, currentUser: P } = e(), { data: F = [], isLoading: I } = o(), 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: V = [] } = s(R ?? ""), H = f(() => new Map(B.map((e) => [e.name, A[e.category] ?? e.category])), [B]), U = f(() => {
33
38
  let e = z.filter((e) => e.status === "delivered"), t = j().getTime(), n = (t, n) => e.filter((e) => {
34
39
  let r = new Date(e.orderDate).getTime();
35
40
  return r >= t && r < n;
@@ -43,7 +48,7 @@ var k = 864e5, A = {
43
48
  weeklyGrowth: u(a, o),
44
49
  monthlyGrowth: u(s, c)
45
50
  };
46
- }, [z]), W = l(() => {
51
+ }, [z]), W = f(() => {
47
52
  let e = z.length, t = z.filter((e) => e.status === "delivered"), n = z.filter((e) => e.status === "cancelled"), r = t.length > 0 ? Math.round(t.reduce((e, t) => e + t.total, 0) / t.length) : 0;
48
53
  return {
49
54
  total: e,
@@ -54,7 +59,7 @@ var k = 864e5, A = {
54
59
  cancellationRate: e > 0 ? Math.round(n.length / e * 100) : 0,
55
60
  completionRate: e > 0 ? Math.round(t.length / e * 100) : 0
56
61
  };
57
- }, [z]), { popularTimes: G, peakHours: K, peakDays: q } = l(() => {
62
+ }, [z]), { popularTimes: G, peakHours: K, peakDays: q } = f(() => {
58
63
  let e = Array(24).fill(0), t = /* @__PURE__ */ new Map();
59
64
  z.forEach((n) => {
60
65
  let r = new Date(n.orderDate);
@@ -74,7 +79,7 @@ var k = 864e5, A = {
74
79
  orders: t
75
80
  })).sort((e, t) => t.orders - e.orders).slice(0, 3)
76
81
  };
77
- }, [z]), { topSelling: J, leastSelling: Y, categories: X } = l(() => {
82
+ }, [z]), { topSelling: J, leastSelling: Y, categories: X } = f(() => {
78
83
  let e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
79
84
  z.forEach((n) => n.items.forEach((n) => {
80
85
  let r = H.get(n.name) ?? "Other", i = e.get(n.name) ?? {
@@ -101,7 +106,7 @@ var k = 864e5, A = {
101
106
  ...t
102
107
  })).sort((e, t) => t.revenue - e.revenue)
103
108
  };
104
- }, [z, H]), Z = l(() => {
109
+ }, [z, H]), Z = f(() => {
105
110
  let e = V.length;
106
111
  return {
107
112
  count: e,
@@ -119,7 +124,7 @@ var k = 864e5, A = {
119
124
  })),
120
125
  recent: [...V].sort((e, t) => new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime()).slice(0, 4)
121
126
  };
122
- }, [V]), Q = l(() => {
127
+ }, [V]), Q = f(() => {
123
128
  let e = j().getTime(), t = [];
124
129
  for (let n = 13; n >= 0; n--) {
125
130
  let r = e - n * k, i = r + k, a = z.filter((e) => {
@@ -133,7 +138,28 @@ var k = 864e5, A = {
133
138
  });
134
139
  }
135
140
  return t;
136
- }, [z]), $ = Math.max(...G.map((e) => e.orders), 1), ee = Math.max(...X.map((e) => e.revenue), 1), te = Math.max(...K.map((e) => e.orders), 1), ne = Math.max(...q.map((e) => e.orders), 1), re = Math.max(...Z.distribution.map((e) => e.count), 1), ie = (e) => `${e > 0 ? "+" : ""}${e}%`;
141
+ }, [z]), $ = f(() => ({
142
+ categorySegments: X.slice(0, 6).map((e) => ({
143
+ label: e.category,
144
+ value: e.revenue
145
+ })),
146
+ trendSeries: Q.map((e) => ({
147
+ label: new Date(e.date).toLocaleDateString("en-IN", {
148
+ day: "2-digit",
149
+ month: "short"
150
+ }),
151
+ value: e.orders
152
+ })),
153
+ topItemStages: J.map((e) => ({
154
+ label: e.name,
155
+ value: e.quantity
156
+ })),
157
+ totalCategoryRevenue: X.reduce((e, t) => e + t.revenue, 0)
158
+ }), [
159
+ X,
160
+ Q,
161
+ J
162
+ ]), ne = Math.max(...G.map((e) => e.orders), 1), re = Math.max(...X.map((e) => e.revenue), 1), ie = Math.max(...K.map((e) => e.orders), 1), ae = Math.max(...q.map((e) => e.orders), 1), oe = Math.max(...Z.distribution.map((e) => e.count), 1);
137
163
  if (I) return /* @__PURE__ */ w(n, {
138
164
  title: "Analytics Dashboard",
139
165
  description: "Business performance insights and data",
@@ -157,26 +183,30 @@ var k = 864e5, A = {
157
183
  })
158
184
  })
159
185
  });
160
- let ae = [
186
+ let se = [
161
187
  {
162
188
  label: "Today's Revenue",
163
189
  value: U.today,
164
- growth: U.dailyGrowth
190
+ growth: U.dailyGrowth,
191
+ deltaLabel: "vs yesterday"
165
192
  },
166
193
  {
167
194
  label: "This Week",
168
195
  value: U.week,
169
- growth: U.weeklyGrowth
196
+ growth: U.weeklyGrowth,
197
+ deltaLabel: "vs last week"
170
198
  },
171
199
  {
172
200
  label: "This Month",
173
201
  value: U.month,
174
- growth: U.monthlyGrowth
202
+ growth: U.monthlyGrowth,
203
+ deltaLabel: "vs last month"
175
204
  },
176
205
  {
177
206
  label: "This Year",
178
207
  value: U.year,
179
- growth: null
208
+ growth: null,
209
+ deltaLabel: void 0
180
210
  }
181
211
  ];
182
212
  return /* @__PURE__ */ T(n, {
@@ -199,7 +229,7 @@ var k = 864e5, A = {
199
229
  ])]);
200
230
  },
201
231
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken transition-colors",
202
- children: [/* @__PURE__ */ w(h, { className: "h-4 w-4" }), "Export CSV"]
232
+ children: [/* @__PURE__ */ w(g, { className: "h-4 w-4" }), "Export CSV"]
203
233
  }),
204
234
  children: [
205
235
  /* @__PURE__ */ w(O, {
@@ -238,30 +268,87 @@ var k = 864e5, A = {
238
268
  children: "Revenue Overview"
239
269
  }), /* @__PURE__ */ w("div", {
240
270
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
241
- children: ae.map((e) => /* @__PURE__ */ T("div", {
242
- className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm",
243
- children: [
244
- /* @__PURE__ */ T("div", {
245
- className: "flex items-center justify-between",
246
- children: [/* @__PURE__ */ w("div", {
247
- className: "rounded-md bg-accent p-2",
248
- children: /* @__PURE__ */ w(g, { className: "h-5 w-5 text-text-secondary" })
249
- }), e.growth !== null && /* @__PURE__ */ T("div", {
250
- className: t("flex items-center gap-1 text-xs font-medium", e.growth >= 0 ? "text-status-success-text" : "text-status-error-text"),
251
- children: [e.growth >= 0 ? /* @__PURE__ */ w(d, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ w(u, { className: "h-3.5 w-3.5" }), ie(e.growth)]
252
- })]
253
- }),
254
- /* @__PURE__ */ w("p", {
255
- className: "mt-3 text-2xl font-bold text-text-primary",
256
- children: c(e.value, { minimumFractionDigits: 0 })
257
- }),
258
- /* @__PURE__ */ w("p", {
259
- className: "mt-1 text-sm text-text-secondary",
260
- children: e.label
261
- })
262
- ]
271
+ children: se.map((e) => /* @__PURE__ */ w(ee, {
272
+ label: e.label,
273
+ value: c(e.value, { minimumFractionDigits: 0 }),
274
+ delta: e.growth ?? void 0,
275
+ deltaLabel: e.deltaLabel,
276
+ icon: /* @__PURE__ */ w(_, { className: "h-4 w-4" })
263
277
  }, e.label))
264
278
  })] }),
279
+ /* @__PURE__ */ T("div", {
280
+ className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
281
+ children: [
282
+ /* @__PURE__ */ T("div", {
283
+ className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
284
+ children: [/* @__PURE__ */ w("div", {
285
+ className: "border-b border-border-subtle px-5 py-4",
286
+ children: /* @__PURE__ */ w("h2", {
287
+ className: "text-base font-semibold text-text-primary",
288
+ children: "Revenue by Category"
289
+ })
290
+ }), /* @__PURE__ */ w("div", {
291
+ className: "p-5",
292
+ children: $.categorySegments.length === 0 ? /* @__PURE__ */ w("p", {
293
+ className: "py-8 text-center text-sm text-text-secondary",
294
+ children: "No category revenue yet. Sales will break down here by category."
295
+ }) : /* @__PURE__ */ w(d, {
296
+ segments: $.categorySegments,
297
+ centerLabel: c($.totalCategoryRevenue, {
298
+ minimumFractionDigits: 0,
299
+ notation: "compact"
300
+ }),
301
+ centerCaption: "total",
302
+ valueFormatter: (e) => c(e, { minimumFractionDigits: 0 })
303
+ })
304
+ })]
305
+ }),
306
+ /* @__PURE__ */ T("div", {
307
+ className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
308
+ children: [/* @__PURE__ */ T("div", {
309
+ className: "border-b border-border-subtle px-5 py-4",
310
+ children: [/* @__PURE__ */ w("h2", {
311
+ className: "text-base font-semibold text-text-primary",
312
+ children: "Order Trends"
313
+ }), /* @__PURE__ */ w("p", {
314
+ className: "mt-0.5 text-xs text-text-secondary",
315
+ children: "Orders per day · last 14 days"
316
+ })]
317
+ }), /* @__PURE__ */ w("div", {
318
+ className: "p-5",
319
+ children: z.length === 0 ? /* @__PURE__ */ w("p", {
320
+ className: "py-8 text-center text-sm text-text-secondary",
321
+ children: "No orders yet. Your daily order trend will chart here."
322
+ }) : /* @__PURE__ */ w(l, {
323
+ series: $.trendSeries,
324
+ height: 200,
325
+ title: "Orders per day over the last 14 days",
326
+ valueFormatter: (e) => `${Math.round(e)}`
327
+ })
328
+ })]
329
+ }),
330
+ /* @__PURE__ */ T("div", {
331
+ className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
332
+ children: [/* @__PURE__ */ w("div", {
333
+ className: "border-b border-border-subtle px-5 py-4",
334
+ children: /* @__PURE__ */ w("h2", {
335
+ className: "text-base font-semibold text-text-primary",
336
+ children: "Top Selling Items"
337
+ })
338
+ }), /* @__PURE__ */ w("div", {
339
+ className: "p-5",
340
+ children: $.topItemStages.length === 0 ? /* @__PURE__ */ w("p", {
341
+ className: "py-8 text-center text-sm text-text-secondary",
342
+ children: "No sales yet. Your best sellers will rank here."
343
+ }) : /* @__PURE__ */ w(u, {
344
+ stages: $.topItemStages,
345
+ showConversion: !1,
346
+ valueFormatter: (e) => `${Math.round(e)} sold`
347
+ })
348
+ })]
349
+ })
350
+ ]
351
+ }),
265
352
  /* @__PURE__ */ T("div", {
266
353
  className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
267
354
  children: [/* @__PURE__ */ T("div", {
@@ -270,7 +357,7 @@ var k = 864e5, A = {
270
357
  className: "border-b border-border-subtle px-5 py-4",
271
358
  children: /* @__PURE__ */ T("h2", {
272
359
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
273
- children: [/* @__PURE__ */ w(v, { className: "h-4 w-4 text-text-secondary" }), "Order Statistics"]
360
+ children: [/* @__PURE__ */ w(y, { className: "h-4 w-4 text-text-secondary" }), "Order Statistics"]
274
361
  })
275
362
  }), /* @__PURE__ */ w("div", {
276
363
  className: "p-5",
@@ -314,7 +401,7 @@ var k = 864e5, A = {
314
401
  className: "border-b border-border-subtle px-5 py-4",
315
402
  children: /* @__PURE__ */ T("h2", {
316
403
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
317
- children: [/* @__PURE__ */ w(m, { className: "h-4 w-4 text-text-secondary" }), "Popular Times"]
404
+ children: [/* @__PURE__ */ w(h, { className: "h-4 w-4 text-text-secondary" }), "Popular Times"]
318
405
  })
319
406
  }), /* @__PURE__ */ w("div", {
320
407
  className: "p-5 space-y-2",
@@ -322,7 +409,7 @@ var k = 864e5, A = {
322
409
  className: "text-sm text-text-secondary py-4 text-center",
323
410
  children: "No order activity yet. Busy hours will appear here once orders come in."
324
411
  }) : G.map((e) => {
325
- let t = e.orders / $ * 100;
412
+ let t = e.orders / ne * 100;
326
413
  return /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
327
414
  className: "flex items-center justify-between text-xs mb-0.5",
328
415
  children: [/* @__PURE__ */ w("span", {
@@ -352,13 +439,13 @@ var k = 864e5, A = {
352
439
  {
353
440
  label: "Acceptance Rate",
354
441
  value: `${W.acceptanceRate}%`,
355
- icon: b,
442
+ icon: x,
356
443
  color: "text-status-success-text"
357
444
  },
358
445
  {
359
446
  label: "Cancellation Rate",
360
447
  value: `${W.cancellationRate}%`,
361
- icon: _,
448
+ icon: v,
362
449
  color: "text-status-error-text"
363
450
  },
364
451
  {
@@ -370,7 +457,7 @@ var k = 864e5, A = {
370
457
  {
371
458
  label: "Average Rating",
372
459
  value: (L.rating ?? 0).toFixed(1),
373
- icon: y,
460
+ icon: b,
374
461
  color: "text-status-warning-text"
375
462
  }
376
463
  ].map((e) => {
@@ -456,7 +543,7 @@ var k = 864e5, A = {
456
543
  className: "border-b border-border-subtle px-5 py-4",
457
544
  children: /* @__PURE__ */ T("h2", {
458
545
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
459
- children: [/* @__PURE__ */ w(f, { className: "h-4 w-4 text-text-secondary" }), "Category Performance"]
546
+ children: [/* @__PURE__ */ w(p, { className: "h-4 w-4 text-text-secondary" }), "Category Performance"]
460
547
  })
461
548
  }), /* @__PURE__ */ w("div", {
462
549
  className: "p-5 space-y-4",
@@ -464,7 +551,7 @@ var k = 864e5, A = {
464
551
  className: "text-sm text-text-secondary py-4 text-center",
465
552
  children: "No category data yet."
466
553
  }) : X.map((e) => {
467
- let t = e.revenue / ee * 100;
554
+ let t = e.revenue / re * 100;
468
555
  return /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
469
556
  className: "flex items-center justify-between text-sm mb-1",
470
557
  children: [/* @__PURE__ */ w("span", {
@@ -499,7 +586,7 @@ var k = 864e5, A = {
499
586
  className: "border-b border-border-subtle px-5 py-4",
500
587
  children: /* @__PURE__ */ T("h2", {
501
588
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
502
- children: [/* @__PURE__ */ w(y, { className: "h-4 w-4 text-text-secondary" }), "Reviews & Ratings"]
589
+ children: [/* @__PURE__ */ w(b, { className: "h-4 w-4 text-text-secondary" }), "Reviews & Ratings"]
503
590
  })
504
591
  }), /* @__PURE__ */ T("div", {
505
592
  className: "p-5",
@@ -518,7 +605,7 @@ var k = 864e5, A = {
518
605
  children: "Average Rating"
519
606
  }), /* @__PURE__ */ T("p", {
520
607
  className: "text-xl font-bold text-status-warning-text flex items-center gap-1",
521
- children: [/* @__PURE__ */ w(y, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }), Z.count > 0 ? Z.average.toFixed(1) : "—"]
608
+ children: [/* @__PURE__ */ w(b, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }), Z.count > 0 ? Z.average.toFixed(1) : "—"]
522
609
  })] }),
523
610
  /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
524
611
  className: "text-xs text-text-secondary",
@@ -539,13 +626,13 @@ var k = 864e5, A = {
539
626
  children: [
540
627
  /* @__PURE__ */ T("span", {
541
628
  className: "w-8 text-text-secondary flex items-center gap-0.5",
542
- children: [e.star, /* @__PURE__ */ w(y, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" })]
629
+ children: [e.star, /* @__PURE__ */ w(b, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" })]
543
630
  }),
544
631
  /* @__PURE__ */ w("div", {
545
632
  className: "flex-1 h-2 rounded-full bg-bg-sunken overflow-hidden",
546
633
  children: /* @__PURE__ */ w("div", {
547
634
  className: "h-full rounded-full bg-[var(--color-accent-soft)]",
548
- style: { width: `${e.count / re * 100}%` }
635
+ style: { width: `${e.count / oe * 100}%` }
549
636
  })
550
637
  }),
551
638
  /* @__PURE__ */ w("span", {
@@ -567,7 +654,7 @@ var k = 864e5, A = {
567
654
  className: "flex items-center justify-between mb-1",
568
655
  children: [/* @__PURE__ */ T("span", {
569
656
  className: "flex items-center gap-0.5 text-status-warning-text text-xs font-medium",
570
- children: [/* @__PURE__ */ w(y, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }), (e.rating ?? 0).toFixed(1)]
657
+ children: [/* @__PURE__ */ w(b, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }), (e.rating ?? 0).toFixed(1)]
571
658
  }), /* @__PURE__ */ w("span", {
572
659
  className: "text-xs text-text-secondary",
573
660
  children: new Date(e.createdAt).toLocaleDateString("en-IN", {
@@ -593,7 +680,7 @@ var k = 864e5, A = {
593
680
  className: "border-b border-border-subtle px-5 py-4",
594
681
  children: /* @__PURE__ */ T("h2", {
595
682
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
596
- children: [/* @__PURE__ */ w(m, { className: "h-4 w-4 text-text-secondary" }), "Peak Hours"]
683
+ children: [/* @__PURE__ */ w(h, { className: "h-4 w-4 text-text-secondary" }), "Peak Hours"]
597
684
  })
598
685
  }), /* @__PURE__ */ w("div", {
599
686
  className: "p-5 space-y-3",
@@ -601,7 +688,7 @@ var k = 864e5, A = {
601
688
  className: "text-sm text-text-secondary py-2 text-center",
602
689
  children: "No data yet."
603
690
  }) : K.map((e) => {
604
- let t = e.orders / te * 100;
691
+ let t = e.orders / ie * 100;
605
692
  return /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
606
693
  className: "flex items-center justify-between text-xs mb-1",
607
694
  children: [/* @__PURE__ */ w("span", {
@@ -627,7 +714,7 @@ var k = 864e5, A = {
627
714
  className: "border-b border-border-subtle px-5 py-4",
628
715
  children: /* @__PURE__ */ T("h2", {
629
716
  className: "text-base font-semibold text-text-primary flex items-center gap-2",
630
- children: [/* @__PURE__ */ w(p, { className: "h-4 w-4 text-text-secondary" }), "Peak Days"]
717
+ children: [/* @__PURE__ */ w(m, { className: "h-4 w-4 text-text-secondary" }), "Peak Days"]
631
718
  })
632
719
  }), /* @__PURE__ */ w("div", {
633
720
  className: "p-5 space-y-3",
@@ -635,7 +722,7 @@ var k = 864e5, A = {
635
722
  className: "text-sm text-text-secondary py-2 text-center",
636
723
  children: "No data yet."
637
724
  }) : q.map((e) => {
638
- let t = e.orders / ne * 100;
725
+ let t = e.orders / ae * 100;
639
726
  return /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
640
727
  className: "flex items-center justify-between text-xs mb-1",
641
728
  children: [/* @__PURE__ */ w("span", {
@@ -659,7 +746,7 @@ var k = 864e5, A = {
659
746
  className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm",
660
747
  children: /* @__PURE__ */ T("div", {
661
748
  className: "flex items-center gap-1.5 text-sm",
662
- children: [/* @__PURE__ */ w(x, { className: "h-4 w-4 text-status-success-text" }), /* @__PURE__ */ T("span", {
749
+ children: [/* @__PURE__ */ w(te, { className: "h-4 w-4 text-status-success-text" }), /* @__PURE__ */ T("span", {
663
750
  className: "text-text-secondary",
664
751
  children: [
665
752
  Z.positive,