@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,14 +2,19 @@ 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 { useOrders as i, useProviders as
|
|
6
|
-
import { formatCurrency as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { useOrders as i, useProviders as ee, useUpdateOrderStatus as te } from "../../hooks/useKadaikodiApi.js";
|
|
6
|
+
import { formatCurrency as a } from "../../utils/formatters.js";
|
|
7
|
+
import { STATUS as o } from "../../components/viz/lib/palette.js";
|
|
8
|
+
import { StatCard as s } from "../../components/viz/StatCard.js";
|
|
9
|
+
import { KanbanBoard as c } from "../../components/viz/KanbanBoard.js";
|
|
10
|
+
import { SegmentedTabs as l } from "../../components/viz/SegmentedTabs.js";
|
|
11
|
+
import "../../components/viz/index.js";
|
|
12
|
+
import { useEffect as u, useMemo as d, useState as f } from "react";
|
|
13
|
+
import { AlertCircle as ne, CheckCircle2 as p, ChefHat as m, Clock as h, MapPin as g, PackageCheck as _, Phone as v, RefreshCw as re, Search as y, ShoppingBag as b, Truck as x, X as ie, XCircle as S } from "lucide-react";
|
|
9
14
|
import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
10
|
-
import { EmphasisPanel as E, PagePurpose as
|
|
15
|
+
import { EmphasisPanel as E, PagePurpose as ae } from "@burdenoff/fe-libs/ui";
|
|
11
16
|
//#region src/kadaikodi/pages/cart-owner/OrderManagementPage.tsx
|
|
12
|
-
var
|
|
17
|
+
var D = {
|
|
13
18
|
pending: {
|
|
14
19
|
color: "bg-status-warning-bg-subtle text-status-warning-text",
|
|
15
20
|
label: "New Order"
|
|
@@ -38,58 +43,58 @@ var O = {
|
|
|
38
43
|
color: "bg-status-error-bg-subtle text-status-error-text",
|
|
39
44
|
label: "Cancelled"
|
|
40
45
|
}
|
|
41
|
-
},
|
|
46
|
+
}, O = {
|
|
42
47
|
delivery: {
|
|
43
|
-
icon:
|
|
48
|
+
icon: x,
|
|
44
49
|
label: "Delivery",
|
|
45
50
|
color: "bg-accent-purple-subtle text-text-primary"
|
|
46
51
|
},
|
|
47
52
|
pickup: {
|
|
48
|
-
icon:
|
|
53
|
+
icon: b,
|
|
49
54
|
label: "Pickup",
|
|
50
55
|
color: "bg-[var(--color-accent-soft)] text-text-primary"
|
|
51
56
|
},
|
|
52
57
|
cart_dispatch: {
|
|
53
|
-
icon:
|
|
58
|
+
icon: g,
|
|
54
59
|
label: "Cart Dispatch",
|
|
55
60
|
color: "bg-bg-sunken text-text-secondary"
|
|
56
61
|
}
|
|
57
|
-
},
|
|
62
|
+
}, k = (e) => {
|
|
58
63
|
let t = new Date(e), n = Math.floor(((/* @__PURE__ */ new Date()).getTime() - t.getTime()) / (1e3 * 60));
|
|
59
64
|
return n < 1 ? "Just now" : n < 60 ? `${n} min ago` : n < 1440 ? `${Math.floor(n / 60)} hours ago` : t.toLocaleDateString("en-IN", {
|
|
60
65
|
day: "2-digit",
|
|
61
66
|
month: "short"
|
|
62
67
|
});
|
|
63
|
-
},
|
|
68
|
+
}, A = (e) => new Date(e).toLocaleTimeString("en-IN", {
|
|
64
69
|
hour: "numeric",
|
|
65
70
|
minute: "2-digit",
|
|
66
71
|
hour12: !0
|
|
67
|
-
}),
|
|
72
|
+
}), oe = (e) => {
|
|
68
73
|
let t = ((/* @__PURE__ */ new Date()).getTime() - new Date(e.orderDate).getTime()) / (1e3 * 60);
|
|
69
74
|
return e.status === "pending" && t > 10 ? "border-status-error-text/50 bg-status-error-bg-subtle" : e.status === "preparing" && t > 30 ? "border-status-warning-text/50 bg-status-warning-bg-subtle" : "border-border-subtle";
|
|
70
|
-
},
|
|
71
|
-
let { navigateTo:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}, [
|
|
75
|
-
let [
|
|
75
|
+
}, se = () => {
|
|
76
|
+
let { navigateTo: se, currentUser: j } = e(), { data: M = [] } = ee(), { data: N = [], isLoading: ce, refetch: le, isFetching: P } = i({ providerId: d(() => M.find((e) => e.ownerId === j?.id) ?? M[0], [M, j?.id])?.id }), F = te(), [I, L] = f([]);
|
|
77
|
+
u(() => {
|
|
78
|
+
L(N);
|
|
79
|
+
}, [N]);
|
|
80
|
+
let [R, z] = f({
|
|
76
81
|
status: "",
|
|
77
82
|
dateRange: "all",
|
|
78
83
|
searchQuery: "",
|
|
79
84
|
sortBy: "recent",
|
|
80
85
|
fulfillmentType: ""
|
|
81
|
-
}), [V, H] =
|
|
82
|
-
|
|
86
|
+
}), [B, V] = f("board"), [H, U] = f(null), [W, G] = f(!1), [K, q] = f(null), J = (e, t) => {
|
|
87
|
+
q({
|
|
83
88
|
text: e,
|
|
84
89
|
type: t
|
|
85
|
-
}), setTimeout(() =>
|
|
86
|
-
},
|
|
87
|
-
let e =
|
|
90
|
+
}), setTimeout(() => q(null), 3e3);
|
|
91
|
+
}, Y = d(() => {
|
|
92
|
+
let e = I.length, t = I.filter((e) => e.status === "pending").length, n = I.filter((e) => [
|
|
88
93
|
"confirmed",
|
|
89
94
|
"preparing",
|
|
90
95
|
"ready",
|
|
91
96
|
"out_for_delivery"
|
|
92
|
-
].includes(e.status)).length, r =
|
|
97
|
+
].includes(e.status)).length, r = I.filter((e) => e.status === "delivered").length, i = I.filter((e) => e.status === "delivered").reduce((e, t) => e + t.total, 0);
|
|
93
98
|
return {
|
|
94
99
|
total: e,
|
|
95
100
|
pending: t,
|
|
@@ -98,17 +103,17 @@ var O = {
|
|
|
98
103
|
totalRevenue: i,
|
|
99
104
|
avgOrder: r > 0 ? Math.round(i / r) : 0
|
|
100
105
|
};
|
|
101
|
-
}, [
|
|
102
|
-
let e = [...
|
|
103
|
-
if (
|
|
104
|
-
let t =
|
|
106
|
+
}, [I]), X = d(() => {
|
|
107
|
+
let e = [...I];
|
|
108
|
+
if (R.status && (e = e.filter((e) => e.status === R.status)), R.fulfillmentType && (e = e.filter((e) => e.fulfillmentType === R.fulfillmentType)), R.searchQuery) {
|
|
109
|
+
let t = R.searchQuery.toLowerCase();
|
|
105
110
|
e = e.filter((e) => e.id.toLowerCase().includes(t) || (e.customerName || "").toLowerCase().includes(t) || e.items.some((e) => e.name.toLowerCase().includes(t)));
|
|
106
111
|
}
|
|
107
|
-
if (
|
|
112
|
+
if (R.dateRange !== "all") {
|
|
108
113
|
let t = /* @__PURE__ */ new Date(), n = /* @__PURE__ */ new Date();
|
|
109
|
-
|
|
114
|
+
R.dateRange === "today" ? n.setHours(0, 0, 0, 0) : R.dateRange === "7days" ? n.setDate(t.getDate() - 7) : R.dateRange === "30days" && n.setDate(t.getDate() - 30), e = e.filter((e) => new Date(e.orderDate) >= n);
|
|
110
115
|
}
|
|
111
|
-
switch (
|
|
116
|
+
switch (R.sortBy) {
|
|
112
117
|
case "recent":
|
|
113
118
|
e.sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime());
|
|
114
119
|
break;
|
|
@@ -123,53 +128,175 @@ var O = {
|
|
|
123
128
|
break;
|
|
124
129
|
}
|
|
125
130
|
return e;
|
|
126
|
-
}, [
|
|
131
|
+
}, [I, R]), Z = d(() => {
|
|
132
|
+
let e = [...I];
|
|
133
|
+
if (R.fulfillmentType && (e = e.filter((e) => e.fulfillmentType === R.fulfillmentType)), R.searchQuery) {
|
|
134
|
+
let t = R.searchQuery.toLowerCase();
|
|
135
|
+
e = e.filter((e) => e.id.toLowerCase().includes(t) || (e.customerName || "").toLowerCase().includes(t) || e.items.some((e) => e.name.toLowerCase().includes(t)));
|
|
136
|
+
}
|
|
137
|
+
if (R.dateRange !== "all") {
|
|
138
|
+
let t = /* @__PURE__ */ new Date(), n = /* @__PURE__ */ new Date();
|
|
139
|
+
R.dateRange === "today" ? n.setHours(0, 0, 0, 0) : R.dateRange === "7days" ? n.setDate(t.getDate() - 7) : R.dateRange === "30days" && n.setDate(t.getDate() - 30), e = e.filter((e) => new Date(e.orderDate) >= n);
|
|
140
|
+
}
|
|
141
|
+
return e.sort((e, t) => new Date(t.orderDate).getTime() - new Date(e.orderDate).getTime());
|
|
142
|
+
}, [
|
|
143
|
+
I,
|
|
144
|
+
R.fulfillmentType,
|
|
145
|
+
R.searchQuery,
|
|
146
|
+
R.dateRange
|
|
147
|
+
]), ue = async () => {
|
|
148
|
+
await le(), J("Orders refreshed", "success");
|
|
149
|
+
}, Q = (e, t) => {
|
|
127
150
|
let n = {
|
|
128
151
|
accept: "confirmed",
|
|
129
152
|
reject: "cancelled",
|
|
153
|
+
prepare: "preparing",
|
|
130
154
|
ready: "ready",
|
|
131
155
|
complete: "delivered"
|
|
132
156
|
};
|
|
133
|
-
|
|
157
|
+
L((r) => r.map((r) => r.id === e ? {
|
|
134
158
|
...r,
|
|
135
159
|
status: n[t]
|
|
136
|
-
} : r)),
|
|
160
|
+
} : r)), F.mutate({
|
|
137
161
|
id: e,
|
|
138
162
|
status: {
|
|
139
163
|
accept: "CONFIRMED",
|
|
140
164
|
reject: "CANCELLED",
|
|
165
|
+
prepare: "PREPARING",
|
|
141
166
|
ready: "READY",
|
|
142
167
|
complete: "DELIVERED"
|
|
143
168
|
}[t]
|
|
144
|
-
}, { onError: () =>
|
|
169
|
+
}, { onError: () => J("Could not update the order on the server", "error") }), J({
|
|
145
170
|
accept: "Order accepted",
|
|
146
171
|
reject: "Order rejected",
|
|
172
|
+
prepare: "Order moved to preparing",
|
|
147
173
|
ready: "Order marked as ready",
|
|
148
174
|
complete: "Order completed"
|
|
149
|
-
}[t], "success"),
|
|
150
|
-
}
|
|
175
|
+
}[t], "success"), W && H?.id === e && G(!1);
|
|
176
|
+
}, $ = (e) => {
|
|
177
|
+
let n = O[e.fulfillmentType || "delivery"] || O.delivery, r = n.icon, i = e.status === "pending" ? {
|
|
178
|
+
label: "Accept",
|
|
179
|
+
action: "accept"
|
|
180
|
+
} : e.status === "confirmed" ? {
|
|
181
|
+
label: "Start Preparing",
|
|
182
|
+
action: "prepare"
|
|
183
|
+
} : e.status === "preparing" ? {
|
|
184
|
+
label: "Mark Ready",
|
|
185
|
+
action: "ready"
|
|
186
|
+
} : e.status === "ready" ? {
|
|
187
|
+
label: "Complete",
|
|
188
|
+
action: "complete"
|
|
189
|
+
} : null;
|
|
190
|
+
return /* @__PURE__ */ T("div", {
|
|
191
|
+
className: "rounded-[var(--radius-input)] border border-border-subtle bg-bg-surface p-3 shadow-sm",
|
|
192
|
+
children: [
|
|
193
|
+
/* @__PURE__ */ T("div", {
|
|
194
|
+
className: "mb-1.5 flex items-center justify-between gap-2",
|
|
195
|
+
children: [/* @__PURE__ */ T("span", {
|
|
196
|
+
className: "truncate text-xs font-medium text-text-secondary",
|
|
197
|
+
children: ["Order #", e.id.slice(0, 8)]
|
|
198
|
+
}), /* @__PURE__ */ w("span", {
|
|
199
|
+
className: "shrink-0 text-[11px] text-text-muted",
|
|
200
|
+
children: k(e.orderDate)
|
|
201
|
+
})]
|
|
202
|
+
}),
|
|
203
|
+
/* @__PURE__ */ T("div", {
|
|
204
|
+
className: "mb-1.5 flex items-center justify-between gap-2",
|
|
205
|
+
children: [/* @__PURE__ */ w("span", {
|
|
206
|
+
className: "truncate text-sm font-semibold text-text-primary",
|
|
207
|
+
children: e.customerName || "Customer"
|
|
208
|
+
}), /* @__PURE__ */ w("span", {
|
|
209
|
+
className: "shrink-0 text-sm font-bold text-text-primary",
|
|
210
|
+
children: a(e.total, { minimumFractionDigits: 0 })
|
|
211
|
+
})]
|
|
212
|
+
}),
|
|
213
|
+
/* @__PURE__ */ w("p", {
|
|
214
|
+
className: "mb-2 line-clamp-2 text-xs text-text-secondary",
|
|
215
|
+
children: e.items.map((e) => `${e.name} ×${e.quantity}`).join(", ")
|
|
216
|
+
}),
|
|
217
|
+
/* @__PURE__ */ w("div", {
|
|
218
|
+
className: "mb-2 flex items-center gap-1.5",
|
|
219
|
+
children: /* @__PURE__ */ T("span", {
|
|
220
|
+
className: t("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium", n.color),
|
|
221
|
+
children: [/* @__PURE__ */ w(r, { className: "h-3 w-3" }), n.label]
|
|
222
|
+
})
|
|
223
|
+
}),
|
|
224
|
+
/* @__PURE__ */ T("div", {
|
|
225
|
+
className: "flex gap-1.5",
|
|
226
|
+
children: [
|
|
227
|
+
i && /* @__PURE__ */ w("button", {
|
|
228
|
+
type: "button",
|
|
229
|
+
onClick: () => Q(e.id, i.action),
|
|
230
|
+
className: "flex-1 rounded-md bg-action-primary-bg px-2.5 py-1.5 text-xs font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover",
|
|
231
|
+
children: i.label
|
|
232
|
+
}),
|
|
233
|
+
/* @__PURE__ */ w("button", {
|
|
234
|
+
type: "button",
|
|
235
|
+
onClick: () => {
|
|
236
|
+
U(e), G(!0);
|
|
237
|
+
},
|
|
238
|
+
className: "rounded-md border border-border-subtle px-2.5 py-1.5 text-xs font-medium text-text-primary transition-colors hover:bg-bg-sunken",
|
|
239
|
+
children: "Details"
|
|
240
|
+
}),
|
|
241
|
+
e.status === "pending" && /* @__PURE__ */ w("button", {
|
|
242
|
+
type: "button",
|
|
243
|
+
onClick: () => Q(e.id, "reject"),
|
|
244
|
+
"aria-label": "Reject order",
|
|
245
|
+
className: "rounded-md border border-border-subtle px-2 py-1.5 text-status-error-text transition-colors hover:bg-status-error-bg-subtle",
|
|
246
|
+
children: /* @__PURE__ */ w(S, { className: "h-3.5 w-3.5" })
|
|
247
|
+
})
|
|
248
|
+
]
|
|
249
|
+
})
|
|
250
|
+
]
|
|
251
|
+
});
|
|
252
|
+
}, de = [
|
|
253
|
+
{
|
|
254
|
+
id: "new",
|
|
255
|
+
title: "New",
|
|
256
|
+
accent: o.warning,
|
|
257
|
+
items: Z.filter((e) => e.status === "pending").map($)
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
id: "preparing",
|
|
261
|
+
title: "Preparing",
|
|
262
|
+
accent: o.info,
|
|
263
|
+
items: Z.filter((e) => e.status === "confirmed" || e.status === "preparing").map($)
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: "ready",
|
|
267
|
+
title: "Ready",
|
|
268
|
+
accent: o.success,
|
|
269
|
+
items: Z.filter((e) => e.status === "ready" || e.status === "out_for_delivery").map($)
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
id: "completed",
|
|
273
|
+
title: "Completed",
|
|
274
|
+
items: Z.filter((e) => e.status === "delivered").map($)
|
|
275
|
+
}
|
|
276
|
+
];
|
|
151
277
|
return /* @__PURE__ */ T(n, {
|
|
152
278
|
title: "Order Management",
|
|
153
279
|
description: "Manage incoming and active orders",
|
|
154
280
|
actions: /* @__PURE__ */ T("button", {
|
|
155
281
|
type: "button",
|
|
156
|
-
onClick:
|
|
157
|
-
|
|
158
|
-
|
|
282
|
+
onClick: ue,
|
|
283
|
+
disabled: P,
|
|
284
|
+
className: "inline-flex items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
285
|
+
children: [/* @__PURE__ */ w(re, { className: t("h-4 w-4", P && "animate-spin") }), "Refresh"]
|
|
159
286
|
}),
|
|
160
287
|
children: [
|
|
161
|
-
/* @__PURE__ */ w(
|
|
288
|
+
/* @__PURE__ */ w(ae, {
|
|
162
289
|
className: "mb-6",
|
|
163
290
|
children: "Your live order queue. Use this page to run service as it happens — accept new orders, move them through preparing and ready, hand off for pickup, delivery or cart dispatch, and keep customers updated. Filter by status or type to focus on what needs doing right now, and watch today's totals so you know how the day is going."
|
|
164
291
|
}),
|
|
165
292
|
/* @__PURE__ */ T("div", {
|
|
166
293
|
className: "space-y-4",
|
|
167
294
|
children: [
|
|
168
|
-
|
|
169
|
-
className: t("flex items-center gap-2 rounded-lg border p-3",
|
|
170
|
-
children: [
|
|
171
|
-
className: t("text-sm font-medium",
|
|
172
|
-
children:
|
|
295
|
+
K && /* @__PURE__ */ T("div", {
|
|
296
|
+
className: t("flex items-center gap-2 rounded-lg border p-3", K.type === "success" ? "border-status-success-text/30 bg-status-success-bg-subtle" : "border-status-error-text/30 bg-status-error-bg-subtle"),
|
|
297
|
+
children: [K.type === "success" ? /* @__PURE__ */ w(p, { className: "h-4 w-4 text-status-success-text" }) : /* @__PURE__ */ w(ne, { className: "h-4 w-4 text-status-error-text" }), /* @__PURE__ */ w("span", {
|
|
298
|
+
className: t("text-sm font-medium", K.type === "success" ? "text-status-success-text" : "text-status-error-text"),
|
|
299
|
+
children: K.text
|
|
173
300
|
})]
|
|
174
301
|
}),
|
|
175
302
|
/* @__PURE__ */ T(E, { children: [/* @__PURE__ */ w("h2", {
|
|
@@ -178,68 +305,67 @@ var O = {
|
|
|
178
305
|
}), /* @__PURE__ */ T("div", {
|
|
179
306
|
className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-3",
|
|
180
307
|
children: [
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
children: "Total Orders"
|
|
186
|
-
}), /* @__PURE__ */ w("p", {
|
|
187
|
-
className: "text-2xl font-bold text-text-primary",
|
|
188
|
-
children: J.total
|
|
189
|
-
})]
|
|
308
|
+
/* @__PURE__ */ w(s, {
|
|
309
|
+
label: "Total Orders",
|
|
310
|
+
value: Y.total,
|
|
311
|
+
icon: /* @__PURE__ */ w(b, { className: "h-4 w-4" })
|
|
190
312
|
}),
|
|
191
|
-
/* @__PURE__ */
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
className: "text-
|
|
195
|
-
children:
|
|
196
|
-
}),
|
|
197
|
-
|
|
198
|
-
children: J.pending
|
|
199
|
-
})]
|
|
313
|
+
/* @__PURE__ */ w(s, {
|
|
314
|
+
label: "Pending",
|
|
315
|
+
value: /* @__PURE__ */ w("span", {
|
|
316
|
+
className: "text-status-warning-text",
|
|
317
|
+
children: Y.pending
|
|
318
|
+
}),
|
|
319
|
+
icon: /* @__PURE__ */ w(h, { className: "h-4 w-4" })
|
|
200
320
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
children: "Active"
|
|
206
|
-
}), /* @__PURE__ */ w("p", {
|
|
207
|
-
className: "text-2xl font-bold text-text-primary",
|
|
208
|
-
children: J.active
|
|
209
|
-
})]
|
|
321
|
+
/* @__PURE__ */ w(s, {
|
|
322
|
+
label: "Active",
|
|
323
|
+
value: Y.active,
|
|
324
|
+
icon: /* @__PURE__ */ w(m, { className: "h-4 w-4" })
|
|
210
325
|
}),
|
|
211
|
-
/* @__PURE__ */
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
className: "text-
|
|
215
|
-
children:
|
|
216
|
-
}),
|
|
217
|
-
|
|
218
|
-
children: J.completed
|
|
219
|
-
})]
|
|
326
|
+
/* @__PURE__ */ w(s, {
|
|
327
|
+
label: "Completed",
|
|
328
|
+
value: /* @__PURE__ */ w("span", {
|
|
329
|
+
className: "text-status-success-text",
|
|
330
|
+
children: Y.completed
|
|
331
|
+
}),
|
|
332
|
+
icon: /* @__PURE__ */ w(p, { className: "h-4 w-4" })
|
|
220
333
|
}),
|
|
221
|
-
/* @__PURE__ */
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
children: "Total Revenue"
|
|
226
|
-
}), /* @__PURE__ */ w("p", {
|
|
227
|
-
className: "text-2xl font-bold text-text-primary",
|
|
228
|
-
children: s(J.totalRevenue, { minimumFractionDigits: 0 })
|
|
229
|
-
})]
|
|
334
|
+
/* @__PURE__ */ w(s, {
|
|
335
|
+
label: "Total Revenue",
|
|
336
|
+
value: a(Y.totalRevenue, { minimumFractionDigits: 0 }),
|
|
337
|
+
icon: /* @__PURE__ */ w(_, { className: "h-4 w-4" })
|
|
230
338
|
}),
|
|
231
|
-
/* @__PURE__ */
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
children: "Avg Order"
|
|
236
|
-
}), /* @__PURE__ */ w("p", {
|
|
237
|
-
className: "text-2xl font-bold text-text-primary",
|
|
238
|
-
children: s(J.avgOrder, { minimumFractionDigits: 0 })
|
|
239
|
-
})]
|
|
339
|
+
/* @__PURE__ */ w(s, {
|
|
340
|
+
label: "Avg Order",
|
|
341
|
+
value: a(Y.avgOrder, { minimumFractionDigits: 0 }),
|
|
342
|
+
icon: /* @__PURE__ */ w(x, { className: "h-4 w-4" })
|
|
240
343
|
})
|
|
241
344
|
]
|
|
242
345
|
})] }),
|
|
346
|
+
/* @__PURE__ */ T("div", {
|
|
347
|
+
className: "flex items-center justify-between gap-3",
|
|
348
|
+
children: [/* @__PURE__ */ w(l, {
|
|
349
|
+
"aria-label": "Order view",
|
|
350
|
+
value: B,
|
|
351
|
+
onChange: (e) => V(e),
|
|
352
|
+
tabs: [{
|
|
353
|
+
id: "board",
|
|
354
|
+
label: "Board"
|
|
355
|
+
}, {
|
|
356
|
+
id: "list",
|
|
357
|
+
label: "List"
|
|
358
|
+
}]
|
|
359
|
+
}), /* @__PURE__ */ T("p", {
|
|
360
|
+
className: "text-xs text-text-secondary",
|
|
361
|
+
children: [
|
|
362
|
+
Z.length,
|
|
363
|
+
" order",
|
|
364
|
+
Z.length === 1 ? "" : "s",
|
|
365
|
+
" in view"
|
|
366
|
+
]
|
|
367
|
+
})]
|
|
368
|
+
}),
|
|
243
369
|
/* @__PURE__ */ w("div", {
|
|
244
370
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
245
371
|
children: /* @__PURE__ */ T("div", {
|
|
@@ -247,11 +373,11 @@ var O = {
|
|
|
247
373
|
children: [
|
|
248
374
|
/* @__PURE__ */ T("div", {
|
|
249
375
|
className: "relative sm:col-span-2 lg:col-span-1",
|
|
250
|
-
children: [/* @__PURE__ */ w(
|
|
376
|
+
children: [/* @__PURE__ */ w(y, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ w("input", {
|
|
251
377
|
type: "text",
|
|
252
378
|
placeholder: "Search orders...",
|
|
253
|
-
value:
|
|
254
|
-
onChange: (e) =>
|
|
379
|
+
value: R.searchQuery,
|
|
380
|
+
onChange: (e) => z((t) => ({
|
|
255
381
|
...t,
|
|
256
382
|
searchQuery: e.target.value
|
|
257
383
|
})),
|
|
@@ -259,8 +385,8 @@ var O = {
|
|
|
259
385
|
})]
|
|
260
386
|
}),
|
|
261
387
|
/* @__PURE__ */ T("select", {
|
|
262
|
-
value:
|
|
263
|
-
onChange: (e) =>
|
|
388
|
+
value: R.status,
|
|
389
|
+
onChange: (e) => z((t) => ({
|
|
264
390
|
...t,
|
|
265
391
|
status: e.target.value
|
|
266
392
|
})),
|
|
@@ -297,8 +423,8 @@ var O = {
|
|
|
297
423
|
]
|
|
298
424
|
}),
|
|
299
425
|
/* @__PURE__ */ T("select", {
|
|
300
|
-
value:
|
|
301
|
-
onChange: (e) =>
|
|
426
|
+
value: R.fulfillmentType,
|
|
427
|
+
onChange: (e) => z((t) => ({
|
|
302
428
|
...t,
|
|
303
429
|
fulfillmentType: e.target.value
|
|
304
430
|
})),
|
|
@@ -323,8 +449,8 @@ var O = {
|
|
|
323
449
|
]
|
|
324
450
|
}),
|
|
325
451
|
/* @__PURE__ */ T("select", {
|
|
326
|
-
value:
|
|
327
|
-
onChange: (e) =>
|
|
452
|
+
value: R.dateRange,
|
|
453
|
+
onChange: (e) => z((t) => ({
|
|
328
454
|
...t,
|
|
329
455
|
dateRange: e.target.value
|
|
330
456
|
})),
|
|
@@ -349,8 +475,8 @@ var O = {
|
|
|
349
475
|
]
|
|
350
476
|
}),
|
|
351
477
|
/* @__PURE__ */ T("select", {
|
|
352
|
-
value:
|
|
353
|
-
onChange: (e) =>
|
|
478
|
+
value: R.sortBy,
|
|
479
|
+
onChange: (e) => z((t) => ({
|
|
354
480
|
...t,
|
|
355
481
|
sortBy: e.target.value
|
|
356
482
|
})),
|
|
@@ -377,22 +503,29 @@ var O = {
|
|
|
377
503
|
]
|
|
378
504
|
})
|
|
379
505
|
}),
|
|
380
|
-
|
|
506
|
+
ce ? /* @__PURE__ */ w("div", {
|
|
381
507
|
className: "flex items-center justify-center py-16",
|
|
382
508
|
children: /* @__PURE__ */ w("div", { className: "h-10 w-10 animate-spin rounded-full border-b-2 border-foreground" })
|
|
383
|
-
}) :
|
|
384
|
-
illustration:
|
|
509
|
+
}) : B === "board" ? Z.length === 0 ? /* @__PURE__ */ w(r, {
|
|
510
|
+
illustration: R.searchQuery ? "empty-search" : "empty-data",
|
|
385
511
|
title: "No orders found",
|
|
386
|
-
description:
|
|
512
|
+
description: "New orders from customers appear on the board in real time. Make sure your cart is open and accepting orders."
|
|
513
|
+
}) : /* @__PURE__ */ w(c, {
|
|
514
|
+
columns: de,
|
|
515
|
+
emptyColumnHint: "No orders"
|
|
516
|
+
}) : X.length === 0 ? /* @__PURE__ */ w(r, {
|
|
517
|
+
illustration: R.searchQuery || R.status ? "empty-search" : "empty-data",
|
|
518
|
+
title: "No orders found",
|
|
519
|
+
description: R.searchQuery || R.status ? "No orders match your current filters. Try adjusting the status, type or date range." : "New orders from customers will appear here in real time. Make sure your cart is open and accepting orders."
|
|
387
520
|
}) : /* @__PURE__ */ w("div", {
|
|
388
521
|
className: "space-y-4",
|
|
389
|
-
children:
|
|
390
|
-
let n =
|
|
522
|
+
children: X.map((e) => {
|
|
523
|
+
let n = D[e.status] || {
|
|
391
524
|
color: "bg-bg-sunken text-text-secondary",
|
|
392
525
|
label: e.status
|
|
393
|
-
}, r =
|
|
526
|
+
}, r = O[e.fulfillmentType || "delivery"] || O.delivery, i = r.icon;
|
|
394
527
|
return /* @__PURE__ */ w("div", {
|
|
395
|
-
className: t("rounded-lg border bg-bg-surface shadow-sm transition-shadow hover:shadow-md",
|
|
528
|
+
className: t("rounded-lg border bg-bg-surface shadow-sm transition-shadow hover:shadow-md", oe(e)),
|
|
396
529
|
children: /* @__PURE__ */ T("div", {
|
|
397
530
|
className: "p-4 sm:p-5",
|
|
398
531
|
children: [
|
|
@@ -421,18 +554,18 @@ var O = {
|
|
|
421
554
|
children: [
|
|
422
555
|
e.customerName || "Customer",
|
|
423
556
|
" | ",
|
|
424
|
-
|
|
557
|
+
k(e.orderDate)
|
|
425
558
|
]
|
|
426
559
|
})]
|
|
427
560
|
}), /* @__PURE__ */ T("div", {
|
|
428
561
|
className: "flex items-center gap-3",
|
|
429
562
|
children: [/* @__PURE__ */ w("p", {
|
|
430
563
|
className: "text-lg font-bold text-text-primary",
|
|
431
|
-
children:
|
|
564
|
+
children: a(e.total, { minimumFractionDigits: 0 })
|
|
432
565
|
}), /* @__PURE__ */ w("button", {
|
|
433
566
|
type: "button",
|
|
434
567
|
onClick: () => {
|
|
435
|
-
|
|
568
|
+
U(e), G(!0);
|
|
436
569
|
},
|
|
437
570
|
className: "rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
438
571
|
children: "View Details"
|
|
@@ -458,42 +591,41 @@ var O = {
|
|
|
458
591
|
children: [
|
|
459
592
|
e.status === "pending" && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T("button", {
|
|
460
593
|
type: "button",
|
|
461
|
-
onClick: () =>
|
|
594
|
+
onClick: () => Q(e.id, "accept"),
|
|
462
595
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
463
|
-
children: [/* @__PURE__ */ w(
|
|
596
|
+
children: [/* @__PURE__ */ w(p, { className: "h-3.5 w-3.5" }), "Accept Order"]
|
|
464
597
|
}), /* @__PURE__ */ T("button", {
|
|
465
598
|
type: "button",
|
|
466
|
-
onClick: () =>
|
|
599
|
+
onClick: () => Q(e.id, "reject"),
|
|
467
600
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-error-bg-subtle px-3 py-2 text-xs font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
468
601
|
children: [/* @__PURE__ */ w(S, { className: "h-3.5 w-3.5" }), "Reject"]
|
|
469
602
|
})] }),
|
|
470
603
|
e.status === "confirmed" && /* @__PURE__ */ T("button", {
|
|
471
604
|
type: "button",
|
|
472
|
-
onClick: () =>
|
|
605
|
+
onClick: () => Q(e.id, "prepare"),
|
|
473
606
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-warning-bg-subtle px-3 py-2 text-xs font-medium text-status-warning-text hover:bg-status-warning-bg-subtle transition-colors",
|
|
474
|
-
children: [/* @__PURE__ */ w(
|
|
607
|
+
children: [/* @__PURE__ */ w(m, { className: "h-3.5 w-3.5" }), "Start Preparing"]
|
|
475
608
|
}),
|
|
476
609
|
e.status === "preparing" && /* @__PURE__ */ T("button", {
|
|
477
610
|
type: "button",
|
|
478
|
-
onClick: () =>
|
|
611
|
+
onClick: () => Q(e.id, "ready"),
|
|
479
612
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
480
|
-
children: [/* @__PURE__ */ w(
|
|
613
|
+
children: [/* @__PURE__ */ w(_, { className: "h-3.5 w-3.5" }), "Mark as Ready"]
|
|
481
614
|
}),
|
|
482
615
|
e.status === "ready" && e.fulfillmentType === "pickup" && /* @__PURE__ */ T("button", {
|
|
483
616
|
type: "button",
|
|
484
|
-
onClick: () =>
|
|
617
|
+
onClick: () => Q(e.id, "complete"),
|
|
485
618
|
className: "inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
486
|
-
children: [/* @__PURE__ */ w(
|
|
619
|
+
children: [/* @__PURE__ */ w(p, { className: "h-3.5 w-3.5" }), "Complete Order"]
|
|
487
620
|
}),
|
|
488
621
|
[
|
|
489
622
|
"confirmed",
|
|
490
623
|
"preparing",
|
|
491
624
|
"ready"
|
|
492
|
-
].includes(e.status) && /* @__PURE__ */ T("
|
|
493
|
-
|
|
494
|
-
onClick: () => alert("Contact feature coming soon!"),
|
|
625
|
+
].includes(e.status) && e.customerPhone && /* @__PURE__ */ T("a", {
|
|
626
|
+
href: `tel:${e.customerPhone}`,
|
|
495
627
|
className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
496
|
-
children: [/* @__PURE__ */ w(
|
|
628
|
+
children: [/* @__PURE__ */ w(v, { className: "h-3.5 w-3.5" }), "Contact Customer"]
|
|
497
629
|
})
|
|
498
630
|
]
|
|
499
631
|
}),
|
|
@@ -514,7 +646,7 @@ var O = {
|
|
|
514
646
|
})
|
|
515
647
|
]
|
|
516
648
|
}),
|
|
517
|
-
|
|
649
|
+
W && H && /* @__PURE__ */ w("div", {
|
|
518
650
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
519
651
|
children: /* @__PURE__ */ w("div", {
|
|
520
652
|
className: "w-full max-w-2xl max-h-[90vh] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface shadow-xl",
|
|
@@ -527,9 +659,9 @@ var O = {
|
|
|
527
659
|
children: "Order Details"
|
|
528
660
|
}), /* @__PURE__ */ w("button", {
|
|
529
661
|
type: "button",
|
|
530
|
-
onClick: () =>
|
|
662
|
+
onClick: () => G(!1),
|
|
531
663
|
className: "rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
532
|
-
children: /* @__PURE__ */ w(
|
|
664
|
+
children: /* @__PURE__ */ w(ie, { className: "h-5 w-5" })
|
|
533
665
|
})]
|
|
534
666
|
}), /* @__PURE__ */ T("div", {
|
|
535
667
|
className: "space-y-4",
|
|
@@ -542,28 +674,28 @@ var O = {
|
|
|
542
674
|
children: "Order ID"
|
|
543
675
|
}), /* @__PURE__ */ T("p", {
|
|
544
676
|
className: "text-sm font-medium text-text-primary",
|
|
545
|
-
children: ["#",
|
|
677
|
+
children: ["#", H.id]
|
|
546
678
|
})] }),
|
|
547
679
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
548
680
|
className: "text-xs text-text-secondary",
|
|
549
681
|
children: "Status"
|
|
550
682
|
}), /* @__PURE__ */ w("span", {
|
|
551
|
-
className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium mt-0.5", (
|
|
552
|
-
children: (
|
|
683
|
+
className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium mt-0.5", (D[H.status] || D.pending).color),
|
|
684
|
+
children: (D[H.status] || D.pending).label
|
|
553
685
|
})] }),
|
|
554
686
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
555
687
|
className: "text-xs text-text-secondary",
|
|
556
688
|
children: "Customer"
|
|
557
689
|
}), /* @__PURE__ */ w("p", {
|
|
558
690
|
className: "text-sm font-medium text-text-primary",
|
|
559
|
-
children:
|
|
691
|
+
children: H.customerName || "N/A"
|
|
560
692
|
})] }),
|
|
561
693
|
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
562
694
|
className: "text-xs text-text-secondary",
|
|
563
695
|
children: "Order Time"
|
|
564
696
|
}), /* @__PURE__ */ w("p", {
|
|
565
697
|
className: "text-sm font-medium text-text-primary",
|
|
566
|
-
children:
|
|
698
|
+
children: A(H.orderDate)
|
|
567
699
|
})] })
|
|
568
700
|
]
|
|
569
701
|
}),
|
|
@@ -574,7 +706,7 @@ var O = {
|
|
|
574
706
|
children: "Order Items"
|
|
575
707
|
}), /* @__PURE__ */ w("div", {
|
|
576
708
|
className: "space-y-2",
|
|
577
|
-
children:
|
|
709
|
+
children: H.items.map((e, t) => /* @__PURE__ */ T("div", {
|
|
578
710
|
className: "flex justify-between items-start",
|
|
579
711
|
children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
580
712
|
className: "text-sm font-medium text-text-primary",
|
|
@@ -582,14 +714,14 @@ var O = {
|
|
|
582
714
|
}), /* @__PURE__ */ T("p", {
|
|
583
715
|
className: "text-xs text-text-secondary",
|
|
584
716
|
children: [
|
|
585
|
-
|
|
717
|
+
a(e.price, { minimumFractionDigits: 0 }),
|
|
586
718
|
" x",
|
|
587
719
|
" ",
|
|
588
720
|
e.quantity
|
|
589
721
|
]
|
|
590
722
|
})] }), /* @__PURE__ */ w("p", {
|
|
591
723
|
className: "text-sm font-medium text-text-primary",
|
|
592
|
-
children:
|
|
724
|
+
children: a(e.price * e.quantity, { minimumFractionDigits: 0 })
|
|
593
725
|
})]
|
|
594
726
|
}, t))
|
|
595
727
|
})]
|
|
@@ -599,37 +731,37 @@ var O = {
|
|
|
599
731
|
children: [
|
|
600
732
|
/* @__PURE__ */ T("div", {
|
|
601
733
|
className: "flex justify-between text-sm text-text-secondary",
|
|
602
|
-
children: [/* @__PURE__ */ w("span", { children: "Subtotal" }), /* @__PURE__ */ w("span", { children:
|
|
734
|
+
children: [/* @__PURE__ */ w("span", { children: "Subtotal" }), /* @__PURE__ */ w("span", { children: a(H.subtotal, { minimumFractionDigits: 0 }) })]
|
|
603
735
|
}),
|
|
604
736
|
/* @__PURE__ */ T("div", {
|
|
605
737
|
className: "flex justify-between text-sm text-text-secondary",
|
|
606
|
-
children: [/* @__PURE__ */ w("span", { children: "Delivery Fee" }), /* @__PURE__ */ w("span", { children:
|
|
738
|
+
children: [/* @__PURE__ */ w("span", { children: "Delivery Fee" }), /* @__PURE__ */ w("span", { children: a(H.deliveryFee, { minimumFractionDigits: 0 }) })]
|
|
607
739
|
}),
|
|
608
740
|
/* @__PURE__ */ T("div", {
|
|
609
741
|
className: "flex justify-between text-sm text-text-secondary",
|
|
610
|
-
children: [/* @__PURE__ */ w("span", { children: "Tax" }), /* @__PURE__ */ w("span", { children:
|
|
742
|
+
children: [/* @__PURE__ */ w("span", { children: "Tax" }), /* @__PURE__ */ w("span", { children: a(H.taxes, { minimumFractionDigits: 0 }) })]
|
|
611
743
|
}),
|
|
612
744
|
/* @__PURE__ */ T("div", {
|
|
613
745
|
className: "flex justify-between font-semibold text-text-primary pt-2 border-t border-border-subtle",
|
|
614
|
-
children: [/* @__PURE__ */ w("span", { children: "Total" }), /* @__PURE__ */ w("span", { children:
|
|
746
|
+
children: [/* @__PURE__ */ w("span", { children: "Total" }), /* @__PURE__ */ w("span", { children: a(H.total, { minimumFractionDigits: 0 }) })]
|
|
615
747
|
})
|
|
616
748
|
]
|
|
617
749
|
}),
|
|
618
|
-
|
|
750
|
+
H.fulfillmentType === "delivery" && H.deliveryAddress && /* @__PURE__ */ T("div", {
|
|
619
751
|
className: "border-t border-border-subtle pt-4",
|
|
620
752
|
children: [/* @__PURE__ */ T("h4", {
|
|
621
753
|
className: "text-sm font-medium text-text-primary mb-2 flex items-center gap-1.5",
|
|
622
|
-
children: [/* @__PURE__ */ w(
|
|
754
|
+
children: [/* @__PURE__ */ w(g, { className: "h-4 w-4 text-text-secondary" }), "Delivery Address"]
|
|
623
755
|
}), /* @__PURE__ */ T("p", {
|
|
624
756
|
className: "text-sm text-text-secondary",
|
|
625
757
|
children: [
|
|
626
|
-
|
|
758
|
+
H.deliveryAddress.street,
|
|
627
759
|
", ",
|
|
628
|
-
|
|
760
|
+
H.deliveryAddress.area,
|
|
629
761
|
/* @__PURE__ */ w("br", {}),
|
|
630
|
-
|
|
762
|
+
H.deliveryAddress.city,
|
|
631
763
|
" - ",
|
|
632
|
-
|
|
764
|
+
H.deliveryAddress.pincode
|
|
633
765
|
]
|
|
634
766
|
})]
|
|
635
767
|
}),
|
|
@@ -637,17 +769,17 @@ var O = {
|
|
|
637
769
|
className: "flex gap-3 mt-6",
|
|
638
770
|
children: [/* @__PURE__ */ w("button", {
|
|
639
771
|
type: "button",
|
|
640
|
-
onClick: () =>
|
|
772
|
+
onClick: () => G(!1),
|
|
641
773
|
className: "flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors",
|
|
642
774
|
children: "Close"
|
|
643
|
-
}),
|
|
775
|
+
}), H.status === "pending" && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w("button", {
|
|
644
776
|
type: "button",
|
|
645
|
-
onClick: () =>
|
|
777
|
+
onClick: () => Q(H.id, "accept"),
|
|
646
778
|
className: "flex-1 rounded-md bg-status-success-bg-subtle px-4 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
647
779
|
children: "Accept Order"
|
|
648
780
|
}), /* @__PURE__ */ w("button", {
|
|
649
781
|
type: "button",
|
|
650
|
-
onClick: () =>
|
|
782
|
+
onClick: () => Q(H.id, "reject"),
|
|
651
783
|
className: "flex-1 rounded-md bg-status-error-bg-subtle px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
652
784
|
children: "Reject Order"
|
|
653
785
|
})] })]
|
|
@@ -661,6 +793,6 @@ var O = {
|
|
|
661
793
|
});
|
|
662
794
|
};
|
|
663
795
|
//#endregion
|
|
664
|
-
export {
|
|
796
|
+
export { se as OrderManagementPage };
|
|
665
797
|
|
|
666
798
|
//# sourceMappingURL=OrderManagementPage.js.map
|