@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,46 @@ 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 { formatCurrency as
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import { useProviderWorkers as i, useProviders as a, useUpdateProviderWorker as ee, useWorkerClockInOut as o, useWorkerSchedules as te } from "../../hooks/useKadaikodiApi.js";
|
|
6
|
+
import { formatCurrency as s } from "../../utils/formatters.js";
|
|
7
|
+
import { StatCard as c } from "../../components/viz/StatCard.js";
|
|
8
|
+
import "../../components/viz/index.js";
|
|
9
|
+
import { useEffect as ne, useMemo as l, useState as u } from "react";
|
|
10
|
+
import { Calendar as d, CheckCircle2 as re, ChevronLeft as ie, ChevronRight as f, Clock as p, Loader2 as m, LogIn as h, LogOut as g, PlayCircle as _, Save as v, Truck as y, Wallet as ae } from "lucide-react";
|
|
11
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
12
|
+
import { GlassCard as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
|
|
11
13
|
//#region src/kadaikodi/pages/worker/WorkerSchedulePage.tsx
|
|
12
|
-
|
|
14
|
+
var w = [
|
|
15
|
+
{
|
|
16
|
+
key: "Monday",
|
|
17
|
+
short: "M"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: "Tuesday",
|
|
21
|
+
short: "T"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: "Wednesday",
|
|
25
|
+
short: "W"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: "Thursday",
|
|
29
|
+
short: "T"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: "Friday",
|
|
33
|
+
short: "F"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "Saturday",
|
|
37
|
+
short: "S"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "Sunday",
|
|
41
|
+
short: "S"
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
function T(e) {
|
|
13
45
|
let t = new Date(e);
|
|
14
46
|
return Number.isNaN(t.getTime()) ? e : t.toLocaleDateString("en-US", {
|
|
15
47
|
weekday: "short",
|
|
@@ -17,14 +49,14 @@ function E(e) {
|
|
|
17
49
|
day: "numeric"
|
|
18
50
|
});
|
|
19
51
|
}
|
|
20
|
-
function
|
|
52
|
+
function E(e) {
|
|
21
53
|
if (!e) return "";
|
|
22
54
|
let [t, n] = e.split(":"), r = parseInt(t, 10);
|
|
23
55
|
if (Number.isNaN(r)) return e;
|
|
24
56
|
let i = r >= 12 ? "PM" : "AM";
|
|
25
57
|
return `${r % 12 || 12}:${n ?? "00"} ${i}`;
|
|
26
58
|
}
|
|
27
|
-
function
|
|
59
|
+
function D(e) {
|
|
28
60
|
let t = /* @__PURE__ */ new Date(), n = t.getDay(), r = new Date(t);
|
|
29
61
|
r.setDate(t.getDate() - n + e * 7);
|
|
30
62
|
let i = new Date(r);
|
|
@@ -35,329 +67,319 @@ function O(e) {
|
|
|
35
67
|
}),
|
|
36
68
|
end: i.toLocaleDateString("en-US", {
|
|
37
69
|
month: "short",
|
|
38
|
-
day: "numeric"
|
|
39
|
-
year: "numeric"
|
|
70
|
+
day: "numeric"
|
|
40
71
|
})
|
|
41
72
|
};
|
|
42
73
|
}
|
|
74
|
+
function O(e) {
|
|
75
|
+
let t = /* @__PURE__ */ new Date(), n = t.getDay(), r = new Date(t);
|
|
76
|
+
r.setHours(0, 0, 0, 0), r.setDate(t.getDate() - n + e * 7);
|
|
77
|
+
let i = new Date(r);
|
|
78
|
+
return i.setDate(r.getDate() + 6), i.setHours(23, 59, 59, 999), {
|
|
79
|
+
start: r,
|
|
80
|
+
end: i
|
|
81
|
+
};
|
|
82
|
+
}
|
|
43
83
|
function k(e) {
|
|
44
84
|
switch (e) {
|
|
45
|
-
case "scheduled": return "bg-
|
|
85
|
+
case "scheduled": return "bg-status-warning-bg-subtle text-status-warning-text";
|
|
46
86
|
case "in_progress": return "bg-status-success-bg-subtle text-status-success-text";
|
|
47
|
-
case "completed": return "bg-bg-
|
|
87
|
+
case "completed": return "bg-status-success-bg-subtle text-status-success-text";
|
|
48
88
|
case "cancelled": return "bg-status-error-bg-subtle text-status-error-text";
|
|
49
89
|
default: return "bg-bg-sunken text-text-secondary";
|
|
50
90
|
}
|
|
51
91
|
}
|
|
52
|
-
function A(e
|
|
92
|
+
function A(e) {
|
|
93
|
+
return e === "in_progress" ? "Ongoing" : e === "scheduled" ? "Upcoming" : e.charAt(0).toUpperCase() + e.slice(1);
|
|
94
|
+
}
|
|
95
|
+
function j(e, t) {
|
|
53
96
|
if (!e || !t) return 0;
|
|
54
97
|
let n = /* @__PURE__ */ new Date(`2024-01-01T${e}`), r = /* @__PURE__ */ new Date(`2024-01-01T${t}`);
|
|
55
98
|
return Number.isNaN(n.getTime()) || Number.isNaN(r.getTime()) ? 0 : Math.max(0, (r.getTime() - n.getTime()) / (1e3 * 60 * 60));
|
|
56
99
|
}
|
|
57
|
-
var
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
100
|
+
var M = () => {
|
|
101
|
+
let { currentUser: M } = e(), N = M?.id ?? "", { data: P = [], isLoading: oe } = te(N), F = o(), { data: I = [] } = a(), { data: L = [] } = i(l(() => I.find((e) => e.ownerId === M?.id) ?? I[0], [I, M?.id])?.id), R = l(() => L.find((e) => e.workerId === M?.id) ?? L[0], [L, M?.id]), z = ee(), [B, V] = u(0), [H, U] = u(() => new Set(w.slice(0, 5).map((e) => e.key))), [W, G] = u("09:00"), [K, q] = u("18:00"), [se, J] = u(!1), [Y, X] = u(null);
|
|
102
|
+
ne(() => {
|
|
103
|
+
let e = R?.metadata ?? {};
|
|
104
|
+
if (Array.isArray(e.availability) && e.availability.length > 0) {
|
|
105
|
+
let t = e.availability.filter((e) => e.isAvailable);
|
|
106
|
+
U(new Set(t.map((e) => e.dayOfWeek)));
|
|
107
|
+
let n = t[0];
|
|
108
|
+
n && (n.preferredStartTime && G(n.preferredStartTime), n.preferredEndTime && q(n.preferredEndTime));
|
|
109
|
+
}
|
|
110
|
+
}, [R]);
|
|
111
|
+
let Z = l(() => {
|
|
112
|
+
let { start: e, end: t } = O(B);
|
|
113
|
+
return P.filter((n) => {
|
|
114
|
+
let r = new Date(n.date);
|
|
115
|
+
return Number.isNaN(r.getTime()) ? !1 : r >= e && r <= t;
|
|
116
|
+
});
|
|
117
|
+
}, [P, B]), Q = l(() => {
|
|
118
|
+
let e = Z.filter((e) => e.status !== "cancelled"), t = e.reduce((e, t) => e + j(t.startTime, t.endTime), 0), n = e.reduce((e, t) => e + (t.totalEarnings ?? 0), 0), r = [...P].filter((e) => e.status === "scheduled").sort((e, t) => new Date(e.date).getTime() - new Date(t.date).getTime())[0];
|
|
73
119
|
return {
|
|
74
120
|
hoursThisWeek: Math.round(t * 10) / 10,
|
|
75
121
|
shiftsThisWeek: e.length,
|
|
76
122
|
earningsThisWeek: n,
|
|
77
123
|
nextShift: r
|
|
78
124
|
};
|
|
79
|
-
}, [P]),
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
125
|
+
}, [Z, P]), $ = D(B), ce = () => F.mutate({
|
|
126
|
+
workerId: N,
|
|
127
|
+
action: "CLOCK_IN"
|
|
128
|
+
}), le = () => F.mutate({
|
|
129
|
+
workerId: N,
|
|
130
|
+
action: "CLOCK_OUT"
|
|
131
|
+
}), ue = (e) => {
|
|
132
|
+
J(!1), U((t) => {
|
|
133
|
+
let n = new Set(t);
|
|
134
|
+
return n.has(e) ? n.delete(e) : n.add(e), n;
|
|
88
135
|
});
|
|
89
|
-
}, q = (e, t, n) => {
|
|
90
|
-
H((r) => r.map((r) => r.dayOfWeek === e ? {
|
|
91
|
-
...r,
|
|
92
|
-
[t]: n
|
|
93
|
-
} : r));
|
|
94
136
|
};
|
|
95
|
-
return
|
|
96
|
-
title: "Schedule",
|
|
97
|
-
description: "
|
|
98
|
-
children: /* @__PURE__ */
|
|
137
|
+
return oe ? /* @__PURE__ */ b(n, {
|
|
138
|
+
title: "My Schedule",
|
|
139
|
+
description: "Your shifts, hours and pay",
|
|
140
|
+
children: /* @__PURE__ */ b("div", {
|
|
99
141
|
className: "flex items-center justify-center py-24",
|
|
100
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ x("div", {
|
|
101
143
|
className: "text-center",
|
|
102
|
-
children: [/* @__PURE__ */
|
|
144
|
+
children: [/* @__PURE__ */ b(m, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ b("p", {
|
|
103
145
|
className: "text-sm text-text-secondary",
|
|
104
146
|
children: "Loading schedule..."
|
|
105
147
|
})]
|
|
106
148
|
})
|
|
107
149
|
})
|
|
108
|
-
}) : /* @__PURE__ */
|
|
109
|
-
title: "Schedule",
|
|
110
|
-
description: "
|
|
111
|
-
children: [/* @__PURE__ */
|
|
150
|
+
}) : /* @__PURE__ */ x(n, {
|
|
151
|
+
title: "My Schedule",
|
|
152
|
+
description: "Your shifts, hours and pay in one place",
|
|
153
|
+
children: [/* @__PURE__ */ b(C, {
|
|
112
154
|
className: "mb-6",
|
|
113
|
-
children: "
|
|
114
|
-
}), /* @__PURE__ */
|
|
155
|
+
children: "See your upcoming shifts, check in and out, and set the days and hours you're available — so your cart owner can roster you fairly and you always know when (and how much) you're working."
|
|
156
|
+
}), /* @__PURE__ */ x("div", {
|
|
115
157
|
className: "space-y-6",
|
|
116
|
-
children: [
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}), /* @__PURE__ */ C("div", {
|
|
120
|
-
className: "grid grid-cols-2 md:grid-cols-4 gap-3",
|
|
121
|
-
children: [
|
|
122
|
-
/* @__PURE__ */ C("div", {
|
|
123
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
124
|
-
children: [/* @__PURE__ */ S("p", {
|
|
125
|
-
className: "text-xs text-text-secondary",
|
|
126
|
-
children: "Hours This Week"
|
|
127
|
-
}), /* @__PURE__ */ C("p", {
|
|
128
|
-
className: "text-2xl font-bold text-text-primary",
|
|
129
|
-
children: [U.hoursThisWeek, "h"]
|
|
130
|
-
})]
|
|
131
|
-
}),
|
|
132
|
-
/* @__PURE__ */ C("div", {
|
|
133
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
134
|
-
children: [/* @__PURE__ */ S("p", {
|
|
135
|
-
className: "text-xs text-text-secondary",
|
|
136
|
-
children: "Shifts This Week"
|
|
137
|
-
}), /* @__PURE__ */ S("p", {
|
|
138
|
-
className: "text-2xl font-bold text-text-primary",
|
|
139
|
-
children: U.shiftsThisWeek
|
|
140
|
-
})]
|
|
141
|
-
}),
|
|
142
|
-
/* @__PURE__ */ C("div", {
|
|
143
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
144
|
-
children: [/* @__PURE__ */ S("p", {
|
|
145
|
-
className: "text-xs text-text-secondary",
|
|
146
|
-
children: "Week Earnings"
|
|
147
|
-
}), /* @__PURE__ */ S("p", {
|
|
148
|
-
className: "text-2xl font-bold text-text-primary",
|
|
149
|
-
children: o(U.earningsThisWeek, { minimumFractionDigits: 0 })
|
|
150
|
-
})]
|
|
151
|
-
}),
|
|
152
|
-
/* @__PURE__ */ C("div", {
|
|
153
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
154
|
-
children: [/* @__PURE__ */ S("p", {
|
|
155
|
-
className: "text-xs text-text-secondary",
|
|
156
|
-
children: "Next Shift"
|
|
157
|
-
}), /* @__PURE__ */ S("p", {
|
|
158
|
-
className: "text-sm font-bold text-text-primary",
|
|
159
|
-
children: U.nextShift ? `${E(U.nextShift.date)} ${D(U.nextShift.startTime)}` : "None scheduled"
|
|
160
|
-
})]
|
|
161
|
-
})
|
|
162
|
-
]
|
|
163
|
-
})] }), /* @__PURE__ */ C("div", {
|
|
164
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden",
|
|
165
|
-
children: [/* @__PURE__ */ C("div", {
|
|
166
|
-
className: "flex border-b border-border-subtle",
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ x("div", {
|
|
160
|
+
className: "grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4",
|
|
167
161
|
children: [
|
|
168
|
-
/* @__PURE__ */
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
children: [/* @__PURE__ */ S(u, { className: "h-4 w-4" }), "My Schedule"]
|
|
162
|
+
/* @__PURE__ */ b(c, {
|
|
163
|
+
label: "Hours This Week",
|
|
164
|
+
value: `${Q.hoursThisWeek}h`,
|
|
165
|
+
icon: /* @__PURE__ */ b(p, { className: "h-4 w-4" })
|
|
173
166
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
children: [/* @__PURE__ */ S(y, { className: "h-4 w-4" }), "Shift Requests"]
|
|
167
|
+
/* @__PURE__ */ b(c, {
|
|
168
|
+
label: "Shifts This Week",
|
|
169
|
+
value: Q.shiftsThisWeek,
|
|
170
|
+
icon: /* @__PURE__ */ b(d, { className: "h-4 w-4" })
|
|
179
171
|
}),
|
|
180
|
-
/* @__PURE__ */
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
172
|
+
/* @__PURE__ */ b(c, {
|
|
173
|
+
label: "Week Earnings",
|
|
174
|
+
value: s(Q.earningsThisWeek, { minimumFractionDigits: 0 }),
|
|
175
|
+
icon: /* @__PURE__ */ b(ae, { className: "h-4 w-4" })
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ b(c, {
|
|
178
|
+
label: "Next Shift",
|
|
179
|
+
value: /* @__PURE__ */ b("span", {
|
|
180
|
+
className: "text-lg font-semibold",
|
|
181
|
+
children: Q.nextShift ? T(Q.nextShift.date) : "None"
|
|
182
|
+
}),
|
|
183
|
+
icon: /* @__PURE__ */ b(y, { className: "h-4 w-4" })
|
|
185
184
|
})
|
|
186
185
|
]
|
|
187
|
-
}),
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ x(S, {
|
|
188
188
|
className: "p-5",
|
|
189
|
-
children: [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
className: "text-sm font-medium text-text-primary",
|
|
201
|
-
children: [
|
|
202
|
-
W.start,
|
|
203
|
-
" - ",
|
|
204
|
-
W.end
|
|
205
|
-
]
|
|
206
|
-
}),
|
|
207
|
-
/* @__PURE__ */ C("button", {
|
|
208
|
-
type: "button",
|
|
209
|
-
onClick: () => B((e) => e + 1),
|
|
210
|
-
className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
|
|
211
|
-
children: ["Next Week", /* @__PURE__ */ S(p, { className: "h-3.5 w-3.5" })]
|
|
212
|
-
})
|
|
213
|
-
]
|
|
214
|
-
}), P.length === 0 ? /* @__PURE__ */ S(r, {
|
|
215
|
-
icon: /* @__PURE__ */ S(l, { className: "h-12 w-12" }),
|
|
216
|
-
title: "No shifts scheduled",
|
|
217
|
-
description: "You have no shifts on the roster yet. New shifts will appear here once assigned."
|
|
218
|
-
}) : /* @__PURE__ */ S("div", {
|
|
219
|
-
className: "space-y-3",
|
|
220
|
-
children: P.map((e) => /* @__PURE__ */ C("div", {
|
|
221
|
-
className: t("rounded-lg border p-4 transition-colors", e.status === "in_progress" ? "border-status-success-text/30 bg-status-success-bg-subtle" : "border-border-subtle hover:bg-bg-sunken/30"),
|
|
189
|
+
children: [/* @__PURE__ */ x("div", {
|
|
190
|
+
className: "mb-5 flex items-center justify-between",
|
|
191
|
+
children: [
|
|
192
|
+
/* @__PURE__ */ x("button", {
|
|
193
|
+
type: "button",
|
|
194
|
+
onClick: () => V((e) => e - 1),
|
|
195
|
+
className: "inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-accent-primary hover:bg-bg-sunken transition-colors",
|
|
196
|
+
children: [/* @__PURE__ */ b(ie, { className: "h-4 w-4" }), "Prev"]
|
|
197
|
+
}),
|
|
198
|
+
/* @__PURE__ */ x("h3", {
|
|
199
|
+
className: "text-base font-semibold text-text-primary",
|
|
222
200
|
children: [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
201
|
+
$.start,
|
|
202
|
+
" – ",
|
|
203
|
+
$.end
|
|
204
|
+
]
|
|
205
|
+
}),
|
|
206
|
+
/* @__PURE__ */ x("button", {
|
|
207
|
+
type: "button",
|
|
208
|
+
onClick: () => V((e) => e + 1),
|
|
209
|
+
className: "inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-accent-primary hover:bg-bg-sunken transition-colors",
|
|
210
|
+
children: ["Next", /* @__PURE__ */ b(f, { className: "h-4 w-4" })]
|
|
211
|
+
})
|
|
212
|
+
]
|
|
213
|
+
}), Z.length === 0 ? /* @__PURE__ */ b(r, {
|
|
214
|
+
icon: /* @__PURE__ */ b(d, { className: "h-12 w-12" }),
|
|
215
|
+
title: "No shifts this week",
|
|
216
|
+
description: P.length === 0 ? "You have no shifts on the roster yet. New shifts will appear here once assigned." : "No shifts fall in the selected week. Use Prev / Next to browse your roster."
|
|
217
|
+
}) : /* @__PURE__ */ b("div", {
|
|
218
|
+
className: "space-y-3",
|
|
219
|
+
children: Z.map((e) => /* @__PURE__ */ x("div", {
|
|
220
|
+
className: t("rounded-[var(--radius-card)] border p-4 transition-colors", e.status === "in_progress" ? "border-status-success-text/30 bg-status-success-bg-subtle" : "border-border-subtle bg-bg-surface hover:bg-bg-sunken/40"),
|
|
221
|
+
children: [/* @__PURE__ */ x("div", {
|
|
222
|
+
className: "flex items-start justify-between gap-3",
|
|
223
|
+
children: [/* @__PURE__ */ x("div", {
|
|
224
|
+
className: "min-w-0",
|
|
225
|
+
children: [
|
|
226
|
+
/* @__PURE__ */ x("div", {
|
|
227
|
+
className: "flex flex-wrap items-center gap-2",
|
|
228
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
228
229
|
className: "text-sm font-semibold text-text-primary",
|
|
229
|
-
children:
|
|
230
|
-
}), /* @__PURE__ */
|
|
231
|
-
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium
|
|
232
|
-
children: e.status
|
|
230
|
+
children: T(e.date)
|
|
231
|
+
}), /* @__PURE__ */ b("span", {
|
|
232
|
+
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium", k(e.status)),
|
|
233
|
+
children: A(e.status)
|
|
233
234
|
})]
|
|
234
|
-
}),
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
})
|
|
243
|
-
})]
|
|
244
|
-
}),
|
|
245
|
-
/* @__PURE__ */ C("div", {
|
|
246
|
-
className: "grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",
|
|
247
|
-
children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
248
|
-
className: "text-xs text-text-secondary",
|
|
249
|
-
children: "Cart"
|
|
250
|
-
}), /* @__PURE__ */ C("p", {
|
|
251
|
-
className: "text-xs font-medium text-text-primary flex items-center gap-1",
|
|
252
|
-
children: [/* @__PURE__ */ S(b, { className: "h-3 w-3 text-text-secondary" }), e.cartName]
|
|
253
|
-
})] }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
254
|
-
className: "text-xs text-text-secondary",
|
|
255
|
-
children: "Tasks Completed"
|
|
256
|
-
}), /* @__PURE__ */ C("p", {
|
|
257
|
-
className: "text-xs font-medium text-text-primary flex items-center gap-1",
|
|
258
|
-
children: [/* @__PURE__ */ S(d, { className: "h-3 w-3 text-text-secondary" }), e.tasksCompleted]
|
|
259
|
-
})] })]
|
|
260
|
-
}),
|
|
261
|
-
e.status === "scheduled" && /* @__PURE__ */ S("div", {
|
|
262
|
-
className: "mt-3 pt-3 border-t border-border-subtle",
|
|
263
|
-
children: /* @__PURE__ */ C("button", {
|
|
264
|
-
type: "button",
|
|
265
|
-
onClick: () => G(e),
|
|
266
|
-
disabled: I.isPending,
|
|
267
|
-
className: "inline-flex items-center gap-1.5 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 disabled:opacity-50",
|
|
268
|
-
children: [/* @__PURE__ */ S(h, { className: "h-3.5 w-3.5" }), "Check In"]
|
|
235
|
+
}),
|
|
236
|
+
/* @__PURE__ */ x("p", {
|
|
237
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
238
|
+
children: [E(e.startTime), e.endTime ? ` – ${E(e.endTime)}` : ""]
|
|
239
|
+
}),
|
|
240
|
+
/* @__PURE__ */ x("p", {
|
|
241
|
+
className: "mt-1.5 flex items-center gap-1.5 text-sm font-medium text-text-primary",
|
|
242
|
+
children: [/* @__PURE__ */ b(y, { className: "h-4 w-4 text-accent-primary" }), e.cartName]
|
|
269
243
|
})
|
|
244
|
+
]
|
|
245
|
+
}), e.totalEarnings > 0 && /* @__PURE__ */ b("div", {
|
|
246
|
+
className: "text-right shrink-0",
|
|
247
|
+
children: /* @__PURE__ */ b("p", {
|
|
248
|
+
className: "text-lg font-bold text-text-primary tabular-nums",
|
|
249
|
+
children: s(e.totalEarnings, { minimumFractionDigits: 0 })
|
|
250
|
+
})
|
|
251
|
+
})]
|
|
252
|
+
}), /* @__PURE__ */ x("div", {
|
|
253
|
+
className: "mt-3 flex items-center justify-between border-t border-border-subtle pt-3",
|
|
254
|
+
children: [
|
|
255
|
+
/* @__PURE__ */ x("span", {
|
|
256
|
+
className: "flex items-center gap-1.5 text-xs text-text-secondary",
|
|
257
|
+
children: [
|
|
258
|
+
/* @__PURE__ */ b(re, { className: "h-3.5 w-3.5" }),
|
|
259
|
+
e.tasksCompleted,
|
|
260
|
+
" tasks"
|
|
261
|
+
]
|
|
262
|
+
}),
|
|
263
|
+
e.status === "scheduled" && /* @__PURE__ */ x("button", {
|
|
264
|
+
type: "button",
|
|
265
|
+
onClick: ce,
|
|
266
|
+
disabled: F.isPending,
|
|
267
|
+
className: "inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-semibold text-action-primary-text hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
268
|
+
children: [/* @__PURE__ */ b(h, { className: "h-3.5 w-3.5" }), "Check In"]
|
|
270
269
|
}),
|
|
271
|
-
e.status === "in_progress" && /* @__PURE__ */
|
|
272
|
-
className: "
|
|
273
|
-
children: [/* @__PURE__ */
|
|
274
|
-
className: "text-xs font-medium text-status-success-text
|
|
275
|
-
children: [/* @__PURE__ */
|
|
276
|
-
}), /* @__PURE__ */
|
|
270
|
+
e.status === "in_progress" && /* @__PURE__ */ x("div", {
|
|
271
|
+
className: "flex items-center gap-2",
|
|
272
|
+
children: [/* @__PURE__ */ x("span", {
|
|
273
|
+
className: "flex items-center gap-1 text-xs font-medium text-status-success-text",
|
|
274
|
+
children: [/* @__PURE__ */ b(_, { className: "h-3.5 w-3.5" }), "In progress"]
|
|
275
|
+
}), /* @__PURE__ */ x("button", {
|
|
277
276
|
type: "button",
|
|
278
|
-
onClick:
|
|
279
|
-
disabled:
|
|
280
|
-
className: "inline-flex items-center gap-1.5 rounded-md bg-
|
|
281
|
-
children: [/* @__PURE__ */
|
|
277
|
+
onClick: le,
|
|
278
|
+
disabled: F.isPending,
|
|
279
|
+
className: "inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
280
|
+
children: [/* @__PURE__ */ b(g, { className: "h-3.5 w-3.5" }), "Check Out"]
|
|
282
281
|
})]
|
|
283
282
|
})
|
|
284
283
|
]
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
284
|
+
})]
|
|
285
|
+
}, e.id))
|
|
286
|
+
})]
|
|
287
|
+
}),
|
|
288
|
+
/* @__PURE__ */ x(S, {
|
|
289
|
+
treatment: "insight",
|
|
290
|
+
className: "p-5",
|
|
291
|
+
children: [
|
|
292
|
+
/* @__PURE__ */ b("h2", {
|
|
293
|
+
className: "mb-1 text-base font-semibold text-text-primary",
|
|
294
|
+
children: "Availability"
|
|
291
295
|
}),
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
children: [/* @__PURE__ */ S("div", {
|
|
302
|
-
className: "w-32 shrink-0",
|
|
303
|
-
children: /* @__PURE__ */ C("label", {
|
|
304
|
-
className: "flex items-center gap-2 cursor-pointer",
|
|
305
|
-
children: [/* @__PURE__ */ S("input", {
|
|
306
|
-
type: "checkbox",
|
|
307
|
-
checked: e.isAvailable,
|
|
308
|
-
onChange: (t) => q(e.dayOfWeek, "isAvailable", t.target.checked),
|
|
309
|
-
className: "h-4 w-4 rounded border-border-subtle text-text-primary focus:ring-border-focus/40"
|
|
310
|
-
}), /* @__PURE__ */ S("span", {
|
|
311
|
-
className: "text-sm font-medium text-text-primary",
|
|
312
|
-
children: e.dayOfWeek
|
|
313
|
-
})]
|
|
314
|
-
})
|
|
315
|
-
}), e.isAvailable ? /* @__PURE__ */ C("div", {
|
|
316
|
-
className: "flex flex-col sm:flex-row gap-3 flex-1",
|
|
317
|
-
children: [/* @__PURE__ */ C("div", {
|
|
318
|
-
className: "flex items-center gap-2",
|
|
319
|
-
children: [/* @__PURE__ */ S("span", {
|
|
320
|
-
className: "text-xs text-text-secondary w-10",
|
|
321
|
-
children: "From"
|
|
322
|
-
}), /* @__PURE__ */ S("input", {
|
|
323
|
-
type: "time",
|
|
324
|
-
value: e.preferredStartTime,
|
|
325
|
-
onChange: (t) => q(e.dayOfWeek, "preferredStartTime", t.target.value),
|
|
326
|
-
className: "rounded-md border border-border-subtle bg-bg-surface px-3 py-1.5 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40"
|
|
327
|
-
})]
|
|
328
|
-
}), /* @__PURE__ */ C("div", {
|
|
329
|
-
className: "flex items-center gap-2",
|
|
330
|
-
children: [/* @__PURE__ */ S("span", {
|
|
331
|
-
className: "text-xs text-text-secondary w-10",
|
|
332
|
-
children: "To"
|
|
333
|
-
}), /* @__PURE__ */ S("input", {
|
|
334
|
-
type: "time",
|
|
335
|
-
value: e.preferredEndTime,
|
|
336
|
-
onChange: (t) => q(e.dayOfWeek, "preferredEndTime", t.target.value),
|
|
337
|
-
className: "rounded-md border border-border-subtle bg-bg-surface px-3 py-1.5 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40"
|
|
338
|
-
})]
|
|
339
|
-
})]
|
|
340
|
-
}) : /* @__PURE__ */ S("span", {
|
|
341
|
-
className: "text-xs text-text-secondary",
|
|
342
|
-
children: "Not available"
|
|
343
|
-
})]
|
|
344
|
-
}, e.dayOfWeek))
|
|
345
|
-
}),
|
|
346
|
-
/* @__PURE__ */ S("div", {
|
|
347
|
-
className: "mt-5",
|
|
348
|
-
children: /* @__PURE__ */ C("button", {
|
|
296
|
+
/* @__PURE__ */ b("p", {
|
|
297
|
+
className: "mb-4 text-xs text-text-secondary",
|
|
298
|
+
children: "Tap the days you can work, then set your preferred window. Saved to your worker profile."
|
|
299
|
+
}),
|
|
300
|
+
/* @__PURE__ */ b("div", {
|
|
301
|
+
className: "mb-5 flex flex-wrap gap-2 sm:gap-3",
|
|
302
|
+
children: w.map((e, n) => {
|
|
303
|
+
let r = H.has(e.key);
|
|
304
|
+
return /* @__PURE__ */ b("button", {
|
|
349
305
|
type: "button",
|
|
350
|
-
onClick: () =>
|
|
351
|
-
|
|
306
|
+
onClick: () => ue(e.key),
|
|
307
|
+
"aria-pressed": r,
|
|
308
|
+
"aria-label": e.key,
|
|
309
|
+
className: t("flex h-11 w-11 items-center justify-center rounded-full text-sm font-semibold transition-colors", r ? "bg-action-primary-bg text-action-primary-text shadow-sm" : "border border-border-default bg-bg-surface text-text-secondary hover:bg-bg-sunken"),
|
|
310
|
+
children: e.short
|
|
311
|
+
}, `${e.key}-${n}`);
|
|
312
|
+
})
|
|
313
|
+
}),
|
|
314
|
+
/* @__PURE__ */ x("div", {
|
|
315
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
316
|
+
children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
|
|
317
|
+
className: "mb-1 block text-xs font-medium text-text-secondary",
|
|
318
|
+
children: "From"
|
|
319
|
+
}), /* @__PURE__ */ x("div", {
|
|
320
|
+
className: "flex items-center gap-2 rounded-md border border-border-subtle bg-bg-surface px-3 py-2",
|
|
321
|
+
children: [/* @__PURE__ */ b(p, { className: "h-4 w-4 text-accent-primary shrink-0" }), /* @__PURE__ */ b("input", {
|
|
322
|
+
type: "time",
|
|
323
|
+
value: W,
|
|
324
|
+
onChange: (e) => {
|
|
325
|
+
G(e.target.value), J(!1);
|
|
352
326
|
},
|
|
353
|
-
className: "
|
|
354
|
-
|
|
355
|
-
|
|
327
|
+
className: "w-full bg-transparent text-sm text-text-primary focus:outline-none"
|
|
328
|
+
})]
|
|
329
|
+
})] }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
|
|
330
|
+
className: "mb-1 block text-xs font-medium text-text-secondary",
|
|
331
|
+
children: "To"
|
|
332
|
+
}), /* @__PURE__ */ x("div", {
|
|
333
|
+
className: "flex items-center gap-2 rounded-md border border-border-subtle bg-bg-surface px-3 py-2",
|
|
334
|
+
children: [/* @__PURE__ */ b(p, { className: "h-4 w-4 text-accent-primary shrink-0" }), /* @__PURE__ */ b("input", {
|
|
335
|
+
type: "time",
|
|
336
|
+
value: K,
|
|
337
|
+
onChange: (e) => {
|
|
338
|
+
q(e.target.value), J(!1);
|
|
339
|
+
},
|
|
340
|
+
className: "w-full bg-transparent text-sm text-text-primary focus:outline-none"
|
|
341
|
+
})]
|
|
342
|
+
})] })]
|
|
343
|
+
}),
|
|
344
|
+
/* @__PURE__ */ x("button", {
|
|
345
|
+
type: "button",
|
|
346
|
+
onClick: () => {
|
|
347
|
+
if (X(null), J(!1), !R) {
|
|
348
|
+
X("We couldn't find your worker record yet, so availability can't be saved. Please try again once your cart owner has added you as a worker.");
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
let e = w.map((e) => ({
|
|
352
|
+
dayOfWeek: e.key,
|
|
353
|
+
isAvailable: H.has(e.key),
|
|
354
|
+
preferredStartTime: W,
|
|
355
|
+
preferredEndTime: K
|
|
356
|
+
}));
|
|
357
|
+
z.mutate({
|
|
358
|
+
id: R.id,
|
|
359
|
+
metadata: { availability: e }
|
|
360
|
+
}, {
|
|
361
|
+
onSuccess: () => J(!0),
|
|
362
|
+
onError: (e) => X(e instanceof Error ? e.message : "Failed to save availability.")
|
|
363
|
+
});
|
|
364
|
+
},
|
|
365
|
+
disabled: z.isPending,
|
|
366
|
+
className: "mt-5 inline-flex w-full items-center justify-center gap-2 rounded-[var(--radius-card)] bg-action-primary-bg px-4 py-3 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 sm:w-auto sm:px-8",
|
|
367
|
+
children: [z.isPending ? /* @__PURE__ */ b(m, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ b(v, { className: "h-4 w-4" }), z.isPending ? "Saving..." : "Save Availability"]
|
|
368
|
+
}),
|
|
369
|
+
se && !z.isPending && /* @__PURE__ */ b("span", {
|
|
370
|
+
className: "ml-3 text-xs text-status-success-text",
|
|
371
|
+
children: "Availability saved"
|
|
372
|
+
}),
|
|
373
|
+
Y && /* @__PURE__ */ b("div", {
|
|
374
|
+
className: "mt-3 rounded-lg border border-status-error-text/20 bg-status-error-bg-subtle p-3",
|
|
375
|
+
children: /* @__PURE__ */ b("p", {
|
|
376
|
+
className: "text-xs text-status-error-text",
|
|
377
|
+
children: Y
|
|
356
378
|
})
|
|
357
|
-
|
|
379
|
+
})
|
|
358
380
|
]
|
|
359
|
-
})
|
|
360
|
-
|
|
381
|
+
})
|
|
382
|
+
]
|
|
361
383
|
})]
|
|
362
384
|
});
|
|
363
385
|
};
|