@burdenoff/microfe-kadaikodi 2026.704.3 → 2026.704.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. package/package.json +1 -1
@@ -1,75 +1,116 @@
1
1
  import { useKadaikodi as e } from "../../context/KadaikodiContext.js";
2
2
  import { cn as t } from "../../utils/cn.js";
3
3
  import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { MetricsCard as r } from "../../components/MetricsCard.js";
5
- import { useAdminAnalytics as i, useDashboardStats as a, useOrders as o, useProviders as s } from "../../hooks/useKadaikodiApi.js";
6
- import { formatCurrency as c } from "../../utils/formatters.js";
7
- import { useMemo as l, useState as u } from "react";
8
- import { Award as d, BarChart3 as f, IndianRupee as p, Loader2 as m, ShoppingBag as h, Star as g, Store as _, TrendingUp as v, Users as y, Zap as b } from "lucide-react";
9
- import { jsx as x, jsxs as S } from "react/jsx-runtime";
10
- import { EmphasisPanel as C, NextSteps as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
4
+ import { useAdminAnalytics as r, useDashboardStats as i, useOrders as a, useProviders as o } from "../../hooks/useKadaikodiApi.js";
5
+ import { formatCurrency as s } from "../../utils/formatters.js";
6
+ import { MetricsCard as c } from "../../components/MetricsCard.js";
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 "../../components/viz/index.js";
11
+ import { useMemo as f, useState as p } from "react";
12
+ import { Award as ee, BarChart3 as m, IndianRupee as h, Loader2 as g, ShoppingBag as _, Star as v, Store as y, TrendingUp as b, Users as x, Zap as te } from "lucide-react";
13
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
14
+ import { EmphasisPanel as w, GlassCard as T, NextSteps as E, PagePurpose as D } from "@burdenoff/fe-libs/ui";
11
15
  //#region src/kadaikodi/pages/admin/AdminAnalyticsPage.tsx
12
- function E() {
13
- let { navigateTo: E } = e(), { data: D, isLoading: O } = a(), { data: k, isLoading: A } = i(), { data: j = [], isLoading: M } = s(), { data: N = [], isLoading: P } = o({}), [F, I] = u("overview"), L = O || A || M || P, R = (e) => e >= 1e7 ? `₹${(e / 1e7).toFixed(1)}Cr` : e >= 1e5 ? `₹${(e / 1e5).toFixed(1)}L` : c(e, { minimumFractionDigits: 0 }), z = l(() => {
14
- let e = N.length, t = N.filter((e) => e.status === "delivered").length, n = N.filter((e) => e.status === "cancelled").length, r = N.filter((e) => e.status === "pending" || e.status === "confirmed").length, i = /* @__PURE__ */ new Date();
16
+ var O = 1440 * 60 * 1e3, k = (e) => e.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (e) => e.toUpperCase()), A = (e) => {
17
+ let t = new Date(e);
18
+ return t.setHours(0, 0, 0, 0), t.getTime();
19
+ }, j = (e) => new Date(e).toLocaleDateString("en-IN", {
20
+ day: "numeric",
21
+ month: "short"
22
+ });
23
+ function M() {
24
+ let { navigateTo: M } = e(), { data: N, isLoading: P } = i(), { data: F, isLoading: I } = r(), { data: L = [], isLoading: R } = o(), { data: z = [], isLoading: B } = a({}), [V, H] = p("overview"), U = P || I || R || B, W = (e) => e >= 1e7 ? `₹${(e / 1e7).toFixed(1)}Cr` : e >= 1e5 ? `₹${(e / 1e5).toFixed(1)}L` : s(e, { minimumFractionDigits: 0 }), G = f(() => {
25
+ let e = z.length, t = z.filter((e) => e.status === "delivered").length, n = z.filter((e) => e.status === "cancelled").length, r = z.filter((e) => e.status === "pending" || e.status === "confirmed").length, i = /* @__PURE__ */ new Date();
15
26
  return i.setHours(0, 0, 0, 0), {
16
27
  total: e,
17
28
  completed: t,
18
29
  cancelled: n,
19
30
  pending: r,
20
- ordersToday: N.filter((e) => new Date(e.orderDate).getTime() >= i.getTime()).length,
21
- avgOrderValue: D && D.totalOrders > 0 ? D.totalRevenue / D.totalOrders : 0
31
+ ordersToday: z.filter((e) => new Date(e.orderDate).getTime() >= i.getTime()).length,
32
+ avgOrderValue: N && N.totalOrders > 0 ? N.totalRevenue / N.totalOrders : 0
22
33
  };
23
- }, [N, D]), B = l(() => j.filter((e) => !e.isOpen).length, [j]), V = k?.topProviders ?? [], H = k?.customerGrowth?.customers ?? 0, U = l(() => {
24
- let e = Object.entries(k?.categoryDistribution ?? {}), t = e.reduce((e, [, t]) => e + t, 0);
34
+ }, [z, N]), K = f(() => L.filter((e) => !e.isOpen).length, [L]), q = F?.topProviders ?? [], J = F?.customerGrowth?.customers ?? 0, Y = f(() => {
35
+ let e = Object.entries(F?.categoryDistribution ?? {}), t = e.reduce((e, [, t]) => e + t, 0);
25
36
  return e.map(([e, n]) => ({
26
37
  category: e,
27
38
  count: n,
28
39
  percentage: t > 0 ? n / t * 100 : 0
29
40
  })).sort((e, t) => t.count - e.count);
30
- }, [k]), W = (e) => e.replace(/_/g, " ").toLowerCase(), G = (e, t) => t > 0 ? e / t * 100 : 0, K = (e) => e < 3 ? /* @__PURE__ */ x(d, { className: "h-5 w-5 text-status-warning-text" }) : /* @__PURE__ */ x(f, { className: "h-5 w-5 text-text-secondary" });
31
- if (L || !D) return /* @__PURE__ */ x(n, {
41
+ }, [F]), X = (e) => e.replace(/_/g, " ").toLowerCase(), Z = (e, t) => t > 0 ? e / t * 100 : 0, Q = f(() => Object.entries(F?.categoryDistribution ?? {}).sort((e, t) => t[1] - e[1]).map(([e, t]) => ({
42
+ label: k(e),
43
+ value: t
44
+ })), [F]), ne = f(() => Q.reduce((e, t) => e + t.value, 0), [Q]), { gmvTrend: re, volumeTrend: ie } = f(() => {
45
+ let e = A(/* @__PURE__ */ new Date()), t = e - 29 * O, n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
46
+ for (let i = t; i <= e; i += O) n.set(i, 0), r.set(i, 0);
47
+ for (let e of z) {
48
+ let t = A(new Date(e.orderDate));
49
+ n.has(t) && (n.set(t, (n.get(t) ?? 0) + (e.total ?? 0)), r.set(t, (r.get(t) ?? 0) + 1));
50
+ }
51
+ return {
52
+ gmvTrend: [...n.entries()].map(([e, t]) => ({
53
+ label: j(e),
54
+ value: t
55
+ })),
56
+ volumeTrend: [...r.entries()].map(([e, t]) => ({
57
+ label: j(e),
58
+ value: t
59
+ }))
60
+ };
61
+ }, [z]), $ = f(() => {
62
+ let e = new Map(L.map((e) => [e.id, e.category])), t = /* @__PURE__ */ new Map();
63
+ for (let n of z) {
64
+ let r = e.get(n.cartId) ?? "OTHER";
65
+ t.set(r, (t.get(r) ?? 0) + (n.total ?? 0));
66
+ }
67
+ return [...t.entries()].filter(([, e]) => e > 0).sort((e, t) => t[1] - e[1]).slice(0, 6).map(([e, t]) => ({
68
+ label: k(e),
69
+ value: t
70
+ }));
71
+ }, [z, L]), ae = (e) => e < 3 ? /* @__PURE__ */ S(ee, { className: "h-5 w-5 text-status-warning-text" }) : /* @__PURE__ */ S(m, { className: "h-5 w-5 text-text-secondary" });
72
+ if (U || !N) return /* @__PURE__ */ S(n, {
32
73
  title: "Platform Analytics",
33
74
  description: "Loading analytics...",
34
- children: /* @__PURE__ */ S("div", {
75
+ children: /* @__PURE__ */ C("div", {
35
76
  className: "flex flex-col items-center justify-center py-20",
36
- children: [/* @__PURE__ */ x(m, { className: "h-10 w-10 animate-spin text-text-secondary mb-4" }), /* @__PURE__ */ x("p", {
77
+ children: [/* @__PURE__ */ S(g, { className: "h-10 w-10 animate-spin text-text-secondary mb-4" }), /* @__PURE__ */ S("p", {
37
78
  className: "text-text-secondary",
38
79
  children: "Loading analytics..."
39
80
  })]
40
81
  })
41
82
  });
42
- let q = [
83
+ let oe = [
43
84
  {
44
85
  key: "overview",
45
86
  label: "Overview",
46
- icon: f
87
+ icon: m
47
88
  },
48
89
  {
49
90
  key: "revenue",
50
91
  label: "Revenue",
51
- icon: p
92
+ icon: h
52
93
  },
53
94
  {
54
95
  key: "users",
55
96
  label: "Users",
56
- icon: y
97
+ icon: x
57
98
  },
58
99
  {
59
100
  key: "performance",
60
101
  label: "Performance",
61
- icon: b
102
+ icon: te
62
103
  }
63
104
  ];
64
- return /* @__PURE__ */ S(n, {
105
+ return /* @__PURE__ */ C(n, {
65
106
  title: "Platform Analytics",
66
107
  description: "Comprehensive platform metrics and trends",
67
108
  children: [
68
- /* @__PURE__ */ x(T, {
109
+ /* @__PURE__ */ S(D, {
69
110
  className: "mb-6",
70
111
  children: "Your bird's-eye view of how Kadaikodi is performing. Spot revenue and order trends, see which carts and categories drive the most business, and understand where customers are growing — so you can decide where to invest and which carts to promote. Switch tabs to drill into revenue, users, and operational performance."
71
112
  }),
72
- /* @__PURE__ */ x(w, {
113
+ /* @__PURE__ */ S(E, {
73
114
  storageKey: "kadaikodi-admin-analytics",
74
115
  className: "mb-6",
75
116
  steps: [
@@ -77,309 +118,403 @@ function E() {
77
118
  id: "review-carts",
78
119
  label: "Review top-performing carts",
79
120
  description: "See which carts drive the most revenue and orders.",
80
- onClick: () => I("overview")
121
+ onClick: () => H("overview")
81
122
  },
82
123
  {
83
124
  id: "check-revenue",
84
125
  label: "Break down revenue by category",
85
126
  description: "Find your strongest categories in the Revenue tab.",
86
- onClick: () => I("revenue")
127
+ onClick: () => H("revenue")
87
128
  },
88
129
  {
89
130
  id: "manage-carts",
90
131
  label: "Approve pending carts",
91
132
  description: "Onboard the carts waiting for review.",
92
- onClick: () => E("/admin/carts"),
93
- done: B === 0
133
+ onClick: () => M("/admin/carts"),
134
+ done: K === 0
94
135
  }
95
136
  ]
96
137
  }),
97
- /* @__PURE__ */ x("div", {
138
+ /* @__PURE__ */ S("div", {
98
139
  className: "flex justify-end mb-6",
99
- children: /* @__PURE__ */ S("span", {
140
+ children: /* @__PURE__ */ C("span", {
100
141
  className: "text-sm text-text-secondary",
101
142
  children: ["Last updated: ", (/* @__PURE__ */ new Date()).toLocaleString("en-IN")]
102
143
  })
103
144
  }),
104
- /* @__PURE__ */ S(C, {
145
+ /* @__PURE__ */ C(w, {
105
146
  className: "mb-8",
106
- children: [/* @__PURE__ */ x("h2", {
147
+ children: [/* @__PURE__ */ S("h2", {
107
148
  className: "mb-4 text-lg font-semibold text-text-primary",
108
149
  children: "Key Metrics"
109
- }), /* @__PURE__ */ S("div", {
150
+ }), /* @__PURE__ */ C("div", {
110
151
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
111
152
  children: [
112
- /* @__PURE__ */ x(r, {
153
+ /* @__PURE__ */ S(c, {
113
154
  featured: !0,
114
- icon: /* @__PURE__ */ x(p, { className: "h-5 w-5" }),
115
- value: R(D.totalRevenue),
155
+ icon: /* @__PURE__ */ S(h, { className: "h-5 w-5" }),
156
+ value: W(N.totalRevenue),
116
157
  label: "Total Revenue"
117
158
  }),
118
- /* @__PURE__ */ x(r, {
119
- icon: /* @__PURE__ */ x(h, { className: "h-5 w-5" }),
120
- value: (D.totalOrders ?? 0).toLocaleString("en-IN"),
159
+ /* @__PURE__ */ S(c, {
160
+ icon: /* @__PURE__ */ S(_, { className: "h-5 w-5" }),
161
+ value: (N.totalOrders ?? 0).toLocaleString("en-IN"),
121
162
  label: "Total Orders"
122
163
  }),
123
- /* @__PURE__ */ x(r, {
124
- icon: /* @__PURE__ */ x(y, { className: "h-5 w-5" }),
125
- value: (D.activeCustomers ?? 0).toLocaleString("en-IN"),
164
+ /* @__PURE__ */ S(c, {
165
+ icon: /* @__PURE__ */ S(x, { className: "h-5 w-5" }),
166
+ value: (N.activeCustomers ?? 0).toLocaleString("en-IN"),
126
167
  label: "Active Customers"
127
168
  }),
128
- /* @__PURE__ */ x(r, {
129
- icon: /* @__PURE__ */ x(_, { className: "h-5 w-5" }),
130
- value: (D.activeProviders ?? 0).toLocaleString("en-IN"),
169
+ /* @__PURE__ */ S(c, {
170
+ icon: /* @__PURE__ */ S(y, { className: "h-5 w-5" }),
171
+ value: (N.activeProviders ?? 0).toLocaleString("en-IN"),
131
172
  label: "Active Carts",
132
- trendValue: `${B} pending`
173
+ trendValue: `${K} pending`
133
174
  })
134
175
  ]
135
176
  })]
136
177
  }),
137
- /* @__PURE__ */ S("div", {
178
+ /* @__PURE__ */ C("div", {
179
+ className: "mb-8 grid grid-cols-1 gap-6 lg:grid-cols-2",
180
+ children: [
181
+ /* @__PURE__ */ C(T, {
182
+ treatment: "plain",
183
+ className: "p-6",
184
+ children: [/* @__PURE__ */ S("h3", {
185
+ className: "mb-4 text-base font-semibold text-text-primary",
186
+ children: "Category Distribution"
187
+ }), Q.length > 0 ? /* @__PURE__ */ S(d, {
188
+ segments: Q,
189
+ centerLabel: ne.toLocaleString("en-IN"),
190
+ centerCaption: "carts",
191
+ valueFormatter: (e) => e.toLocaleString("en-IN")
192
+ }) : /* @__PURE__ */ S("p", {
193
+ className: "text-sm text-text-secondary",
194
+ children: "Category breakdown will appear here as carts are onboarded."
195
+ })]
196
+ }),
197
+ /* @__PURE__ */ C(T, {
198
+ treatment: "plain",
199
+ className: "p-6",
200
+ children: [/* @__PURE__ */ C("div", {
201
+ className: "mb-4 flex items-center justify-between gap-2",
202
+ children: [/* @__PURE__ */ S("h3", {
203
+ className: "text-base font-semibold text-text-primary",
204
+ children: "GMV over time"
205
+ }), /* @__PURE__ */ S("span", {
206
+ className: "text-xs text-text-muted",
207
+ children: "Last 30 days"
208
+ })]
209
+ }), z.length > 0 ? /* @__PURE__ */ S(l, {
210
+ series: re,
211
+ height: 200,
212
+ valueFormatter: (e) => W(e),
213
+ title: "Gross merchandise value per day over the last 30 days"
214
+ }) : /* @__PURE__ */ S("p", {
215
+ className: "text-sm text-text-secondary",
216
+ children: "GMV will chart here once orders are placed."
217
+ })]
218
+ }),
219
+ /* @__PURE__ */ C(T, {
220
+ treatment: "plain",
221
+ className: "p-6",
222
+ children: [/* @__PURE__ */ C("div", {
223
+ className: "mb-4 flex items-center justify-between gap-2",
224
+ children: [/* @__PURE__ */ S("h3", {
225
+ className: "text-base font-semibold text-text-primary",
226
+ children: "Order Volume"
227
+ }), /* @__PURE__ */ S("span", {
228
+ className: "text-xs text-text-muted",
229
+ children: "Last 30 days"
230
+ })]
231
+ }), z.length > 0 ? /* @__PURE__ */ S(l, {
232
+ series: ie,
233
+ height: 200,
234
+ valueFormatter: (e) => e.toLocaleString("en-IN"),
235
+ title: "Order volume per day over the last 30 days"
236
+ }) : /* @__PURE__ */ S("p", {
237
+ className: "text-sm text-text-secondary",
238
+ children: "Order volume will chart here once orders are placed."
239
+ })]
240
+ }),
241
+ /* @__PURE__ */ C(T, {
242
+ treatment: "plain",
243
+ className: "p-6",
244
+ children: [/* @__PURE__ */ S("h3", {
245
+ className: "mb-4 text-base font-semibold text-text-primary",
246
+ children: "Top Categories by Revenue"
247
+ }), $.length > 0 ? /* @__PURE__ */ S(u, {
248
+ stages: $,
249
+ showConversion: !1,
250
+ valueFormatter: (e) => W(e)
251
+ }) : /* @__PURE__ */ S("p", {
252
+ className: "text-sm text-text-secondary",
253
+ children: "Category revenue will rank here as orders come in."
254
+ })]
255
+ })
256
+ ]
257
+ }),
258
+ /* @__PURE__ */ C("div", {
138
259
  className: "rounded-lg border border-border-subtle bg-bg-surface mb-8",
139
- children: [/* @__PURE__ */ x("div", {
260
+ children: [/* @__PURE__ */ S("div", {
140
261
  className: "border-b border-border-subtle",
141
- children: /* @__PURE__ */ x("nav", {
262
+ children: /* @__PURE__ */ S("nav", {
142
263
  className: "flex -mb-px overflow-x-auto",
143
- children: q.map((e) => {
264
+ children: oe.map((e) => {
144
265
  let n = e.icon;
145
- return /* @__PURE__ */ S("button", {
266
+ return /* @__PURE__ */ C("button", {
146
267
  type: "button",
147
- onClick: () => I(e.key),
148
- className: t("flex items-center gap-2 py-3 px-4 sm:px-6 text-sm font-medium whitespace-nowrap border-b-2 transition-colors", F === e.key ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary"),
149
- children: [/* @__PURE__ */ x(n, { className: "h-4 w-4" }), /* @__PURE__ */ x("span", {
268
+ onClick: () => H(e.key),
269
+ className: t("flex items-center gap-2 py-3 px-4 sm:px-6 text-sm font-medium whitespace-nowrap border-b-2 transition-colors", V === e.key ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary"),
270
+ children: [/* @__PURE__ */ S(n, { className: "h-4 w-4" }), /* @__PURE__ */ S("span", {
150
271
  className: "hidden sm:inline",
151
272
  children: e.label
152
273
  })]
153
274
  }, e.key);
154
275
  })
155
276
  })
156
- }), /* @__PURE__ */ S("div", {
277
+ }), /* @__PURE__ */ C("div", {
157
278
  className: "p-4 sm:p-6",
158
279
  children: [
159
- F === "overview" && /* @__PURE__ */ S("div", {
280
+ V === "overview" && /* @__PURE__ */ C("div", {
160
281
  className: "space-y-8",
161
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h3", {
282
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h3", {
162
283
  className: "text-lg font-semibold text-text-primary mb-4",
163
284
  children: "Order Status Distribution"
164
- }), z.total > 0 ? /* @__PURE__ */ S("div", {
285
+ }), G.total > 0 ? /* @__PURE__ */ C("div", {
165
286
  className: "grid grid-cols-1 sm:grid-cols-3 gap-4",
166
287
  children: [
167
- /* @__PURE__ */ S("div", {
288
+ /* @__PURE__ */ C("div", {
168
289
  className: "rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-4",
169
290
  children: [
170
- /* @__PURE__ */ x("p", {
291
+ /* @__PURE__ */ S("p", {
171
292
  className: "text-sm text-status-success-text",
172
293
  children: "Completed Orders"
173
294
  }),
174
- /* @__PURE__ */ x("p", {
295
+ /* @__PURE__ */ S("p", {
175
296
  className: "text-2xl font-bold text-status-success-text",
176
- children: z.completed.toLocaleString("en-IN")
297
+ children: G.completed.toLocaleString("en-IN")
177
298
  }),
178
- /* @__PURE__ */ S("p", {
299
+ /* @__PURE__ */ C("p", {
179
300
  className: "text-sm text-status-success-text/80",
180
- children: [G(z.completed, z.total).toFixed(1), "% of total"]
301
+ children: [Z(G.completed, G.total).toFixed(1), "% of total"]
181
302
  })
182
303
  ]
183
304
  }),
184
- /* @__PURE__ */ S("div", {
305
+ /* @__PURE__ */ C("div", {
185
306
  className: "rounded-lg border border-status-warning-text/30 bg-status-warning-bg-subtle p-4",
186
307
  children: [
187
- /* @__PURE__ */ x("p", {
308
+ /* @__PURE__ */ S("p", {
188
309
  className: "text-sm text-status-warning-text",
189
310
  children: "Pending Orders"
190
311
  }),
191
- /* @__PURE__ */ x("p", {
312
+ /* @__PURE__ */ S("p", {
192
313
  className: "text-2xl font-bold text-status-warning-text",
193
- children: z.pending.toLocaleString("en-IN")
314
+ children: G.pending.toLocaleString("en-IN")
194
315
  }),
195
- /* @__PURE__ */ S("p", {
316
+ /* @__PURE__ */ C("p", {
196
317
  className: "text-sm text-status-warning-text/80",
197
- children: [G(z.pending, z.total).toFixed(1), "% of total"]
318
+ children: [Z(G.pending, G.total).toFixed(1), "% of total"]
198
319
  })
199
320
  ]
200
321
  }),
201
- /* @__PURE__ */ S("div", {
322
+ /* @__PURE__ */ C("div", {
202
323
  className: "rounded-lg border border-status-error-text/30 bg-status-error-bg-subtle p-4",
203
324
  children: [
204
- /* @__PURE__ */ x("p", {
325
+ /* @__PURE__ */ S("p", {
205
326
  className: "text-sm text-status-error-text",
206
327
  children: "Cancelled Orders"
207
328
  }),
208
- /* @__PURE__ */ x("p", {
329
+ /* @__PURE__ */ S("p", {
209
330
  className: "text-2xl font-bold text-status-error-text",
210
- children: z.cancelled.toLocaleString("en-IN")
331
+ children: G.cancelled.toLocaleString("en-IN")
211
332
  }),
212
- /* @__PURE__ */ S("p", {
333
+ /* @__PURE__ */ C("p", {
213
334
  className: "text-sm text-status-error-text/80",
214
- children: [G(z.cancelled, z.total).toFixed(1), "% of total"]
335
+ children: [Z(G.cancelled, G.total).toFixed(1), "% of total"]
215
336
  })
216
337
  ]
217
338
  })
218
339
  ]
219
- }) : /* @__PURE__ */ x("p", {
340
+ }) : /* @__PURE__ */ S("p", {
220
341
  className: "text-sm text-text-secondary",
221
342
  children: "Order breakdowns will appear here once orders are placed."
222
- })] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h3", {
343
+ })] }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h3", {
223
344
  className: "text-lg font-semibold text-text-primary mb-4",
224
345
  children: "Top Performing Carts"
225
- }), V.length > 0 ? /* @__PURE__ */ x("div", {
346
+ }), q.length > 0 ? /* @__PURE__ */ S("div", {
226
347
  className: "rounded-lg border border-border-subtle overflow-hidden",
227
- children: /* @__PURE__ */ S("table", {
348
+ children: /* @__PURE__ */ C("table", {
228
349
  className: "w-full",
229
- children: [/* @__PURE__ */ x("thead", { children: /* @__PURE__ */ S("tr", {
350
+ children: [/* @__PURE__ */ S("thead", { children: /* @__PURE__ */ C("tr", {
230
351
  className: "border-b border-border-subtle bg-bg-sunken/50",
231
352
  children: [
232
- /* @__PURE__ */ x("th", {
353
+ /* @__PURE__ */ S("th", {
233
354
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase",
234
355
  children: "Cart Name"
235
356
  }),
236
- /* @__PURE__ */ x("th", {
357
+ /* @__PURE__ */ S("th", {
237
358
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase",
238
359
  children: "Category"
239
360
  }),
240
- /* @__PURE__ */ x("th", {
361
+ /* @__PURE__ */ S("th", {
241
362
  className: "px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase",
242
363
  children: "Rating"
243
364
  })
244
365
  ]
245
- }) }), /* @__PURE__ */ x("tbody", {
366
+ }) }), /* @__PURE__ */ S("tbody", {
246
367
  className: "divide-y divide-border",
247
- children: V.map((e, t) => /* @__PURE__ */ S("tr", {
368
+ children: q.map((e, t) => /* @__PURE__ */ C("tr", {
248
369
  className: "hover:bg-accent/50 transition-colors",
249
370
  children: [
250
- /* @__PURE__ */ x("td", {
371
+ /* @__PURE__ */ S("td", {
251
372
  className: "px-4 py-3",
252
- children: /* @__PURE__ */ S("div", {
373
+ children: /* @__PURE__ */ C("div", {
253
374
  className: "flex items-center gap-2",
254
- children: [K(t), /* @__PURE__ */ x("span", {
375
+ children: [ae(t), /* @__PURE__ */ S("span", {
255
376
  className: "text-sm font-medium text-text-primary",
256
377
  children: e.name
257
378
  })]
258
379
  })
259
380
  }),
260
- /* @__PURE__ */ x("td", {
381
+ /* @__PURE__ */ S("td", {
261
382
  className: "px-4 py-3 text-sm text-left text-text-secondary capitalize",
262
- children: W(e.category)
383
+ children: X(e.category)
263
384
  }),
264
- /* @__PURE__ */ x("td", {
385
+ /* @__PURE__ */ S("td", {
265
386
  className: "px-4 py-3 text-sm text-right text-text-primary",
266
- children: /* @__PURE__ */ S("span", {
387
+ children: /* @__PURE__ */ C("span", {
267
388
  className: "flex items-center justify-end gap-1",
268
- children: [/* @__PURE__ */ x(g, { className: "h-3.5 w-3.5 fill-status-warning-text text-status-warning-text" }), (e.rating ?? 0).toFixed(1)]
389
+ children: [/* @__PURE__ */ S(v, { className: "h-3.5 w-3.5 fill-status-warning-text text-status-warning-text" }), (e.rating ?? 0).toFixed(1)]
269
390
  })
270
391
  })
271
392
  ]
272
393
  }, e.id))
273
394
  })]
274
395
  })
275
- }) : /* @__PURE__ */ x("p", {
396
+ }) : /* @__PURE__ */ S("p", {
276
397
  className: "text-sm text-text-secondary",
277
398
  children: "Top-performing carts will be ranked here once orders start flowing."
278
399
  })] })]
279
400
  }),
280
- F === "revenue" && /* @__PURE__ */ S("div", {
401
+ V === "revenue" && /* @__PURE__ */ C("div", {
281
402
  className: "space-y-8",
282
- children: [/* @__PURE__ */ S("div", {
403
+ children: [/* @__PURE__ */ C("div", {
283
404
  className: "grid grid-cols-1 md:grid-cols-3 gap-4",
284
405
  children: [
285
- /* @__PURE__ */ S("div", {
406
+ /* @__PURE__ */ C("div", {
286
407
  className: "rounded-lg border border-border-focus/30 bg-[var(--color-accent-soft)] p-6",
287
- children: [/* @__PURE__ */ x("h4", {
408
+ children: [/* @__PURE__ */ S("h4", {
288
409
  className: "text-sm font-medium text-text-primary mb-2",
289
410
  children: "Total Revenue"
290
- }), /* @__PURE__ */ x("p", {
411
+ }), /* @__PURE__ */ S("p", {
291
412
  className: "text-2xl font-bold text-text-primary",
292
- children: R(D.totalRevenue)
413
+ children: W(N.totalRevenue)
293
414
  })]
294
415
  }),
295
- /* @__PURE__ */ S("div", {
416
+ /* @__PURE__ */ C("div", {
296
417
  className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-6",
297
- children: [/* @__PURE__ */ x("h4", {
418
+ children: [/* @__PURE__ */ S("h4", {
298
419
  className: "text-sm font-medium text-text-secondary mb-2",
299
420
  children: "Total Orders"
300
- }), /* @__PURE__ */ x("p", {
421
+ }), /* @__PURE__ */ S("p", {
301
422
  className: "text-2xl font-bold text-text-primary",
302
- children: (D.totalOrders ?? 0).toLocaleString("en-IN")
423
+ children: (N.totalOrders ?? 0).toLocaleString("en-IN")
303
424
  })]
304
425
  }),
305
- /* @__PURE__ */ S("div", {
426
+ /* @__PURE__ */ C("div", {
306
427
  className: "rounded-lg border border-status-success-text/30 bg-status-success-bg-subtle p-6",
307
- children: [/* @__PURE__ */ x("h4", {
428
+ children: [/* @__PURE__ */ S("h4", {
308
429
  className: "text-sm font-medium text-status-success-text mb-2",
309
430
  children: "Average Order Value"
310
- }), /* @__PURE__ */ x("p", {
431
+ }), /* @__PURE__ */ S("p", {
311
432
  className: "text-2xl font-bold text-status-success-text",
312
- children: R(z.avgOrderValue)
433
+ children: W(G.avgOrderValue)
313
434
  })]
314
435
  })
315
436
  ]
316
- }), /* @__PURE__ */ x("p", {
437
+ }), $.length > 0 ? /* @__PURE__ */ C("div", { children: [
438
+ /* @__PURE__ */ S("h4", {
439
+ className: "mb-3 text-sm font-semibold text-text-primary",
440
+ children: "Revenue by Category"
441
+ }),
442
+ /* @__PURE__ */ S(u, {
443
+ stages: $,
444
+ showConversion: !1,
445
+ valueFormatter: (e) => W(e)
446
+ }),
447
+ /* @__PURE__ */ S("p", {
448
+ className: "mt-3 text-xs text-text-muted",
449
+ children: "Derived by attributing each order's value to its cart's category."
450
+ })
451
+ ] }) : /* @__PURE__ */ S("p", {
317
452
  className: "text-sm text-text-secondary",
318
- children: "Revenue is not broken down by category by the platform backend. See the Users tab for how carts are distributed across categories."
453
+ children: "Revenue by category will appear here as orders come in."
319
454
  })]
320
455
  }),
321
- F === "users" && /* @__PURE__ */ S("div", {
456
+ V === "users" && /* @__PURE__ */ C("div", {
322
457
  className: "space-y-8",
323
458
  children: [
324
- /* @__PURE__ */ S("div", {
459
+ /* @__PURE__ */ C("div", {
325
460
  className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
326
- children: [/* @__PURE__ */ S("div", {
461
+ children: [/* @__PURE__ */ C("div", {
327
462
  className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-6",
328
- children: [/* @__PURE__ */ S("div", {
463
+ children: [/* @__PURE__ */ C("div", {
329
464
  className: "flex items-center gap-2 mb-2",
330
- children: [/* @__PURE__ */ x(y, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ x("h4", {
465
+ children: [/* @__PURE__ */ S(x, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ S("h4", {
331
466
  className: "text-sm font-medium text-text-secondary",
332
467
  children: "Active Customers"
333
468
  })]
334
- }), /* @__PURE__ */ x("p", {
469
+ }), /* @__PURE__ */ S("p", {
335
470
  className: "text-3xl font-bold text-text-primary",
336
- children: (D.activeCustomers ?? 0).toLocaleString("en-IN")
471
+ children: (N.activeCustomers ?? 0).toLocaleString("en-IN")
337
472
  })]
338
- }), /* @__PURE__ */ S("div", {
473
+ }), /* @__PURE__ */ C("div", {
339
474
  className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-6",
340
- children: [/* @__PURE__ */ S("div", {
475
+ children: [/* @__PURE__ */ C("div", {
341
476
  className: "flex items-center gap-2 mb-2",
342
- children: [/* @__PURE__ */ x(_, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ x("h4", {
477
+ children: [/* @__PURE__ */ S(y, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ S("h4", {
343
478
  className: "text-sm font-medium text-text-secondary",
344
479
  children: "Active Cart Owners"
345
480
  })]
346
- }), /* @__PURE__ */ x("p", {
481
+ }), /* @__PURE__ */ S("p", {
347
482
  className: "text-3xl font-bold text-text-primary",
348
- children: (D.activeProviders ?? 0).toLocaleString("en-IN")
483
+ children: (N.activeProviders ?? 0).toLocaleString("en-IN")
349
484
  })]
350
485
  })]
351
486
  }),
352
- /* @__PURE__ */ S("div", {
487
+ /* @__PURE__ */ C("div", {
353
488
  className: "rounded-lg border border-border-subtle bg-bg-sunken/20 p-6",
354
489
  children: [
355
- /* @__PURE__ */ S("div", {
490
+ /* @__PURE__ */ C("div", {
356
491
  className: "flex items-center gap-2 mb-2",
357
- children: [/* @__PURE__ */ x(y, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ x("h3", {
492
+ children: [/* @__PURE__ */ S(x, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ S("h3", {
358
493
  className: "text-sm font-medium text-text-secondary",
359
494
  children: "Total Customers"
360
495
  })]
361
496
  }),
362
- /* @__PURE__ */ x("p", {
497
+ /* @__PURE__ */ S("p", {
363
498
  className: "text-3xl font-bold text-text-primary",
364
- children: H.toLocaleString("en-IN")
499
+ children: J.toLocaleString("en-IN")
365
500
  }),
366
- /* @__PURE__ */ x("p", {
501
+ /* @__PURE__ */ S("p", {
367
502
  className: "mt-1 text-sm text-text-secondary",
368
503
  children: "Customers on the platform to date."
369
504
  })
370
505
  ]
371
506
  }),
372
- U.length > 0 && /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h3", {
507
+ Y.length > 0 && /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h3", {
373
508
  className: "text-lg font-semibold text-text-primary mb-4",
374
509
  children: "Cart Category Distribution"
375
- }), /* @__PURE__ */ x("div", {
510
+ }), /* @__PURE__ */ S("div", {
376
511
  className: "space-y-3",
377
- children: U.map((e) => /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("div", {
512
+ children: Y.map((e) => /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C("div", {
378
513
  className: "flex items-center justify-between mb-1",
379
- children: [/* @__PURE__ */ x("span", {
514
+ children: [/* @__PURE__ */ S("span", {
380
515
  className: "text-sm font-medium text-text-primary capitalize",
381
- children: W(e.category)
382
- }), /* @__PURE__ */ S("span", {
516
+ children: X(e.category)
517
+ }), /* @__PURE__ */ C("span", {
383
518
  className: "text-sm text-text-secondary",
384
519
  children: [
385
520
  (e.count ?? 0).toLocaleString("en-IN"),
@@ -388,9 +523,9 @@ function E() {
388
523
  "%)"
389
524
  ]
390
525
  })]
391
- }), /* @__PURE__ */ x("div", {
526
+ }), /* @__PURE__ */ S("div", {
392
527
  className: "w-full bg-bg-sunken rounded-full h-2",
393
- children: /* @__PURE__ */ x("div", {
528
+ children: /* @__PURE__ */ S("div", {
394
529
  className: "bg-action-primary-bg h-2 rounded-full transition-all duration-300",
395
530
  style: { width: `${e.percentage}%` }
396
531
  })
@@ -398,91 +533,91 @@ function E() {
398
533
  })] })
399
534
  ]
400
535
  }),
401
- F === "performance" && /* @__PURE__ */ S("div", {
536
+ V === "performance" && /* @__PURE__ */ C("div", {
402
537
  className: "space-y-8",
403
- children: [/* @__PURE__ */ S("div", {
538
+ children: [/* @__PURE__ */ C("div", {
404
539
  className: "grid grid-cols-1 md:grid-cols-3 gap-6",
405
540
  children: [
406
- /* @__PURE__ */ S("div", {
541
+ /* @__PURE__ */ C("div", {
407
542
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
408
543
  children: [
409
- /* @__PURE__ */ S("div", {
544
+ /* @__PURE__ */ C("div", {
410
545
  className: "flex items-center gap-2 mb-2",
411
- children: [/* @__PURE__ */ x(g, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("h4", {
546
+ children: [/* @__PURE__ */ S(v, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S("h4", {
412
547
  className: "text-sm font-medium text-text-secondary",
413
548
  children: "Customer Satisfaction"
414
549
  })]
415
550
  }),
416
- /* @__PURE__ */ S("p", {
551
+ /* @__PURE__ */ C("p", {
417
552
  className: "text-3xl font-bold text-text-primary flex items-center gap-1",
418
- children: [/* @__PURE__ */ x(g, { className: "h-6 w-6 fill-status-warning-text text-status-warning-text" }), D.avgRating > 0 ? D.avgRating.toFixed(1) : "—"]
553
+ children: [/* @__PURE__ */ S(v, { className: "h-6 w-6 fill-status-warning-text text-status-warning-text" }), N.avgRating > 0 ? N.avgRating.toFixed(1) : "—"]
419
554
  }),
420
- /* @__PURE__ */ x("p", {
555
+ /* @__PURE__ */ S("p", {
421
556
  className: "text-sm text-text-secondary mt-1",
422
557
  children: "Average rating across carts"
423
558
  })
424
559
  ]
425
560
  }),
426
- /* @__PURE__ */ S("div", {
561
+ /* @__PURE__ */ C("div", {
427
562
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
428
563
  children: [
429
- /* @__PURE__ */ S("div", {
564
+ /* @__PURE__ */ C("div", {
430
565
  className: "flex items-center gap-2 mb-2",
431
- children: [/* @__PURE__ */ x(v, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("h4", {
566
+ children: [/* @__PURE__ */ S(b, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S("h4", {
432
567
  className: "text-sm font-medium text-text-secondary",
433
568
  children: "Completion Rate"
434
569
  })]
435
570
  }),
436
- /* @__PURE__ */ x("p", {
571
+ /* @__PURE__ */ S("p", {
437
572
  className: "text-3xl font-bold text-text-primary",
438
- children: z.total > 0 ? `${G(z.completed, z.total).toFixed(1)}%` : "—"
573
+ children: G.total > 0 ? `${Z(G.completed, G.total).toFixed(1)}%` : "—"
439
574
  }),
440
- /* @__PURE__ */ x("p", {
575
+ /* @__PURE__ */ S("p", {
441
576
  className: "text-sm text-text-secondary mt-1",
442
577
  children: "Orders delivered"
443
578
  })
444
579
  ]
445
580
  }),
446
- /* @__PURE__ */ S("div", {
581
+ /* @__PURE__ */ C("div", {
447
582
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
448
583
  children: [
449
- /* @__PURE__ */ S("div", {
584
+ /* @__PURE__ */ C("div", {
450
585
  className: "flex items-center gap-2 mb-2",
451
- children: [/* @__PURE__ */ x(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("h4", {
586
+ children: [/* @__PURE__ */ S(m, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S("h4", {
452
587
  className: "text-sm font-medium text-text-secondary",
453
588
  children: "Cancellation Rate"
454
589
  })]
455
590
  }),
456
- /* @__PURE__ */ x("p", {
591
+ /* @__PURE__ */ S("p", {
457
592
  className: "text-3xl font-bold text-text-primary",
458
- children: z.total > 0 ? `${G(z.cancelled, z.total).toFixed(1)}%` : "—"
593
+ children: G.total > 0 ? `${Z(G.cancelled, G.total).toFixed(1)}%` : "—"
459
594
  }),
460
- /* @__PURE__ */ x("p", {
595
+ /* @__PURE__ */ S("p", {
461
596
  className: "text-sm text-text-secondary mt-1",
462
597
  children: "Orders cancelled"
463
598
  })
464
599
  ]
465
600
  })
466
601
  ]
467
- }), /* @__PURE__ */ S("div", {
602
+ }), /* @__PURE__ */ C("div", {
468
603
  className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
469
- children: [/* @__PURE__ */ x("h3", {
604
+ children: [/* @__PURE__ */ S("h3", {
470
605
  className: "text-lg font-semibold text-text-primary mb-4",
471
606
  children: "Today's Activity"
472
- }), /* @__PURE__ */ S("div", {
607
+ }), /* @__PURE__ */ C("div", {
473
608
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
474
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("p", {
609
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
475
610
  className: "text-sm text-text-secondary mb-2",
476
611
  children: "Orders Today"
477
- }), /* @__PURE__ */ x("p", {
612
+ }), /* @__PURE__ */ S("p", {
478
613
  className: "text-3xl font-bold text-text-primary",
479
- children: z.ordersToday.toLocaleString("en-IN")
480
- })] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("p", {
614
+ children: G.ordersToday.toLocaleString("en-IN")
615
+ })] }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
481
616
  className: "text-sm text-text-secondary mb-2",
482
617
  children: "Pending Orders"
483
- }), /* @__PURE__ */ x("p", {
618
+ }), /* @__PURE__ */ S("p", {
484
619
  className: "text-3xl font-bold text-status-warning-text",
485
- children: (D.pendingOrders ?? 0).toLocaleString("en-IN")
620
+ children: (N.pendingOrders ?? 0).toLocaleString("en-IN")
486
621
  })] })]
487
622
  })]
488
623
  })]
@@ -494,6 +629,6 @@ function E() {
494
629
  });
495
630
  }
496
631
  //#endregion
497
- export { E as AdminAnalyticsPage };
632
+ export { M as AdminAnalyticsPage };
498
633
 
499
634
  //# sourceMappingURL=AdminAnalyticsPage.js.map