@burdenoff/microfe-atheletebridge 2026.624.1 → 2026.625.2
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/atheletebridge/components/EmptyState.js +18 -11
- package/dist/atheletebridge/components/EmptyState.js.map +1 -1
- package/dist/atheletebridge/components/InvestmentCard.js +7 -7
- package/dist/atheletebridge/components/InvestmentCard.js.map +1 -1
- package/dist/atheletebridge/components/MetricsCard.js +20 -14
- package/dist/atheletebridge/components/MetricsCard.js.map +1 -1
- package/dist/atheletebridge/components/PageLayout.js +30 -19
- package/dist/atheletebridge/components/PageLayout.js.map +1 -1
- package/dist/atheletebridge/pages/HomePage.js +210 -195
- package/dist/atheletebridge/pages/HomePage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js +90 -82
- package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminDashboard.js +76 -44
- package/dist/atheletebridge/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminFinancialPage.js +63 -55
- package/dist/atheletebridge/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminOrdersPage.js +244 -237
- package/dist/atheletebridge/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminProfilePage.js +59 -57
- package/dist/atheletebridge/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminSettingsPage.js +110 -106
- package/dist/atheletebridge/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/CartManagementPage.js +166 -159
- package/dist/atheletebridge/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/UserManagementPage.js +310 -303
- package/dist/atheletebridge/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js +86 -81
- package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js +170 -166
- package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js +141 -109
- package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js +139 -134
- package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js +109 -107
- package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js +318 -318
- package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js +262 -262
- package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js +170 -162
- package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/HelpSupportPage.js +292 -298
- package/dist/atheletebridge/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/NotificationCenterPage.js +100 -91
- package/dist/atheletebridge/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/SettingsPage.js +742 -734
- package/dist/atheletebridge/pages/common/SettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/BookingDetailsPage.js +365 -356
- package/dist/atheletebridge/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDetailPage.js +277 -241
- package/dist/atheletebridge/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js +261 -250
- package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CheckoutPage.js +93 -89
- package/dist/atheletebridge/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CustomerDashboard.js +430 -387
- package/dist/atheletebridge/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CustomerProfilePage.js +526 -490
- package/dist/atheletebridge/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js +524 -512
- package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/FavoritesPage.js +84 -75
- package/dist/atheletebridge/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js +117 -108
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js +66 -61
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js +81 -75
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/ReviewsPage.js +81 -72
- package/dist/atheletebridge/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/SavedAddressesPage.js +63 -55
- package/dist/atheletebridge/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js +93 -61
- package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js +90 -84
- package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js +60 -55
- package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorDashboard.js +345 -311
- package/dist/atheletebridge/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js +38 -32
- package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js +75 -67
- package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorProfilePage.js +385 -381
- package/dist/atheletebridge/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/TaskDetailsPage.js +353 -319
- package/dist/atheletebridge/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerDashboard.js +353 -318
- package/dist/atheletebridge/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js +134 -128
- package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerProfilePage.js +81 -77
- package/dist/atheletebridge/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js +352 -342
- package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { useAthleteBridge as e } from "../../context/AthleteBridgeContext.js";
|
|
2
2
|
import { cn as t } from "../../utils/cn.js";
|
|
3
3
|
import { PageLayout as n } from "../../components/PageLayout.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { EmptyState as r } from "../../components/EmptyState.js";
|
|
5
|
+
import { useMemo as i, useState as a } from "react";
|
|
6
|
+
import { AlertCircle as o, CheckCircle2 as s, Clock as c, Edit2 as l, Mail as u, Phone as d, Search as f, Star as p, Trash2 as m, UserPlus as h, X as g } from "lucide-react";
|
|
6
7
|
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
8
|
+
import { EmphasisPanel as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
|
|
7
9
|
//#region src/atheletebridge/pages/cart-owner/StaffManagementPage.tsx
|
|
8
|
-
var
|
|
10
|
+
var x = [
|
|
9
11
|
{
|
|
10
12
|
id: "staff-001",
|
|
11
13
|
firstName: "Ravi",
|
|
@@ -134,7 +136,7 @@ var y = [
|
|
|
134
136
|
currentShift: "08:00 - 16:00",
|
|
135
137
|
shiftsThisWeek: 6
|
|
136
138
|
}
|
|
137
|
-
],
|
|
139
|
+
], S = {
|
|
138
140
|
active: {
|
|
139
141
|
label: "Active",
|
|
140
142
|
color: "text-green-600 dark:text-green-400",
|
|
@@ -155,7 +157,7 @@ var y = [
|
|
|
155
157
|
color: "text-red-600 dark:text-red-400",
|
|
156
158
|
dot: "bg-red-500"
|
|
157
159
|
}
|
|
158
|
-
},
|
|
160
|
+
}, C = {
|
|
159
161
|
manager: {
|
|
160
162
|
label: "Manager",
|
|
161
163
|
color: "bg-purple-500/20 text-purple-600 dark:text-purple-400"
|
|
@@ -176,15 +178,15 @@ var y = [
|
|
|
176
178
|
label: "Cashier",
|
|
177
179
|
color: "bg-cyan-500/20 text-cyan-600 dark:text-cyan-400"
|
|
178
180
|
}
|
|
179
|
-
},
|
|
181
|
+
}, w = {
|
|
180
182
|
email: "",
|
|
181
183
|
firstName: "",
|
|
182
184
|
lastName: "",
|
|
183
185
|
phone: "",
|
|
184
186
|
role: "server",
|
|
185
187
|
hourlyRate: 150
|
|
186
|
-
},
|
|
187
|
-
let { navigateTo:
|
|
188
|
+
}, T = () => {
|
|
189
|
+
let { navigateTo: T } = e(), [E, D] = a(x), [O, k] = a(""), [A, j] = a(""), [M, N] = a(""), [P, F] = a("name"), [I, L] = a(!1), [R, z] = a(!1), [B, V] = a(null), [H, U] = a(w), [W, G] = a({
|
|
188
190
|
firstName: "",
|
|
189
191
|
lastName: "",
|
|
190
192
|
email: "",
|
|
@@ -192,20 +194,20 @@ var y = [
|
|
|
192
194
|
role: "server",
|
|
193
195
|
hourlyRate: 150,
|
|
194
196
|
status: "active"
|
|
195
|
-
}), [
|
|
196
|
-
|
|
197
|
+
}), [K, q] = a(null), J = (e, t) => {
|
|
198
|
+
q({
|
|
197
199
|
text: e,
|
|
198
200
|
type: t
|
|
199
|
-
}), setTimeout(() =>
|
|
200
|
-
},
|
|
201
|
-
|
|
202
|
-
let
|
|
203
|
-
let e = [...
|
|
204
|
-
if (
|
|
205
|
-
let t =
|
|
201
|
+
}), setTimeout(() => q(null), 3e3);
|
|
202
|
+
}, Y = E.filter((e) => e.status === "active").length, X = E.filter((e) => e.status === "on-leave").length, Z = E.length > 0 ? (E.reduce((e, t) => e + t.performance.rating, 0) / E.length).toFixed(1) : "0";
|
|
203
|
+
E.reduce((e, t) => e + t.totalEarnings, 0);
|
|
204
|
+
let Q = i(() => {
|
|
205
|
+
let e = [...E];
|
|
206
|
+
if (O) {
|
|
207
|
+
let t = O.toLowerCase();
|
|
206
208
|
e = e.filter((e) => `${e.firstName} ${e.lastName}`.toLowerCase().includes(t) || e.email.toLowerCase().includes(t) || e.phone.includes(t));
|
|
207
209
|
}
|
|
208
|
-
switch (
|
|
210
|
+
switch (A && (e = e.filter((e) => e.role === A)), M && (e = e.filter((e) => e.status === M)), P) {
|
|
209
211
|
case "name":
|
|
210
212
|
e.sort((e, t) => `${e.firstName} ${e.lastName}`.localeCompare(`${t.firstName} ${t.lastName}`));
|
|
211
213
|
break;
|
|
@@ -221,19 +223,19 @@ var y = [
|
|
|
221
223
|
}
|
|
222
224
|
return e;
|
|
223
225
|
}, [
|
|
224
|
-
w,
|
|
225
226
|
E,
|
|
226
227
|
O,
|
|
227
228
|
A,
|
|
228
|
-
M
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
M,
|
|
230
|
+
P
|
|
231
|
+
]), $ = () => {
|
|
232
|
+
if (!H.email || !H.firstName || !H.lastName) {
|
|
233
|
+
J("Please fill in all required fields", "error");
|
|
232
234
|
return;
|
|
233
235
|
}
|
|
234
236
|
let e = {
|
|
235
237
|
id: `staff-${Date.now()}`,
|
|
236
|
-
...
|
|
238
|
+
...H,
|
|
237
239
|
status: "active",
|
|
238
240
|
dateJoined: (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
|
|
239
241
|
hoursWorked: 0,
|
|
@@ -246,9 +248,9 @@ var y = [
|
|
|
246
248
|
},
|
|
247
249
|
shiftsThisWeek: 0
|
|
248
250
|
};
|
|
249
|
-
|
|
250
|
-
},
|
|
251
|
-
|
|
251
|
+
D((t) => [...t, e]), L(!1), U(w), J("Staff member invited successfully", "success");
|
|
252
|
+
}, ee = (e) => {
|
|
253
|
+
V(e), G({
|
|
252
254
|
firstName: e.firstName,
|
|
253
255
|
lastName: e.lastName,
|
|
254
256
|
email: e.email,
|
|
@@ -256,14 +258,14 @@ var y = [
|
|
|
256
258
|
role: e.role,
|
|
257
259
|
hourlyRate: e.hourlyRate,
|
|
258
260
|
status: e.status
|
|
259
|
-
}),
|
|
260
|
-
},
|
|
261
|
-
|
|
261
|
+
}), z(!0);
|
|
262
|
+
}, te = () => {
|
|
263
|
+
B && (D((e) => e.map((e) => e.id === B.id ? {
|
|
262
264
|
...e,
|
|
263
|
-
...
|
|
264
|
-
} : e)),
|
|
265
|
-
},
|
|
266
|
-
|
|
265
|
+
...W
|
|
266
|
+
} : e)), z(!1), J("Staff member updated successfully", "success"));
|
|
267
|
+
}, ne = (e) => {
|
|
268
|
+
D((t) => t.map((t) => {
|
|
267
269
|
if (t.id === e) {
|
|
268
270
|
let e = t.status === "active" ? "inactive" : "active";
|
|
269
271
|
return {
|
|
@@ -272,9 +274,9 @@ var y = [
|
|
|
272
274
|
};
|
|
273
275
|
}
|
|
274
276
|
return t;
|
|
275
|
-
})),
|
|
276
|
-
},
|
|
277
|
-
confirm("Are you sure you want to remove this staff member?") && (
|
|
277
|
+
})), J("Staff status updated", "success");
|
|
278
|
+
}, re = (e) => {
|
|
279
|
+
confirm("Are you sure you want to remove this staff member?") && (D((t) => t.filter((t) => t.id !== e)), J("Staff member removed", "success"));
|
|
278
280
|
};
|
|
279
281
|
return /* @__PURE__ */ v(n, {
|
|
280
282
|
title: "Staff Management",
|
|
@@ -282,66 +284,70 @@ var y = [
|
|
|
282
284
|
actions: /* @__PURE__ */ v("button", {
|
|
283
285
|
type: "button",
|
|
284
286
|
onClick: () => {
|
|
285
|
-
|
|
287
|
+
U(w), L(!0);
|
|
286
288
|
},
|
|
287
289
|
className: "inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors",
|
|
288
|
-
children: [/* @__PURE__ */ _(
|
|
290
|
+
children: [/* @__PURE__ */ _(h, { className: "h-4 w-4" }), "Invite Staff"]
|
|
289
291
|
}),
|
|
290
292
|
children: [
|
|
291
293
|
/* @__PURE__ */ v("div", {
|
|
292
294
|
className: "space-y-4",
|
|
293
295
|
children: [
|
|
294
|
-
|
|
295
|
-
className: t("flex items-center gap-2 rounded-lg border p-3",
|
|
296
|
-
children: [
|
|
297
|
-
className: t("text-sm font-medium",
|
|
298
|
-
children:
|
|
296
|
+
K && /* @__PURE__ */ v("div", {
|
|
297
|
+
className: t("flex items-center gap-2 rounded-lg border p-3", K.type === "success" ? "border-green-500/30 bg-green-500/10" : "border-red-500/30 bg-red-500/10"),
|
|
298
|
+
children: [K.type === "success" ? /* @__PURE__ */ _(s, { className: "h-4 w-4 text-green-600 dark:text-green-400" }) : /* @__PURE__ */ _(o, { className: "h-4 w-4 text-red-600 dark:text-red-400" }), /* @__PURE__ */ _("span", {
|
|
299
|
+
className: t("text-sm font-medium", K.type === "success" ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400"),
|
|
300
|
+
children: K.text
|
|
299
301
|
})]
|
|
300
302
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
303
|
+
/* @__PURE__ */ _(b, { children: "Build and manage your team. Invite workers and delivery partners, see who's active or on leave, track ratings, and manage shifts. A well-staffed, well-rated team keeps orders flowing and customers happy." }),
|
|
304
|
+
/* @__PURE__ */ _(y, {
|
|
305
|
+
className: "p-5",
|
|
306
|
+
children: /* @__PURE__ */ v("div", {
|
|
307
|
+
className: "grid grid-cols-2 sm:grid-cols-4 gap-3",
|
|
308
|
+
children: [
|
|
309
|
+
/* @__PURE__ */ v("div", {
|
|
310
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
311
|
+
children: [/* @__PURE__ */ _("p", {
|
|
312
|
+
className: "text-2xl font-bold text-text-primary",
|
|
313
|
+
children: E.length
|
|
314
|
+
}), /* @__PURE__ */ _("p", {
|
|
315
|
+
className: "text-xs text-text-secondary",
|
|
316
|
+
children: "Total Staff"
|
|
317
|
+
})]
|
|
318
|
+
}),
|
|
319
|
+
/* @__PURE__ */ v("div", {
|
|
320
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
321
|
+
children: [/* @__PURE__ */ _("p", {
|
|
322
|
+
className: "text-2xl font-bold text-green-600 dark:text-green-400",
|
|
323
|
+
children: Y
|
|
324
|
+
}), /* @__PURE__ */ _("p", {
|
|
325
|
+
className: "text-xs text-text-secondary",
|
|
326
|
+
children: "Active Now"
|
|
327
|
+
})]
|
|
328
|
+
}),
|
|
329
|
+
/* @__PURE__ */ v("div", {
|
|
330
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
331
|
+
children: [/* @__PURE__ */ _("p", {
|
|
332
|
+
className: "text-2xl font-bold text-yellow-600 dark:text-yellow-400",
|
|
333
|
+
children: X
|
|
334
|
+
}), /* @__PURE__ */ _("p", {
|
|
335
|
+
className: "text-xs text-text-secondary",
|
|
336
|
+
children: "On Leave"
|
|
337
|
+
})]
|
|
338
|
+
}),
|
|
339
|
+
/* @__PURE__ */ v("div", {
|
|
340
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
341
|
+
children: [/* @__PURE__ */ _("p", {
|
|
342
|
+
className: "text-2xl font-bold text-text-primary",
|
|
343
|
+
children: Z
|
|
344
|
+
}), /* @__PURE__ */ _("p", {
|
|
345
|
+
className: "text-xs text-text-secondary",
|
|
346
|
+
children: "Avg. Rating"
|
|
347
|
+
})]
|
|
348
|
+
})
|
|
349
|
+
]
|
|
350
|
+
})
|
|
345
351
|
}),
|
|
346
352
|
/* @__PURE__ */ _("div", {
|
|
347
353
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
|
|
@@ -350,41 +356,41 @@ var y = [
|
|
|
350
356
|
children: [
|
|
351
357
|
/* @__PURE__ */ v("div", {
|
|
352
358
|
className: "relative",
|
|
353
|
-
children: [/* @__PURE__ */ _(
|
|
359
|
+
children: [/* @__PURE__ */ _(f, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _("input", {
|
|
354
360
|
type: "text",
|
|
355
361
|
placeholder: "Search staff...",
|
|
356
|
-
value:
|
|
357
|
-
onChange: (e) =>
|
|
362
|
+
value: O,
|
|
363
|
+
onChange: (e) => k(e.target.value),
|
|
358
364
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface pl-10 pr-4 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
|
|
359
365
|
})]
|
|
360
366
|
}),
|
|
361
367
|
/* @__PURE__ */ v("select", {
|
|
362
|
-
value:
|
|
363
|
-
onChange: (e) =>
|
|
368
|
+
value: A,
|
|
369
|
+
onChange: (e) => j(e.target.value),
|
|
364
370
|
className: "rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
365
371
|
children: [/* @__PURE__ */ _("option", {
|
|
366
372
|
value: "",
|
|
367
373
|
children: "All Roles"
|
|
368
|
-
}), Object.entries(
|
|
374
|
+
}), Object.entries(C).map(([e, t]) => /* @__PURE__ */ _("option", {
|
|
369
375
|
value: e,
|
|
370
376
|
children: t.label
|
|
371
377
|
}, e))]
|
|
372
378
|
}),
|
|
373
379
|
/* @__PURE__ */ v("select", {
|
|
374
|
-
value:
|
|
375
|
-
onChange: (e) =>
|
|
380
|
+
value: M,
|
|
381
|
+
onChange: (e) => N(e.target.value),
|
|
376
382
|
className: "rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
377
383
|
children: [/* @__PURE__ */ _("option", {
|
|
378
384
|
value: "",
|
|
379
385
|
children: "All Status"
|
|
380
|
-
}), Object.entries(
|
|
386
|
+
}), Object.entries(S).map(([e, t]) => /* @__PURE__ */ _("option", {
|
|
381
387
|
value: e,
|
|
382
388
|
children: t.label
|
|
383
389
|
}, e))]
|
|
384
390
|
}),
|
|
385
391
|
/* @__PURE__ */ v("select", {
|
|
386
|
-
value:
|
|
387
|
-
onChange: (e) =>
|
|
392
|
+
value: P,
|
|
393
|
+
onChange: (e) => F(e.target.value),
|
|
388
394
|
className: "rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
389
395
|
children: [
|
|
390
396
|
/* @__PURE__ */ _("option", {
|
|
@@ -408,23 +414,25 @@ var y = [
|
|
|
408
414
|
]
|
|
409
415
|
})
|
|
410
416
|
}),
|
|
411
|
-
|
|
412
|
-
className: "
|
|
413
|
-
children:
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
417
|
+
Q.length === 0 ? /* @__PURE__ */ _("div", {
|
|
418
|
+
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
|
|
419
|
+
children: /* @__PURE__ */ _(r, {
|
|
420
|
+
illustration: "empty-people",
|
|
421
|
+
title: "No staff members found",
|
|
422
|
+
description: "No team members match your filters. Adjust your search, or invite your first staff member to get started.",
|
|
423
|
+
action: /* @__PURE__ */ v("button", {
|
|
424
|
+
type: "button",
|
|
425
|
+
onClick: () => {
|
|
426
|
+
U(w), L(!0);
|
|
427
|
+
},
|
|
428
|
+
className: "inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
|
|
429
|
+
children: [/* @__PURE__ */ _(h, { className: "h-4 w-4" }), "Invite Staff"]
|
|
422
430
|
})
|
|
423
|
-
|
|
431
|
+
})
|
|
424
432
|
}) : /* @__PURE__ */ _("div", {
|
|
425
433
|
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm divide-y divide-border",
|
|
426
|
-
children:
|
|
427
|
-
let n =
|
|
434
|
+
children: Q.map((e) => {
|
|
435
|
+
let n = S[e.status], r = C[e.role];
|
|
428
436
|
return /* @__PURE__ */ v("div", {
|
|
429
437
|
className: "p-4 sm:p-5 hover:bg-bg-sunken/30 transition-colors",
|
|
430
438
|
children: [/* @__PURE__ */ v("div", {
|
|
@@ -463,10 +471,10 @@ var y = [
|
|
|
463
471
|
className: "flex items-center gap-3 mt-1 text-xs text-text-secondary flex-wrap",
|
|
464
472
|
children: [/* @__PURE__ */ v("span", {
|
|
465
473
|
className: "flex items-center gap-1",
|
|
466
|
-
children: [/* @__PURE__ */ _(
|
|
474
|
+
children: [/* @__PURE__ */ _(u, { className: "h-3 w-3" }), e.email]
|
|
467
475
|
}), /* @__PURE__ */ v("span", {
|
|
468
476
|
className: "flex items-center gap-1",
|
|
469
|
-
children: [/* @__PURE__ */ _(
|
|
477
|
+
children: [/* @__PURE__ */ _(d, { className: "h-3 w-3" }), e.phone]
|
|
470
478
|
})]
|
|
471
479
|
})]
|
|
472
480
|
})]
|
|
@@ -479,7 +487,7 @@ var y = [
|
|
|
479
487
|
className: "text-center",
|
|
480
488
|
children: [/* @__PURE__ */ v("p", {
|
|
481
489
|
className: "font-bold text-text-primary flex items-center gap-0.5 justify-center",
|
|
482
|
-
children: [/* @__PURE__ */ _(
|
|
490
|
+
children: [/* @__PURE__ */ _(p, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), e.performance.rating]
|
|
483
491
|
}), /* @__PURE__ */ _("p", {
|
|
484
492
|
className: "text-text-secondary",
|
|
485
493
|
children: "Rating"
|
|
@@ -509,7 +517,7 @@ var y = [
|
|
|
509
517
|
className: "text-center",
|
|
510
518
|
children: [/* @__PURE__ */ v("p", {
|
|
511
519
|
className: "font-bold text-text-primary flex items-center gap-0.5 justify-center",
|
|
512
|
-
children: [/* @__PURE__ */ _(
|
|
520
|
+
children: [/* @__PURE__ */ _(c, { className: "h-3 w-3 text-text-secondary" }), e.currentShift]
|
|
513
521
|
}), /* @__PURE__ */ _("p", {
|
|
514
522
|
className: "text-text-secondary",
|
|
515
523
|
children: "Shift"
|
|
@@ -521,24 +529,24 @@ var y = [
|
|
|
521
529
|
children: [
|
|
522
530
|
/* @__PURE__ */ _("button", {
|
|
523
531
|
type: "button",
|
|
524
|
-
onClick: () =>
|
|
532
|
+
onClick: () => ne(e.id),
|
|
525
533
|
className: t("h-6 w-11 rounded-full transition-colors relative", e.status === "active" ? "bg-green-500" : "bg-muted-foreground/30"),
|
|
526
534
|
title: e.status === "active" ? "Deactivate" : "Activate",
|
|
527
535
|
children: /* @__PURE__ */ _("div", { className: t("absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform", e.status === "active" ? "translate-x-5" : "translate-x-0.5") })
|
|
528
536
|
}),
|
|
529
537
|
/* @__PURE__ */ _("button", {
|
|
530
538
|
type: "button",
|
|
531
|
-
onClick: () =>
|
|
539
|
+
onClick: () => ee(e),
|
|
532
540
|
className: "rounded p-1.5 text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors",
|
|
533
541
|
title: "Edit",
|
|
534
|
-
children: /* @__PURE__ */ _(
|
|
542
|
+
children: /* @__PURE__ */ _(l, { className: "h-4 w-4" })
|
|
535
543
|
}),
|
|
536
544
|
/* @__PURE__ */ _("button", {
|
|
537
545
|
type: "button",
|
|
538
|
-
onClick: () =>
|
|
546
|
+
onClick: () => re(e.id),
|
|
539
547
|
className: "rounded p-1.5 text-text-secondary hover:bg-red-500/10 hover:text-red-600 transition-colors",
|
|
540
548
|
title: "Remove",
|
|
541
|
-
children: /* @__PURE__ */ _(
|
|
549
|
+
children: /* @__PURE__ */ _(m, { className: "h-4 w-4" })
|
|
542
550
|
})
|
|
543
551
|
]
|
|
544
552
|
})]
|
|
@@ -548,13 +556,13 @@ var y = [
|
|
|
548
556
|
children: [
|
|
549
557
|
/* @__PURE__ */ v("span", {
|
|
550
558
|
className: "flex items-center gap-0.5",
|
|
551
|
-
children: [/* @__PURE__ */ _(
|
|
559
|
+
children: [/* @__PURE__ */ _(p, { className: "h-3 w-3 fill-yellow-400 text-yellow-400" }), e.performance.rating]
|
|
552
560
|
}),
|
|
553
561
|
/* @__PURE__ */ v("span", { children: [e.performance.tasksCompleted, " tasks"] }),
|
|
554
562
|
/* @__PURE__ */ v("span", { children: [e.performance.punctuality, "% on time"] }),
|
|
555
563
|
e.currentShift && /* @__PURE__ */ v("span", {
|
|
556
564
|
className: "flex items-center gap-0.5",
|
|
557
|
-
children: [/* @__PURE__ */ _(
|
|
565
|
+
children: [/* @__PURE__ */ _(c, { className: "h-3 w-3" }), e.currentShift]
|
|
558
566
|
}),
|
|
559
567
|
/* @__PURE__ */ v("span", { children: [e.shiftsThisWeek, " shifts/wk"] })
|
|
560
568
|
]
|
|
@@ -564,7 +572,7 @@ var y = [
|
|
|
564
572
|
})
|
|
565
573
|
]
|
|
566
574
|
}),
|
|
567
|
-
|
|
575
|
+
I && /* @__PURE__ */ _("div", {
|
|
568
576
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
569
577
|
children: /* @__PURE__ */ _("div", {
|
|
570
578
|
className: "w-full max-w-lg rounded-lg border border-border-subtle bg-bg-surface shadow-xl",
|
|
@@ -578,7 +586,7 @@ var y = [
|
|
|
578
586
|
children: "Invite Staff Member"
|
|
579
587
|
}), /* @__PURE__ */ _("button", {
|
|
580
588
|
type: "button",
|
|
581
|
-
onClick: () =>
|
|
589
|
+
onClick: () => L(!1),
|
|
582
590
|
className: "rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken",
|
|
583
591
|
children: /* @__PURE__ */ _(g, { className: "h-5 w-5" })
|
|
584
592
|
})]
|
|
@@ -593,8 +601,8 @@ var y = [
|
|
|
593
601
|
children: "First Name *"
|
|
594
602
|
}), /* @__PURE__ */ _("input", {
|
|
595
603
|
type: "text",
|
|
596
|
-
value:
|
|
597
|
-
onChange: (e) =>
|
|
604
|
+
value: H.firstName,
|
|
605
|
+
onChange: (e) => U((t) => ({
|
|
598
606
|
...t,
|
|
599
607
|
firstName: e.target.value
|
|
600
608
|
})),
|
|
@@ -604,8 +612,8 @@ var y = [
|
|
|
604
612
|
children: "Last Name *"
|
|
605
613
|
}), /* @__PURE__ */ _("input", {
|
|
606
614
|
type: "text",
|
|
607
|
-
value:
|
|
608
|
-
onChange: (e) =>
|
|
615
|
+
value: H.lastName,
|
|
616
|
+
onChange: (e) => U((t) => ({
|
|
609
617
|
...t,
|
|
610
618
|
lastName: e.target.value
|
|
611
619
|
})),
|
|
@@ -617,8 +625,8 @@ var y = [
|
|
|
617
625
|
children: "Email *"
|
|
618
626
|
}), /* @__PURE__ */ _("input", {
|
|
619
627
|
type: "email",
|
|
620
|
-
value:
|
|
621
|
-
onChange: (e) =>
|
|
628
|
+
value: H.email,
|
|
629
|
+
onChange: (e) => U((t) => ({
|
|
622
630
|
...t,
|
|
623
631
|
email: e.target.value
|
|
624
632
|
})),
|
|
@@ -629,8 +637,8 @@ var y = [
|
|
|
629
637
|
children: "Phone"
|
|
630
638
|
}), /* @__PURE__ */ _("input", {
|
|
631
639
|
type: "tel",
|
|
632
|
-
value:
|
|
633
|
-
onChange: (e) =>
|
|
640
|
+
value: H.phone,
|
|
641
|
+
onChange: (e) => U((t) => ({
|
|
634
642
|
...t,
|
|
635
643
|
phone: e.target.value
|
|
636
644
|
})),
|
|
@@ -642,13 +650,13 @@ var y = [
|
|
|
642
650
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
643
651
|
children: "Role"
|
|
644
652
|
}), /* @__PURE__ */ _("select", {
|
|
645
|
-
value:
|
|
646
|
-
onChange: (e) =>
|
|
653
|
+
value: H.role,
|
|
654
|
+
onChange: (e) => U((t) => ({
|
|
647
655
|
...t,
|
|
648
656
|
role: e.target.value
|
|
649
657
|
})),
|
|
650
658
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
651
|
-
children: Object.entries(
|
|
659
|
+
children: Object.entries(C).map(([e, t]) => /* @__PURE__ */ _("option", {
|
|
652
660
|
value: e,
|
|
653
661
|
children: t.label
|
|
654
662
|
}, e))
|
|
@@ -657,8 +665,8 @@ var y = [
|
|
|
657
665
|
children: "Hourly Rate (₹)"
|
|
658
666
|
}), /* @__PURE__ */ _("input", {
|
|
659
667
|
type: "number",
|
|
660
|
-
value:
|
|
661
|
-
onChange: (e) =>
|
|
668
|
+
value: H.hourlyRate,
|
|
669
|
+
onChange: (e) => U((t) => ({
|
|
662
670
|
...t,
|
|
663
671
|
hourlyRate: parseInt(e.target.value) || 0
|
|
664
672
|
})),
|
|
@@ -671,12 +679,12 @@ var y = [
|
|
|
671
679
|
className: "flex gap-3 mt-6",
|
|
672
680
|
children: [/* @__PURE__ */ _("button", {
|
|
673
681
|
type: "button",
|
|
674
|
-
onClick: () =>
|
|
682
|
+
onClick: () => L(!1),
|
|
675
683
|
className: "flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
|
|
676
684
|
children: "Cancel"
|
|
677
685
|
}), /* @__PURE__ */ _("button", {
|
|
678
686
|
type: "button",
|
|
679
|
-
onClick:
|
|
687
|
+
onClick: $,
|
|
680
688
|
className: "flex-1 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80",
|
|
681
689
|
children: "Send Invite"
|
|
682
690
|
})]
|
|
@@ -685,7 +693,7 @@ var y = [
|
|
|
685
693
|
})
|
|
686
694
|
})
|
|
687
695
|
}),
|
|
688
|
-
|
|
696
|
+
R && B && /* @__PURE__ */ _("div", {
|
|
689
697
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
690
698
|
children: /* @__PURE__ */ _("div", {
|
|
691
699
|
className: "w-full max-w-lg rounded-lg border border-border-subtle bg-bg-surface shadow-xl",
|
|
@@ -699,7 +707,7 @@ var y = [
|
|
|
699
707
|
children: "Edit Staff Member"
|
|
700
708
|
}), /* @__PURE__ */ _("button", {
|
|
701
709
|
type: "button",
|
|
702
|
-
onClick: () =>
|
|
710
|
+
onClick: () => z(!1),
|
|
703
711
|
className: "rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken",
|
|
704
712
|
children: /* @__PURE__ */ _(g, { className: "h-5 w-5" })
|
|
705
713
|
})]
|
|
@@ -714,8 +722,8 @@ var y = [
|
|
|
714
722
|
children: "First Name"
|
|
715
723
|
}), /* @__PURE__ */ _("input", {
|
|
716
724
|
type: "text",
|
|
717
|
-
value:
|
|
718
|
-
onChange: (e) =>
|
|
725
|
+
value: W.firstName,
|
|
726
|
+
onChange: (e) => G((t) => ({
|
|
719
727
|
...t,
|
|
720
728
|
firstName: e.target.value
|
|
721
729
|
})),
|
|
@@ -725,8 +733,8 @@ var y = [
|
|
|
725
733
|
children: "Last Name"
|
|
726
734
|
}), /* @__PURE__ */ _("input", {
|
|
727
735
|
type: "text",
|
|
728
|
-
value:
|
|
729
|
-
onChange: (e) =>
|
|
736
|
+
value: W.lastName,
|
|
737
|
+
onChange: (e) => G((t) => ({
|
|
730
738
|
...t,
|
|
731
739
|
lastName: e.target.value
|
|
732
740
|
})),
|
|
@@ -738,8 +746,8 @@ var y = [
|
|
|
738
746
|
children: "Email"
|
|
739
747
|
}), /* @__PURE__ */ _("input", {
|
|
740
748
|
type: "email",
|
|
741
|
-
value:
|
|
742
|
-
onChange: (e) =>
|
|
749
|
+
value: W.email,
|
|
750
|
+
onChange: (e) => G((t) => ({
|
|
743
751
|
...t,
|
|
744
752
|
email: e.target.value
|
|
745
753
|
})),
|
|
@@ -750,8 +758,8 @@ var y = [
|
|
|
750
758
|
children: "Phone"
|
|
751
759
|
}), /* @__PURE__ */ _("input", {
|
|
752
760
|
type: "tel",
|
|
753
|
-
value:
|
|
754
|
-
onChange: (e) =>
|
|
761
|
+
value: W.phone,
|
|
762
|
+
onChange: (e) => G((t) => ({
|
|
755
763
|
...t,
|
|
756
764
|
phone: e.target.value
|
|
757
765
|
})),
|
|
@@ -764,13 +772,13 @@ var y = [
|
|
|
764
772
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
765
773
|
children: "Role"
|
|
766
774
|
}), /* @__PURE__ */ _("select", {
|
|
767
|
-
value:
|
|
768
|
-
onChange: (e) =>
|
|
775
|
+
value: W.role,
|
|
776
|
+
onChange: (e) => G((t) => ({
|
|
769
777
|
...t,
|
|
770
778
|
role: e.target.value
|
|
771
779
|
})),
|
|
772
780
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
773
|
-
children: Object.entries(
|
|
781
|
+
children: Object.entries(C).map(([e, t]) => /* @__PURE__ */ _("option", {
|
|
774
782
|
value: e,
|
|
775
783
|
children: t.label
|
|
776
784
|
}, e))
|
|
@@ -780,8 +788,8 @@ var y = [
|
|
|
780
788
|
children: "Rate (₹/hr)"
|
|
781
789
|
}), /* @__PURE__ */ _("input", {
|
|
782
790
|
type: "number",
|
|
783
|
-
value:
|
|
784
|
-
onChange: (e) =>
|
|
791
|
+
value: W.hourlyRate,
|
|
792
|
+
onChange: (e) => G((t) => ({
|
|
785
793
|
...t,
|
|
786
794
|
hourlyRate: parseInt(e.target.value) || 0
|
|
787
795
|
})),
|
|
@@ -791,13 +799,13 @@ var y = [
|
|
|
791
799
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
792
800
|
children: "Status"
|
|
793
801
|
}), /* @__PURE__ */ _("select", {
|
|
794
|
-
value:
|
|
795
|
-
onChange: (e) =>
|
|
802
|
+
value: W.status,
|
|
803
|
+
onChange: (e) => G((t) => ({
|
|
796
804
|
...t,
|
|
797
805
|
status: e.target.value
|
|
798
806
|
})),
|
|
799
807
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary",
|
|
800
|
-
children: Object.entries(
|
|
808
|
+
children: Object.entries(S).map(([e, t]) => /* @__PURE__ */ _("option", {
|
|
801
809
|
value: e,
|
|
802
810
|
children: t.label
|
|
803
811
|
}, e))
|
|
@@ -810,12 +818,12 @@ var y = [
|
|
|
810
818
|
className: "flex gap-3 mt-6",
|
|
811
819
|
children: [/* @__PURE__ */ _("button", {
|
|
812
820
|
type: "button",
|
|
813
|
-
onClick: () =>
|
|
821
|
+
onClick: () => z(!1),
|
|
814
822
|
className: "flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
|
|
815
823
|
children: "Cancel"
|
|
816
824
|
}), /* @__PURE__ */ _("button", {
|
|
817
825
|
type: "button",
|
|
818
|
-
onClick:
|
|
826
|
+
onClick: te,
|
|
819
827
|
className: "flex-1 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80",
|
|
820
828
|
children: "Save Changes"
|
|
821
829
|
})]
|
|
@@ -828,6 +836,6 @@ var y = [
|
|
|
828
836
|
});
|
|
829
837
|
};
|
|
830
838
|
//#endregion
|
|
831
|
-
export {
|
|
839
|
+
export { T as StaffManagementPage };
|
|
832
840
|
|
|
833
841
|
//# sourceMappingURL=StaffManagementPage.js.map
|