@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.
- package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
- package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.js +83 -0
- package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
- package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
- package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.js +4 -0
- package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
- package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
- package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
- package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
- package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.js +60 -0
- package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
- package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.js +66 -0
- package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
- package/dist/kadaikodi/components/viz/index.js +23 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.js +21 -0
- package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
- package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +373 -631
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.js +181 -0
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- 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 {
|
|
8
|
-
import {
|
|
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 =
|
|
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 =
|
|
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 } =
|
|
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 } =
|
|
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 =
|
|
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 =
|
|
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]), $ =
|
|
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
|
|
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(
|
|
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:
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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(
|
|
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(
|
|
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 /
|
|
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:
|
|
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:
|
|
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(
|
|
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 /
|
|
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(
|
|
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(
|
|
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(
|
|
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 /
|
|
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(
|
|
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(
|
|
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 /
|
|
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(
|
|
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 /
|
|
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(
|
|
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,
|