@burdenoff/microfe-kadaikodi 2026.626.2 → 2026.704.2
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/hooks/useKadaikodiApi.js +260 -105
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +4 -4
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +341 -461
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +115 -399
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +140 -283
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +282 -453
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js +115 -242
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +2 -2
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +279 -333
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +299 -372
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +503 -627
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +339 -282
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +329 -432
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +374 -384
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +249 -208
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +276 -279
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +229 -447
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +171 -627
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js +331 -415
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js +18 -670
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +34 -46
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +193 -447
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +6 -6
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -2
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +191 -369
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +233 -389
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +255 -215
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +141 -178
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +155 -161
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +76 -118
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +14 -140
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +135 -213
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +272 -774
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +258 -523
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +112 -600
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +128 -295
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +205 -291
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +159 -500
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +426 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +231 -225
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +197 -301
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +247 -399
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +294 -327
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +179 -397
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
- package/dist/kadaikodi/mocks/data.js +0 -1517
- package/dist/kadaikodi/mocks/data.js.map +0 -1
- package/dist/kadaikodi/mocks/users.js +0 -34
- package/dist/kadaikodi/mocks/users.js.map +0 -1
|
@@ -2,108 +2,22 @@ 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
4
|
import { MetricsCard as r } from "../../components/MetricsCard.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { EmptyState as i } from "../../components/EmptyState.js";
|
|
6
|
+
import { useAdminAnalytics as a, useDashboardStats as o, useOrders as s, useProviders as c } from "../../hooks/useKadaikodiApi.js";
|
|
7
|
+
import { formatCurrency as l, formatRelativeTime as u } from "../../utils/formatters.js";
|
|
8
|
+
import { useMemo as d } from "react";
|
|
9
|
+
import { Activity as f, AlertTriangle as p, ArrowRight as m, Award as h, BarChart3 as g, FileText as _, IndianRupee as v, Loader2 as y, Settings as b, ShoppingBag as x, Star as S, Store as C, Users as w } from "lucide-react";
|
|
7
10
|
import { jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
8
11
|
import { CTAOverflowMenu as D, EmphasisPanel as O, NextSteps as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
|
|
9
12
|
//#region src/kadaikodi/pages/admin/AdminDashboard.tsx
|
|
10
13
|
function j() {
|
|
11
|
-
let { navigateTo: j, currentUser: M } = e(), N = M?.firstName ?? M?.name ?? "Admin",
|
|
12
|
-
|
|
13
|
-
let e = setTimeout(() => {
|
|
14
|
-
F({
|
|
15
|
-
totalUsers: 12847,
|
|
16
|
-
totalCarts: 2934,
|
|
17
|
-
totalOrders: 45621,
|
|
18
|
-
totalInvestments: 1256,
|
|
19
|
-
activeUsers: 8934,
|
|
20
|
-
pendingApprovals: 47,
|
|
21
|
-
totalRevenue: 245e4,
|
|
22
|
-
platformCommission: 122500
|
|
23
|
-
}), z({
|
|
24
|
-
customers: 8934,
|
|
25
|
-
cartOwners: 2456,
|
|
26
|
-
workers: 1245,
|
|
27
|
-
investors: 212,
|
|
28
|
-
growth: 15.7
|
|
29
|
-
}), L([
|
|
30
|
-
{
|
|
31
|
-
id: "ACT-001",
|
|
32
|
-
type: "user_registration",
|
|
33
|
-
description: "New cart owner registered: Rajesh Kumar",
|
|
34
|
-
timestamp: "2 minutes ago",
|
|
35
|
-
status: "completed",
|
|
36
|
-
user: "Rajesh Kumar"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
id: "ACT-002",
|
|
40
|
-
type: "cart_approval",
|
|
41
|
-
description: "Cart approval request from Mumbai Chaat Corner",
|
|
42
|
-
timestamp: "5 minutes ago",
|
|
43
|
-
status: "pending",
|
|
44
|
-
user: "Priya Sharma"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
id: "ACT-003",
|
|
48
|
-
type: "investment",
|
|
49
|
-
description: "New investment in Dosa Express",
|
|
50
|
-
timestamp: "12 minutes ago",
|
|
51
|
-
status: "completed",
|
|
52
|
-
user: "Amit Patel",
|
|
53
|
-
amount: 75e3
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: "ACT-004",
|
|
57
|
-
type: "order",
|
|
58
|
-
description: "Large order placed: ₹2,500",
|
|
59
|
-
timestamp: "18 minutes ago",
|
|
60
|
-
status: "completed",
|
|
61
|
-
amount: 2500
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
id: "ACT-005",
|
|
65
|
-
type: "dispute",
|
|
66
|
-
description: "Payment dispute raised by customer",
|
|
67
|
-
timestamp: "25 minutes ago",
|
|
68
|
-
status: "pending",
|
|
69
|
-
user: "Suresh Nair",
|
|
70
|
-
amount: 450
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
id: "ACT-006",
|
|
74
|
-
type: "user_registration",
|
|
75
|
-
description: "New investor registered: Fatima Ali",
|
|
76
|
-
timestamp: "32 minutes ago",
|
|
77
|
-
status: "completed",
|
|
78
|
-
user: "Fatima Ali"
|
|
79
|
-
}
|
|
80
|
-
]), V(!1);
|
|
81
|
-
}, 1e3);
|
|
82
|
-
return () => clearTimeout(e);
|
|
83
|
-
}, []);
|
|
84
|
-
let H = (e) => /* @__PURE__ */ T({
|
|
85
|
-
user_registration: S,
|
|
86
|
-
cart_approval: x,
|
|
87
|
-
investment: h,
|
|
88
|
-
order: b,
|
|
89
|
-
dispute: s
|
|
90
|
-
}[e] ?? o, { className: "h-4 w-4" }), U = (e) => ({
|
|
91
|
-
user_registration: "text-text-primary",
|
|
92
|
-
cart_approval: "text-text-primary",
|
|
93
|
-
investment: "text-status-success-text",
|
|
94
|
-
order: "text-status-success-text",
|
|
95
|
-
dispute: "text-status-warning-text"
|
|
96
|
-
})[e] ?? "text-text-secondary", W = (e) => ({
|
|
97
|
-
completed: "bg-status-success-bg-subtle text-status-success-text",
|
|
98
|
-
pending: "bg-status-warning-bg-subtle text-status-warning-text",
|
|
99
|
-
failed: "bg-status-error-bg-subtle text-status-error-text"
|
|
100
|
-
})[e] ?? "bg-secondary text-secondary-foreground";
|
|
101
|
-
return B ? /* @__PURE__ */ T(n, {
|
|
14
|
+
let { navigateTo: j, currentUser: M } = e(), N = M?.firstName ?? M?.name ?? "Admin", { data: P, isLoading: F } = o(), { data: I = [], isLoading: L } = c(), { data: R = [], isLoading: z } = s({}), { data: B } = a(), V = F || L || z, H = (e) => l(e, { minimumFractionDigits: 0 }), U = d(() => I.filter((e) => !e.isOpen).length, [I]), W = d(() => [...R].sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime()).slice(0, 6), [R]), G = (e) => e === "delivered" ? "bg-status-success-bg-subtle text-status-success-text" : e === "cancelled" ? "bg-status-error-bg-subtle text-status-error-text" : "bg-status-warning-bg-subtle text-status-warning-text";
|
|
15
|
+
return V ? /* @__PURE__ */ T(n, {
|
|
102
16
|
title: "Admin Dashboard",
|
|
103
17
|
description: "Loading...",
|
|
104
18
|
children: /* @__PURE__ */ E("div", {
|
|
105
19
|
className: "flex flex-col items-center justify-center py-20",
|
|
106
|
-
children: [/* @__PURE__ */ T(
|
|
20
|
+
children: [/* @__PURE__ */ T(y, { className: "h-10 w-10 animate-spin text-text-secondary mb-4" }), /* @__PURE__ */ T("p", {
|
|
107
21
|
className: "text-text-secondary",
|
|
108
22
|
children: "Loading admin dashboard..."
|
|
109
23
|
})]
|
|
@@ -111,11 +25,11 @@ function j() {
|
|
|
111
25
|
}) : /* @__PURE__ */ E(n, {
|
|
112
26
|
title: "Admin Dashboard",
|
|
113
27
|
description: `Welcome, ${N}! Monitor and manage the platform.`,
|
|
114
|
-
actions:
|
|
28
|
+
actions: U > 0 ? /* @__PURE__ */ E("div", {
|
|
115
29
|
className: "flex items-center gap-2 rounded-lg border border-status-error-text/30 bg-status-error-bg-subtle px-3 py-2",
|
|
116
|
-
children: [/* @__PURE__ */ T(
|
|
30
|
+
children: [/* @__PURE__ */ T(p, { className: "h-4 w-4 text-status-error-text" }), /* @__PURE__ */ E("span", {
|
|
117
31
|
className: "text-sm font-medium text-status-error-text",
|
|
118
|
-
children: [
|
|
32
|
+
children: [U, " carts awaiting review"]
|
|
119
33
|
})]
|
|
120
34
|
}) : void 0,
|
|
121
35
|
children: [
|
|
@@ -132,7 +46,7 @@ function j() {
|
|
|
132
46
|
label: "Review pending cart approvals",
|
|
133
47
|
description: "Vet and approve new carts waiting to go live.",
|
|
134
48
|
onClick: () => j("/admin/carts"),
|
|
135
|
-
done:
|
|
49
|
+
done: U === 0
|
|
136
50
|
},
|
|
137
51
|
{
|
|
138
52
|
id: "users",
|
|
@@ -157,47 +71,47 @@ function j() {
|
|
|
157
71
|
children: "Quick Actions"
|
|
158
72
|
}), /* @__PURE__ */ T("p", {
|
|
159
73
|
className: "mt-1 text-sm text-text-secondary",
|
|
160
|
-
children:
|
|
74
|
+
children: U > 0 ? `${U} carts awaiting your review.` : "All caught up — nothing pending review."
|
|
161
75
|
})] }), /* @__PURE__ */ T(D, {
|
|
162
76
|
primary: {
|
|
163
|
-
label: `
|
|
164
|
-
icon: /* @__PURE__ */ T(
|
|
77
|
+
label: `Review Carts${U > 0 ? ` (${U})` : ""}`,
|
|
78
|
+
icon: /* @__PURE__ */ T(C, { className: "h-4 w-4" }),
|
|
165
79
|
onSelect: () => j("/admin/carts")
|
|
166
80
|
},
|
|
167
81
|
actions: [
|
|
168
82
|
{
|
|
169
83
|
label: "Manage Carts",
|
|
170
|
-
icon: /* @__PURE__ */ T(
|
|
84
|
+
icon: /* @__PURE__ */ T(C, { className: "h-4 w-4" }),
|
|
171
85
|
onSelect: () => j("/admin/carts")
|
|
172
86
|
},
|
|
173
87
|
{
|
|
174
88
|
label: "User Management",
|
|
175
|
-
icon: /* @__PURE__ */ T(
|
|
89
|
+
icon: /* @__PURE__ */ T(w, { className: "h-4 w-4" }),
|
|
176
90
|
onSelect: () => j("/admin/users")
|
|
177
91
|
},
|
|
178
92
|
{
|
|
179
93
|
label: "Order Management",
|
|
180
|
-
icon: /* @__PURE__ */ T(
|
|
94
|
+
icon: /* @__PURE__ */ T(x, { className: "h-4 w-4" }),
|
|
181
95
|
onSelect: () => j("/admin/orders")
|
|
182
96
|
},
|
|
183
97
|
{
|
|
184
98
|
label: "Financial Analytics",
|
|
185
|
-
icon: /* @__PURE__ */ T(
|
|
99
|
+
icon: /* @__PURE__ */ T(v, { className: "h-4 w-4" }),
|
|
186
100
|
onSelect: () => j("/admin/financial")
|
|
187
101
|
},
|
|
188
102
|
{
|
|
189
103
|
label: "Analytics",
|
|
190
|
-
icon: /* @__PURE__ */ T(
|
|
104
|
+
icon: /* @__PURE__ */ T(g, { className: "h-4 w-4" }),
|
|
191
105
|
onSelect: () => j("/admin/analytics")
|
|
192
106
|
},
|
|
193
107
|
{
|
|
194
108
|
label: "Settings",
|
|
195
|
-
icon: /* @__PURE__ */ T(
|
|
109
|
+
icon: /* @__PURE__ */ T(b, { className: "h-4 w-4" }),
|
|
196
110
|
onSelect: () => j("/admin/settings")
|
|
197
111
|
},
|
|
198
112
|
{
|
|
199
113
|
label: "Reports",
|
|
200
|
-
icon: /* @__PURE__ */ T(
|
|
114
|
+
icon: /* @__PURE__ */ T(_, { className: "h-4 w-4" }),
|
|
201
115
|
onSelect: () => j("/admin/analytics")
|
|
202
116
|
}
|
|
203
117
|
]
|
|
@@ -215,33 +129,25 @@ function j() {
|
|
|
215
129
|
className: "grid grid-cols-2 lg:grid-cols-4 gap-4",
|
|
216
130
|
children: [
|
|
217
131
|
/* @__PURE__ */ T(r, {
|
|
218
|
-
icon: /* @__PURE__ */ T(
|
|
219
|
-
value: P.
|
|
220
|
-
label: "
|
|
221
|
-
trend: "up",
|
|
222
|
-
trendValue: "+15.7%"
|
|
132
|
+
icon: /* @__PURE__ */ T(w, { className: "h-5 w-5" }),
|
|
133
|
+
value: P.activeCustomers.toLocaleString("en-IN"),
|
|
134
|
+
label: "Active Customers"
|
|
223
135
|
}),
|
|
224
136
|
/* @__PURE__ */ T(r, {
|
|
225
|
-
icon: /* @__PURE__ */ T(
|
|
226
|
-
value: P.
|
|
227
|
-
label: "Active Carts"
|
|
228
|
-
trend: "up",
|
|
229
|
-
trendValue: "+8 this week"
|
|
137
|
+
icon: /* @__PURE__ */ T(C, { className: "h-5 w-5" }),
|
|
138
|
+
value: P.activeProviders.toLocaleString("en-IN"),
|
|
139
|
+
label: "Active Carts"
|
|
230
140
|
}),
|
|
231
141
|
/* @__PURE__ */ T(r, {
|
|
232
|
-
icon: /* @__PURE__ */ T(
|
|
142
|
+
icon: /* @__PURE__ */ T(x, { className: "h-5 w-5" }),
|
|
233
143
|
value: P.totalOrders.toLocaleString("en-IN"),
|
|
234
|
-
label: "Total Orders"
|
|
235
|
-
trend: "up",
|
|
236
|
-
trendValue: "+12.3%"
|
|
144
|
+
label: "Total Orders"
|
|
237
145
|
}),
|
|
238
146
|
/* @__PURE__ */ T(r, {
|
|
239
147
|
featured: !0,
|
|
240
|
-
icon: /* @__PURE__ */ T(
|
|
241
|
-
value:
|
|
242
|
-
label: "Total Revenue"
|
|
243
|
-
trend: "up",
|
|
244
|
-
trendValue: "+8.5%"
|
|
148
|
+
icon: /* @__PURE__ */ T(v, { className: "h-5 w-5" }),
|
|
149
|
+
value: H(P.totalRevenue),
|
|
150
|
+
label: "Total Revenue"
|
|
245
151
|
})
|
|
246
152
|
]
|
|
247
153
|
}),
|
|
@@ -252,199 +158,90 @@ function j() {
|
|
|
252
158
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
253
159
|
children: [/* @__PURE__ */ T("p", {
|
|
254
160
|
className: "text-xs text-text-secondary",
|
|
255
|
-
children: "
|
|
161
|
+
children: "Total Carts"
|
|
256
162
|
}), /* @__PURE__ */ T("p", {
|
|
257
|
-
className: "text-xl font-bold text-
|
|
258
|
-
children:
|
|
163
|
+
className: "text-xl font-bold text-text-primary",
|
|
164
|
+
children: I.length.toLocaleString("en-IN")
|
|
259
165
|
})]
|
|
260
166
|
}),
|
|
261
167
|
/* @__PURE__ */ E("div", {
|
|
262
168
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
263
169
|
children: [/* @__PURE__ */ T("p", {
|
|
264
170
|
className: "text-xs text-text-secondary",
|
|
265
|
-
children: "Pending Approvals"
|
|
171
|
+
children: "Pending Cart Approvals"
|
|
266
172
|
}), /* @__PURE__ */ T("p", {
|
|
267
173
|
className: "text-xl font-bold text-status-error-text",
|
|
268
|
-
children:
|
|
174
|
+
children: U.toLocaleString("en-IN")
|
|
269
175
|
})]
|
|
270
176
|
}),
|
|
271
177
|
/* @__PURE__ */ E("div", {
|
|
272
178
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
273
179
|
children: [/* @__PURE__ */ T("p", {
|
|
274
180
|
className: "text-xs text-text-secondary",
|
|
275
|
-
children: "
|
|
181
|
+
children: "Pending Orders"
|
|
276
182
|
}), /* @__PURE__ */ T("p", {
|
|
277
|
-
className: "text-xl font-bold text-text
|
|
278
|
-
children: P.
|
|
183
|
+
className: "text-xl font-bold text-status-warning-text",
|
|
184
|
+
children: P.pendingOrders.toLocaleString("en-IN")
|
|
279
185
|
})]
|
|
280
186
|
}),
|
|
281
187
|
/* @__PURE__ */ E("div", {
|
|
282
188
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
283
189
|
children: [/* @__PURE__ */ T("p", {
|
|
284
190
|
className: "text-xs text-text-secondary",
|
|
285
|
-
children: "
|
|
191
|
+
children: "Average Rating"
|
|
286
192
|
}), /* @__PURE__ */ E("p", {
|
|
287
|
-
className: "text-xl font-bold text-text-primary",
|
|
288
|
-
children: [
|
|
289
|
-
"₹",
|
|
290
|
-
(P.platformCommission / 1e3).toFixed(0),
|
|
291
|
-
"K"
|
|
292
|
-
]
|
|
193
|
+
className: "text-xl font-bold text-text-primary flex items-center gap-1",
|
|
194
|
+
children: [/* @__PURE__ */ T(S, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }), P.avgRating > 0 ? P.avgRating.toFixed(1) : "—"]
|
|
293
195
|
})]
|
|
294
196
|
})
|
|
295
197
|
]
|
|
296
198
|
})
|
|
297
199
|
]
|
|
298
200
|
}),
|
|
299
|
-
R && /* @__PURE__ */ E("div", {
|
|
300
|
-
className: "mb-8",
|
|
301
|
-
children: [/* @__PURE__ */ T("h2", {
|
|
302
|
-
className: "text-lg font-semibold text-text-primary mb-4",
|
|
303
|
-
children: "User Distribution"
|
|
304
|
-
}), /* @__PURE__ */ E("div", {
|
|
305
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
|
|
306
|
-
children: [/* @__PURE__ */ E("div", {
|
|
307
|
-
className: "grid grid-cols-2 lg:grid-cols-4 gap-6",
|
|
308
|
-
children: [
|
|
309
|
-
/* @__PURE__ */ E("div", {
|
|
310
|
-
className: "text-center",
|
|
311
|
-
children: [
|
|
312
|
-
/* @__PURE__ */ T("div", {
|
|
313
|
-
className: "text-2xl sm:text-3xl font-bold text-text-primary",
|
|
314
|
-
children: R.customers.toLocaleString("en-IN")
|
|
315
|
-
}),
|
|
316
|
-
/* @__PURE__ */ T("div", {
|
|
317
|
-
className: "text-sm text-text-secondary",
|
|
318
|
-
children: "Customers"
|
|
319
|
-
}),
|
|
320
|
-
/* @__PURE__ */ T("div", {
|
|
321
|
-
className: "text-xs text-text-secondary",
|
|
322
|
-
children: "69.5%"
|
|
323
|
-
})
|
|
324
|
-
]
|
|
325
|
-
}),
|
|
326
|
-
/* @__PURE__ */ E("div", {
|
|
327
|
-
className: "text-center",
|
|
328
|
-
children: [
|
|
329
|
-
/* @__PURE__ */ T("div", {
|
|
330
|
-
className: "text-2xl sm:text-3xl font-bold text-status-success-text",
|
|
331
|
-
children: R.cartOwners.toLocaleString("en-IN")
|
|
332
|
-
}),
|
|
333
|
-
/* @__PURE__ */ T("div", {
|
|
334
|
-
className: "text-sm text-text-secondary",
|
|
335
|
-
children: "Cart Owners"
|
|
336
|
-
}),
|
|
337
|
-
/* @__PURE__ */ T("div", {
|
|
338
|
-
className: "text-xs text-text-secondary",
|
|
339
|
-
children: "19.1%"
|
|
340
|
-
})
|
|
341
|
-
]
|
|
342
|
-
}),
|
|
343
|
-
/* @__PURE__ */ E("div", {
|
|
344
|
-
className: "text-center",
|
|
345
|
-
children: [
|
|
346
|
-
/* @__PURE__ */ T("div", {
|
|
347
|
-
className: "text-2xl sm:text-3xl font-bold text-status-warning-text",
|
|
348
|
-
children: R.workers.toLocaleString("en-IN")
|
|
349
|
-
}),
|
|
350
|
-
/* @__PURE__ */ T("div", {
|
|
351
|
-
className: "text-sm text-text-secondary",
|
|
352
|
-
children: "Workers"
|
|
353
|
-
}),
|
|
354
|
-
/* @__PURE__ */ T("div", {
|
|
355
|
-
className: "text-xs text-text-secondary",
|
|
356
|
-
children: "9.7%"
|
|
357
|
-
})
|
|
358
|
-
]
|
|
359
|
-
}),
|
|
360
|
-
/* @__PURE__ */ E("div", {
|
|
361
|
-
className: "text-center",
|
|
362
|
-
children: [
|
|
363
|
-
/* @__PURE__ */ T("div", {
|
|
364
|
-
className: "text-2xl sm:text-3xl font-bold text-text-primary",
|
|
365
|
-
children: R.investors.toLocaleString("en-IN")
|
|
366
|
-
}),
|
|
367
|
-
/* @__PURE__ */ T("div", {
|
|
368
|
-
className: "text-sm text-text-secondary",
|
|
369
|
-
children: "Investors"
|
|
370
|
-
}),
|
|
371
|
-
/* @__PURE__ */ T("div", {
|
|
372
|
-
className: "text-xs text-text-secondary",
|
|
373
|
-
children: "1.7%"
|
|
374
|
-
})
|
|
375
|
-
]
|
|
376
|
-
})
|
|
377
|
-
]
|
|
378
|
-
}), /* @__PURE__ */ T("div", {
|
|
379
|
-
className: "mt-4 pt-4 border-t border-border-subtle",
|
|
380
|
-
children: /* @__PURE__ */ E("div", {
|
|
381
|
-
className: "flex justify-between items-center",
|
|
382
|
-
children: [/* @__PURE__ */ T("span", {
|
|
383
|
-
className: "text-sm text-text-secondary",
|
|
384
|
-
children: "User Growth (This Month)"
|
|
385
|
-
}), /* @__PURE__ */ E("span", {
|
|
386
|
-
className: "text-sm font-medium text-status-success-text",
|
|
387
|
-
children: [
|
|
388
|
-
"+",
|
|
389
|
-
R.growth,
|
|
390
|
-
"%"
|
|
391
|
-
]
|
|
392
|
-
})]
|
|
393
|
-
})
|
|
394
|
-
})]
|
|
395
|
-
})]
|
|
396
|
-
}),
|
|
397
201
|
/* @__PURE__ */ E("div", {
|
|
398
202
|
className: "mb-8",
|
|
399
203
|
children: [/* @__PURE__ */ E("div", {
|
|
400
204
|
className: "flex items-center justify-between mb-4",
|
|
401
205
|
children: [/* @__PURE__ */ T("h2", {
|
|
402
206
|
className: "text-lg font-semibold text-text-primary",
|
|
403
|
-
children: "Recent
|
|
207
|
+
children: "Recent Orders"
|
|
404
208
|
}), /* @__PURE__ */ E("button", {
|
|
405
209
|
type: "button",
|
|
406
|
-
onClick: () => j("/admin/
|
|
210
|
+
onClick: () => j("/admin/orders"),
|
|
407
211
|
className: "flex items-center gap-1 text-sm font-medium text-text-secondary hover:text-text-primary transition-colors",
|
|
408
|
-
children: ["View all
|
|
212
|
+
children: ["View all orders", /* @__PURE__ */ T(m, { className: "h-4 w-4" })]
|
|
409
213
|
})]
|
|
410
|
-
}), /* @__PURE__ */ T("div", {
|
|
214
|
+
}), W.length > 0 ? /* @__PURE__ */ T("div", {
|
|
411
215
|
className: "rounded-lg border border-border-subtle bg-bg-surface divide-y divide-border",
|
|
412
|
-
children:
|
|
216
|
+
children: W.map((e) => /* @__PURE__ */ E("div", {
|
|
413
217
|
className: "flex items-start gap-3 px-4 py-3",
|
|
414
218
|
children: [/* @__PURE__ */ T("div", {
|
|
415
|
-
className:
|
|
416
|
-
children:
|
|
219
|
+
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken mt-0.5 text-text-secondary",
|
|
220
|
+
children: /* @__PURE__ */ T(x, { className: "h-4 w-4" })
|
|
417
221
|
}), /* @__PURE__ */ E("div", {
|
|
418
222
|
className: "flex-1 min-w-0",
|
|
419
223
|
children: [/* @__PURE__ */ E("div", {
|
|
420
224
|
className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2",
|
|
421
|
-
children: [/* @__PURE__ */
|
|
225
|
+
children: [/* @__PURE__ */ E("p", {
|
|
422
226
|
className: "text-sm font-medium text-text-primary",
|
|
423
|
-
children: e.
|
|
227
|
+
children: ["Order from ", e.cartName]
|
|
424
228
|
}), /* @__PURE__ */ T("span", {
|
|
425
|
-
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize w-fit",
|
|
426
|
-
children: e.status
|
|
229
|
+
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize w-fit", G(e.status)),
|
|
230
|
+
children: e.status.replace(/_/g, " ")
|
|
427
231
|
})]
|
|
428
232
|
}), /* @__PURE__ */ E("div", {
|
|
429
233
|
className: "flex flex-wrap items-center mt-1 text-xs text-text-secondary gap-3",
|
|
430
|
-
children: [
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
children: [/* @__PURE__ */ T(C, { className: "h-3 w-3" }), e.user]
|
|
435
|
-
}),
|
|
436
|
-
e.amount && /* @__PURE__ */ E("span", {
|
|
437
|
-
className: "flex items-center gap-1",
|
|
438
|
-
children: [
|
|
439
|
-
/* @__PURE__ */ T(h, { className: "h-3 w-3" }),
|
|
440
|
-
"₹",
|
|
441
|
-
e.amount.toLocaleString("en-IN")
|
|
442
|
-
]
|
|
443
|
-
})
|
|
444
|
-
]
|
|
234
|
+
children: [/* @__PURE__ */ T("span", { children: u(e.orderDate) }), /* @__PURE__ */ E("span", {
|
|
235
|
+
className: "flex items-center gap-1",
|
|
236
|
+
children: [/* @__PURE__ */ T(v, { className: "h-3 w-3" }), e.total.toLocaleString("en-IN")]
|
|
237
|
+
})]
|
|
445
238
|
})]
|
|
446
239
|
})]
|
|
447
240
|
}, e.id))
|
|
241
|
+
}) : /* @__PURE__ */ T(i, {
|
|
242
|
+
illustration: "empty-data",
|
|
243
|
+
title: "No orders yet",
|
|
244
|
+
description: "Orders placed across the platform will appear here as they come in."
|
|
448
245
|
})]
|
|
449
246
|
}),
|
|
450
247
|
/* @__PURE__ */ E("div", {
|
|
@@ -453,79 +250,28 @@ function j() {
|
|
|
453
250
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
|
|
454
251
|
children: [/* @__PURE__ */ E("div", {
|
|
455
252
|
className: "flex items-center gap-2 mb-4",
|
|
456
|
-
children: [/* @__PURE__ */ T(
|
|
253
|
+
children: [/* @__PURE__ */ T(g, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ T("h3", {
|
|
457
254
|
className: "text-lg font-semibold text-text-primary",
|
|
458
|
-
children: "
|
|
255
|
+
children: "Revenue by Category"
|
|
459
256
|
})]
|
|
460
|
-
}), /* @__PURE__ */
|
|
461
|
-
className: "space-y-
|
|
462
|
-
children:
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
children: [/* @__PURE__ */ E("div", {
|
|
479
|
-
className: "flex items-center gap-3",
|
|
480
|
-
children: [/* @__PURE__ */ T(p, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("span", {
|
|
481
|
-
className: "text-sm text-text-secondary",
|
|
482
|
-
children: "Database Performance"
|
|
483
|
-
})]
|
|
484
|
-
}), /* @__PURE__ */ E("span", {
|
|
485
|
-
className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-xs font-medium text-status-success-text",
|
|
486
|
-
children: [/* @__PURE__ */ T(u, { className: "h-3 w-3" }), "Optimal"]
|
|
487
|
-
})]
|
|
488
|
-
}),
|
|
489
|
-
/* @__PURE__ */ E("div", {
|
|
490
|
-
className: "flex items-center justify-between",
|
|
491
|
-
children: [/* @__PURE__ */ E("div", {
|
|
492
|
-
className: "flex items-center gap-3",
|
|
493
|
-
children: [/* @__PURE__ */ T(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("span", {
|
|
494
|
-
className: "text-sm text-text-secondary",
|
|
495
|
-
children: "Payment Gateway"
|
|
496
|
-
})]
|
|
497
|
-
}), /* @__PURE__ */ E("span", {
|
|
498
|
-
className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-xs font-medium text-status-success-text",
|
|
499
|
-
children: [/* @__PURE__ */ T(u, { className: "h-3 w-3" }), "Online"]
|
|
500
|
-
})]
|
|
501
|
-
}),
|
|
502
|
-
/* @__PURE__ */ E("div", {
|
|
503
|
-
className: "flex items-center justify-between",
|
|
504
|
-
children: [/* @__PURE__ */ E("div", {
|
|
505
|
-
className: "flex items-center gap-3",
|
|
506
|
-
children: [/* @__PURE__ */ T(w, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("span", {
|
|
507
|
-
className: "text-sm text-text-secondary",
|
|
508
|
-
children: "API Response Time"
|
|
509
|
-
})]
|
|
510
|
-
}), /* @__PURE__ */ T("span", {
|
|
511
|
-
className: "text-sm font-medium text-text-primary",
|
|
512
|
-
children: "145ms"
|
|
513
|
-
})]
|
|
514
|
-
}),
|
|
515
|
-
/* @__PURE__ */ E("div", {
|
|
516
|
-
className: "flex items-center justify-between",
|
|
517
|
-
children: [/* @__PURE__ */ E("div", {
|
|
518
|
-
className: "flex items-center gap-3",
|
|
519
|
-
children: [/* @__PURE__ */ T(d, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ T("span", {
|
|
520
|
-
className: "text-sm text-text-secondary",
|
|
521
|
-
children: "Uptime (30 days)"
|
|
522
|
-
})]
|
|
523
|
-
}), /* @__PURE__ */ T("span", {
|
|
524
|
-
className: "text-sm font-medium text-text-primary",
|
|
525
|
-
children: "99.8%"
|
|
526
|
-
})]
|
|
527
|
-
})
|
|
528
|
-
]
|
|
257
|
+
}), B && B.revenueByCategory.length > 0 ? /* @__PURE__ */ T("div", {
|
|
258
|
+
className: "space-y-3",
|
|
259
|
+
children: B.revenueByCategory.map((e) => /* @__PURE__ */ E("div", {
|
|
260
|
+
className: "flex items-center justify-between rounded-lg bg-bg-sunken/50 p-3",
|
|
261
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
262
|
+
className: "text-sm font-medium text-text-primary capitalize",
|
|
263
|
+
children: e.category
|
|
264
|
+
}), /* @__PURE__ */ E("p", {
|
|
265
|
+
className: "text-xs text-text-secondary",
|
|
266
|
+
children: [e.orders.toLocaleString("en-IN"), " orders"]
|
|
267
|
+
})] }), /* @__PURE__ */ T("p", {
|
|
268
|
+
className: "text-sm font-semibold text-text-primary",
|
|
269
|
+
children: H(e.revenue)
|
|
270
|
+
})]
|
|
271
|
+
}, e.category))
|
|
272
|
+
}) : /* @__PURE__ */ T("p", {
|
|
273
|
+
className: "text-sm text-text-secondary",
|
|
274
|
+
children: "Category revenue will appear here once orders are recorded."
|
|
529
275
|
})]
|
|
530
276
|
}), /* @__PURE__ */ E("div", {
|
|
531
277
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
|
|
@@ -533,62 +279,32 @@ function j() {
|
|
|
533
279
|
className: "flex items-center gap-2 mb-4",
|
|
534
280
|
children: [/* @__PURE__ */ T(h, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ T("h3", {
|
|
535
281
|
className: "text-lg font-semibold text-text-primary",
|
|
536
|
-
children: "
|
|
282
|
+
children: "Top Carts"
|
|
537
283
|
})]
|
|
538
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), B && B.topProviders.length > 0 ? /* @__PURE__ */ T("div", {
|
|
539
285
|
className: "space-y-3",
|
|
540
|
-
children:
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
className: "flex justify-between",
|
|
563
|
-
children: [/* @__PURE__ */ T("span", {
|
|
564
|
-
className: "text-sm text-text-secondary",
|
|
565
|
-
children: "Platform Commission"
|
|
566
|
-
}), /* @__PURE__ */ T("span", {
|
|
567
|
-
className: "font-medium text-text-primary",
|
|
568
|
-
children: "₹1,22,500"
|
|
569
|
-
})]
|
|
570
|
-
}),
|
|
571
|
-
/* @__PURE__ */ E("div", {
|
|
572
|
-
className: "flex justify-between",
|
|
573
|
-
children: [/* @__PURE__ */ T("span", {
|
|
574
|
-
className: "text-sm text-text-secondary",
|
|
575
|
-
children: "Active Investments"
|
|
576
|
-
}), /* @__PURE__ */ T("span", {
|
|
577
|
-
className: "font-medium text-text-primary",
|
|
578
|
-
children: "₹1.52Cr"
|
|
579
|
-
})]
|
|
580
|
-
}),
|
|
581
|
-
/* @__PURE__ */ E("div", {
|
|
582
|
-
className: "flex justify-between",
|
|
583
|
-
children: [/* @__PURE__ */ T("span", {
|
|
584
|
-
className: "text-sm text-text-secondary",
|
|
585
|
-
children: "Pending Payouts"
|
|
586
|
-
}), /* @__PURE__ */ T("span", {
|
|
587
|
-
className: "font-medium text-text-primary",
|
|
588
|
-
children: "₹45,600"
|
|
589
|
-
})]
|
|
590
|
-
})
|
|
591
|
-
]
|
|
286
|
+
children: B.topProviders.map((e) => /* @__PURE__ */ E("div", {
|
|
287
|
+
className: "flex items-center justify-between rounded-lg bg-bg-sunken/50 p-3",
|
|
288
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
289
|
+
className: "text-sm font-medium text-text-primary",
|
|
290
|
+
children: e.name
|
|
291
|
+
}), /* @__PURE__ */ E("p", {
|
|
292
|
+
className: "text-xs text-text-secondary flex items-center gap-1",
|
|
293
|
+
children: [
|
|
294
|
+
/* @__PURE__ */ T(S, { className: "h-3 w-3 fill-status-warning-text text-status-warning-text" }),
|
|
295
|
+
e.rating.toFixed(1),
|
|
296
|
+
" · ",
|
|
297
|
+
e.orders.toLocaleString("en-IN"),
|
|
298
|
+
" orders"
|
|
299
|
+
]
|
|
300
|
+
})] }), /* @__PURE__ */ T("p", {
|
|
301
|
+
className: "text-sm font-semibold text-text-primary",
|
|
302
|
+
children: H(e.revenue)
|
|
303
|
+
})]
|
|
304
|
+
}, e.id))
|
|
305
|
+
}) : /* @__PURE__ */ T("p", {
|
|
306
|
+
className: "text-sm text-text-secondary",
|
|
307
|
+
children: "Top-performing carts will be ranked here once orders start flowing."
|
|
592
308
|
})]
|
|
593
309
|
})]
|
|
594
310
|
}),
|
|
@@ -596,37 +312,37 @@ function j() {
|
|
|
596
312
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
597
313
|
children: [
|
|
598
314
|
{
|
|
599
|
-
icon:
|
|
315
|
+
icon: C,
|
|
600
316
|
label: "Cart Management",
|
|
601
317
|
desc: "Approve, manage, and monitor carts",
|
|
602
318
|
path: "/admin/carts"
|
|
603
319
|
},
|
|
604
320
|
{
|
|
605
|
-
icon:
|
|
321
|
+
icon: w,
|
|
606
322
|
label: "User Management",
|
|
607
323
|
desc: "Manage users and permissions",
|
|
608
324
|
path: "/admin/users"
|
|
609
325
|
},
|
|
610
326
|
{
|
|
611
|
-
icon:
|
|
327
|
+
icon: g,
|
|
612
328
|
label: "Analytics & Reports",
|
|
613
329
|
desc: "View detailed platform analytics",
|
|
614
330
|
path: "/admin/analytics"
|
|
615
331
|
},
|
|
616
332
|
{
|
|
617
|
-
icon:
|
|
333
|
+
icon: v,
|
|
618
334
|
label: "Financial Analytics",
|
|
619
335
|
desc: "View revenue, investments, and financial metrics",
|
|
620
336
|
path: "/admin/financial"
|
|
621
337
|
},
|
|
622
338
|
{
|
|
623
|
-
icon:
|
|
624
|
-
label: "Order
|
|
625
|
-
desc: "Handle orders
|
|
339
|
+
icon: f,
|
|
340
|
+
label: "Order Management",
|
|
341
|
+
desc: "Handle orders and customer issues",
|
|
626
342
|
path: "/admin/orders"
|
|
627
343
|
},
|
|
628
344
|
{
|
|
629
|
-
icon:
|
|
345
|
+
icon: b,
|
|
630
346
|
label: "Platform Settings",
|
|
631
347
|
desc: "Configure platform-wide settings",
|
|
632
348
|
path: "/admin/settings"
|