@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,13 +2,45 @@ 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 { useProviderWorkers as i, useProviders as a, useUpdateProviderWorker as
|
|
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
|
|
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
|
+
];
|
|
12
44
|
function T(e) {
|
|
13
45
|
let t = new Date(e);
|
|
14
46
|
return Number.isNaN(t.getTime()) ? e : t.toLocaleDateString("en-US", {
|
|
@@ -35,8 +67,7 @@ function D(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
|
}
|
|
@@ -51,364 +82,308 @@ function O(e) {
|
|
|
51
82
|
}
|
|
52
83
|
function k(e) {
|
|
53
84
|
switch (e) {
|
|
54
|
-
case "scheduled": return "bg-
|
|
85
|
+
case "scheduled": return "bg-status-warning-bg-subtle text-status-warning-text";
|
|
55
86
|
case "in_progress": return "bg-status-success-bg-subtle text-status-success-text";
|
|
56
|
-
case "completed": return "bg-bg-
|
|
87
|
+
case "completed": return "bg-status-success-bg-subtle text-status-success-text";
|
|
57
88
|
case "cancelled": return "bg-status-error-bg-subtle text-status-error-text";
|
|
58
89
|
default: return "bg-bg-sunken text-text-secondary";
|
|
59
90
|
}
|
|
60
91
|
}
|
|
61
|
-
function
|
|
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) {
|
|
62
96
|
if (!e || !t) return 0;
|
|
63
97
|
let n = /* @__PURE__ */ new Date(`2024-01-01T${e}`), r = /* @__PURE__ */ new Date(`2024-01-01T${t}`);
|
|
64
98
|
return Number.isNaN(n.getTime()) || Number.isNaN(r.getTime()) ? 0 : Math.max(0, (r.getTime() - n.getTime()) / (1e3 * 60 * 60));
|
|
65
99
|
}
|
|
66
|
-
var
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
"Wednesday",
|
|
70
|
-
"Thursday",
|
|
71
|
-
"Friday",
|
|
72
|
-
"Saturday",
|
|
73
|
-
"Sunday"
|
|
74
|
-
].map((e) => ({
|
|
75
|
-
dayOfWeek: e,
|
|
76
|
-
isAvailable: e !== "Sunday",
|
|
77
|
-
preferredStartTime: "09:00",
|
|
78
|
-
preferredEndTime: "18:00"
|
|
79
|
-
})), j = () => {
|
|
80
|
-
let { currentUser: j } = e(), M = j?.id ?? "", { data: N = [], isLoading: P } = s(M), F = ee(), { data: I = [] } = a(), { data: L = [] } = i(l(() => I.find((e) => e.ownerId === j?.id) ?? I[0], [I, j?.id])?.id), R = l(() => L.find((e) => e.workerId === j?.id) ?? L[0], [L, j?.id]), z = o(), [B, V] = u("schedule"), [H, U] = u(0), [W, G] = u(A), [K, q] = u(!1), [J, Y] = u(null);
|
|
81
|
-
te(() => {
|
|
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(() => {
|
|
82
103
|
let e = R?.metadata ?? {};
|
|
83
|
-
Array.isArray(e.availability) && e.availability.length > 0
|
|
84
|
-
let
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}));
|
|
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
|
+
}
|
|
90
110
|
}, [R]);
|
|
91
|
-
let
|
|
92
|
-
let { start: e, end: t } = O(
|
|
93
|
-
return
|
|
111
|
+
let Z = l(() => {
|
|
112
|
+
let { start: e, end: t } = O(B);
|
|
113
|
+
return P.filter((n) => {
|
|
94
114
|
let r = new Date(n.date);
|
|
95
115
|
return Number.isNaN(r.getTime()) ? !1 : r >= e && r <= t;
|
|
96
116
|
});
|
|
97
|
-
}, [
|
|
98
|
-
let e =
|
|
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];
|
|
99
119
|
return {
|
|
100
120
|
hoursThisWeek: Math.round(t * 10) / 10,
|
|
101
121
|
shiftsThisWeek: e.length,
|
|
102
122
|
earningsThisWeek: n,
|
|
103
123
|
nextShift: r
|
|
104
124
|
};
|
|
105
|
-
}, [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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;
|
|
114
135
|
});
|
|
115
|
-
}, $ = (e, t, n) => {
|
|
116
|
-
q(!1), G((r) => r.map((r) => r.dayOfWeek === e ? {
|
|
117
|
-
...r,
|
|
118
|
-
[t]: n
|
|
119
|
-
} : r));
|
|
120
136
|
};
|
|
121
|
-
return
|
|
122
|
-
title: "Schedule",
|
|
123
|
-
description: "
|
|
124
|
-
children: /* @__PURE__ */
|
|
137
|
+
return oe ? /* @__PURE__ */ b(n, {
|
|
138
|
+
title: "My Schedule",
|
|
139
|
+
description: "Your shifts, hours and pay",
|
|
140
|
+
children: /* @__PURE__ */ b("div", {
|
|
125
141
|
className: "flex items-center justify-center py-24",
|
|
126
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ x("div", {
|
|
127
143
|
className: "text-center",
|
|
128
|
-
children: [/* @__PURE__ */
|
|
144
|
+
children: [/* @__PURE__ */ b(m, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ b("p", {
|
|
129
145
|
className: "text-sm text-text-secondary",
|
|
130
146
|
children: "Loading schedule..."
|
|
131
147
|
})]
|
|
132
148
|
})
|
|
133
149
|
})
|
|
134
|
-
}) : /* @__PURE__ */
|
|
135
|
-
title: "Schedule",
|
|
136
|
-
description: "
|
|
137
|
-
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, {
|
|
138
154
|
className: "mb-6",
|
|
139
|
-
children: "
|
|
140
|
-
}), /* @__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", {
|
|
141
157
|
className: "space-y-6",
|
|
142
|
-
children: [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}), /* @__PURE__ */ C("div", {
|
|
146
|
-
className: "grid grid-cols-2 md:grid-cols-4 gap-3",
|
|
147
|
-
children: [
|
|
148
|
-
/* @__PURE__ */ C("div", {
|
|
149
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
150
|
-
children: [/* @__PURE__ */ S("p", {
|
|
151
|
-
className: "text-xs text-text-secondary",
|
|
152
|
-
children: "Hours This Week"
|
|
153
|
-
}), /* @__PURE__ */ C("p", {
|
|
154
|
-
className: "text-2xl font-bold text-text-primary",
|
|
155
|
-
children: [Z.hoursThisWeek, "h"]
|
|
156
|
-
})]
|
|
157
|
-
}),
|
|
158
|
-
/* @__PURE__ */ C("div", {
|
|
159
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
160
|
-
children: [/* @__PURE__ */ S("p", {
|
|
161
|
-
className: "text-xs text-text-secondary",
|
|
162
|
-
children: "Shifts This Week"
|
|
163
|
-
}), /* @__PURE__ */ S("p", {
|
|
164
|
-
className: "text-2xl font-bold text-text-primary",
|
|
165
|
-
children: Z.shiftsThisWeek
|
|
166
|
-
})]
|
|
167
|
-
}),
|
|
168
|
-
/* @__PURE__ */ C("div", {
|
|
169
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
170
|
-
children: [/* @__PURE__ */ S("p", {
|
|
171
|
-
className: "text-xs text-text-secondary",
|
|
172
|
-
children: "Week Earnings"
|
|
173
|
-
}), /* @__PURE__ */ S("p", {
|
|
174
|
-
className: "text-2xl font-bold text-text-primary",
|
|
175
|
-
children: c(Z.earningsThisWeek, { minimumFractionDigits: 0 })
|
|
176
|
-
})]
|
|
177
|
-
}),
|
|
178
|
-
/* @__PURE__ */ C("div", {
|
|
179
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
180
|
-
children: [/* @__PURE__ */ S("p", {
|
|
181
|
-
className: "text-xs text-text-secondary",
|
|
182
|
-
children: "Next Shift"
|
|
183
|
-
}), /* @__PURE__ */ S("p", {
|
|
184
|
-
className: "text-sm font-bold text-text-primary",
|
|
185
|
-
children: Z.nextShift ? `${T(Z.nextShift.date)} ${E(Z.nextShift.startTime)}` : "None scheduled"
|
|
186
|
-
})]
|
|
187
|
-
})
|
|
188
|
-
]
|
|
189
|
-
})] }), /* @__PURE__ */ C("div", {
|
|
190
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden",
|
|
191
|
-
children: [/* @__PURE__ */ C("div", {
|
|
192
|
-
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",
|
|
193
161
|
children: [
|
|
194
|
-
/* @__PURE__ */
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
children: [/* @__PURE__ */ S(f, { 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" })
|
|
199
166
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
children: [/* @__PURE__ */ S(x, { 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" })
|
|
205
171
|
}),
|
|
206
|
-
/* @__PURE__ */
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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" })
|
|
211
184
|
})
|
|
212
185
|
]
|
|
213
|
-
}),
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ x(S, {
|
|
214
188
|
className: "p-5",
|
|
215
|
-
children: [
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
className: "text-sm font-medium text-text-primary",
|
|
227
|
-
children: [
|
|
228
|
-
Q.start,
|
|
229
|
-
" - ",
|
|
230
|
-
Q.end
|
|
231
|
-
]
|
|
232
|
-
}),
|
|
233
|
-
/* @__PURE__ */ C("button", {
|
|
234
|
-
type: "button",
|
|
235
|
-
onClick: () => U((e) => e + 1),
|
|
236
|
-
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",
|
|
237
|
-
children: ["Next Week", /* @__PURE__ */ S(h, { className: "h-3.5 w-3.5" })]
|
|
238
|
-
})
|
|
239
|
-
]
|
|
240
|
-
}), X.length === 0 ? /* @__PURE__ */ S(r, {
|
|
241
|
-
icon: /* @__PURE__ */ S(d, { className: "h-12 w-12" }),
|
|
242
|
-
title: "No shifts this week",
|
|
243
|
-
description: N.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 Previous / Next Week to browse your roster."
|
|
244
|
-
}) : /* @__PURE__ */ S("div", {
|
|
245
|
-
className: "space-y-3",
|
|
246
|
-
children: X.map((e) => /* @__PURE__ */ C("div", {
|
|
247
|
-
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",
|
|
248
200
|
children: [
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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", {
|
|
254
229
|
className: "text-sm font-semibold text-text-primary",
|
|
255
230
|
children: T(e.date)
|
|
256
|
-
}), /* @__PURE__ */
|
|
257
|
-
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium
|
|
258
|
-
children: e.status
|
|
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)
|
|
259
234
|
})]
|
|
260
|
-
}),
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
})
|
|
269
|
-
})]
|
|
270
|
-
}),
|
|
271
|
-
/* @__PURE__ */ C("div", {
|
|
272
|
-
className: "grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",
|
|
273
|
-
children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
274
|
-
className: "text-xs text-text-secondary",
|
|
275
|
-
children: "Cart"
|
|
276
|
-
}), /* @__PURE__ */ C("p", {
|
|
277
|
-
className: "text-xs font-medium text-text-primary flex items-center gap-1",
|
|
278
|
-
children: [/* @__PURE__ */ S(ne, { className: "h-3 w-3 text-text-secondary" }), e.cartName]
|
|
279
|
-
})] }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
280
|
-
className: "text-xs text-text-secondary",
|
|
281
|
-
children: "Tasks Completed"
|
|
282
|
-
}), /* @__PURE__ */ C("p", {
|
|
283
|
-
className: "text-xs font-medium text-text-primary flex items-center gap-1",
|
|
284
|
-
children: [/* @__PURE__ */ S(p, { className: "h-3 w-3 text-text-secondary" }), e.tasksCompleted]
|
|
285
|
-
})] })]
|
|
286
|
-
}),
|
|
287
|
-
e.status === "scheduled" && /* @__PURE__ */ S("div", {
|
|
288
|
-
className: "mt-3 pt-3 border-t border-border-subtle",
|
|
289
|
-
children: /* @__PURE__ */ C("button", {
|
|
290
|
-
type: "button",
|
|
291
|
-
onClick: () => oe(e),
|
|
292
|
-
disabled: F.isPending,
|
|
293
|
-
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",
|
|
294
|
-
children: [/* @__PURE__ */ S(_, { 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]
|
|
295
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"]
|
|
296
269
|
}),
|
|
297
|
-
e.status === "in_progress" && /* @__PURE__ */
|
|
298
|
-
className: "
|
|
299
|
-
children: [/* @__PURE__ */
|
|
300
|
-
className: "text-xs font-medium text-status-success-text
|
|
301
|
-
children: [/* @__PURE__ */
|
|
302
|
-
}), /* @__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", {
|
|
303
276
|
type: "button",
|
|
304
|
-
onClick:
|
|
277
|
+
onClick: le,
|
|
305
278
|
disabled: F.isPending,
|
|
306
|
-
className: "inline-flex items-center gap-1.5 rounded-md bg-
|
|
307
|
-
children: [/* @__PURE__ */
|
|
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"]
|
|
308
281
|
})]
|
|
309
282
|
})
|
|
310
283
|
]
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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"
|
|
317
295
|
}),
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
children: [/* @__PURE__ */ S("div", {
|
|
328
|
-
className: "w-32 shrink-0",
|
|
329
|
-
children: /* @__PURE__ */ C("label", {
|
|
330
|
-
className: "flex items-center gap-2 cursor-pointer",
|
|
331
|
-
children: [/* @__PURE__ */ S("input", {
|
|
332
|
-
type: "checkbox",
|
|
333
|
-
checked: e.isAvailable,
|
|
334
|
-
onChange: (t) => $(e.dayOfWeek, "isAvailable", t.target.checked),
|
|
335
|
-
className: "h-4 w-4 rounded border-border-subtle text-text-primary focus:ring-border-focus/40"
|
|
336
|
-
}), /* @__PURE__ */ S("span", {
|
|
337
|
-
className: "text-sm font-medium text-text-primary",
|
|
338
|
-
children: e.dayOfWeek
|
|
339
|
-
})]
|
|
340
|
-
})
|
|
341
|
-
}), e.isAvailable ? /* @__PURE__ */ C("div", {
|
|
342
|
-
className: "flex flex-col sm:flex-row gap-3 flex-1",
|
|
343
|
-
children: [/* @__PURE__ */ C("div", {
|
|
344
|
-
className: "flex items-center gap-2",
|
|
345
|
-
children: [/* @__PURE__ */ S("span", {
|
|
346
|
-
className: "text-xs text-text-secondary w-10",
|
|
347
|
-
children: "From"
|
|
348
|
-
}), /* @__PURE__ */ S("input", {
|
|
349
|
-
type: "time",
|
|
350
|
-
value: e.preferredStartTime,
|
|
351
|
-
onChange: (t) => $(e.dayOfWeek, "preferredStartTime", t.target.value),
|
|
352
|
-
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"
|
|
353
|
-
})]
|
|
354
|
-
}), /* @__PURE__ */ C("div", {
|
|
355
|
-
className: "flex items-center gap-2",
|
|
356
|
-
children: [/* @__PURE__ */ S("span", {
|
|
357
|
-
className: "text-xs text-text-secondary w-10",
|
|
358
|
-
children: "To"
|
|
359
|
-
}), /* @__PURE__ */ S("input", {
|
|
360
|
-
type: "time",
|
|
361
|
-
value: e.preferredEndTime,
|
|
362
|
-
onChange: (t) => $(e.dayOfWeek, "preferredEndTime", t.target.value),
|
|
363
|
-
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"
|
|
364
|
-
})]
|
|
365
|
-
})]
|
|
366
|
-
}) : /* @__PURE__ */ S("span", {
|
|
367
|
-
className: "text-xs text-text-secondary",
|
|
368
|
-
children: "Not available"
|
|
369
|
-
})]
|
|
370
|
-
}, e.dayOfWeek))
|
|
371
|
-
}),
|
|
372
|
-
/* @__PURE__ */ C("div", {
|
|
373
|
-
className: "mt-5 flex flex-wrap items-center gap-3",
|
|
374
|
-
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", {
|
|
375
305
|
type: "button",
|
|
376
|
-
onClick: () =>
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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);
|
|
388
326
|
},
|
|
389
|
-
|
|
390
|
-
className: "inline-flex items-center gap-2 rounded-md bg-[var(--color-accent-soft)] px-4 py-2 text-sm font-medium text-text-primary hover:bg-[var(--color-accent-soft)] transition-colors disabled:opacity-50",
|
|
391
|
-
children: [z.isPending ? /* @__PURE__ */ S(g, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ S(b, { className: "h-4 w-4" }), z.isPending ? "Saving..." : "Save Availability"]
|
|
392
|
-
}), K && !z.isPending && /* @__PURE__ */ S("span", {
|
|
393
|
-
className: "text-xs text-status-success-text",
|
|
394
|
-
children: "Availability preferences saved"
|
|
327
|
+
className: "w-full bg-transparent text-sm text-text-primary focus:outline-none"
|
|
395
328
|
})]
|
|
396
|
-
}),
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
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
|
|
403
378
|
})
|
|
404
|
-
|
|
379
|
+
})
|
|
405
380
|
]
|
|
406
|
-
})
|
|
407
|
-
|
|
381
|
+
})
|
|
382
|
+
]
|
|
408
383
|
})]
|
|
409
384
|
});
|
|
410
385
|
};
|
|
411
386
|
//#endregion
|
|
412
|
-
export {
|
|
387
|
+
export { M as WorkerSchedulePage };
|
|
413
388
|
|
|
414
389
|
//# sourceMappingURL=WorkerSchedulePage.js.map
|