@burdenoff/microfe-kadaikodi 2026.704.4 → 2026.704.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
- package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.js +83 -0
- package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
- package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
- package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.js +4 -0
- package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
- package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
- package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
- package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
- package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.js +60 -0
- package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
- package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.js +66 -0
- package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
- package/dist/kadaikodi/components/viz/index.js +23 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.js +21 -0
- package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
- package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +373 -631
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.js +181 -0
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,443 +2,180 @@ 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 {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { useProviders as i } from "../../hooks/useKadaikodiApi.js";
|
|
6
|
+
import { formatDistance as a } from "../../utils/formatters.js";
|
|
7
|
+
import { RatingStars as o } from "../../components/viz/RatingStars.js";
|
|
8
|
+
import "../../components/viz/index.js";
|
|
9
|
+
import { ProviderImage as s, useFavorites as c } from "./shared.js";
|
|
10
|
+
import { useMemo as l, useState as u } from "react";
|
|
11
|
+
import { CheckCircle2 as d, Clock as f, Heart as p, MapPin as m, RotateCcw as h, Search as g } from "lucide-react";
|
|
8
12
|
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
9
13
|
import { EmphasisPanel as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
|
|
10
14
|
//#region src/kadaikodi/pages/customer/FavoritesPage.tsx
|
|
11
15
|
function x() {
|
|
12
|
-
let { navigateTo: x } = e(), S = [], C = [], [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}), { carts: E, products: D } = o(() => {
|
|
18
|
-
let e = [...S], t = [...C];
|
|
19
|
-
if (w.searchQuery) {
|
|
20
|
-
let n = w.searchQuery.toLowerCase();
|
|
21
|
-
e = e.filter((e) => e.name.toLowerCase().includes(n) || e.description.toLowerCase().includes(n) || e.category.toLowerCase().includes(n)), t = t.filter((e) => e.name.toLowerCase().includes(n) || e.description.toLowerCase().includes(n) || e.category.toLowerCase().includes(n) || e.cartName.toLowerCase().includes(n));
|
|
16
|
+
let { navigateTo: x } = e(), { data: S = [], isLoading: C } = i(), w = c(), [T, E] = u(""), [D, O] = u("rating"), k = l(() => {
|
|
17
|
+
let e = S.filter((e) => w.has(e.id));
|
|
18
|
+
if (T.trim()) {
|
|
19
|
+
let t = T.toLowerCase();
|
|
20
|
+
e = e.filter((e) => e.name.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
case "recent":
|
|
25
|
-
e.sort((e, t) => new Date(t.addedToFavorites).getTime() - new Date(e.addedToFavorites).getTime()), t.sort((e, t) => new Date(t.addedToFavorites).getTime() - new Date(e.addedToFavorites).getTime());
|
|
26
|
-
break;
|
|
27
|
-
case "name":
|
|
28
|
-
e.sort((e, t) => e.name.localeCompare(t.name)), t.sort((e, t) => e.name.localeCompare(t.name));
|
|
29
|
-
break;
|
|
30
|
-
case "rating":
|
|
31
|
-
e.sort((e, t) => t.rating - e.rating), t.sort((e, t) => t.rating - e.rating);
|
|
32
|
-
break;
|
|
33
|
-
case "orders":
|
|
34
|
-
e.sort((e, t) => t.totalOrders - e.totalOrders), t.sort((e, t) => t.orderCount - e.orderCount);
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
return w.type === "carts" ? {
|
|
38
|
-
carts: e,
|
|
39
|
-
products: []
|
|
40
|
-
} : w.type === "products" ? {
|
|
41
|
-
carts: [],
|
|
42
|
-
products: t
|
|
43
|
-
} : {
|
|
44
|
-
carts: e,
|
|
45
|
-
products: t
|
|
46
|
-
};
|
|
22
|
+
return e.sort((e, t) => D === "name" ? e.name.localeCompare(t.name) : t.rating - e.rating), e;
|
|
47
23
|
}, [
|
|
48
24
|
S,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}, k = (e) => {
|
|
54
|
-
console.log("Remove product:", e);
|
|
55
|
-
}, A = S.reduce((e, t) => e + t.totalSpent, 0) + C.reduce((e, t) => e + t.price * t.orderCount, 0);
|
|
25
|
+
w,
|
|
26
|
+
T,
|
|
27
|
+
D
|
|
28
|
+
]), A = k.filter((e) => e.isOpen).length;
|
|
56
29
|
return /* @__PURE__ */ v(n, {
|
|
57
|
-
title: "
|
|
58
|
-
description: `${
|
|
30
|
+
title: "Your Favorites",
|
|
31
|
+
description: `${w.ids.length} saved`,
|
|
59
32
|
children: [
|
|
60
33
|
/* @__PURE__ */ _(b, {
|
|
61
34
|
className: "mb-6",
|
|
62
|
-
children: "
|
|
35
|
+
children: "Every cart you've saved, in one place. Tap the heart on any cart while browsing to add it here, then reorder your go-to spots in a single tap."
|
|
63
36
|
}),
|
|
64
|
-
/* @__PURE__ */ _(y, {
|
|
37
|
+
w.ids.length > 0 && /* @__PURE__ */ _(y, {
|
|
65
38
|
className: "mb-6",
|
|
66
39
|
children: /* @__PURE__ */ v("div", {
|
|
67
40
|
className: "flex flex-wrap items-center gap-4 text-sm text-text-secondary",
|
|
68
|
-
children: [
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
className: "
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
]
|
|
84
|
-
}),
|
|
85
|
-
/* @__PURE__ */ v("span", {
|
|
86
|
-
className: "flex items-center gap-1.5",
|
|
87
|
-
children: [
|
|
88
|
-
/* @__PURE__ */ _(m, { className: "h-3.5 w-3.5" }),
|
|
89
|
-
"Total saved: ",
|
|
90
|
-
i(A, { minimumFractionDigits: 0 })
|
|
91
|
-
]
|
|
92
|
-
})
|
|
93
|
-
]
|
|
41
|
+
children: [/* @__PURE__ */ v("span", {
|
|
42
|
+
className: "flex items-center gap-1.5",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ _(p, { className: "h-3.5 w-3.5 fill-status-error-text text-status-error-text" }),
|
|
45
|
+
w.ids.length,
|
|
46
|
+
" saved"
|
|
47
|
+
]
|
|
48
|
+
}), /* @__PURE__ */ v("span", {
|
|
49
|
+
className: "flex items-center gap-1.5",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ _(d, { className: "h-3.5 w-3.5 text-status-success-text" }),
|
|
52
|
+
A,
|
|
53
|
+
" open now"
|
|
54
|
+
]
|
|
55
|
+
})]
|
|
94
56
|
})
|
|
95
57
|
}),
|
|
96
|
-
/* @__PURE__ */
|
|
97
|
-
className: "
|
|
98
|
-
children: /* @__PURE__ */ v("div", {
|
|
99
|
-
className: "
|
|
100
|
-
children: [
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
})),
|
|
120
|
-
className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
|
|
121
|
-
children: [
|
|
122
|
-
/* @__PURE__ */ _("option", {
|
|
123
|
-
value: "all",
|
|
124
|
-
children: "All Favorites"
|
|
125
|
-
}),
|
|
126
|
-
/* @__PURE__ */ _("option", {
|
|
127
|
-
value: "carts",
|
|
128
|
-
children: "Favorite Carts"
|
|
129
|
-
}),
|
|
130
|
-
/* @__PURE__ */ _("option", {
|
|
131
|
-
value: "products",
|
|
132
|
-
children: "Favorite Products"
|
|
133
|
-
})
|
|
134
|
-
]
|
|
135
|
-
}),
|
|
136
|
-
/* @__PURE__ */ v("select", {
|
|
137
|
-
value: w.category,
|
|
138
|
-
onChange: (e) => T((t) => ({
|
|
139
|
-
...t,
|
|
140
|
-
category: e.target.value
|
|
141
|
-
})),
|
|
142
|
-
className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
|
|
143
|
-
children: [
|
|
144
|
-
/* @__PURE__ */ _("option", {
|
|
145
|
-
value: "",
|
|
146
|
-
children: "All Categories"
|
|
147
|
-
}),
|
|
148
|
-
/* @__PURE__ */ _("option", {
|
|
149
|
-
value: "Food & Beverage",
|
|
150
|
-
children: "Food & Beverage"
|
|
151
|
-
}),
|
|
152
|
-
/* @__PURE__ */ _("option", {
|
|
153
|
-
value: "Street Food",
|
|
154
|
-
children: "Street Food"
|
|
155
|
-
}),
|
|
156
|
-
/* @__PURE__ */ _("option", {
|
|
157
|
-
value: "South Indian",
|
|
158
|
-
children: "South Indian"
|
|
159
|
-
}),
|
|
160
|
-
/* @__PURE__ */ _("option", {
|
|
161
|
-
value: "Beverages",
|
|
162
|
-
children: "Beverages"
|
|
163
|
-
})
|
|
164
|
-
]
|
|
165
|
-
}),
|
|
166
|
-
/* @__PURE__ */ v("select", {
|
|
167
|
-
value: w.sortBy,
|
|
168
|
-
onChange: (e) => T((t) => ({
|
|
169
|
-
...t,
|
|
170
|
-
sortBy: e.target.value
|
|
171
|
-
})),
|
|
172
|
-
className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
|
|
173
|
-
children: [
|
|
174
|
-
/* @__PURE__ */ _("option", {
|
|
175
|
-
value: "recent",
|
|
176
|
-
children: "Recently Added"
|
|
177
|
-
}),
|
|
178
|
-
/* @__PURE__ */ _("option", {
|
|
179
|
-
value: "name",
|
|
180
|
-
children: "Name A-Z"
|
|
181
|
-
}),
|
|
182
|
-
/* @__PURE__ */ _("option", {
|
|
183
|
-
value: "rating",
|
|
184
|
-
children: "Highest Rated"
|
|
185
|
-
}),
|
|
186
|
-
/* @__PURE__ */ _("option", {
|
|
187
|
-
value: "orders",
|
|
188
|
-
children: "Most Ordered"
|
|
189
|
-
})
|
|
190
|
-
]
|
|
191
|
-
})
|
|
192
|
-
]
|
|
193
|
-
})
|
|
58
|
+
w.ids.length > 0 && /* @__PURE__ */ v("div", {
|
|
59
|
+
className: "mb-6 grid grid-cols-1 gap-3 sm:grid-cols-3",
|
|
60
|
+
children: [/* @__PURE__ */ v("div", {
|
|
61
|
+
className: "relative sm:col-span-2",
|
|
62
|
+
children: [/* @__PURE__ */ _(g, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _("input", {
|
|
63
|
+
type: "text",
|
|
64
|
+
placeholder: "Search favorites…",
|
|
65
|
+
value: T,
|
|
66
|
+
onChange: (e) => E(e.target.value),
|
|
67
|
+
className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 pl-9 pr-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
|
|
68
|
+
})]
|
|
69
|
+
}), /* @__PURE__ */ v("select", {
|
|
70
|
+
value: D,
|
|
71
|
+
onChange: (e) => O(e.target.value),
|
|
72
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
|
|
73
|
+
children: [/* @__PURE__ */ _("option", {
|
|
74
|
+
value: "rating",
|
|
75
|
+
children: "Highest rated"
|
|
76
|
+
}), /* @__PURE__ */ _("option", {
|
|
77
|
+
value: "name",
|
|
78
|
+
children: "Name A–Z"
|
|
79
|
+
})]
|
|
80
|
+
})]
|
|
194
81
|
}),
|
|
195
|
-
|
|
82
|
+
C ? /* @__PURE__ */ _("div", {
|
|
83
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
84
|
+
children: Array.from({ length: 3 }).map((e, t) => /* @__PURE__ */ _("div", { className: "h-56 animate-pulse rounded-xl border border-border-subtle bg-bg-sunken" }, t))
|
|
85
|
+
}) : k.length === 0 ? /* @__PURE__ */ _(r, {
|
|
196
86
|
illustration: "empty-data",
|
|
197
|
-
icon: /* @__PURE__ */ _(
|
|
198
|
-
title: "No favorites yet",
|
|
199
|
-
description:
|
|
200
|
-
action: /* @__PURE__ */ _("button", {
|
|
87
|
+
icon: /* @__PURE__ */ _(p, { className: "h-12 w-12" }),
|
|
88
|
+
title: w.ids.length === 0 ? "No favorites yet" : "No matches",
|
|
89
|
+
description: w.ids.length === 0 ? "Tap the heart on any cart while browsing and it'll show up here." : "No saved carts match your search.",
|
|
90
|
+
action: w.ids.length === 0 ? /* @__PURE__ */ _("button", {
|
|
201
91
|
type: "button",
|
|
202
92
|
onClick: () => x("/customer/discover"),
|
|
203
|
-
className: "rounded-lg bg-
|
|
93
|
+
className: "rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover transition-colors",
|
|
204
94
|
children: "Discover Carts"
|
|
205
|
-
})
|
|
206
|
-
}) : /* @__PURE__ */
|
|
207
|
-
className: "
|
|
208
|
-
children:
|
|
209
|
-
className: "
|
|
210
|
-
children: [
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden",
|
|
220
|
-
children: [/* @__PURE__ */ v("div", {
|
|
221
|
-
className: "relative h-36 bg-bg-sunken",
|
|
222
|
-
children: [
|
|
223
|
-
/* @__PURE__ */ _("button", {
|
|
224
|
-
type: "button",
|
|
225
|
-
onClick: () => x(`/customer/cart/${e.id}`),
|
|
226
|
-
className: "block h-full w-full",
|
|
227
|
-
children: /* @__PURE__ */ _("img", {
|
|
228
|
-
src: e.image,
|
|
229
|
-
alt: e.name,
|
|
230
|
-
className: "h-full w-full object-cover"
|
|
231
|
-
})
|
|
232
|
-
}),
|
|
233
|
-
/* @__PURE__ */ _("button", {
|
|
234
|
-
type: "button",
|
|
235
|
-
onClick: () => O(e.id),
|
|
236
|
-
title: "Remove from favorites",
|
|
237
|
-
className: "absolute top-2 right-2 flex h-8 w-8 items-center justify-center rounded-full bg-bg-surface/80 backdrop-blur-sm text-status-error-text hover:bg-bg-surface transition-colors",
|
|
238
|
-
children: /* @__PURE__ */ _(l, { className: "h-4 w-4 fill-current" })
|
|
239
|
-
}),
|
|
240
|
-
/* @__PURE__ */ _("div", {
|
|
241
|
-
className: "absolute top-2 left-2",
|
|
242
|
-
children: /* @__PURE__ */ _("span", {
|
|
243
|
-
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium", e.isOpen ? "bg-status-success-bg-subtle text-status-success-text" : "bg-status-error-bg/20 text-status-error-text"),
|
|
244
|
-
children: e.isOpen ? "Open" : "Closed"
|
|
245
|
-
})
|
|
246
|
-
})
|
|
247
|
-
]
|
|
248
|
-
}), /* @__PURE__ */ v("div", {
|
|
249
|
-
className: "p-4",
|
|
250
|
-
children: [
|
|
251
|
-
/* @__PURE__ */ v("div", {
|
|
252
|
-
className: "flex items-start justify-between gap-2 mb-2",
|
|
253
|
-
children: [/* @__PURE__ */ _("h4", {
|
|
254
|
-
className: "text-sm font-semibold text-text-primary truncate",
|
|
255
|
-
children: e.name
|
|
256
|
-
}), /* @__PURE__ */ v("div", {
|
|
257
|
-
className: "flex items-center gap-1 shrink-0",
|
|
258
|
-
children: [
|
|
259
|
-
/* @__PURE__ */ _(m, { className: "h-3.5 w-3.5 fill-status-warning-text text-status-warning-text" }),
|
|
260
|
-
/* @__PURE__ */ _("span", {
|
|
261
|
-
className: "text-xs font-medium text-text-primary",
|
|
262
|
-
children: e.rating
|
|
263
|
-
}),
|
|
264
|
-
/* @__PURE__ */ v("span", {
|
|
265
|
-
className: "text-xs text-text-secondary",
|
|
266
|
-
children: [
|
|
267
|
-
"(",
|
|
268
|
-
e.reviewCount,
|
|
269
|
-
")"
|
|
270
|
-
]
|
|
271
|
-
})
|
|
272
|
-
]
|
|
273
|
-
})]
|
|
274
|
-
}),
|
|
275
|
-
/* @__PURE__ */ _("p", {
|
|
276
|
-
className: "text-xs text-text-secondary line-clamp-2 mb-3",
|
|
277
|
-
children: e.description
|
|
278
|
-
}),
|
|
279
|
-
/* @__PURE__ */ v("div", {
|
|
280
|
-
className: "space-y-1.5 text-xs text-text-secondary",
|
|
281
|
-
children: [
|
|
282
|
-
/* @__PURE__ */ v("div", {
|
|
283
|
-
className: "flex justify-between",
|
|
284
|
-
children: [/* @__PURE__ */ _("span", { children: "Added:" }), /* @__PURE__ */ _("span", { children: a(e.addedToFavorites, {
|
|
285
|
-
hour: void 0,
|
|
286
|
-
minute: void 0,
|
|
287
|
-
hour12: void 0
|
|
288
|
-
}) })]
|
|
289
|
-
}),
|
|
290
|
-
/* @__PURE__ */ v("div", {
|
|
291
|
-
className: "flex justify-between",
|
|
292
|
-
children: [/* @__PURE__ */ _("span", { children: "Total orders:" }), /* @__PURE__ */ _("span", { children: e.totalOrders })]
|
|
293
|
-
}),
|
|
294
|
-
/* @__PURE__ */ v("div", {
|
|
295
|
-
className: "flex justify-between",
|
|
296
|
-
children: [/* @__PURE__ */ _("span", { children: "Total spent:" }), /* @__PURE__ */ _("span", {
|
|
297
|
-
className: "font-medium",
|
|
298
|
-
children: i(e.totalSpent, { minimumFractionDigits: 0 })
|
|
299
|
-
})]
|
|
300
|
-
}),
|
|
301
|
-
e.lastOrdered && /* @__PURE__ */ v("div", {
|
|
302
|
-
className: "flex justify-between",
|
|
303
|
-
children: [/* @__PURE__ */ _("span", { children: "Last ordered:" }), /* @__PURE__ */ _("span", { children: a(e.lastOrdered, {
|
|
304
|
-
hour: void 0,
|
|
305
|
-
minute: void 0,
|
|
306
|
-
hour12: void 0
|
|
307
|
-
}) })]
|
|
308
|
-
})
|
|
309
|
-
]
|
|
310
|
-
}),
|
|
311
|
-
/* @__PURE__ */ v("div", {
|
|
312
|
-
className: "flex gap-2 mt-4",
|
|
313
|
-
children: [/* @__PURE__ */ v("button", {
|
|
314
|
-
type: "button",
|
|
315
|
-
onClick: () => x(`/customer/cart/${e.id}`),
|
|
316
|
-
className: "flex-1 flex items-center justify-center gap-1.5 rounded-lg bg-foreground px-3 py-2 text-xs font-medium text-background hover:opacity-90 transition-opacity",
|
|
317
|
-
children: [/* @__PURE__ */ _(d, { className: "h-3 w-3" }), "Order Again"]
|
|
318
|
-
}), /* @__PURE__ */ _("button", {
|
|
319
|
-
type: "button",
|
|
320
|
-
onClick: () => x(`/customer/cart/${e.id}`),
|
|
321
|
-
className: "flex-1 rounded-lg border border-border-subtle px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent transition-colors",
|
|
322
|
-
children: "View Menu"
|
|
323
|
-
})]
|
|
324
|
-
})
|
|
325
|
-
]
|
|
326
|
-
})]
|
|
327
|
-
}, e.id))
|
|
328
|
-
})] }), D.length > 0 && /* @__PURE__ */ v("section", { children: [/* @__PURE__ */ v("h3", {
|
|
329
|
-
className: "text-base font-semibold text-text-primary mb-4 flex items-center gap-2",
|
|
330
|
-
children: [
|
|
331
|
-
/* @__PURE__ */ _(h, { className: "h-4 w-4 text-text-secondary" }),
|
|
332
|
-
"Favorite Products (",
|
|
333
|
-
D.length,
|
|
334
|
-
")"
|
|
335
|
-
]
|
|
336
|
-
}), /* @__PURE__ */ _("div", {
|
|
337
|
-
className: "space-y-3",
|
|
338
|
-
children: D.map((e) => /* @__PURE__ */ _("div", {
|
|
339
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
340
|
-
children: /* @__PURE__ */ v("div", {
|
|
341
|
-
className: "flex flex-col sm:flex-row sm:items-center gap-4",
|
|
342
|
-
children: [
|
|
343
|
-
/* @__PURE__ */ _("img", {
|
|
95
|
+
}) : void 0
|
|
96
|
+
}) : /* @__PURE__ */ _("div", {
|
|
97
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
98
|
+
children: k.map((e) => /* @__PURE__ */ v("div", {
|
|
99
|
+
className: "group flex flex-col overflow-hidden rounded-xl border border-border-subtle bg-bg-surface shadow-elevation-1 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-elevation-2",
|
|
100
|
+
children: [/* @__PURE__ */ v("div", {
|
|
101
|
+
className: "relative h-36 bg-bg-sunken",
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ _("button", {
|
|
104
|
+
type: "button",
|
|
105
|
+
onClick: () => x(`/customer/cart/${e.id}`),
|
|
106
|
+
className: "block h-full w-full",
|
|
107
|
+
"aria-label": `Open ${e.name}`,
|
|
108
|
+
children: /* @__PURE__ */ _(s, {
|
|
344
109
|
src: e.image,
|
|
345
110
|
alt: e.name,
|
|
346
|
-
|
|
347
|
-
}),
|
|
348
|
-
/* @__PURE__ */ v("div", {
|
|
349
|
-
className: "flex-1 min-w-0",
|
|
350
|
-
children: [
|
|
351
|
-
/* @__PURE__ */ v("div", {
|
|
352
|
-
className: "flex items-start justify-between gap-2 mb-1",
|
|
353
|
-
children: [/* @__PURE__ */ _("h4", {
|
|
354
|
-
className: "text-sm font-semibold text-text-primary",
|
|
355
|
-
children: e.name
|
|
356
|
-
}), /* @__PURE__ */ v("div", {
|
|
357
|
-
className: "flex items-center gap-2 shrink-0",
|
|
358
|
-
children: [/* @__PURE__ */ _("span", {
|
|
359
|
-
className: "text-base font-bold text-text-primary",
|
|
360
|
-
children: i(e.price, { minimumFractionDigits: 0 })
|
|
361
|
-
}), /* @__PURE__ */ _("button", {
|
|
362
|
-
type: "button",
|
|
363
|
-
onClick: () => k(e.id),
|
|
364
|
-
title: "Remove from favorites",
|
|
365
|
-
className: "rounded-md p-1 text-status-error-text hover:bg-status-error-bg/10 transition-colors",
|
|
366
|
-
children: /* @__PURE__ */ _(g, { className: "h-4 w-4" })
|
|
367
|
-
})]
|
|
368
|
-
})]
|
|
369
|
-
}),
|
|
370
|
-
/* @__PURE__ */ _("p", {
|
|
371
|
-
className: "text-xs text-text-secondary mb-2",
|
|
372
|
-
children: e.description
|
|
373
|
-
}),
|
|
374
|
-
/* @__PURE__ */ v("div", {
|
|
375
|
-
className: "flex flex-wrap items-center gap-2 text-xs text-text-secondary mb-2",
|
|
376
|
-
children: [
|
|
377
|
-
/* @__PURE__ */ v("span", { children: [
|
|
378
|
-
"From:",
|
|
379
|
-
" ",
|
|
380
|
-
/* @__PURE__ */ _("span", {
|
|
381
|
-
className: "font-medium text-text-primary",
|
|
382
|
-
children: e.cartName
|
|
383
|
-
})
|
|
384
|
-
] }),
|
|
385
|
-
/* @__PURE__ */ v("span", { children: [
|
|
386
|
-
"Ordered ",
|
|
387
|
-
e.orderCount,
|
|
388
|
-
" times"
|
|
389
|
-
] }),
|
|
390
|
-
/* @__PURE__ */ v("span", { children: [
|
|
391
|
-
"Added:",
|
|
392
|
-
" ",
|
|
393
|
-
a(e.addedToFavorites, {
|
|
394
|
-
hour: void 0,
|
|
395
|
-
minute: void 0,
|
|
396
|
-
hour12: void 0
|
|
397
|
-
})
|
|
398
|
-
] })
|
|
399
|
-
]
|
|
400
|
-
}),
|
|
401
|
-
/* @__PURE__ */ v("div", {
|
|
402
|
-
className: "flex flex-wrap items-center gap-2",
|
|
403
|
-
children: [
|
|
404
|
-
e.isVegetarian && /* @__PURE__ */ v("span", {
|
|
405
|
-
className: "inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-[10px] font-medium text-status-success-text",
|
|
406
|
-
children: [/* @__PURE__ */ _(u, { className: "h-3 w-3" }), "Veg"]
|
|
407
|
-
}),
|
|
408
|
-
e.isVegan && /* @__PURE__ */ v("span", {
|
|
409
|
-
className: "inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-[10px] font-medium text-status-success-text",
|
|
410
|
-
children: [/* @__PURE__ */ _(u, { className: "h-3 w-3" }), "Vegan"]
|
|
411
|
-
}),
|
|
412
|
-
/* @__PURE__ */ v("span", {
|
|
413
|
-
className: "inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2 py-0.5 text-[10px] font-medium text-text-secondary",
|
|
414
|
-
children: [
|
|
415
|
-
/* @__PURE__ */ _(c, { className: "h-3 w-3" }),
|
|
416
|
-
e.preparationTime,
|
|
417
|
-
" min"
|
|
418
|
-
]
|
|
419
|
-
})
|
|
420
|
-
]
|
|
421
|
-
})
|
|
422
|
-
]
|
|
423
|
-
}),
|
|
424
|
-
/* @__PURE__ */ v("div", {
|
|
425
|
-
className: "flex sm:flex-col gap-2 shrink-0",
|
|
426
|
-
children: [/* @__PURE__ */ _("button", {
|
|
427
|
-
type: "button",
|
|
428
|
-
onClick: () => x(`/customer/cart/${e.cartId}`),
|
|
429
|
-
className: "flex-1 sm:flex-none rounded-lg bg-foreground px-4 py-2 text-xs font-medium text-background hover:opacity-90 transition-opacity whitespace-nowrap",
|
|
430
|
-
children: "Add to Cart"
|
|
431
|
-
}), /* @__PURE__ */ _("button", {
|
|
432
|
-
type: "button",
|
|
433
|
-
onClick: () => x(`/customer/cart/${e.cartId}`),
|
|
434
|
-
className: "flex-1 sm:flex-none rounded-lg border border-border-subtle px-4 py-2 text-xs font-medium text-text-primary hover:bg-accent transition-colors whitespace-nowrap",
|
|
435
|
-
children: "View Cart"
|
|
436
|
-
})]
|
|
111
|
+
seed: e.name
|
|
437
112
|
})
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ _("button", {
|
|
115
|
+
type: "button",
|
|
116
|
+
onClick: () => w.toggle(e.id),
|
|
117
|
+
"aria-label": "Remove from favorites",
|
|
118
|
+
className: "absolute top-2 right-2 flex h-8 w-8 items-center justify-center rounded-full bg-bg-surface/80 text-status-error-text backdrop-blur-sm transition-colors hover:bg-bg-surface",
|
|
119
|
+
children: /* @__PURE__ */ _(p, { className: "h-4 w-4 fill-current" })
|
|
120
|
+
}),
|
|
121
|
+
/* @__PURE__ */ v("span", {
|
|
122
|
+
className: t("absolute top-2 left-2 inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium backdrop-blur-sm", e.isOpen ? "bg-status-success-bg-subtle text-status-success-text" : "bg-status-error-bg-subtle text-status-error-text"),
|
|
123
|
+
children: [/* @__PURE__ */ _(f, { className: "h-3 w-3" }), e.isOpen ? "Open now" : "Closed"]
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
}), /* @__PURE__ */ v("div", {
|
|
127
|
+
className: "flex flex-1 flex-col p-4",
|
|
128
|
+
children: [
|
|
129
|
+
/* @__PURE__ */ _("h4", {
|
|
130
|
+
className: "truncate text-sm font-semibold text-text-primary",
|
|
131
|
+
children: e.name
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ _("span", {
|
|
134
|
+
className: "mt-1 inline-flex w-fit items-center rounded-full bg-bg-sunken px-2 py-0.5 text-[11px] font-medium text-text-secondary",
|
|
135
|
+
children: e.category
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ v("div", {
|
|
138
|
+
className: "mt-2 flex items-center gap-2",
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ _(o, {
|
|
141
|
+
value: e.rating,
|
|
142
|
+
size: 14
|
|
143
|
+
}),
|
|
144
|
+
/* @__PURE__ */ _("span", {
|
|
145
|
+
className: "text-xs font-medium text-text-primary",
|
|
146
|
+
children: e.rating
|
|
147
|
+
}),
|
|
148
|
+
/* @__PURE__ */ v("span", {
|
|
149
|
+
className: "text-xs text-text-secondary",
|
|
150
|
+
children: [
|
|
151
|
+
"(",
|
|
152
|
+
e.totalRatings,
|
|
153
|
+
")"
|
|
154
|
+
]
|
|
155
|
+
})
|
|
156
|
+
]
|
|
157
|
+
}),
|
|
158
|
+
(e.distance != null || e.location?.address) && /* @__PURE__ */ v("div", {
|
|
159
|
+
className: "mt-1.5 flex items-center gap-1 text-xs text-text-secondary",
|
|
160
|
+
children: [/* @__PURE__ */ _(m, { className: "h-3 w-3" }), e.distance == null ? e.location.address.split(",")[0] : a(e.distance)]
|
|
161
|
+
}),
|
|
162
|
+
/* @__PURE__ */ v("div", {
|
|
163
|
+
className: "mt-auto flex gap-2 pt-4",
|
|
164
|
+
children: [/* @__PURE__ */ v("button", {
|
|
165
|
+
type: "button",
|
|
166
|
+
onClick: () => x(`/customer/cart/${e.id}`),
|
|
167
|
+
className: "flex flex-1 items-center justify-center gap-1.5 rounded-lg bg-action-primary-bg px-3 py-2 text-xs font-semibold text-action-primary-text hover:bg-action-primary-bg-hover transition-colors",
|
|
168
|
+
children: [/* @__PURE__ */ _(h, { className: "h-3 w-3" }), "Reorder"]
|
|
169
|
+
}), /* @__PURE__ */ _("button", {
|
|
170
|
+
type: "button",
|
|
171
|
+
onClick: () => x(`/customer/cart/${e.id}`),
|
|
172
|
+
className: "flex-1 rounded-lg border border-border-subtle px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent transition-colors",
|
|
173
|
+
children: "View Menu"
|
|
174
|
+
})]
|
|
175
|
+
})
|
|
176
|
+
]
|
|
177
|
+
})]
|
|
178
|
+
}, e.id))
|
|
442
179
|
})
|
|
443
180
|
]
|
|
444
181
|
});
|