@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.
- package/dist/kadaikodi/KadaikodiRoutes.js +34 -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 +84 -6
- 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/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
- 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 +294 -162
- 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 +310 -317
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
- 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/CustomerDashboard.js +5 -5
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
- 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 +411 -305
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.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 +441 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
- 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 +360 -288
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,61 +2,71 @@ 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 { EmptyState as r } from "../../components/EmptyState.js";
|
|
5
|
-
import { useOfferings as i, useOrders as a, useProviderWorkers as o, useProviders as ee, useReviews as
|
|
5
|
+
import { useOfferings as i, useOrders as a, useProviderWorkers as o, useProviders as ee, useReviews as te, useUpdateOrderStatus as s, useUpdateProvider as c } from "../../hooks/useKadaikodiApi.js";
|
|
6
6
|
import { formatCurrency as l } from "../../utils/formatters.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
7
|
+
import { AreaChart as ne } from "../../components/viz/AreaChart.js";
|
|
8
|
+
import { StatCard as u } from "../../components/viz/StatCard.js";
|
|
9
|
+
import "../../components/viz/index.js";
|
|
10
|
+
import { useEffect as d, useMemo as f, useState as p } from "react";
|
|
11
|
+
import { Activity as m, ArrowRight as h, BarChart3 as g, Bell as re, CheckCircle as _, ChevronRight as v, Clock as y, Edit as ie, Eye as ae, Flame as oe, IndianRupee as se, MapPin as b, Package as x, Plus as S, Settings as C, ShoppingCart as w, Star as T, TrendingUp as E, UserCheck as ce, Users as le } from "lucide-react";
|
|
12
|
+
import { Fragment as ue, jsx as D, jsxs as O } from "react/jsx-runtime";
|
|
13
|
+
import { EmphasisPanel as de, NextSteps as fe, PagePurpose as pe } from "@burdenoff/fe-libs/ui";
|
|
11
14
|
//#region src/kadaikodi/pages/cart-owner/CartOwnerDashboard.tsx
|
|
12
|
-
var
|
|
15
|
+
var k = () => {
|
|
13
16
|
let e = (/* @__PURE__ */ new Date()).getHours();
|
|
14
17
|
return e < 12 ? "Good Morning" : e < 17 ? "Good Afternoon" : "Good Evening";
|
|
15
|
-
},
|
|
18
|
+
}, A = {
|
|
16
19
|
pending: "bg-status-error-bg-subtle text-status-error-text",
|
|
17
20
|
confirmed: "bg-[var(--color-accent-soft)] text-text-primary",
|
|
18
21
|
preparing: "bg-status-warning-bg-subtle text-status-warning-text",
|
|
19
22
|
ready: "bg-[var(--color-accent-soft)] text-text-primary",
|
|
20
23
|
delivered: "bg-status-success-bg-subtle text-status-success-text",
|
|
21
24
|
cancelled: "bg-bg-sunken text-text-secondary"
|
|
22
|
-
},
|
|
25
|
+
}, j = () => {
|
|
23
26
|
let e = /* @__PURE__ */ new Date();
|
|
24
27
|
return e.setHours(0, 0, 0, 0), e;
|
|
25
|
-
},
|
|
28
|
+
}, M = (e) => {
|
|
26
29
|
let t = Math.floor((Date.now() - new Date(e).getTime()) / 6e4);
|
|
27
30
|
return t < 1 ? "Just now" : t < 60 ? `${t} min ago` : t < 1440 ? `${Math.floor(t / 60)} hr ago` : new Date(e).toLocaleDateString("en-IN", {
|
|
28
31
|
day: "2-digit",
|
|
29
32
|
month: "short"
|
|
30
33
|
});
|
|
31
|
-
},
|
|
32
|
-
let { navigateTo:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, [
|
|
36
|
-
let
|
|
37
|
-
|
|
34
|
+
}, N = () => {
|
|
35
|
+
let { navigateTo: N, currentUser: P } = e(), { data: F = [], isLoading: I } = ee(), L = f(() => F.find((e) => e.ownerId === P?.id) ?? F[0], [F, P?.id]), R = L?.id, { data: z = [] } = a({ providerId: R }), { data: B = [] } = i(R), { data: me = [] } = te(R ?? ""), { data: V = [] } = o(R), he = s(), H = c(), U = P?.firstName ?? P?.name?.split(" ")[0] ?? "", [W, G] = p(!0);
|
|
36
|
+
d(() => {
|
|
37
|
+
L && G(L.isOpen);
|
|
38
|
+
}, [L]);
|
|
39
|
+
let ge = () => {
|
|
40
|
+
if (!L) return;
|
|
41
|
+
let e = !W;
|
|
42
|
+
G(e), H.mutate({
|
|
43
|
+
id: L.id,
|
|
44
|
+
input: { status: e ? "ACTIVE" : "PAUSED" }
|
|
45
|
+
}, { onError: () => G(!e) });
|
|
46
|
+
}, K = f(() => {
|
|
47
|
+
let e = j(), t = z.filter((e) => e.status === "delivered"), n = z.filter((t) => new Date(t.orderDate) >= e), r = t.filter((t) => new Date(t.orderDate) >= e), i = t.reduce((e, t) => e + t.total, 0), a = r.reduce((e, t) => e + t.total, 0), o = t.length > 0 ? Math.round(i / t.length) : Math.round(L?.averageOrderValue ?? 0);
|
|
38
48
|
return {
|
|
39
49
|
totalRevenue: i,
|
|
40
50
|
dailyRevenue: a,
|
|
41
51
|
ordersToday: n.length,
|
|
42
|
-
totalOrders:
|
|
43
|
-
activeOfferings:
|
|
52
|
+
totalOrders: z.length,
|
|
53
|
+
activeOfferings: B.filter((e) => e.isAvailable).length,
|
|
44
54
|
averageOrderValue: o,
|
|
45
|
-
rating:
|
|
46
|
-
totalRatings:
|
|
55
|
+
rating: L?.rating ?? 0,
|
|
56
|
+
totalRatings: L?.totalRatings ?? 0
|
|
47
57
|
};
|
|
48
58
|
}, [
|
|
59
|
+
z,
|
|
49
60
|
B,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
]), J = u(() => [...B].sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime()).slice(0, 4), [B]), Y = u(() => {
|
|
61
|
+
L
|
|
62
|
+
]), q = f(() => [...z].sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime()).slice(0, 4), [z]), J = f(() => {
|
|
53
63
|
let e = [];
|
|
54
64
|
for (let t = 6; t >= 0; t--) {
|
|
55
|
-
let n =
|
|
65
|
+
let n = j();
|
|
56
66
|
n.setDate(n.getDate() - t);
|
|
57
67
|
let r = new Date(n);
|
|
58
68
|
r.setDate(n.getDate() + 1);
|
|
59
|
-
let i =
|
|
69
|
+
let i = z.filter((e) => {
|
|
60
70
|
let t = new Date(e.orderDate);
|
|
61
71
|
return t >= n && t < r;
|
|
62
72
|
});
|
|
@@ -67,9 +77,21 @@ var A = () => {
|
|
|
67
77
|
});
|
|
68
78
|
}
|
|
69
79
|
return e;
|
|
70
|
-
}, [
|
|
80
|
+
}, [z]), Y = f(() => {
|
|
81
|
+
let e = J.map((e) => e.revenue), t = J.map((e) => e.orders), n = (e, t) => t > 0 ? Math.round((e - t) / t * 100) : void 0, r = J[J.length - 1]?.revenue ?? 0, i = J[J.length - 2]?.revenue ?? 0, a = J[J.length - 1]?.orders ?? 0, o = J[J.length - 2]?.orders ?? 0;
|
|
82
|
+
return {
|
|
83
|
+
revenueSpark: e,
|
|
84
|
+
ordersSpark: t,
|
|
85
|
+
revenueSeries: J.map((e) => ({
|
|
86
|
+
label: new Date(e.date).toLocaleDateString("en-US", { weekday: "short" }),
|
|
87
|
+
value: e.revenue
|
|
88
|
+
})),
|
|
89
|
+
revenueDelta: n(r, i),
|
|
90
|
+
ordersDelta: n(a, o)
|
|
91
|
+
};
|
|
92
|
+
}, [J]), X = f(() => {
|
|
71
93
|
let e = /* @__PURE__ */ new Map();
|
|
72
|
-
return
|
|
94
|
+
return z.forEach((t) => t.items.forEach((t) => {
|
|
73
95
|
let n = e.get(t.name) ?? {
|
|
74
96
|
quantity: 0,
|
|
75
97
|
revenue: 0
|
|
@@ -79,149 +101,139 @@ var A = () => {
|
|
|
79
101
|
name: e,
|
|
80
102
|
...t
|
|
81
103
|
})).sort((e, t) => t.revenue - e.revenue).slice(0, 5);
|
|
82
|
-
}, [
|
|
83
|
-
|
|
104
|
+
}, [z]), _e = (/* @__PURE__ */ new Date()).toLocaleDateString("en-US", { weekday: "long" }).toLowerCase(), Z = L?.businessHours?.[_e], Q = Z && Z.isOpen ? `${Z.open} - ${Z.close}` : null, ve = L?.location?.address?.trim() || null, $ = (e, t) => {
|
|
105
|
+
he.mutate({
|
|
84
106
|
id: e,
|
|
85
107
|
status: t
|
|
86
108
|
});
|
|
87
109
|
};
|
|
88
|
-
return
|
|
89
|
-
title:
|
|
110
|
+
return I ? /* @__PURE__ */ D(n, {
|
|
111
|
+
title: k(),
|
|
90
112
|
description: "Manage your service provider operations",
|
|
91
113
|
children: /* @__PURE__ */ D("div", {
|
|
92
114
|
className: "flex items-center justify-center py-24",
|
|
93
115
|
children: /* @__PURE__ */ D("div", { className: "h-10 w-10 animate-spin rounded-full border-b-2 border-foreground" })
|
|
94
116
|
})
|
|
95
|
-
}) :
|
|
96
|
-
title: /* @__PURE__ */ O("span", { children: [
|
|
117
|
+
}) : L ? /* @__PURE__ */ D(n, {
|
|
118
|
+
title: /* @__PURE__ */ O("span", { children: [k(), U && /* @__PURE__ */ O(ue, { children: [", ", /* @__PURE__ */ D("span", {
|
|
97
119
|
className: "text-text-secondary font-normal",
|
|
98
|
-
children:
|
|
120
|
+
children: U
|
|
99
121
|
})] })] }),
|
|
100
|
-
description:
|
|
122
|
+
description: L.name,
|
|
101
123
|
actions: /* @__PURE__ */ O("button", {
|
|
102
124
|
type: "button",
|
|
103
|
-
onClick: () =>
|
|
125
|
+
onClick: () => N("/cart-owner/orders"),
|
|
104
126
|
className: "inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors",
|
|
105
|
-
children: ["View All Orders", /* @__PURE__ */ D(
|
|
127
|
+
children: ["View All Orders", /* @__PURE__ */ D(h, { className: "h-4 w-4" })]
|
|
106
128
|
}),
|
|
107
129
|
children: /* @__PURE__ */ O("div", {
|
|
108
130
|
className: "space-y-6",
|
|
109
131
|
children: [
|
|
110
|
-
/* @__PURE__ */ D(
|
|
111
|
-
/* @__PURE__ */ D(
|
|
132
|
+
/* @__PURE__ */ D(pe, { children: "Run your mobile cart business from one screen — flip your service open or closed, watch today's revenue and orders roll in, and jump to your menu, staff, or order queue. Open your service and set up your offerings to start taking orders." }),
|
|
133
|
+
/* @__PURE__ */ D(fe, {
|
|
112
134
|
storageKey: "kadaikodi-cartowner-dashboard",
|
|
113
135
|
steps: [
|
|
114
136
|
{
|
|
115
137
|
id: "offerings",
|
|
116
138
|
label: "Set up your offerings",
|
|
117
139
|
description: "Add the dishes and items customers can order from your cart.",
|
|
118
|
-
onClick: () =>
|
|
140
|
+
onClick: () => N("/cart-owner/inventory")
|
|
119
141
|
},
|
|
120
142
|
{
|
|
121
143
|
id: "service-config",
|
|
122
144
|
label: "Configure service & hours",
|
|
123
145
|
description: "Define your operating hours, location and service area.",
|
|
124
|
-
onClick: () =>
|
|
146
|
+
onClick: () => N("/cart-owner/service-config")
|
|
125
147
|
},
|
|
126
148
|
{
|
|
127
149
|
id: "orders",
|
|
128
150
|
label: "Manage incoming orders",
|
|
129
151
|
description: "Accept, prepare and fulfil customer orders in real time.",
|
|
130
|
-
onClick: () =>
|
|
152
|
+
onClick: () => N("/cart-owner/orders")
|
|
131
153
|
}
|
|
132
154
|
]
|
|
133
155
|
}),
|
|
134
156
|
/* @__PURE__ */ D("div", {
|
|
135
|
-
className: t("p-4 rounded-lg border-l-4",
|
|
157
|
+
className: t("p-4 rounded-lg border-l-4", W ? "border-status-success-text bg-status-success-bg-subtle" : "border-status-error-text bg-status-error-bg-subtle"),
|
|
136
158
|
children: /* @__PURE__ */ O("div", {
|
|
137
159
|
className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4",
|
|
138
160
|
children: [/* @__PURE__ */ O("div", {
|
|
139
161
|
className: "flex items-start gap-3",
|
|
140
|
-
children: [/* @__PURE__ */ D("div", { className: t("w-3 h-3 rounded-full mt-1 shrink-0",
|
|
162
|
+
children: [/* @__PURE__ */ D("div", { className: t("w-3 h-3 rounded-full mt-1 shrink-0", W ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("h3", {
|
|
141
163
|
className: "font-semibold text-text-primary text-sm",
|
|
142
|
-
children: ["Service Status: ",
|
|
164
|
+
children: ["Service Status: ", W ? "Open" : "Closed"]
|
|
143
165
|
}), /* @__PURE__ */ O("div", {
|
|
144
166
|
className: "flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4 mt-1 text-xs text-text-secondary",
|
|
145
167
|
children: [/* @__PURE__ */ O("span", {
|
|
146
168
|
className: "flex items-center gap-1",
|
|
147
|
-
children: [/* @__PURE__ */ D(b, { className: "h-3 w-3 shrink-0" }),
|
|
169
|
+
children: [/* @__PURE__ */ D(b, { className: "h-3 w-3 shrink-0" }), ve ?? "Location not set"]
|
|
148
170
|
}), Q && /* @__PURE__ */ O("span", {
|
|
149
171
|
className: "flex items-center gap-1",
|
|
150
|
-
children: [/* @__PURE__ */ D(
|
|
172
|
+
children: [/* @__PURE__ */ D(y, { className: "h-3 w-3 shrink-0" }), Q]
|
|
151
173
|
})]
|
|
152
174
|
})] })]
|
|
153
175
|
}), /* @__PURE__ */ O("div", {
|
|
154
176
|
className: "flex gap-2",
|
|
155
177
|
children: [/* @__PURE__ */ O("button", {
|
|
156
178
|
type: "button",
|
|
157
|
-
onClick: () =>
|
|
179
|
+
onClick: () => N("/cart-owner/settings"),
|
|
158
180
|
className: "inline-flex items-center gap-1 rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
159
181
|
children: [/* @__PURE__ */ D(b, { className: "h-3 w-3" }), "Update Location"]
|
|
160
182
|
}), /* @__PURE__ */ D("button", {
|
|
161
183
|
type: "button",
|
|
162
|
-
onClick:
|
|
163
|
-
|
|
164
|
-
|
|
184
|
+
onClick: ge,
|
|
185
|
+
disabled: H.isPending,
|
|
186
|
+
className: t("inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors disabled:opacity-60 disabled:cursor-not-allowed", W ? "bg-status-error-bg-subtle text-status-error-text hover:bg-status-error-bg-subtle" : "bg-status-success-bg-subtle text-status-success-text hover:bg-status-success-bg-subtle"),
|
|
187
|
+
children: W ? "Close Service" : "Open Service"
|
|
165
188
|
})]
|
|
166
189
|
})]
|
|
167
190
|
})
|
|
168
191
|
}),
|
|
169
|
-
/* @__PURE__ */ O(
|
|
192
|
+
/* @__PURE__ */ O(de, { children: [/* @__PURE__ */ D("h2", {
|
|
170
193
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
171
194
|
children: "Today's Performance"
|
|
172
|
-
}), /* @__PURE__ */
|
|
195
|
+
}), /* @__PURE__ */ O("div", {
|
|
173
196
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
174
197
|
children: [
|
|
175
|
-
{
|
|
198
|
+
/* @__PURE__ */ D(u, {
|
|
176
199
|
label: "Daily Revenue",
|
|
177
|
-
value: l(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
200
|
+
value: l(K.dailyRevenue, { minimumFractionDigits: 0 }),
|
|
201
|
+
delta: Y.revenueDelta,
|
|
202
|
+
deltaLabel: "vs yesterday",
|
|
203
|
+
icon: /* @__PURE__ */ D(se, { className: "h-4 w-4" }),
|
|
204
|
+
sparkline: Y.revenueSpark,
|
|
205
|
+
sparklineVariant: "area"
|
|
206
|
+
}),
|
|
207
|
+
/* @__PURE__ */ D(u, {
|
|
182
208
|
label: "Orders Today",
|
|
183
|
-
value:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
209
|
+
value: K.ordersToday,
|
|
210
|
+
delta: Y.ordersDelta,
|
|
211
|
+
deltaLabel: "vs yesterday",
|
|
212
|
+
icon: /* @__PURE__ */ D(w, { className: "h-4 w-4" }),
|
|
213
|
+
sparkline: Y.ordersSpark,
|
|
214
|
+
sparklineVariant: "line"
|
|
215
|
+
}),
|
|
216
|
+
/* @__PURE__ */ D(u, {
|
|
188
217
|
label: "Avg Order Value",
|
|
189
|
-
value: l(
|
|
190
|
-
icon: E,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
{
|
|
218
|
+
value: l(K.averageOrderValue, { minimumFractionDigits: 0 }),
|
|
219
|
+
icon: /* @__PURE__ */ D(E, { className: "h-4 w-4" })
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ D(u, {
|
|
194
222
|
label: "Service Rating",
|
|
195
|
-
value:
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}), e.sublabel && /* @__PURE__ */ D("span", {
|
|
210
|
-
className: "text-xs text-text-secondary",
|
|
211
|
-
children: e.sublabel
|
|
212
|
-
})]
|
|
213
|
-
}),
|
|
214
|
-
/* @__PURE__ */ D("p", {
|
|
215
|
-
className: "mt-3 text-2xl font-bold text-text-primary",
|
|
216
|
-
children: e.value
|
|
217
|
-
}),
|
|
218
|
-
/* @__PURE__ */ D("p", {
|
|
219
|
-
className: "mt-1 text-sm text-text-secondary",
|
|
220
|
-
children: e.label
|
|
221
|
-
})
|
|
222
|
-
]
|
|
223
|
-
}, e.label);
|
|
224
|
-
})
|
|
223
|
+
value: /* @__PURE__ */ O("span", {
|
|
224
|
+
className: "flex items-baseline gap-1.5",
|
|
225
|
+
children: [
|
|
226
|
+
K.rating.toFixed(1),
|
|
227
|
+
/* @__PURE__ */ D(T, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }),
|
|
228
|
+
/* @__PURE__ */ D("span", {
|
|
229
|
+
className: "text-xs font-normal text-text-muted",
|
|
230
|
+
children: K.totalRatings > 0 ? `${K.totalRatings} ${K.totalRatings === 1 ? "rating" : "ratings"}` : "No ratings yet"
|
|
231
|
+
})
|
|
232
|
+
]
|
|
233
|
+
}),
|
|
234
|
+
icon: /* @__PURE__ */ D(T, { className: "h-4 w-4" })
|
|
235
|
+
})
|
|
236
|
+
]
|
|
225
237
|
})] }),
|
|
226
238
|
/* @__PURE__ */ O("div", {
|
|
227
239
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
@@ -254,21 +266,27 @@ var A = () => {
|
|
|
254
266
|
},
|
|
255
267
|
{
|
|
256
268
|
label: "Analytics",
|
|
257
|
-
icon:
|
|
269
|
+
icon: g,
|
|
258
270
|
color: "bg-accent-purple-subtle text-text-primary",
|
|
259
271
|
path: "/cart-owner/analytics"
|
|
260
272
|
},
|
|
261
273
|
{
|
|
262
274
|
label: "Staff",
|
|
263
|
-
icon:
|
|
275
|
+
icon: ce,
|
|
264
276
|
color: "bg-accent-purple-subtle text-text-primary",
|
|
265
277
|
path: "/cart-owner/staff"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
label: "Raise Capital",
|
|
281
|
+
icon: E,
|
|
282
|
+
color: "bg-accent-purple-subtle text-text-primary",
|
|
283
|
+
path: "/cart-owner/list-investment"
|
|
266
284
|
}
|
|
267
285
|
].map((e) => {
|
|
268
286
|
let n = e.icon;
|
|
269
287
|
return /* @__PURE__ */ O("button", {
|
|
270
288
|
type: "button",
|
|
271
|
-
onClick: () =>
|
|
289
|
+
onClick: () => N(e.path),
|
|
272
290
|
className: t("flex flex-col items-center gap-2 rounded-lg p-4 transition-colors hover:opacity-80", e.color),
|
|
273
291
|
children: [/* @__PURE__ */ D(n, { className: "h-5 w-5" }), /* @__PURE__ */ D("span", {
|
|
274
292
|
className: "text-xs font-medium text-center",
|
|
@@ -284,16 +302,16 @@ var A = () => {
|
|
|
284
302
|
children: "Recent Orders"
|
|
285
303
|
}), /* @__PURE__ */ D("button", {
|
|
286
304
|
type: "button",
|
|
287
|
-
onClick: () =>
|
|
305
|
+
onClick: () => N("/cart-owner/orders"),
|
|
288
306
|
className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
|
|
289
307
|
children: "View All Orders"
|
|
290
308
|
})]
|
|
291
|
-
}),
|
|
309
|
+
}), q.length === 0 ? /* @__PURE__ */ D("div", {
|
|
292
310
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-8 text-center text-sm text-text-secondary shadow-sm",
|
|
293
311
|
children: "No orders yet. New orders from customers will appear here."
|
|
294
312
|
}) : /* @__PURE__ */ D("div", {
|
|
295
313
|
className: "space-y-3",
|
|
296
|
-
children:
|
|
314
|
+
children: q.map((e) => /* @__PURE__ */ D("div", {
|
|
297
315
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
298
316
|
children: /* @__PURE__ */ O("div", {
|
|
299
317
|
className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-3",
|
|
@@ -306,7 +324,7 @@ var A = () => {
|
|
|
306
324
|
className: "font-semibold text-text-primary text-sm",
|
|
307
325
|
children: ["#", e.id.slice(0, 8)]
|
|
308
326
|
}), /* @__PURE__ */ D("span", {
|
|
309
|
-
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize",
|
|
327
|
+
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize", A[e.status] || "bg-bg-sunken text-text-secondary"),
|
|
310
328
|
children: e.status
|
|
311
329
|
})]
|
|
312
330
|
}),
|
|
@@ -321,7 +339,7 @@ var A = () => {
|
|
|
321
339
|
children: l(e.total, { minimumFractionDigits: 0 })
|
|
322
340
|
}), /* @__PURE__ */ O("span", {
|
|
323
341
|
className: "flex items-center gap-1",
|
|
324
|
-
children: [/* @__PURE__ */ D(
|
|
342
|
+
children: [/* @__PURE__ */ D(y, { className: "h-3 w-3" }), M(e.orderDate)]
|
|
325
343
|
})]
|
|
326
344
|
})
|
|
327
345
|
]
|
|
@@ -330,21 +348,21 @@ var A = () => {
|
|
|
330
348
|
children: [
|
|
331
349
|
/* @__PURE__ */ O("button", {
|
|
332
350
|
type: "button",
|
|
333
|
-
onClick: () =>
|
|
351
|
+
onClick: () => N("/cart-owner/orders"),
|
|
334
352
|
className: "inline-flex items-center gap-1 rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
335
|
-
children: [/* @__PURE__ */ D(
|
|
353
|
+
children: [/* @__PURE__ */ D(ae, { className: "h-3 w-3" }), "View"]
|
|
336
354
|
}),
|
|
337
355
|
e.status === "pending" && /* @__PURE__ */ O("button", {
|
|
338
356
|
type: "button",
|
|
339
357
|
onClick: () => $(e.id, "CONFIRMED"),
|
|
340
358
|
className: "inline-flex items-center gap-1 rounded-md bg-status-success-bg-subtle px-3 py-1.5 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
341
|
-
children: [/* @__PURE__ */ D(
|
|
359
|
+
children: [/* @__PURE__ */ D(_, { className: "h-3 w-3" }), "Accept"]
|
|
342
360
|
}),
|
|
343
361
|
(e.status === "confirmed" || e.status === "preparing") && /* @__PURE__ */ O("button", {
|
|
344
362
|
type: "button",
|
|
345
363
|
onClick: () => $(e.id, "READY"),
|
|
346
364
|
className: "inline-flex items-center gap-1 rounded-md bg-[var(--color-accent-soft)] px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-[var(--color-accent-soft)] transition-colors",
|
|
347
|
-
children: [/* @__PURE__ */ D(
|
|
365
|
+
children: [/* @__PURE__ */ D(_, { className: "h-3 w-3" }), "Mark Ready"]
|
|
348
366
|
})
|
|
349
367
|
]
|
|
350
368
|
})]
|
|
@@ -355,73 +373,34 @@ var A = () => {
|
|
|
355
373
|
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
|
|
356
374
|
children: [/* @__PURE__ */ O("div", {
|
|
357
375
|
className: "flex items-center justify-between border-b border-border-subtle px-5 py-4",
|
|
358
|
-
children: [/* @__PURE__ */ D("h3", {
|
|
376
|
+
children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("h3", {
|
|
359
377
|
className: "text-base font-semibold text-text-primary",
|
|
360
|
-
children: "
|
|
361
|
-
}), /* @__PURE__ */
|
|
378
|
+
children: "Last 7 days Revenue"
|
|
379
|
+
}), /* @__PURE__ */ O("p", {
|
|
380
|
+
className: "mt-0.5 text-xs text-text-secondary",
|
|
381
|
+
children: [
|
|
382
|
+
l(J.reduce((e, t) => e + t.revenue, 0), { minimumFractionDigits: 0 }),
|
|
383
|
+
" ",
|
|
384
|
+
"delivered · ",
|
|
385
|
+
J.reduce((e, t) => e + t.orders, 0),
|
|
386
|
+
" orders"
|
|
387
|
+
]
|
|
388
|
+
})] }), /* @__PURE__ */ D("button", {
|
|
362
389
|
type: "button",
|
|
363
|
-
onClick: () =>
|
|
390
|
+
onClick: () => N("/cart-owner/analytics"),
|
|
364
391
|
className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
|
|
365
392
|
children: "View Analytics"
|
|
366
393
|
})]
|
|
367
394
|
}), /* @__PURE__ */ D("div", {
|
|
368
|
-
className: "
|
|
369
|
-
children: /* @__PURE__ */
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
}),
|
|
378
|
-
/* @__PURE__ */ D("th", {
|
|
379
|
-
className: "px-5 py-3 text-right font-medium text-text-secondary",
|
|
380
|
-
children: "Orders"
|
|
381
|
-
}),
|
|
382
|
-
/* @__PURE__ */ D("th", {
|
|
383
|
-
className: "px-5 py-3 text-right font-medium text-text-secondary",
|
|
384
|
-
children: "Revenue"
|
|
385
|
-
}),
|
|
386
|
-
/* @__PURE__ */ D("th", {
|
|
387
|
-
className: "px-5 py-3 text-left font-medium text-text-secondary",
|
|
388
|
-
children: "Trend"
|
|
389
|
-
})
|
|
390
|
-
]
|
|
391
|
-
}) }), /* @__PURE__ */ D("tbody", { children: Y.map((e) => {
|
|
392
|
-
let t = Math.max(...Y.map((e) => e.revenue), 1), n = e.revenue / t * 100;
|
|
393
|
-
return /* @__PURE__ */ O("tr", {
|
|
394
|
-
className: "border-b border-border-subtle last:border-0",
|
|
395
|
-
children: [
|
|
396
|
-
/* @__PURE__ */ D("td", {
|
|
397
|
-
className: "px-5 py-3 text-text-primary text-xs",
|
|
398
|
-
children: new Date(e.date).toLocaleDateString("en-IN", {
|
|
399
|
-
day: "2-digit",
|
|
400
|
-
month: "short",
|
|
401
|
-
weekday: "short"
|
|
402
|
-
})
|
|
403
|
-
}),
|
|
404
|
-
/* @__PURE__ */ D("td", {
|
|
405
|
-
className: "px-5 py-3 text-right text-text-primary",
|
|
406
|
-
children: e.orders
|
|
407
|
-
}),
|
|
408
|
-
/* @__PURE__ */ D("td", {
|
|
409
|
-
className: "px-5 py-3 text-right font-medium text-text-primary",
|
|
410
|
-
children: l(e.revenue, { minimumFractionDigits: 0 })
|
|
411
|
-
}),
|
|
412
|
-
/* @__PURE__ */ D("td", {
|
|
413
|
-
className: "px-5 py-3 w-40",
|
|
414
|
-
children: /* @__PURE__ */ D("div", {
|
|
415
|
-
className: "h-4 rounded bg-bg-sunken overflow-hidden",
|
|
416
|
-
children: /* @__PURE__ */ D("div", {
|
|
417
|
-
className: "h-full rounded bg-[var(--color-accent-soft)]",
|
|
418
|
-
style: { width: `${n}%` }
|
|
419
|
-
})
|
|
420
|
-
})
|
|
421
|
-
})
|
|
422
|
-
]
|
|
423
|
-
}, e.date);
|
|
424
|
-
}) })]
|
|
395
|
+
className: "p-5",
|
|
396
|
+
children: J.some((e) => e.revenue > 0) ? /* @__PURE__ */ D(ne, {
|
|
397
|
+
series: Y.revenueSeries,
|
|
398
|
+
height: 220,
|
|
399
|
+
title: "Revenue over the last 7 days",
|
|
400
|
+
valueFormatter: (e) => l(e, { minimumFractionDigits: 0 })
|
|
401
|
+
}) : /* @__PURE__ */ D("p", {
|
|
402
|
+
className: "py-10 text-center text-sm text-text-secondary",
|
|
403
|
+
children: "No delivered revenue in the last 7 days yet. Completed orders will chart here."
|
|
425
404
|
})
|
|
426
405
|
})]
|
|
427
406
|
}),
|
|
@@ -437,7 +416,7 @@ var A = () => {
|
|
|
437
416
|
className: "text-center p-3 rounded-lg bg-bg-sunken/50",
|
|
438
417
|
children: [/* @__PURE__ */ D("div", {
|
|
439
418
|
className: "text-xl font-bold text-text-primary",
|
|
440
|
-
children: l(
|
|
419
|
+
children: l(K.totalRevenue, { minimumFractionDigits: 0 })
|
|
441
420
|
}), /* @__PURE__ */ D("div", {
|
|
442
421
|
className: "text-xs text-text-secondary mt-1",
|
|
443
422
|
children: "Total Revenue"
|
|
@@ -447,7 +426,7 @@ var A = () => {
|
|
|
447
426
|
className: "text-center p-3 rounded-lg bg-bg-sunken/50",
|
|
448
427
|
children: [/* @__PURE__ */ D("div", {
|
|
449
428
|
className: "text-xl font-bold text-text-primary",
|
|
450
|
-
children:
|
|
429
|
+
children: K.totalOrders
|
|
451
430
|
}), /* @__PURE__ */ D("div", {
|
|
452
431
|
className: "text-xs text-text-secondary mt-1",
|
|
453
432
|
children: "Total Orders"
|
|
@@ -457,7 +436,7 @@ var A = () => {
|
|
|
457
436
|
className: "text-center p-3 rounded-lg bg-bg-sunken/50",
|
|
458
437
|
children: [/* @__PURE__ */ D("div", {
|
|
459
438
|
className: "text-xl font-bold text-text-primary",
|
|
460
|
-
children: l(
|
|
439
|
+
children: l(K.averageOrderValue, { minimumFractionDigits: 0 })
|
|
461
440
|
}), /* @__PURE__ */ D("div", {
|
|
462
441
|
className: "text-xs text-text-secondary mt-1",
|
|
463
442
|
children: "Avg Order Value"
|
|
@@ -476,7 +455,7 @@ var A = () => {
|
|
|
476
455
|
className: "flex items-center justify-between mb-4",
|
|
477
456
|
children: /* @__PURE__ */ O("h3", {
|
|
478
457
|
className: "text-base font-semibold text-text-primary flex items-center gap-2",
|
|
479
|
-
children: [/* @__PURE__ */ D(
|
|
458
|
+
children: [/* @__PURE__ */ D(re, { className: "h-4 w-4" }), "Notifications"]
|
|
480
459
|
})
|
|
481
460
|
}), /* @__PURE__ */ D("p", {
|
|
482
461
|
className: "text-xs text-text-secondary",
|
|
@@ -487,7 +466,7 @@ var A = () => {
|
|
|
487
466
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm",
|
|
488
467
|
children: [/* @__PURE__ */ O("h3", {
|
|
489
468
|
className: "text-base font-semibold text-text-primary mb-4 flex items-center gap-2",
|
|
490
|
-
children: [/* @__PURE__ */ D(
|
|
469
|
+
children: [/* @__PURE__ */ D(oe, { className: "h-4 w-4 text-status-warning-text" }), "Top Selling Items"]
|
|
491
470
|
}), X.length === 0 ? /* @__PURE__ */ D("p", {
|
|
492
471
|
className: "text-xs text-text-secondary",
|
|
493
472
|
children: "No sales yet. Your best sellers will appear here once orders come in."
|
|
@@ -523,19 +502,19 @@ var A = () => {
|
|
|
523
502
|
className: "flex items-center justify-between mb-4",
|
|
524
503
|
children: [/* @__PURE__ */ O("h3", {
|
|
525
504
|
className: "text-base font-semibold text-text-primary flex items-center gap-2",
|
|
526
|
-
children: [/* @__PURE__ */ D(
|
|
505
|
+
children: [/* @__PURE__ */ D(le, { className: "h-4 w-4" }), "Staff Overview"]
|
|
527
506
|
}), /* @__PURE__ */ D("button", {
|
|
528
507
|
type: "button",
|
|
529
|
-
onClick: () =>
|
|
508
|
+
onClick: () => N("/cart-owner/staff"),
|
|
530
509
|
className: "text-xs text-text-secondary hover:text-text-primary transition-colors",
|
|
531
510
|
children: "Manage"
|
|
532
511
|
})]
|
|
533
|
-
}),
|
|
512
|
+
}), V.length === 0 ? /* @__PURE__ */ D("p", {
|
|
534
513
|
className: "text-xs text-text-secondary",
|
|
535
514
|
children: "No staff added yet. Invite workers and delivery partners from Staff."
|
|
536
515
|
}) : /* @__PURE__ */ D("div", {
|
|
537
516
|
className: "space-y-3",
|
|
538
|
-
children:
|
|
517
|
+
children: V.map((e) => /* @__PURE__ */ O("div", {
|
|
539
518
|
className: "flex items-center justify-between",
|
|
540
519
|
children: [/* @__PURE__ */ O("div", {
|
|
541
520
|
className: "flex items-center gap-2",
|
|
@@ -568,7 +547,7 @@ var A = () => {
|
|
|
568
547
|
children: "Active Offerings"
|
|
569
548
|
}), /* @__PURE__ */ D("span", {
|
|
570
549
|
className: "text-sm font-semibold text-text-primary",
|
|
571
|
-
children:
|
|
550
|
+
children: K.activeOfferings
|
|
572
551
|
})]
|
|
573
552
|
}),
|
|
574
553
|
/* @__PURE__ */ O("div", {
|
|
@@ -578,7 +557,7 @@ var A = () => {
|
|
|
578
557
|
children: "Customer Rating"
|
|
579
558
|
}), /* @__PURE__ */ O("span", {
|
|
580
559
|
className: "text-sm font-semibold text-text-primary flex items-center gap-1",
|
|
581
|
-
children: [/* @__PURE__ */ D(T, { className: "h-3 w-3 text-status-warning-text fill-status-warning-text" }),
|
|
560
|
+
children: [/* @__PURE__ */ D(T, { className: "h-3 w-3 text-status-warning-text fill-status-warning-text" }), K.rating.toFixed(1)]
|
|
582
561
|
})]
|
|
583
562
|
}),
|
|
584
563
|
/* @__PURE__ */ O("div", {
|
|
@@ -588,7 +567,7 @@ var A = () => {
|
|
|
588
567
|
children: "Reviews"
|
|
589
568
|
}), /* @__PURE__ */ D("span", {
|
|
590
569
|
className: "text-sm font-semibold text-text-primary",
|
|
591
|
-
children:
|
|
570
|
+
children: me.length
|
|
592
571
|
})]
|
|
593
572
|
})
|
|
594
573
|
]
|
|
@@ -609,7 +588,7 @@ var A = () => {
|
|
|
609
588
|
},
|
|
610
589
|
{
|
|
611
590
|
label: "Business Profile",
|
|
612
|
-
icon:
|
|
591
|
+
icon: ie,
|
|
613
592
|
path: "/cart-owner/profile"
|
|
614
593
|
},
|
|
615
594
|
{
|
|
@@ -621,12 +600,12 @@ var A = () => {
|
|
|
621
600
|
let t = e.icon;
|
|
622
601
|
return /* @__PURE__ */ O("button", {
|
|
623
602
|
type: "button",
|
|
624
|
-
onClick: () =>
|
|
603
|
+
onClick: () => N(e.path),
|
|
625
604
|
className: "w-full flex items-center justify-between rounded-md border border-border-subtle px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
626
605
|
children: [/* @__PURE__ */ O("span", {
|
|
627
606
|
className: "flex items-center gap-2",
|
|
628
607
|
children: [/* @__PURE__ */ D(t, { className: "h-3.5 w-3.5" }), e.label]
|
|
629
|
-
}), /* @__PURE__ */ D(
|
|
608
|
+
}), /* @__PURE__ */ D(v, { className: "h-3 w-3 text-text-secondary" })]
|
|
630
609
|
}, e.label);
|
|
631
610
|
})
|
|
632
611
|
})]
|
|
@@ -636,14 +615,14 @@ var A = () => {
|
|
|
636
615
|
children: [/* @__PURE__ */ D("h3", {
|
|
637
616
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
638
617
|
children: "Recent Activity"
|
|
639
|
-
}),
|
|
618
|
+
}), q.length === 0 ? /* @__PURE__ */ D("p", {
|
|
640
619
|
className: "text-xs text-text-secondary",
|
|
641
620
|
children: "No recent activity yet."
|
|
642
621
|
}) : /* @__PURE__ */ D("div", {
|
|
643
622
|
className: "space-y-2 text-xs",
|
|
644
|
-
children:
|
|
623
|
+
children: q.map((e) => /* @__PURE__ */ O("div", {
|
|
645
624
|
className: "flex items-center gap-2",
|
|
646
|
-
children: [/* @__PURE__ */ D(
|
|
625
|
+
children: [/* @__PURE__ */ D(m, { className: "h-3.5 w-3.5 text-text-secondary shrink-0" }), /* @__PURE__ */ O("span", {
|
|
647
626
|
className: "text-text-secondary truncate",
|
|
648
627
|
children: [
|
|
649
628
|
"Order #",
|
|
@@ -661,7 +640,7 @@ var A = () => {
|
|
|
661
640
|
]
|
|
662
641
|
})
|
|
663
642
|
}) : /* @__PURE__ */ D(n, {
|
|
664
|
-
title:
|
|
643
|
+
title: k(),
|
|
665
644
|
description: "Manage your service provider operations",
|
|
666
645
|
children: /* @__PURE__ */ D(r, {
|
|
667
646
|
illustration: "empty-generic",
|
|
@@ -669,14 +648,14 @@ var A = () => {
|
|
|
669
648
|
description: "You don't have a service provider yet. Set up your cart, add your offerings and configure your service to start taking orders.",
|
|
670
649
|
action: /* @__PURE__ */ O("button", {
|
|
671
650
|
type: "button",
|
|
672
|
-
onClick: () =>
|
|
673
|
-
className: "inline-flex items-center gap-2 rounded-
|
|
651
|
+
onClick: () => N("/cart-owner/onboarding"),
|
|
652
|
+
className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover",
|
|
674
653
|
children: [/* @__PURE__ */ D(S, { className: "h-4 w-4" }), "Set up your cart"]
|
|
675
654
|
})
|
|
676
655
|
})
|
|
677
656
|
});
|
|
678
657
|
};
|
|
679
658
|
//#endregion
|
|
680
|
-
export {
|
|
659
|
+
export { N as CartOwnerDashboard };
|
|
681
660
|
|
|
682
661
|
//# sourceMappingURL=CartOwnerDashboard.js.map
|