@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.
Files changed (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. 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 { useWorkerClockInOut as i, useWorkerSchedules as a } from "../../hooks/useKadaikodiApi.js";
6
- import { formatCurrency as o } from "../../utils/formatters.js";
7
- import { useMemo as s, useState as c } from "react";
8
- import { Calendar as l, CalendarDays as u, CheckCircle2 as d, ChevronLeft as f, ChevronRight as p, Loader2 as m, LogIn as h, LogOut as g, PlayCircle as _, Save as v, Send as y, ShoppingCart as b, Timer as x } from "lucide-react";
9
- import { jsx as S, jsxs as C } from "react/jsx-runtime";
10
- import { EmphasisPanel as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
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
- function E(e) {
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 D(e) {
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 O(e) {
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-[var(--color-accent-soft)] text-text-primary";
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-sunken text-text-secondary";
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, t) {
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 j = [
58
- "Monday",
59
- "Tuesday",
60
- "Wednesday",
61
- "Thursday",
62
- "Friday",
63
- "Saturday",
64
- "Sunday"
65
- ].map((e) => ({
66
- dayOfWeek: e,
67
- isAvailable: e !== "Sunday",
68
- preferredStartTime: "09:00",
69
- preferredEndTime: "18:00"
70
- })), M = () => {
71
- let { currentUser: M } = e(), N = M?.id ?? "", { data: P = [], isLoading: F } = a(N), I = i(), [L, R] = c("schedule"), [z, B] = c(0), [V, H] = c(j), U = s(() => {
72
- let e = P.filter((e) => e.status !== "cancelled"), t = e.reduce((e, t) => e + A(t.startTime, t.endTime), 0), n = e.reduce((e, t) => e + (t.totalEarnings ?? 0), 0), r = P.find((e) => e.status === "scheduled");
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]), W = O(z), G = (e) => {
80
- I.mutate({
81
- workerId: N,
82
- action: "CLOCK_IN"
83
- });
84
- }, K = (e) => {
85
- I.mutate({
86
- workerId: N,
87
- action: "CLOCK_OUT"
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 F ? /* @__PURE__ */ S(n, {
96
- title: "Schedule",
97
- description: "Manage your work schedule",
98
- children: /* @__PURE__ */ S("div", {
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__ */ C("div", {
142
+ children: /* @__PURE__ */ x("div", {
101
143
  className: "text-center",
102
- children: [/* @__PURE__ */ S(m, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ S("p", {
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__ */ C(n, {
109
- title: "Schedule",
110
- description: "Manage your work schedule",
111
- children: [/* @__PURE__ */ S(T, {
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: "Your shifts, hours and pay in one place. Use this page to 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. Keep an eye on your weekly hours and next shift at the top."
114
- }), /* @__PURE__ */ C("div", {
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: [/* @__PURE__ */ C(w, { children: [/* @__PURE__ */ S("h2", {
117
- className: "mb-4 text-base font-semibold text-text-primary",
118
- children: "This Week"
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__ */ C("button", {
169
- type: "button",
170
- onClick: () => R("schedule"),
171
- className: t("flex-1 py-3 px-4 text-sm font-medium transition-colors flex items-center justify-center gap-2", L === "schedule" ? "border-b-2 border-border-focus text-text-primary bg-[var(--color-accent-soft)]" : "text-text-secondary hover:text-text-primary"),
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__ */ C("button", {
175
- type: "button",
176
- onClick: () => R("requests"),
177
- className: t("flex-1 py-3 px-4 text-sm font-medium transition-colors flex items-center justify-center gap-2", L === "requests" ? "border-b-2 border-border-focus text-text-primary bg-[var(--color-accent-soft)]" : "text-text-secondary hover:text-text-primary"),
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__ */ C("button", {
181
- type: "button",
182
- onClick: () => R("availability"),
183
- className: t("flex-1 py-3 px-4 text-sm font-medium transition-colors flex items-center justify-center gap-2", L === "availability" ? "border-b-2 border-border-focus text-text-primary bg-[var(--color-accent-soft)]" : "text-text-secondary hover:text-text-primary"),
184
- children: [/* @__PURE__ */ S(x, { className: "h-4 w-4" }), "Availability"]
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
- }), /* @__PURE__ */ C("div", {
186
+ }),
187
+ /* @__PURE__ */ x(S, {
188
188
  className: "p-5",
189
- children: [
190
- L === "schedule" && /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C("div", {
191
- className: "flex items-center justify-between mb-5",
192
- children: [
193
- /* @__PURE__ */ C("button", {
194
- type: "button",
195
- onClick: () => B((e) => e - 1),
196
- 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",
197
- children: [/* @__PURE__ */ S(f, { className: "h-3.5 w-3.5" }), "Previous Week"]
198
- }),
199
- /* @__PURE__ */ C("h3", {
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
- /* @__PURE__ */ C("div", {
224
- className: "flex items-center justify-between mb-3",
225
- children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C("div", {
226
- className: "flex items-center gap-2 flex-wrap",
227
- children: [/* @__PURE__ */ S("h4", {
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: E(e.date)
230
- }), /* @__PURE__ */ S("span", {
231
- className: t("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize", k(e.status)),
232
- children: e.status === "in_progress" ? "Ongoing" : 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
- }), /* @__PURE__ */ C("p", {
235
- className: "text-xs text-text-secondary mt-1",
236
- children: [D(e.startTime), e.endTime ? ` - ${D(e.endTime)}` : ""]
237
- })] }), e.totalEarnings > 0 && /* @__PURE__ */ S("div", {
238
- className: "text-right",
239
- children: /* @__PURE__ */ S("p", {
240
- className: "text-lg font-bold text-text-primary",
241
- children: o(e.totalEarnings, { minimumFractionDigits: 0 })
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__ */ C("div", {
272
- className: "mt-3 pt-3 border-t border-status-success-text/20 flex items-center justify-between",
273
- children: [/* @__PURE__ */ C("span", {
274
- className: "text-xs font-medium text-status-success-text flex items-center gap-1",
275
- children: [/* @__PURE__ */ S(_, { className: "h-3.5 w-3.5" }), "Shift in progress"]
276
- }), /* @__PURE__ */ C("button", {
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: () => K(e),
279
- disabled: I.isPending,
280
- 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 disabled:opacity-50",
281
- children: [/* @__PURE__ */ S(g, { className: "h-3.5 w-3.5" }), "Check Out"]
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
- }, e.id))
286
- })] }),
287
- L === "requests" && /* @__PURE__ */ S(r, {
288
- icon: /* @__PURE__ */ S(y, { className: "h-12 w-12" }),
289
- title: "No shift requests",
290
- description: "Shift swap and time-off requests will appear here. This feature is coming soon."
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
- L === "availability" && /* @__PURE__ */ C("div", { children: [
293
- /* @__PURE__ */ S("p", {
294
- className: "text-xs text-text-secondary mb-5",
295
- children: "Set your preferred working hours for each day of the week"
296
- }),
297
- /* @__PURE__ */ S("div", {
298
- className: "space-y-3",
299
- children: V.map((e) => /* @__PURE__ */ C("div", {
300
- className: t("flex flex-col sm:flex-row sm:items-center gap-3 p-3 rounded-lg border", e.isAvailable ? "border-border-subtle bg-bg-surface" : "border-border-subtle/50 bg-bg-sunken/30"),
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
- alert("Availability preferences saved");
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: "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",
354
- children: [/* @__PURE__ */ S(v, { className: "h-4 w-4" }), "Save Availability"]
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
  };