@burdenoff/microfe-adaptercloud 2026.625.2 → 2026.628.1
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/adaptercloud/AdapterCloudRoot.js +65 -121
- package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -1
- package/dist/adaptercloud/AdapterCloudRoutes.js +70 -182
- package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
- package/dist/adaptercloud/components/DataState.js +42 -0
- package/dist/adaptercloud/components/DataState.js.map +1 -0
- package/dist/adaptercloud/components/SeverityBadge.js +12 -0
- package/dist/adaptercloud/components/SeverityBadge.js.map +1 -0
- package/dist/adaptercloud/components/StatusBadge.js +43 -44
- package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
- package/dist/adaptercloud/context/AdapterCloudContext.js +22 -30
- package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -1
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js +397 -194
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
- package/dist/adaptercloud/index.js +1 -0
- package/dist/adaptercloud/pages/OverviewPage.js +334 -0
- package/dist/adaptercloud/pages/OverviewPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +187 -0
- package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +278 -0
- package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +172 -0
- package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +247 -0
- package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +271 -0
- package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +167 -0
- package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -0
- package/dist/adaptercloud/pages/costs/CostsPage.js +169 -0
- package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -0
- package/dist/adaptercloud/pages/drift/DriftListPage.js +132 -0
- package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PoliciesListPage.js +171 -0
- package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +185 -0
- package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PolicyFormPage.js +215 -0
- package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +207 -0
- package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/resources/ResourcesListPage.js +182 -0
- package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -0
- package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +196 -0
- package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -0
- package/dist/adaptercloud/pages/violations/ViolationsListPage.js +258 -0
- package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -0
- package/dist/adaptercloud/store/adaptercloudStore.js +1 -7
- package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -1
- package/dist/adaptercloud/utils/domain.js +105 -0
- package/dist/adaptercloud/utils/domain.js.map +1 -0
- package/dist/adaptercloud/utils/formatters.js +1 -12
- package/dist/adaptercloud/utils/formatters.js.map +1 -1
- package/dist/index.js +5 -4
- package/package.json +1 -1
- package/dist/adaptercloud/components/InvestmentCard.js +0 -98
- package/dist/adaptercloud/components/InvestmentCard.js.map +0 -1
- package/dist/adaptercloud/components/RatingDisplay.js +0 -35
- package/dist/adaptercloud/components/RatingDisplay.js.map +0 -1
- package/dist/adaptercloud/mocks/data.js +0 -1517
- package/dist/adaptercloud/mocks/data.js.map +0 -1
- package/dist/adaptercloud/mocks/users.js +0 -34
- package/dist/adaptercloud/mocks/users.js.map +0 -1
- package/dist/adaptercloud/pages/HomePage.js +0 -934
- package/dist/adaptercloud/pages/HomePage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +0 -653
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminDashboard.js +0 -665
- package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +0 -426
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +0 -665
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js +0 -261
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +0 -663
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/CartManagementPage.js +0 -874
- package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/UserManagementPage.js +0 -898
- package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +0 -840
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +0 -714
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +0 -788
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +0 -888
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +0 -634
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +0 -907
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +0 -875
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +0 -827
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/HelpSupportPage.js +0 -1329
- package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js +0 -671
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/SettingsPage.js +0 -982
- package/dist/adaptercloud/pages/common/SettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +0 -596
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CartDetailPage.js +0 -623
- package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +0 -552
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CheckoutPage.js +0 -534
- package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js +0 -525
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +0 -623
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +0 -629
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/FavoritesPage.js +0 -480
- package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +0 -444
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +0 -391
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +0 -504
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/ReviewsPage.js +0 -609
- package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +0 -459
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +0 -851
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +0 -942
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +0 -683
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js +0 -452
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +0 -402
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +0 -571
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +0 -1067
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +0 -526
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js +0 -659
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +0 -678
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +0 -689
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +0 -582
- package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StaffManagementPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/cart-owner/StaffManagementPage.tsx"],"sourcesContent":["/**\n * Staff Management Page\n *\n * Stats overview, staff list with filters (role/status/search/sort),\n * invite staff modal, edit staff modal, performance metrics per staff,\n * status toggle (activate/deactivate), role badges, schedule info.\n *\n * @module adaptercloud/pages/cart-owner\n */\n\nimport { useState, useMemo } from'react';\nimport {\n Plus,\n Trash2,\n Calendar,\n Clock,\n UserPlus,\n Phone,\n Star,\n Search,\n Edit2,\n X,\n Mail,\n CheckCircle2,\n AlertCircle,\n Shield,\n Target,\n Award,\n} from'lucide-react';\nimport { EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from'../../components/PageLayout';\nimport { EmptyState } from'../../components/EmptyState';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { formatCurrency } from'../../utils/formatters';\nimport { cn } from'../../utils/cn';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype StaffRole = 'manager' | 'chef' | 'server' | 'delivery' | 'cashier';\ntype StaffStatus = 'active' | 'inactive' | 'on-leave' | 'terminated';\n\ninterface StaffMember {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n role: StaffRole;\n status: StaffStatus;\n dateJoined: string;\n lastActive?: string;\n hourlyRate: number;\n hoursWorked: number;\n totalEarnings: number;\n performance: {\n rating: number;\n tasksCompleted: number;\n customerRating: number;\n punctuality: number;\n };\n currentShift?: string;\n shiftsThisWeek: number;\n}\n\ninterface InviteForm {\n email: string;\n firstName: string;\n lastName: string;\n phone: string;\n role: StaffRole;\n hourlyRate: number;\n}\n\ninterface EditForm {\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n role: StaffRole;\n hourlyRate: number;\n status: StaffStatus;\n}\n\ninterface StatusMessage {\n text: string;\n type: 'success' | 'error';\n}\n\n// ============================================================================\n// Mock Data\n// ============================================================================\n\nconst initialStaff: StaffMember[] = [\n {\n id: 'staff-001',\n firstName: 'Ravi',\n lastName: 'Kumar',\n email: 'ravi@dosaexpress.in',\n phone: '+91-9876543210',\n role: 'delivery',\n status: 'active',\n dateJoined: '2023-06-15',\n lastActive: '2024-01-16T10:00:00Z',\n hourlyRate: 200,\n hoursWorked: 160,\n totalEarnings: 32000,\n performance: { rating: 4.8, tasksCompleted: 245, customerRating: 4.7, punctuality: 95 },\n currentShift: '09:00 - 17:00',\n shiftsThisWeek: 5,\n },\n {\n id: 'staff-002',\n firstName: 'Suresh',\n lastName: 'Worker',\n email: 'suresh@dosaexpress.in',\n phone: '+91-9876543211',\n role: 'chef',\n status: 'active',\n dateJoined: '2023-08-20',\n lastActive: '2024-01-16T09:30:00Z',\n hourlyRate: 250,\n hoursWorked: 148,\n totalEarnings: 37000,\n performance: { rating: 4.6, tasksCompleted: 312, customerRating: 4.5, punctuality: 90 },\n currentShift: '10:00 - 18:00',\n shiftsThisWeek: 4,\n },\n {\n id: 'staff-003',\n firstName: 'Amit',\n lastName: 'Sharma',\n email: 'amit@dosaexpress.in',\n phone: '+91-9876543212',\n role: 'delivery',\n status: 'on-leave',\n dateJoined: '2023-10-01',\n hourlyRate: 180,\n hoursWorked: 120,\n totalEarnings: 21600,\n performance: { rating: 4.4, tasksCompleted: 178, customerRating: 4.3, punctuality: 85 },\n shiftsThisWeek: 0,\n },\n {\n id: 'staff-004',\n firstName: 'Priya',\n lastName: 'Helper',\n email: 'priya@dosaexpress.in',\n phone: '+91-9876543213',\n role: 'server',\n status: 'inactive',\n dateJoined: '2024-01-05',\n hourlyRate: 150,\n hoursWorked: 40,\n totalEarnings: 6000,\n performance: { rating: 4.7, tasksCompleted: 56, customerRating: 4.8, punctuality: 98 },\n shiftsThisWeek: 0,\n },\n {\n id: 'staff-005',\n firstName: 'Kiran',\n lastName: 'B.',\n email: 'kiran@dosaexpress.in',\n phone: '+91-9876543214',\n role: 'cashier',\n status: 'active',\n dateJoined: '2023-12-10',\n lastActive: '2024-01-16T11:00:00Z',\n hourlyRate: 175,\n hoursWorked: 80,\n totalEarnings: 14000,\n performance: { rating: 4.3, tasksCompleted: 134, customerRating: 4.2, punctuality: 88 },\n currentShift: '11:00 - 19:00',\n shiftsThisWeek: 5,\n },\n {\n id: 'staff-006',\n firstName: 'Meera',\n lastName: 'Devi',\n email: 'meera@dosaexpress.in',\n phone: '+91-9876543215',\n role: 'manager',\n status: 'active',\n dateJoined: '2023-04-01',\n lastActive: '2024-01-16T08:00:00Z',\n hourlyRate: 350,\n hoursWorked: 168,\n totalEarnings: 58800,\n performance: { rating: 4.9, tasksCompleted: 420, customerRating: 4.9, punctuality: 99 },\n currentShift: '08:00 - 16:00',\n shiftsThisWeek: 6,\n },\n];\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst statusConfig: Record<StaffStatus, { label: string; color: string; dot: string }> = {\n active: { label: 'Active', color: 'text-status-success-text', dot: 'bg-status-success-bg-subtle' },\n inactive: { label: 'Inactive', color: 'text-text-secondary', dot: 'bg-muted-foreground' },\n 'on-leave': {\n label: 'On Leave',\n color: 'text-status-warning-text',\n dot: 'bg-status-warning-bg-subtle',\n },\n terminated: { label: 'Terminated', color: 'text-status-error-text', dot: 'bg-status-error-bg-subtle' },\n};\n\nconst roleConfig: Record<StaffRole, { label: string; color: string }> = {\n manager: { label: 'Manager', color: 'bg-accent-purple-subtle/20 text-accent-purple' },\n chef: { label: 'Chef', color: 'bg-accent-orange-subtle/20 text-accent-orange' },\n server: { label: 'Server', color: 'bg-accent-blue-subtle/20 text-accent-blue' },\n delivery: { label: 'Delivery', color: 'bg-status-success-bg-subtle/20 text-status-success-text' },\n cashier: { label: 'Cashier', color: 'bg-accent-cyan-subtle/20 text-accent-cyan' },\n};\n\nconst emptyInviteForm: InviteForm = {\n email: '',\n firstName: '',\n lastName: '',\n phone: '',\n role: 'server',\n hourlyRate: 150,\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const StaffManagementPage = () => {\n const { navigateTo } = useAdapterCloud();\n\n // Data\n const [staff, setStaff] = useState<StaffMember[]>(initialStaff);\n\n // Filters\n const [searchQuery, setSearchQuery] = useState('');\n const [roleFilter, setRoleFilter] = useState('');\n const [statusFilter, setStatusFilter] = useState('');\n const [sortBy, setSortBy] = useState('name');\n\n // Modals\n const [showInviteModal, setShowInviteModal] = useState(false);\n const [showEditModal, setShowEditModal] = useState(false);\n const [selectedStaff, setSelectedStaff] = useState<StaffMember | null>(null);\n const [inviteForm, setInviteForm] = useState<InviteForm>(emptyInviteForm);\n const [editForm, setEditForm] = useState<EditForm>({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n role: 'server',\n hourlyRate: 150,\n status: 'active',\n });\n\n // Status\n const [statusMessage, setStatusMessage] = useState<StatusMessage | null>(null);\n\n const showStatus = (text: string, type: 'success' | 'error') => {\n setStatusMessage({ text, type });\n setTimeout(() => setStatusMessage(null), 3000);\n };\n\n // ---- Stats ----\n const activeCount = staff.filter((s) => s.status === 'active').length;\n const onLeaveCount = staff.filter((s) => s.status === 'on-leave').length;\n const avgRating =\n staff.length > 0\n ? (staff.reduce((a, s) => a + s.performance.rating, 0) / staff.length).toFixed(1)\n : '0';\n const totalEarnings = staff.reduce((a, s) => a + s.totalEarnings, 0);\n\n // ---- Filtered staff ----\n const filteredStaff = useMemo(() => {\n let result = [...staff];\n\n if (searchQuery) {\n const q = searchQuery.toLowerCase();\n result = result.filter(\n (s) =>\n `${s.firstName} ${s.lastName}`.toLowerCase().includes(q) ||\n s.email.toLowerCase().includes(q) ||\n s.phone.includes(q)\n );\n }\n if (roleFilter) result = result.filter((s) => s.role === roleFilter);\n if (statusFilter) result = result.filter((s) => s.status === statusFilter);\n\n switch (sortBy) {\n case'name':\n result.sort((a, b) =>\n `${a.firstName} ${a.lastName}`.localeCompare(`${b.firstName} ${b.lastName}`)\n );\n break;\n case'rating':\n result.sort((a, b) => b.performance.rating - a.performance.rating);\n break;\n case'hours':\n result.sort((a, b) => b.hoursWorked - a.hoursWorked);\n break;\n case'joined':\n result.sort((a, b) => new Date(b.dateJoined).getTime() - new Date(a.dateJoined).getTime());\n break;\n }\n\n return result;\n }, [staff, searchQuery, roleFilter, statusFilter, sortBy]);\n\n // ---- Handlers ----\n const handleInviteStaff = () => {\n if (!inviteForm.email || !inviteForm.firstName || !inviteForm.lastName) {\n showStatus('Please fill in all required fields', 'error');\n return;\n }\n const newStaff: StaffMember = {\n id: `staff-${Date.now()}`,\n ...inviteForm,\n status: 'active',\n dateJoined: new Date().toISOString().split('T')[0],\n hoursWorked: 0,\n totalEarnings: 0,\n performance: { rating: 0, tasksCompleted: 0, customerRating: 0, punctuality: 0 },\n shiftsThisWeek: 0,\n };\n setStaff((prev) => [...prev, newStaff]);\n setShowInviteModal(false);\n setInviteForm(emptyInviteForm);\n showStatus('Staff member invited successfully', 'success');\n };\n\n const handleEditStaff = (member: StaffMember) => {\n setSelectedStaff(member);\n setEditForm({\n firstName: member.firstName,\n lastName: member.lastName,\n email: member.email,\n phone: member.phone,\n role: member.role,\n hourlyRate: member.hourlyRate,\n status: member.status,\n });\n setShowEditModal(true);\n };\n\n const handleSaveEdit = () => {\n if (!selectedStaff) return;\n setStaff((prev) => prev.map((s) => (s.id === selectedStaff.id ? { ...s, ...editForm } : s)));\n setShowEditModal(false);\n showStatus('Staff member updated successfully', 'success');\n };\n\n const handleToggleStatus = (id: string) => {\n setStaff((prev) =>\n prev.map((s) => {\n if (s.id === id) {\n const newStatus: StaffStatus = s.status === 'active' ? 'inactive' : 'active';\n return { ...s, status: newStatus };\n }\n return s;\n })\n );\n showStatus('Staff status updated', 'success');\n };\n\n const handleRemoveStaff = (id: string) => {\n if (!confirm('Are you sure you want to remove this staff member?')) return;\n setStaff((prev) => prev.filter((s) => s.id !== id));\n showStatus('Staff member removed', 'success');\n };\n\n return (\n <PageLayout\n title=\"Staff Management\"\n description=\"Manage your workers, delivery partners, and shifts\"\n purpose=\"Build and run your team — invite workers and delivery partners, set their roles, and schedule shifts so you always have enough hands during your busy hours. A well-staffed cart fulfils orders faster.\"\n actions={\n <button\n type=\"button\"\n onClick={() => {\n setInviteForm(emptyInviteForm);\n setShowInviteModal(true);\n }}\n 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\"\n >\n <UserPlus className=\"h-4 w-4\" />\n Invite Staff\n </button>\n }\n >\n <div className=\"space-y-4\">\n {/* Status Message */}\n {statusMessage && (\n <div\n className={cn(\n 'flex items-center gap-2 rounded-lg border p-3',\n statusMessage.type === 'success'\n ? 'border-status-success-border/30 bg-status-success-bg-subtle/10'\n : 'border-status-error-border/30 bg-status-error-bg-subtle/10'\n )}\n >\n {statusMessage.type === 'success' ? (\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text\" />\n ) : (\n <AlertCircle className=\"h-4 w-4 text-status-error-text\" />\n )}\n <span\n className={cn(\n 'text-sm font-medium',\n statusMessage.type === 'success'\n ? 'text-status-success-text'\n : 'text-status-error-text'\n )}\n >\n {statusMessage.text}\n </span>\n </div>\n )}\n\n {/* Summary Stats (emphasis zone) */}\n <EmphasisPanel>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-2xl font-bold text-text-primary\">{staff.length}</p>\n <p className=\"text-xs text-text-secondary\">Total Staff</p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-2xl font-bold text-status-success-text\">{activeCount}</p>\n <p className=\"text-xs text-text-secondary\">Active Now</p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-2xl font-bold text-status-warning-text\">\n {onLeaveCount}\n </p>\n <p className=\"text-xs text-text-secondary\">On Leave</p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-2xl font-bold text-text-primary\">{avgRating}</p>\n <p className=\"text-xs text-text-secondary\">Avg. Rating</p>\n </div>\n </div>\n </EmphasisPanel>\n\n {/* Filters */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <input\n type=\"text\"\n placeholder=\"Search staff...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n 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)]\"\n />\n </div>\n <select\n value={roleFilter}\n onChange={(e) => setRoleFilter(e.target.value)}\n className=\"rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"\">All Roles</option>\n {Object.entries(roleConfig).map(([key, val]) => (\n <option key={key} value={key}>\n {val.label}\n </option>\n ))}\n </select>\n <select\n value={statusFilter}\n onChange={(e) => setStatusFilter(e.target.value)}\n className=\"rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"\">All Status</option>\n {Object.entries(statusConfig).map(([key, val]) => (\n <option key={key} value={key}>\n {val.label}\n </option>\n ))}\n </select>\n <select\n value={sortBy}\n onChange={(e) => setSortBy(e.target.value)}\n className=\"rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"name\">Name A-Z</option>\n <option value=\"rating\">Rating: High to Low</option>\n <option value=\"hours\">Hours: Most Worked</option>\n <option value=\"joined\">Recently Joined</option>\n </select>\n </div>\n </div>\n\n {/* Staff List */}\n {filteredStaff.length === 0 ? (\n <EmptyState\n illustration=\"empty-people\"\n title=\"No staff members found\"\n description={\n staff.length === 0\n ? 'Invite your first worker or delivery partner to get started.'\n : 'No staff match your filters. Try adjusting them.'\n }\n />\n ) : (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm divide-y divide-border\">\n {filteredStaff.map((member) => {\n const status = statusConfig[member.status];\n const role = roleConfig[member.role];\n const initials = `${member.firstName[0]}${member.lastName[0]}`;\n\n return (\n <div key={member.id} className=\"p-4 sm:p-5 hover:bg-bg-sunken/30 transition-colors\">\n <div className=\"flex flex-col sm:flex-row sm:items-center gap-4\">\n {/* Avatar + Info */}\n <div className=\"flex items-center gap-4 flex-1 min-w-0\">\n <div className=\"relative shrink-0\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-bg-sunken text-sm font-semibold text-text-primary\">\n {initials}\n </div>\n <span\n className={cn(\n 'absolute -bottom-0.5 -right-0.5 h-3.5 w-3.5 rounded-full border-2 border-card',\n status.dot\n )}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <p className=\"text-sm font-medium text-text-primary\">\n {member.firstName} {member.lastName}\n </p>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium',\n role.color\n )}\n >\n {role.label}\n </span>\n <span className={cn('text-xs', status.color)}>{status.label}</span>\n </div>\n <div className=\"flex items-center gap-3 mt-1 text-xs text-text-secondary flex-wrap\">\n <span className=\"flex items-center gap-1\">\n <Mail className=\"h-3 w-3\" />\n {member.email}\n </span>\n <span className=\"flex items-center gap-1\">\n <Phone className=\"h-3 w-3\" />\n {member.phone}\n </span>\n </div>\n </div>\n </div>\n\n {/* Performance + Actions */}\n <div className=\"flex items-center gap-4 sm:gap-6\">\n {/* Performance metrics */}\n <div className=\"hidden md:flex items-center gap-4 text-xs\">\n <div className=\"text-center\">\n <p className=\"font-bold text-text-primary flex items-center gap-0.5 justify-center\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n {member.performance.rating}\n </p>\n <p className=\"text-text-secondary\">Rating</p>\n </div>\n <div className=\"text-center\">\n <p className=\"font-bold text-text-primary\">\n {member.performance.tasksCompleted}\n </p>\n <p className=\"text-text-secondary\">Tasks</p>\n </div>\n <div className=\"text-center\">\n <p className=\"font-bold text-text-primary\">\n {member.performance.punctuality}%\n </p>\n <p className=\"text-text-secondary\">On Time</p>\n </div>\n {member.currentShift && (\n <div className=\"text-center\">\n <p className=\"font-bold text-text-primary flex items-center gap-0.5 justify-center\">\n <Clock className=\"h-3 w-3 text-text-secondary\" />\n {member.currentShift}\n </p>\n <p className=\"text-text-secondary\">Shift</p>\n </div>\n )}\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => handleToggleStatus(member.id)}\n className={cn(\n 'h-6 w-11 rounded-full transition-colors relative',\n member.status === 'active' ? 'bg-status-success-bg-subtle' : 'bg-muted-foreground/30'\n )}\n title={member.status === 'active' ? 'Deactivate' : 'Activate'}\n >\n <div\n className={cn(\n 'absolute top-0.5 h-5 w-5 rounded-full bg-white transition-transform',\n member.status === 'active' ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n <button\n type=\"button\"\n onClick={() => handleEditStaff(member)}\n className=\"rounded p-1.5 text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors\"\n title=\"Edit\"\n >\n <Edit2 className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => handleRemoveStaff(member.id)}\n className=\"rounded p-1.5 text-text-secondary hover:bg-status-error-bg-subtle/10 hover:text-status-error-text transition-colors\"\n title=\"Remove\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {/* Mobile performance row */}\n <div className=\"md:hidden flex items-center gap-4 mt-3 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-0.5\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n {member.performance.rating}\n </span>\n <span>{member.performance.tasksCompleted} tasks</span>\n <span>{member.performance.punctuality}% on time</span>\n {member.currentShift && (\n <span className=\"flex items-center gap-0.5\">\n <Clock className=\"h-3 w-3\" />\n {member.currentShift}\n </span>\n )}\n <span>{member.shiftsThisWeek} shifts/wk</span>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {/* Invite Staff Modal */}\n {showInviteModal && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div className=\"w-full max-w-lg rounded-lg border border-border-subtle bg-bg-surface shadow-xl\">\n <div className=\"p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-semibold text-text-primary\">Invite Staff Member</h3>\n <button\n type=\"button\"\n onClick={() => setShowInviteModal(false)}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n First Name *\n </label>\n <input\n type=\"text\"\n value={inviteForm.firstName}\n onChange={(e) => setInviteForm((p) => ({ ...p, firstName: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Last Name *\n </label>\n <input\n type=\"text\"\n value={inviteForm.lastName}\n onChange={(e) => setInviteForm((p) => ({ ...p, lastName: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Email *</label>\n <input\n type=\"email\"\n value={inviteForm.email}\n onChange={(e) => setInviteForm((p) => ({ ...p, email: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Phone</label>\n <input\n type=\"tel\"\n value={inviteForm.phone}\n onChange={(e) => setInviteForm((p) => ({ ...p, phone: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Role</label>\n <select\n value={inviteForm.role}\n onChange={(e) =>\n setInviteForm((p) => ({ ...p, role: e.target.value as StaffRole }))\n }\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n {Object.entries(roleConfig).map(([key, val]) => (\n <option key={key} value={key}>\n {val.label}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Hourly Rate (₹)\n </label>\n <input\n type=\"number\"\n value={inviteForm.hourlyRate}\n onChange={(e) =>\n setInviteForm((p) => ({ ...p, hourlyRate: parseInt(e.target.value) || 0 }))\n }\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n </div>\n </div>\n <div className=\"flex gap-3 mt-6\">\n <button\n type=\"button\"\n onClick={() => setShowInviteModal(false)}\n className=\"flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleInviteStaff}\n className=\"flex-1 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80\"\n >\n Send Invite\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Edit Staff Modal */}\n {showEditModal && selectedStaff && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div className=\"w-full max-w-lg rounded-lg border border-border-subtle bg-bg-surface shadow-xl\">\n <div className=\"p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-semibold text-text-primary\">Edit Staff Member</h3>\n <button\n type=\"button\"\n onClick={() => setShowEditModal(false)}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-bg-sunken\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n First Name\n </label>\n <input\n type=\"text\"\n value={editForm.firstName}\n onChange={(e) => setEditForm((p) => ({ ...p, firstName: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Last Name\n </label>\n <input\n type=\"text\"\n value={editForm.lastName}\n onChange={(e) => setEditForm((p) => ({ ...p, lastName: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Email</label>\n <input\n type=\"email\"\n value={editForm.email}\n onChange={(e) => setEditForm((p) => ({ ...p, email: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Phone</label>\n <input\n type=\"tel\"\n value={editForm.phone}\n onChange={(e) => setEditForm((p) => ({ ...p, phone: e.target.value }))}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div className=\"grid grid-cols-3 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Role</label>\n <select\n value={editForm.role}\n onChange={(e) =>\n setEditForm((p) => ({ ...p, role: e.target.value as StaffRole }))\n }\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n {Object.entries(roleConfig).map(([key, val]) => (\n <option key={key} value={key}>\n {val.label}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Rate (₹/hr)\n </label>\n <input\n type=\"number\"\n value={editForm.hourlyRate}\n onChange={(e) =>\n setEditForm((p) => ({ ...p, hourlyRate: parseInt(e.target.value) || 0 }))\n }\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Status</label>\n <select\n value={editForm.status}\n onChange={(e) =>\n setEditForm((p) => ({ ...p, status: e.target.value as StaffStatus }))\n }\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n {Object.entries(statusConfig).map(([key, val]) => (\n <option key={key} value={key}>\n {val.label}\n </option>\n ))}\n </select>\n </div>\n </div>\n </div>\n <div className=\"flex gap-3 mt-6\">\n <button\n type=\"button\"\n onClick={() => setShowEditModal(false)}\n className=\"flex-1 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleSaveEdit}\n className=\"flex-1 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80\"\n >\n Save Changes\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|