@burdenoff/microfe-atheletebridge 2026.614.1 → 2026.625.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.
Files changed (110) hide show
  1. package/dist/atheletebridge/components/EmptyState.js +20 -13
  2. package/dist/atheletebridge/components/EmptyState.js.map +1 -1
  3. package/dist/atheletebridge/components/InvestmentCard.js +13 -13
  4. package/dist/atheletebridge/components/InvestmentCard.js.map +1 -1
  5. package/dist/atheletebridge/components/MetricsCard.js +23 -17
  6. package/dist/atheletebridge/components/MetricsCard.js.map +1 -1
  7. package/dist/atheletebridge/components/PageLayout.js +30 -19
  8. package/dist/atheletebridge/components/PageLayout.js.map +1 -1
  9. package/dist/atheletebridge/components/RatingDisplay.js +3 -3
  10. package/dist/atheletebridge/components/RatingDisplay.js.map +1 -1
  11. package/dist/atheletebridge/components/StatusBadge.js +2 -2
  12. package/dist/atheletebridge/components/StatusBadge.js.map +1 -1
  13. package/dist/atheletebridge/pages/HomePage.js +263 -252
  14. package/dist/atheletebridge/pages/HomePage.js.map +1 -1
  15. package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js +60 -60
  16. package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js.map +1 -1
  17. package/dist/atheletebridge/pages/admin/AdminDashboard.js +77 -77
  18. package/dist/atheletebridge/pages/admin/AdminDashboard.js.map +1 -1
  19. package/dist/atheletebridge/pages/admin/AdminFinancialPage.js +43 -43
  20. package/dist/atheletebridge/pages/admin/AdminFinancialPage.js.map +1 -1
  21. package/dist/atheletebridge/pages/admin/AdminOrdersPage.js +85 -85
  22. package/dist/atheletebridge/pages/admin/AdminOrdersPage.js.map +1 -1
  23. package/dist/atheletebridge/pages/admin/AdminProfilePage.js +34 -34
  24. package/dist/atheletebridge/pages/admin/AdminProfilePage.js.map +1 -1
  25. package/dist/atheletebridge/pages/admin/AdminSettingsPage.js +40 -40
  26. package/dist/atheletebridge/pages/admin/AdminSettingsPage.js.map +1 -1
  27. package/dist/atheletebridge/pages/admin/CartManagementPage.js +86 -86
  28. package/dist/atheletebridge/pages/admin/CartManagementPage.js.map +1 -1
  29. package/dist/atheletebridge/pages/admin/UserManagementPage.js +80 -80
  30. package/dist/atheletebridge/pages/admin/UserManagementPage.js.map +1 -1
  31. package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js +100 -100
  32. package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  33. package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js +29 -29
  34. package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  35. package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js +81 -81
  36. package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  37. package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js +100 -100
  38. package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  39. package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js +67 -67
  40. package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  41. package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js +94 -94
  42. package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  43. package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js +57 -57
  44. package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js.map +1 -1
  45. package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js +75 -75
  46. package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js.map +1 -1
  47. package/dist/atheletebridge/pages/common/HelpSupportPage.js +102 -102
  48. package/dist/atheletebridge/pages/common/HelpSupportPage.js.map +1 -1
  49. package/dist/atheletebridge/pages/common/NotificationCenterPage.js +36 -35
  50. package/dist/atheletebridge/pages/common/NotificationCenterPage.js.map +1 -1
  51. package/dist/atheletebridge/pages/common/SettingsPage.js +109 -109
  52. package/dist/atheletebridge/pages/common/SettingsPage.js.map +1 -1
  53. package/dist/atheletebridge/pages/customer/BookingDetailsPage.js +61 -60
  54. package/dist/atheletebridge/pages/customer/BookingDetailsPage.js.map +1 -1
  55. package/dist/atheletebridge/pages/customer/CartDetailPage.js +72 -71
  56. package/dist/atheletebridge/pages/customer/CartDetailPage.js.map +1 -1
  57. package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js +55 -54
  58. package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js.map +1 -1
  59. package/dist/atheletebridge/pages/customer/CheckoutPage.js +75 -75
  60. package/dist/atheletebridge/pages/customer/CheckoutPage.js.map +1 -1
  61. package/dist/atheletebridge/pages/customer/CustomerDashboard.js +69 -69
  62. package/dist/atheletebridge/pages/customer/CustomerDashboard.js.map +1 -1
  63. package/dist/atheletebridge/pages/customer/CustomerProfilePage.js +72 -72
  64. package/dist/atheletebridge/pages/customer/CustomerProfilePage.js.map +1 -1
  65. package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js +76 -75
  66. package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js.map +1 -1
  67. package/dist/atheletebridge/pages/customer/FavoritesPage.js +31 -30
  68. package/dist/atheletebridge/pages/customer/FavoritesPage.js.map +1 -1
  69. package/dist/atheletebridge/pages/customer/OrderHistoryPage.js +42 -41
  70. package/dist/atheletebridge/pages/customer/OrderHistoryPage.js.map +1 -1
  71. package/dist/atheletebridge/pages/customer/OrderTrackingPage.js +54 -53
  72. package/dist/atheletebridge/pages/customer/OrderTrackingPage.js.map +1 -1
  73. package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js +52 -51
  74. package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js.map +1 -1
  75. package/dist/atheletebridge/pages/customer/ReviewsPage.js +34 -33
  76. package/dist/atheletebridge/pages/customer/ReviewsPage.js.map +1 -1
  77. package/dist/atheletebridge/pages/customer/SavedAddressesPage.js +34 -33
  78. package/dist/atheletebridge/pages/customer/SavedAddressesPage.js.map +1 -1
  79. package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js +108 -108
  80. package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js.map +1 -1
  81. package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js +77 -76
  82. package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  83. package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js +69 -69
  84. package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  85. package/dist/atheletebridge/pages/investor/InvestorDashboard.js +53 -53
  86. package/dist/atheletebridge/pages/investor/InvestorDashboard.js.map +1 -1
  87. package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js +33 -32
  88. package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  89. package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js +55 -55
  90. package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js.map +1 -1
  91. package/dist/atheletebridge/pages/investor/InvestorProfilePage.js +138 -138
  92. package/dist/atheletebridge/pages/investor/InvestorProfilePage.js.map +1 -1
  93. package/dist/atheletebridge/pages/worker/TaskDetailsPage.js +66 -65
  94. package/dist/atheletebridge/pages/worker/TaskDetailsPage.js.map +1 -1
  95. package/dist/atheletebridge/pages/worker/WorkerDashboard.js +74 -74
  96. package/dist/atheletebridge/pages/worker/WorkerDashboard.js.map +1 -1
  97. package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js +50 -49
  98. package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js.map +1 -1
  99. package/dist/atheletebridge/pages/worker/WorkerProfilePage.js +92 -92
  100. package/dist/atheletebridge/pages/worker/WorkerProfilePage.js.map +1 -1
  101. package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js +57 -55
  102. package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js.map +1 -1
  103. package/dist/atheletebridge/utils/cn.js +2 -2
  104. package/dist/node_modules/{.bun/clsx@2.1.1/node_modules/clsx → clsx}/dist/clsx.js +1 -1
  105. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  106. package/dist/node_modules/{.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge → tailwind-merge}/dist/bundle-mjs.js +212 -170
  107. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  108. package/package.json +3 -3
  109. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +0 -1
  110. package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerDashboard.js","names":[],"sources":["../../../../src/atheletebridge/pages/worker/WorkerDashboard.tsx"],"sourcesContent":["/**\n * Worker Dashboard Page\n *\n * Full-featured worker dashboard with:\n * - Loading state with spinner\n * - Clock In/Out toggle with time tracking\n * - Quick Actions bar\n * - 6 stat cards (Completed, In Progress, Pending, Hours Worked, Efficiency, Rating)\n * - Current Task section with complete/pause buttons\n * - Assigned Tasks list sorted by priority\n * - Recently Completed section\n * - Performance Metrics grid\n * - Shift Information section\n *\n * @module atheletebridge/pages/worker\n */\n\nimport { useState } from 'react';\nimport {\n CheckCircle2,\n Star,\n ClipboardList,\n Clock,\n MapPin,\n ChevronRight,\n Package,\n Loader2,\n Timer,\n Pause,\n Play,\n Truck,\n ChefHat,\n Boxes,\n Sparkles,\n CalendarDays,\n User,\n TrendingUp,\n Zap,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useAthleteBridge } from '../../context/AthleteBridgeContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n useWorkerClockInOut,\n} from '../../hooks/useAthleteBridgeApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst priorityStyles: Record<string, string> = {\n high: 'bg-red-500/20 text-red-600 dark:text-red-400',\n medium: 'bg-yellow-500/20 text-yellow-600 dark:text-yellow-400',\n low: 'bg-green-500/20 text-green-600 dark:text-green-400',\n};\n\nconst statusStyles: Record<string, string> = {\n pending: 'bg-secondary text-secondary-foreground',\n in_progress: 'bg-blue-500/20 text-blue-600 dark:text-blue-400',\n completed: 'bg-green-500/20 text-green-600 dark:text-green-400',\n};\n\nfunction getTaskIcon(type: string) {\n switch (type) {\n case 'delivery':\n return Truck;\n case 'preparation':\n return ChefHat;\n case 'inventory':\n return Boxes;\n case 'cleanup':\n return Sparkles;\n default:\n return ClipboardList;\n }\n}\n\nconst priorityOrder: Record<string, number> = { high: 3, medium: 2, low: 1 };\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const WorkerDashboard = () => {\n const { navigateTo, currentUser } = useAthleteBridge();\n const workerId = currentUser?.id || '';\n\n const { data: tasks = [], isLoading: isLoadingTasks } = useWorkerTasks(workerId);\n const { data: stats, isLoading: isLoadingStats } = useWorkerStats(workerId);\n const updateTaskStatus = useUpdateWorkerTaskStatus();\n const clockInOut = useWorkerClockInOut();\n\n const [activeTaskId, setActiveTaskId] = useState<string | null>(null);\n const [isClockedIn, setIsClockedIn] = useState(false);\n const [clockInTime, setClockInTime] = useState<string | null>(null);\n\n const handleTaskAction = async (taskId: string, action: 'start' | 'complete' | 'pause') => {\n let status = '';\n switch (action) {\n case 'start':\n status = 'IN_PROGRESS';\n setActiveTaskId(taskId);\n break;\n case 'complete':\n status = 'COMPLETED';\n if (activeTaskId === taskId) setActiveTaskId(null);\n break;\n case 'pause':\n status = 'PENDING';\n if (activeTaskId === taskId) setActiveTaskId(null);\n break;\n }\n\n try {\n await updateTaskStatus.mutateAsync({ taskId, status });\n } catch (error) {\n console.error('Failed to update task status:', error);\n alert('Failed to update task status. Please try again.');\n }\n };\n\n const handleClockToggle = async () => {\n const action = isClockedIn ? 'CLOCK_OUT' : 'CLOCK_IN';\n try {\n const result = await clockInOut.mutateAsync({ workerId, action });\n if (result.success) {\n if (isClockedIn) {\n setIsClockedIn(false);\n setClockInTime(null);\n } else {\n const now = new Date().toLocaleTimeString('en-IN', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n });\n setIsClockedIn(true);\n setClockInTime(now);\n }\n alert(result.message || `${isClockedIn ? 'Clocked out' : 'Clocked in'} successfully`);\n }\n } catch (error) {\n console.error('Failed to clock in/out:', error);\n alert('Action failed. Please try again.');\n }\n };\n\n // Loading state\n if (isLoadingTasks || isLoadingStats) {\n return (\n <PageLayout title=\"Dashboard\" description=\"Your work overview for today\">\n <div className=\"flex items-center justify-center py-24\">\n <div className=\"text-center\">\n <Loader2 className=\"h-10 w-10 animate-spin text-muted-foreground mx-auto mb-4\" />\n <p className=\"text-sm text-muted-foreground\">Loading your dashboard...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n const currentTask = activeTaskId ? tasks.find((t) => t.id === activeTaskId) : null;\n const assignedTasks = tasks\n .filter((t) => t.status !== 'completed')\n .sort((a, b) => (priorityOrder[b.priority] ?? 0) - (priorityOrder[a.priority] ?? 0));\n const completedTasks = tasks.filter((t) => t.status === 'completed');\n\n return (\n <PageLayout\n title=\"Dashboard\"\n description=\"Manage your tasks and assignments\"\n actions={\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-foreground hover:bg-accent/80 transition-colors\"\n >\n View All Orders\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n }\n >\n <div className=\"space-y-6\">\n {/* Quick Actions */}\n <div>\n <h2 className=\"text-base font-semibold text-foreground mb-3\">Quick Actions</h2>\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border bg-card px-4 py-3 text-sm font-medium text-foreground hover:bg-muted transition-colors\"\n >\n <Package className=\"h-4 w-4\" />\n My Orders\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/schedule')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border bg-card px-4 py-3 text-sm font-medium text-foreground hover:bg-muted transition-colors\"\n >\n <CalendarDays className=\"h-4 w-4\" />\n Schedule\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/profile')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border bg-card px-4 py-3 text-sm font-medium text-foreground hover:bg-muted transition-colors\"\n >\n <User className=\"h-4 w-4\" />\n Profile\n </button>\n <button\n type=\"button\"\n onClick={handleClockToggle}\n className={cn(\n 'flex items-center justify-center gap-2 rounded-lg px-4 py-3 text-sm font-medium transition-colors',\n isClockedIn\n ? 'bg-red-500/10 text-red-600 dark:text-red-400 border border-red-500/30 hover:bg-red-500/20'\n : 'bg-green-500/10 text-green-600 dark:text-green-400 border border-green-500/30 hover:bg-green-500/20'\n )}\n >\n <Timer className=\"h-4 w-4\" />\n {isClockedIn ? 'Clock Out' : 'Clock In'}\n </button>\n </div>\n </div>\n\n {/* Today's Overview + Clock-in status */}\n {stats && (\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <h2 className=\"text-base font-semibold text-foreground\">Today's Overview</h2>\n {isClockedIn && clockInTime && (\n <div className=\"flex items-center gap-2 rounded-lg bg-green-500/10 border border-green-500/20 px-3 py-1.5\">\n <span className=\"relative flex h-2 w-2\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75\" />\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-green-500\" />\n </span>\n <span className=\"text-xs font-medium text-green-600 dark:text-green-400\">\n Working since {clockInTime}\n </span>\n </div>\n )}\n </div>\n <div className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3\">\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-green-500/10 text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-green-600 dark:text-green-400\">\n {stats.tasksCompleted}\n </p>\n <p className=\"text-xs text-muted-foreground\">Completed</p>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-blue-500/10 text-blue-600 dark:text-blue-400\">\n <Play className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-blue-600 dark:text-blue-400\">\n {stats.tasksInProgress}\n </p>\n <p className=\"text-xs text-muted-foreground\">In Progress</p>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-yellow-500/10 text-yellow-600 dark:text-yellow-400\">\n <Clock className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-yellow-600 dark:text-yellow-400\">\n {stats.tasksPending}\n </p>\n <p className=\"text-xs text-muted-foreground\">Pending</p>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-purple-500/10 text-purple-600 dark:text-purple-400\">\n <Timer className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-purple-600 dark:text-purple-400\">\n {stats.hoursWorked}h\n </p>\n <p className=\"text-xs text-muted-foreground\">Hours Worked</p>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-indigo-500/10 text-indigo-600 dark:text-indigo-400\">\n <Zap className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-indigo-600 dark:text-indigo-400\">\n {stats.efficiency}%\n </p>\n <p className=\"text-xs text-muted-foreground\">Efficiency</p>\n </div>\n <div className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-yellow-500/10 text-yellow-600 dark:text-yellow-400\">\n <Star className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-yellow-500\">{stats.rating}/5</p>\n <p className=\"text-xs text-muted-foreground\">Rating</p>\n </div>\n </div>\n </div>\n )}\n\n {/* Current Task */}\n {currentTask && (\n <div>\n <h2 className=\"text-base font-semibold text-foreground mb-3\">Current Task</h2>\n <div className=\"rounded-lg border-2 border-blue-500/40 bg-blue-500/5 p-6\">\n <div className=\"flex items-start justify-between mb-4\">\n <div className=\"flex items-start gap-3\">\n {(() => {\n const TaskIcon = getTaskIcon(currentTask.type);\n return (\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-blue-500/10\">\n <TaskIcon className=\"h-5 w-5 text-blue-600 dark:text-blue-400\" />\n </div>\n );\n })()}\n <div>\n <h3 className=\"text-lg font-semibold text-foreground\">{currentTask.title}</h3>\n <p className=\"text-sm text-muted-foreground mt-1\">{currentTask.description}</p>\n <div className=\"flex flex-wrap items-center gap-3 mt-2 text-sm text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3.5 w-3.5\" />\n {currentTask.estimatedTime} min\n </span>\n {currentTask.dueTime && (\n <span className=\"flex items-center gap-1\">\n <Timer className=\"h-3.5 w-3.5\" />\n Due: {currentTask.dueTime}\n </span>\n )}\n {currentTask.location && (\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3.5 w-3.5\" />\n {currentTask.location}\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex gap-2 shrink-0\">\n <button\n type=\"button\"\n onClick={() => handleTaskAction(currentTask.id, 'complete')}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-green-500/10 px-3 py-2 text-sm font-medium text-green-600 dark:text-green-400 hover:bg-green-500/20 transition-colors\"\n >\n <CheckCircle2 className=\"h-4 w-4\" />\n Complete\n </button>\n <button\n type=\"button\"\n onClick={() => handleTaskAction(currentTask.id, 'pause')}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-sm font-medium text-foreground hover:bg-accent/80 transition-colors\"\n >\n <Pause className=\"h-4 w-4\" />\n Pause\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Assigned Tasks */}\n <div>\n <h2 className=\"text-base font-semibold text-foreground mb-3\">Assigned Tasks</h2>\n <div className=\"rounded-lg border border-border bg-card shadow-sm overflow-hidden\">\n {assignedTasks.length > 0 ? (\n <div className=\"divide-y divide-border\">\n {assignedTasks.map((task) => {\n const TaskIcon = getTaskIcon(task.type);\n return (\n <div key={task.id} className=\"p-4 hover:bg-muted/30 transition-colors\">\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3\">\n <div className=\"flex items-start gap-3 flex-1 min-w-0\">\n <div className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted\">\n <TaskIcon className=\"h-4.5 w-4.5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 mb-1\">\n <h3 className=\"text-sm font-medium text-foreground\">{task.title}</h3>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n priorityStyles[task.priority]\n )}\n >\n {task.priority}\n </span>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium',\n statusStyles[task.status]\n )}\n >\n {task.status.replace('_', ' ')}\n </span>\n </div>\n <p className=\"text-xs text-muted-foreground line-clamp-1\">\n {task.description}\n </p>\n <div className=\"flex flex-wrap items-center gap-3 mt-1.5 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <User className=\"h-3 w-3\" />\n {task.assignedBy}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {task.estimatedTime} min\n </span>\n {task.dueTime && (\n <span className=\"flex items-center gap-1\">\n <Timer className=\"h-3 w-3\" />\n Due: {task.dueTime}\n </span>\n )}\n {task.location && (\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {task.location}\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex gap-2 shrink-0\">\n {task.status === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleTaskAction(task.id, 'start')}\n disabled={activeTaskId !== null}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n activeTaskId !== null\n ? 'bg-muted text-muted-foreground cursor-not-allowed'\n : 'bg-blue-500/10 text-blue-600 dark:text-blue-400 hover:bg-blue-500/20'\n )}\n >\n <Play className=\"h-3.5 w-3.5\" />\n Start\n </button>\n )}\n {task.status === 'in_progress' && task.id !== activeTaskId && (\n <button\n type=\"button\"\n onClick={() => setActiveTaskId(task.id)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors\"\n >\n <Play className=\"h-3.5 w-3.5\" />\n Resume\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors\"\n >\n Details\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"p-8 text-center\">\n <CheckCircle2 className=\"h-10 w-10 text-green-500 opacity-40 mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">All tasks completed!</p>\n </div>\n )}\n </div>\n </div>\n\n {/* Recently Completed */}\n <div>\n <h2 className=\"text-base font-semibold text-foreground mb-3\">Recently Completed</h2>\n <div className=\"rounded-lg border border-border bg-card p-5 shadow-sm\">\n {completedTasks.length > 0 ? (\n <div className=\"space-y-3\">\n {completedTasks.slice(0, 3).map((task) => {\n const TaskIcon = getTaskIcon(task.type);\n return (\n <div\n key={task.id}\n className=\"flex items-center gap-3 p-3 rounded-lg bg-green-500/5 border border-green-500/10\"\n >\n <div className=\"flex h-8 w-8 items-center justify-center rounded-md bg-green-500/10\">\n <TaskIcon className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-foreground\">{task.title}</p>\n <p className=\"text-xs text-muted-foreground\">\n Completed at{' '}\n {new Date().toLocaleTimeString('en-IN', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n })}\n </p>\n </div>\n <CheckCircle2 className=\"h-4 w-4 text-green-600 dark:text-green-400 shrink-0\" />\n </div>\n );\n })}\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground text-center py-4\">\n No completed tasks yet today\n </p>\n )}\n </div>\n </div>\n\n {/* Performance Metrics + Shift Information */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n {/* Performance This Week */}\n <div className=\"rounded-lg border border-border bg-card p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-foreground flex items-center gap-2 mb-4\">\n <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n Performance This Week\n </h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Tasks Completed</span>\n <span className=\"text-sm font-medium text-foreground\">47</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Average Time per Task</span>\n <span className=\"text-sm font-medium text-foreground\">23 min</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">On-time Completion</span>\n <span className=\"text-sm font-medium text-foreground\">94%</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Customer Feedback</span>\n <span className=\"text-sm font-medium text-foreground flex items-center gap-1\">\n 4.7/5\n <Star className=\"h-3.5 w-3.5 fill-yellow-400 text-yellow-400\" />\n </span>\n </div>\n </div>\n </div>\n\n {/* Shift Information */}\n <div className=\"rounded-lg border border-border bg-card p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-foreground flex items-center gap-2 mb-4\">\n <CalendarDays className=\"h-4 w-4 text-muted-foreground\" />\n Shift Information\n </h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Shift Start</span>\n <span className=\"text-sm font-medium text-foreground\">9:00 AM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Shift End</span>\n <span className=\"text-sm font-medium text-foreground\">6:00 PM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Break Time</span>\n <span className=\"text-sm font-medium text-foreground\">1:00 PM - 2:00 PM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Supervisor</span>\n <span className=\"text-sm font-medium text-foreground\">Rajesh Kumar</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Overall Stats */}\n <div className=\"rounded-lg border border-border bg-card p-5 shadow-sm\">\n <h2 className=\"text-base font-semibold text-foreground mb-4\">Overall Performance</h2>\n <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-4\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Total Deliveries</p>\n <p className=\"text-lg font-bold text-foreground\">{stats?.totalDeliveries || 0}</p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Total Earnings</p>\n <p className=\"text-lg font-bold text-foreground\">\n {formatCurrency(stats?.totalEarnings || 0, { minimumFractionDigits: 0 })}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Average Rating</p>\n <p className=\"text-lg font-bold text-foreground flex items-center gap-1\">\n {stats?.averageRating || 0}\n <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Completion Rate</p>\n <p className=\"text-lg font-bold text-foreground\">{stats?.completionRate || 0}%</p>\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":";;;;;;;;;AAsDA,IAAM,IAAyC;CAC7C,MAAM;CACN,QAAQ;CACR,KAAK;CACN,EAEK,IAAuC;CAC3C,SAAS;CACT,aAAa;CACb,WAAW;CACZ;AAED,SAAS,EAAY,GAAc;AACjC,SAAQ,GAAR;EACE,KAAK,WACH,QAAO;EACT,KAAK,cACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,QACE,QAAO;;;AAIb,IAAM,IAAwC;CAAE,MAAM;CAAG,QAAQ;CAAG,KAAK;CAAG,EAM/D,UAAwB;CACnC,IAAM,EAAE,eAAY,mBAAgB,GAAkB,EAChD,IAAW,GAAa,MAAM,IAE9B,EAAE,MAAM,IAAQ,EAAE,EAAE,WAAW,MAAmB,EAAe,EAAS,EAC1E,EAAE,MAAM,GAAO,WAAW,MAAmB,EAAe,EAAS,EACrE,IAAmB,GAA2B,EAC9C,IAAa,GAAqB,EAElC,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAC/D,CAAC,GAAa,KAAkB,EAAS,GAAM,EAC/C,CAAC,GAAa,KAAkB,EAAwB,KAAK,EAE7D,IAAmB,OAAO,GAAgB,MAA2C;EACzF,IAAI,IAAS;AACb,UAAQ,GAAR;GACE,KAAK;AAEH,IADA,IAAS,eACT,EAAgB,EAAO;AACvB;GACF,KAAK;AAEH,IADA,IAAS,aACL,MAAiB,KAAQ,EAAgB,KAAK;AAClD;GACF,KAAK;AAEH,IADA,IAAS,WACL,MAAiB,KAAQ,EAAgB,KAAK;AAClD;;AAGJ,MAAI;AACF,SAAM,EAAiB,YAAY;IAAE;IAAQ;IAAQ,CAAC;WAC/C,GAAO;AAEd,GADA,QAAQ,MAAM,iCAAiC,EAAM,EACrD,MAAM,kDAAkD;;IAItD,IAAoB,YAAY;EACpC,IAAM,IAAS,IAAc,cAAc;AAC3C,MAAI;GACF,IAAM,IAAS,MAAM,EAAW,YAAY;IAAE;IAAU;IAAQ,CAAC;AACjE,OAAI,EAAO,SAAS;AAClB,QAAI,EAEF,CADA,EAAe,GAAM,EACrB,EAAe,KAAK;SACf;KACL,IAAM,qBAAM,IAAI,MAAM,EAAC,mBAAmB,SAAS;MACjD,MAAM;MACN,QAAQ;MACR,QAAQ;MACT,CAAC;AAEF,KADA,EAAe,GAAK,EACpB,EAAe,EAAI;;AAErB,UAAM,EAAO,WAAW,GAAG,IAAc,gBAAgB,aAAa,eAAe;;WAEhF,GAAO;AAEd,GADA,QAAQ,MAAM,2BAA2B,EAAM,EAC/C,MAAM,mCAAmC;;;AAK7C,KAAI,KAAkB,EACpB,QACE,kBAAC,GAAD;EAAY,OAAM;EAAY,aAAY;YACxC,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAS,WAAU,6DAA8D,CAAA,EACjF,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAA6B,CAAA,CACtE;;GACF,CAAA;EACK,CAAA;CAIjB,IAAM,IAAc,IAAe,EAAM,MAAM,MAAM,EAAE,OAAO,EAAa,GAAG,MACxE,IAAgB,EACnB,QAAQ,MAAM,EAAE,WAAW,YAAY,CACvC,MAAM,GAAG,OAAO,EAAc,EAAE,aAAa,MAAM,EAAc,EAAE,aAAa,GAAG,EAChF,IAAiB,EAAM,QAAQ,MAAM,EAAE,WAAW,YAAY;AAEpE,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;EACZ,SACE,kBAAC,UAAD;GACE,MAAK;GACL,eAAe,EAAW,iBAAiB;GAC3C,WAAU;aAHZ,CAIC,mBAEC,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,CAC7B;;YAGX,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA+C;KAAkB,CAAA,EAC/E,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,EAAW,iBAAiB;OAC3C,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAS,WAAU,WAAY,CAAA,EAAA,YAExB;;MACT,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,EAAW,mBAAmB;OAC7C,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EAAA,WAE7B;;MACT,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,EAAW,kBAAkB;OAC5C,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAAA,UAErB;;MACT,kBAAC,UAAD;OACE,MAAK;OACL,SAAS;OACT,WAAW,EACT,qGACA,IACI,8FACA,sGACL;iBARH,CAUE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC5B,IAAc,cAAc,WACtB;;MACL;OACF,EAAA,CAAA;IAGL,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,WAAU;gBAA0C;MAAqB,CAAA,EAC5E,KAAe,KACd,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CACE,kBAAC,QAAD,EAAM,WAAU,wFAAyF,CAAA,EACzG,kBAAC,QAAD,EAAM,WAAU,0DAA2D,CAAA,CACtE;UACP,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAyE,kBACxD,EACV;SACH;QAEJ;QACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA;UAChC,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAM;SACL,CAAA;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAa,CAAA;QACtD;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;UACxB,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAM;SACL,CAAA;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAe,CAAA;QACxD;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;UACzB,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAM;SACL,CAAA;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAW,CAAA;QACpD;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;UACzB,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBAAb,CACG,EAAM,aAAY,IACjB;;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAgB,CAAA;QACzD;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA;UACvB,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBAAb,CACG,EAAM,YAAW,IAChB;;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAc,CAAA;QACvD;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;UACxB,CAAA;SACF,CAAA;QACN,kBAAC,KAAD;SAAG,WAAU;mBAAb,CAAmD,EAAM,QAAO,KAAM;;QACtE,kBAAC,KAAD;SAAG,WAAU;mBAAgC;SAAU,CAAA;QACnD;;MACF;OACF,EAAA,CAAA;IAIP,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA+C;KAAiB,CAAA,EAC9E,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CAIM,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAHa,EAAY,EAAY,KAAK,EAG1C,EAAU,WAAU,4CAA6C,CAAA;QAC7D,CAAA,EAGV,kBAAC,OAAD,EAAA,UAAA;QACE,kBAAC,MAAD;SAAI,WAAU;mBAAyC,EAAY;SAAW,CAAA;QAC9E,kBAAC,KAAD;SAAG,WAAU;mBAAsC,EAAY;SAAgB,CAAA;QAC/E,kBAAC,OAAD;SAAK,WAAU;mBAAf;UACE,kBAAC,QAAD;WAAM,WAAU;qBAAhB;YACE,kBAAC,GAAD,EAAO,WAAU,eAAgB,CAAA;YAChC,EAAY;YAAc;YACtB;;UACN,EAAY,WACX,kBAAC,QAAD;WAAM,WAAU;qBAAhB;YACE,kBAAC,GAAD,EAAO,WAAU,eAAgB,CAAA;;YAC3B,EAAY;YACb;;UAER,EAAY,YACX,kBAAC,QAAD;WAAM,WAAU;qBAAhB,CACE,kBAAC,GAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAY,SACR;;UAEL;;QACF,EAAA,CAAA,CACF;UACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,UAAD;QACE,MAAK;QACL,eAAe,EAAiB,EAAY,IAAI,WAAW;QAC3D,WAAU;kBAHZ,CAKE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EAAA,WAE7B;WACT,kBAAC,UAAD;QACE,MAAK;QACL,eAAe,EAAiB,EAAY,IAAI,QAAQ;QACxD,WAAU;kBAHZ,CAKE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAAA,QAEtB;UACL;SACF;;KACF,CAAA,CACF,EAAA,CAAA;IAIR,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA+C;KAAmB,CAAA,EAChF,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAc,SAAS,IACtB,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAc,KAAK,MAGhB,kBAAC,OAAD;OAAmB,WAAU;iBAC3B,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBACb,kBANO,EAAY,EAAK,KAAK,EAM7B,EAAU,WAAU,qCAAsC,CAAA;UACtD,CAAA,EACN,kBAAC,OAAD;UAAK,WAAU;oBAAf;WACE,kBAAC,OAAD;YAAK,WAAU;sBAAf;aACE,kBAAC,MAAD;cAAI,WAAU;wBAAuC,EAAK;cAAW,CAAA;aACrE,kBAAC,QAAD;cACE,WAAW,EACT,wFACA,EAAe,EAAK,UACrB;wBAEA,EAAK;cACD,CAAA;aACP,kBAAC,QAAD;cACE,WAAW,EACT,6EACA,EAAa,EAAK,QACnB;wBAEA,EAAK,OAAO,QAAQ,KAAK,IAAI;cACzB,CAAA;aACH;;WACN,kBAAC,KAAD;YAAG,WAAU;sBACV,EAAK;YACJ,CAAA;WACJ,kBAAC,OAAD;YAAK,WAAU;sBAAf;aACE,kBAAC,QAAD;cAAM,WAAU;wBAAhB,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAK,WACD;;aACP,kBAAC,QAAD;cAAM,WAAU;wBAAhB;eACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;eAC5B,EAAK;eAAc;eACf;;aACN,EAAK,WACJ,kBAAC,QAAD;cAAM,WAAU;wBAAhB;eACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;;eACvB,EAAK;eACN;;aAER,EAAK,YACJ,kBAAC,QAAD;cAAM,WAAU;wBAAhB,CACE,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA,EAC7B,EAAK,SACD;;aAEL;;WACF;YACF;YACN,kBAAC,OAAD;SAAK,WAAU;mBAAf;UACG,EAAK,WAAW,aACf,kBAAC,UAAD;WACE,MAAK;WACL,eAAe,EAAiB,EAAK,IAAI,QAAQ;WACjD,UAAU,MAAiB;WAC3B,WAAW,EACT,iGACA,MAAiB,OAEb,yEADA,oDAEL;qBATH,CAWE,kBAAC,GAAD,EAAM,WAAU,eAAgB,CAAA,EAAA,QAEzB;;UAEV,EAAK,WAAW,iBAAiB,EAAK,OAAO,KAC5C,kBAAC,UAAD;WACE,MAAK;WACL,eAAe,EAAgB,EAAK,GAAG;WACvC,WAAU;qBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,eAAgB,CAAA,EAAA,SAEzB;;UAEX,kBAAC,UAAD;WACE,MAAK;WACL,eAAe,EAAW,gBAAgB,EAAK,KAAK;WACpD,WAAU;qBAHZ,CAIC,WAEC,kBAAC,GAAD,EAAc,WAAU,eAAgB,CAAA,CACjC;;UACL;WACF;;OACF,EA1FI,EAAK,GA0FT,CAER;MACE,CAAA,GAEN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAc,WAAU,oDAAqD,CAAA,EAC7E,kBAAC,KAAD;OAAG,WAAU;iBAAgC;OAAwB,CAAA,CACjE;;KAEJ,CAAA,CACF,EAAA,CAAA;IAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA+C;KAAuB,CAAA,EACpF,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAe,SAAS,IACvB,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAe,MAAM,GAAG,EAAE,CAAC,KAAK,MAG7B,kBAAC,OAAD;OAEE,WAAU;iBAFZ;QAIE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAPW,EAAY,EAAK,KAAK,EAOjC,EAAU,WAAU,8CAA+C,CAAA;SAC/D,CAAA;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,KAAD;UAAG,WAAU;oBAAuC,EAAK;UAAU,CAAA,EACnE,kBAAC,KAAD;UAAG,WAAU;oBAAb;WAA6C;WAC9B;4BACZ,IAAI,MAAM,EAAC,mBAAmB,SAAS;YACtC,MAAM;YACN,QAAQ;YACR,QAAQ;YACT,CAAC;WACA;YACA;;QACN,kBAAC,GAAD,EAAc,WAAU,uDAAwD,CAAA;QAC5E;SAlBC,EAAK,GAkBN,CAER;MACE,CAAA,GAEN,kBAAC,KAAD;MAAG,WAAU;gBAAiD;MAE1D,CAAA;KAEF,CAAA,CACF,EAAA,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CAEE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACE,kBAAC,GAAD,EAAY,WAAU,iCAAkC,CAAA,EAAA,wBAErD;UACL,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAsB,CAAA,EACtE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAS,CAAA,CAC3D;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAA4B,CAAA,EAC5E,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAa,CAAA,CAC/D;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAyB,CAAA,EACzE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAU,CAAA,CAC5D;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAwB,CAAA,EACxE,kBAAC,QAAD;UAAM,WAAU;oBAAhB,CAA8E,SAE5E,kBAAC,GAAD,EAAM,WAAU,+CAAgD,CAAA,CAC3D;YACH;;QACF;SACF;SAGN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACE,kBAAC,GAAD,EAAc,WAAU,iCAAkC,CAAA,EAAA,oBAEvD;UACL,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAkB,CAAA,EAClE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAc,CAAA,CAChE;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAgB,CAAA,EAChE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAc,CAAA,CAChE;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAiB,CAAA,EACjE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAwB,CAAA,CAC1E;;QACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAgC;UAAiB,CAAA,EACjE,kBAAC,QAAD;UAAM,WAAU;oBAAsC;UAAmB,CAAA,CACrE;;QACF;SACF;QACF;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,WAAU;gBAA+C;MAAwB,CAAA,EACrF,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAoB,CAAA,EACjE,kBAAC,KAAD;QAAG,WAAU;kBAAqC,GAAO,mBAAmB;QAAM,CAAA,CAC9E,EAAA,CAAA;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAkB,CAAA,EAC/D,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAe,GAAO,iBAAiB,GAAG,EAAE,uBAAuB,GAAG,CAAC;QACtE,CAAA,CACA,EAAA,CAAA;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAkB,CAAA,EAC/D,kBAAC,KAAD;QAAG,WAAU;kBAAb,CACG,GAAO,iBAAiB,GACzB,kBAAC,GAAD,EAAM,WAAU,2CAA4C,CAAA,CAC1D;UACA,EAAA,CAAA;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAmB,CAAA,EAChE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,GAAO,kBAAkB,GAAE,IAAK;UAC9E,EAAA,CAAA;OACF;QACF;;IACF;;EACK,CAAA"}
1
+ {"version":3,"file":"WorkerDashboard.js","names":[],"sources":["../../../../src/atheletebridge/pages/worker/WorkerDashboard.tsx"],"sourcesContent":["/**\n * Worker Dashboard Page\n *\n * Full-featured worker dashboard with:\n * - Loading state with spinner\n * - Clock In/Out toggle with time tracking\n * - Quick Actions bar\n * - 6 stat cards (Completed, In Progress, Pending, Hours Worked, Efficiency, Rating)\n * - Current Task section with complete/pause buttons\n * - Assigned Tasks list sorted by priority\n * - Recently Completed section\n * - Performance Metrics grid\n * - Shift Information section\n *\n * @module atheletebridge/pages/worker\n */\n\nimport { useState } from 'react';\nimport {\n CheckCircle2,\n Star,\n ClipboardList,\n Clock,\n MapPin,\n ChevronRight,\n Package,\n Loader2,\n Timer,\n Pause,\n Play,\n Truck,\n ChefHat,\n Boxes,\n Sparkles,\n CalendarDays,\n User,\n TrendingUp,\n Zap,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useAthleteBridge } from '../../context/AthleteBridgeContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n useWorkerClockInOut,\n} from '../../hooks/useAthleteBridgeApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst priorityStyles: Record<string, string> = {\n high: 'bg-red-500/20 text-red-600 dark:text-red-400',\n medium: 'bg-yellow-500/20 text-yellow-600 dark:text-yellow-400',\n low: 'bg-green-500/20 text-green-600 dark:text-green-400',\n};\n\nconst statusStyles: Record<string, string> = {\n pending: 'bg-secondary text-secondary-foreground',\n in_progress: 'bg-blue-500/20 text-blue-600 dark:text-blue-400',\n completed: 'bg-green-500/20 text-green-600 dark:text-green-400',\n};\n\nfunction getTaskIcon(type: string) {\n switch (type) {\n case 'delivery':\n return Truck;\n case 'preparation':\n return ChefHat;\n case 'inventory':\n return Boxes;\n case 'cleanup':\n return Sparkles;\n default:\n return ClipboardList;\n }\n}\n\nconst priorityOrder: Record<string, number> = { high: 3, medium: 2, low: 1 };\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const WorkerDashboard = () => {\n const { navigateTo, currentUser } = useAthleteBridge();\n const workerId = currentUser?.id || '';\n\n const { data: tasks = [], isLoading: isLoadingTasks } = useWorkerTasks(workerId);\n const { data: stats, isLoading: isLoadingStats } = useWorkerStats(workerId);\n const updateTaskStatus = useUpdateWorkerTaskStatus();\n const clockInOut = useWorkerClockInOut();\n\n const [activeTaskId, setActiveTaskId] = useState<string | null>(null);\n const [isClockedIn, setIsClockedIn] = useState(false);\n const [clockInTime, setClockInTime] = useState<string | null>(null);\n\n const handleTaskAction = async (taskId: string, action: 'start' | 'complete' | 'pause') => {\n let status = '';\n switch (action) {\n case 'start':\n status = 'IN_PROGRESS';\n setActiveTaskId(taskId);\n break;\n case 'complete':\n status = 'COMPLETED';\n if (activeTaskId === taskId) setActiveTaskId(null);\n break;\n case 'pause':\n status = 'PENDING';\n if (activeTaskId === taskId) setActiveTaskId(null);\n break;\n }\n\n try {\n await updateTaskStatus.mutateAsync({ taskId, status });\n } catch (error) {\n console.error('Failed to update task status:', error);\n alert('Failed to update task status. Please try again.');\n }\n };\n\n const handleClockToggle = async () => {\n const action = isClockedIn ? 'CLOCK_OUT' : 'CLOCK_IN';\n try {\n const result = await clockInOut.mutateAsync({ workerId, action });\n if (result.success) {\n if (isClockedIn) {\n setIsClockedIn(false);\n setClockInTime(null);\n } else {\n const now = new Date().toLocaleTimeString('en-IN', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n });\n setIsClockedIn(true);\n setClockInTime(now);\n }\n alert(result.message || `${isClockedIn ? 'Clocked out' : 'Clocked in'} successfully`);\n }\n } catch (error) {\n console.error('Failed to clock in/out:', error);\n alert('Action failed. Please try again.');\n }\n };\n\n // Loading state\n if (isLoadingTasks || isLoadingStats) {\n return (\n <PageLayout title=\"Dashboard\" description=\"Your work overview for today\">\n <div className=\"flex items-center justify-center py-24\">\n <div className=\"text-center\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mx-auto mb-4\" />\n <p className=\"text-sm text-text-secondary\">Loading your dashboard...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n const currentTask = activeTaskId ? tasks.find((t) => t.id === activeTaskId) : null;\n const assignedTasks = tasks\n .filter((t) => t.status !== 'completed')\n .sort((a, b) => (priorityOrder[b.priority] ?? 0) - (priorityOrder[a.priority] ?? 0));\n const completedTasks = tasks.filter((t) => t.status === 'completed');\n\n return (\n <PageLayout\n title=\"Dashboard\"\n description=\"Manage your tasks and assignments\"\n actions={\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\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 View All Orders\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n }\n >\n <div className=\"space-y-6\">\n {/* Quick Actions */}\n <div>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Quick Actions</h2>\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border-subtle bg-bg-surface px-4 py-3 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Package className=\"h-4 w-4\" />\n My Orders\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/schedule')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border-subtle bg-bg-surface px-4 py-3 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <CalendarDays className=\"h-4 w-4\" />\n Schedule\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/profile')}\n className=\"flex items-center justify-center gap-2 rounded-lg border border-border-subtle bg-bg-surface px-4 py-3 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <User className=\"h-4 w-4\" />\n Profile\n </button>\n <button\n type=\"button\"\n onClick={handleClockToggle}\n className={cn(\n 'flex items-center justify-center gap-2 rounded-lg px-4 py-3 text-sm font-medium transition-colors',\n isClockedIn\n ? 'bg-red-500/10 text-red-600 dark:text-red-400 border border-red-500/30 hover:bg-red-500/20'\n : 'bg-green-500/10 text-green-600 dark:text-green-400 border border-green-500/30 hover:bg-green-500/20'\n )}\n >\n <Timer className=\"h-4 w-4\" />\n {isClockedIn ? 'Clock Out' : 'Clock In'}\n </button>\n </div>\n </div>\n\n {/* Today's Overview + Clock-in status */}\n {stats && (\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <h2 className=\"text-base font-semibold text-text-primary\">Today's Overview</h2>\n {isClockedIn && clockInTime && (\n <div className=\"flex items-center gap-2 rounded-lg bg-green-500/10 border border-green-500/20 px-3 py-1.5\">\n <span className=\"relative flex h-2 w-2\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75\" />\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-green-500\" />\n </span>\n <span className=\"text-xs font-medium text-green-600 dark:text-green-400\">\n Working since {clockInTime}\n </span>\n </div>\n )}\n </div>\n <div className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-green-500/10 text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-green-600 dark:text-green-400\">\n {stats.tasksCompleted}\n </p>\n <p className=\"text-xs text-text-secondary\">Completed</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-blue-500/10 text-blue-600 dark:text-blue-400\">\n <Play className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-blue-600 dark:text-blue-400\">\n {stats.tasksInProgress}\n </p>\n <p className=\"text-xs text-text-secondary\">In Progress</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-yellow-500/10 text-yellow-600 dark:text-yellow-400\">\n <Clock className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-yellow-600 dark:text-yellow-400\">\n {stats.tasksPending}\n </p>\n <p className=\"text-xs text-text-secondary\">Pending</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-purple-500/10 text-purple-600 dark:text-purple-400\">\n <Timer className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-purple-600 dark:text-purple-400\">\n {stats.hoursWorked}h\n </p>\n <p className=\"text-xs text-text-secondary\">Hours Worked</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-indigo-500/10 text-indigo-600 dark:text-indigo-400\">\n <Zap className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-indigo-600 dark:text-indigo-400\">\n {stats.efficiency}%\n </p>\n <p className=\"text-xs text-text-secondary\">Efficiency</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"flex items-center gap-2 mb-2\">\n <div className=\"inline-flex rounded-md p-1.5 bg-yellow-500/10 text-yellow-600 dark:text-yellow-400\">\n <Star className=\"h-4 w-4\" />\n </div>\n </div>\n <p className=\"text-2xl font-bold text-yellow-500\">{stats.rating}/5</p>\n <p className=\"text-xs text-text-secondary\">Rating</p>\n </div>\n </div>\n </div>\n )}\n\n {/* Current Task */}\n {currentTask && (\n <div>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Current Task</h2>\n <div className=\"rounded-lg border-2 border-blue-500/40 bg-blue-500/5 p-6\">\n <div className=\"flex items-start justify-between mb-4\">\n <div className=\"flex items-start gap-3\">\n {(() => {\n const TaskIcon = getTaskIcon(currentTask.type);\n return (\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-blue-500/10\">\n <TaskIcon className=\"h-5 w-5 text-blue-600 dark:text-blue-400\" />\n </div>\n );\n })()}\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">{currentTask.title}</h3>\n <p className=\"text-sm text-text-secondary mt-1\">{currentTask.description}</p>\n <div className=\"flex flex-wrap items-center gap-3 mt-2 text-sm text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3.5 w-3.5\" />\n {currentTask.estimatedTime} min\n </span>\n {currentTask.dueTime && (\n <span className=\"flex items-center gap-1\">\n <Timer className=\"h-3.5 w-3.5\" />\n Due: {currentTask.dueTime}\n </span>\n )}\n {currentTask.location && (\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3.5 w-3.5\" />\n {currentTask.location}\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex gap-2 shrink-0\">\n <button\n type=\"button\"\n onClick={() => handleTaskAction(currentTask.id, 'complete')}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-green-500/10 px-3 py-2 text-sm font-medium text-green-600 dark:text-green-400 hover:bg-green-500/20 transition-colors\"\n >\n <CheckCircle2 className=\"h-4 w-4\" />\n Complete\n </button>\n <button\n type=\"button\"\n onClick={() => handleTaskAction(currentTask.id, 'pause')}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Pause className=\"h-4 w-4\" />\n Pause\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Assigned Tasks */}\n <div>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Assigned Tasks</h2>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden\">\n {assignedTasks.length > 0 ? (\n <div className=\"divide-y divide-border\">\n {assignedTasks.map((task) => {\n const TaskIcon = getTaskIcon(task.type);\n return (\n <div key={task.id} className=\"p-4 hover:bg-bg-sunken/30 transition-colors\">\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3\">\n <div className=\"flex items-start gap-3 flex-1 min-w-0\">\n <div className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-bg-sunken\">\n <TaskIcon className=\"h-4.5 w-4.5 text-text-secondary\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 mb-1\">\n <h3 className=\"text-sm font-medium text-text-primary\">{task.title}</h3>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n priorityStyles[task.priority]\n )}\n >\n {task.priority}\n </span>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium',\n statusStyles[task.status]\n )}\n >\n {task.status.replace('_', ' ')}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary line-clamp-1\">\n {task.description}\n </p>\n <div className=\"flex flex-wrap items-center gap-3 mt-1.5 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <User className=\"h-3 w-3\" />\n {task.assignedBy}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {task.estimatedTime} min\n </span>\n {task.dueTime && (\n <span className=\"flex items-center gap-1\">\n <Timer className=\"h-3 w-3\" />\n Due: {task.dueTime}\n </span>\n )}\n {task.location && (\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {task.location}\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex gap-2 shrink-0\">\n {task.status === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleTaskAction(task.id, 'start')}\n disabled={activeTaskId !== null}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n activeTaskId !== null\n ? 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-blue-500/10 text-blue-600 dark:text-blue-400 hover:bg-blue-500/20'\n )}\n >\n <Play className=\"h-3.5 w-3.5\" />\n Start\n </button>\n )}\n {task.status === 'in_progress' && task.id !== activeTaskId && (\n <button\n type=\"button\"\n onClick={() => setActiveTaskId(task.id)}\n 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\"\n >\n <Play className=\"h-3.5 w-3.5\" />\n Resume\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n 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\"\n >\n Details\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"p-8 text-center\">\n <CheckCircle2 className=\"h-10 w-10 text-green-500 opacity-40 mx-auto mb-2\" />\n <p className=\"text-sm text-text-secondary\">All tasks completed!</p>\n </div>\n )}\n </div>\n </div>\n\n {/* Recently Completed */}\n <div>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Recently Completed</h2>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm\">\n {completedTasks.length > 0 ? (\n <div className=\"space-y-3\">\n {completedTasks.slice(0, 3).map((task) => {\n const TaskIcon = getTaskIcon(task.type);\n return (\n <div\n key={task.id}\n className=\"flex items-center gap-3 p-3 rounded-lg bg-green-500/5 border border-green-500/10\"\n >\n <div className=\"flex h-8 w-8 items-center justify-center rounded-md bg-green-500/10\">\n <TaskIcon className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-text-primary\">{task.title}</p>\n <p className=\"text-xs text-text-secondary\">\n Completed at{' '}\n {new Date().toLocaleTimeString('en-IN', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n })}\n </p>\n </div>\n <CheckCircle2 className=\"h-4 w-4 text-green-600 dark:text-green-400 shrink-0\" />\n </div>\n );\n })}\n </div>\n ) : (\n <p className=\"text-sm text-text-secondary text-center py-4\">\n No completed tasks yet today\n </p>\n )}\n </div>\n </div>\n\n {/* Performance Metrics + Shift Information */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n {/* Performance This Week */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary flex items-center gap-2 mb-4\">\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n Performance This Week\n </h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Tasks Completed</span>\n <span className=\"text-sm font-medium text-text-primary\">47</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Average Time per Task</span>\n <span className=\"text-sm font-medium text-text-primary\">23 min</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">On-time Completion</span>\n <span className=\"text-sm font-medium text-text-primary\">94%</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Customer Feedback</span>\n <span className=\"text-sm font-medium text-text-primary flex items-center gap-1\">\n 4.7/5\n <Star className=\"h-3.5 w-3.5 fill-yellow-400 text-yellow-400\" />\n </span>\n </div>\n </div>\n </div>\n\n {/* Shift Information */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary flex items-center gap-2 mb-4\">\n <CalendarDays className=\"h-4 w-4 text-text-secondary\" />\n Shift Information\n </h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Shift Start</span>\n <span className=\"text-sm font-medium text-text-primary\">9:00 AM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Shift End</span>\n <span className=\"text-sm font-medium text-text-primary\">6:00 PM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Break Time</span>\n <span className=\"text-sm font-medium text-text-primary\">1:00 PM - 2:00 PM</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Supervisor</span>\n <span className=\"text-sm font-medium text-text-primary\">Rajesh Kumar</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Overall Stats */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm\">\n <h2 className=\"text-base font-semibold text-text-primary mb-4\">Overall Performance</h2>\n <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-4\">\n <div>\n <p className=\"text-xs text-text-secondary\">Total Deliveries</p>\n <p className=\"text-lg font-bold text-text-primary\">{stats?.totalDeliveries || 0}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Total Earnings</p>\n <p className=\"text-lg font-bold text-text-primary\">\n {formatCurrency(stats?.totalEarnings || 0, { minimumFractionDigits: 0 })}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Average Rating</p>\n <p className=\"text-lg font-bold text-text-primary flex items-center gap-1\">\n {stats?.averageRating || 0}\n <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Completion Rate</p>\n <p className=\"text-lg font-bold text-text-primary\">{stats?.completionRate || 0}%</p>\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
@@ -239,8 +239,8 @@ var A = () => {
239
239
  className: "flex items-center justify-center py-24",
240
240
  children: /* @__PURE__ */ T("div", {
241
241
  className: "text-center",
242
- children: [/* @__PURE__ */ w(h, { className: "h-10 w-10 animate-spin text-muted-foreground mx-auto mb-4" }), /* @__PURE__ */ w("p", {
243
- className: "text-sm text-muted-foreground",
242
+ children: [/* @__PURE__ */ w(h, { className: "h-10 w-10 animate-spin text-text-secondary mx-auto mb-4" }), /* @__PURE__ */ w("p", {
243
+ className: "text-sm text-text-secondary",
244
244
  children: "Loading tasks..."
245
245
  })]
246
246
  })
@@ -255,12 +255,12 @@ var A = () => {
255
255
  className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-3",
256
256
  children: [
257
257
  /* @__PURE__ */ T("div", {
258
- className: "rounded-lg border border-border bg-card p-4 shadow-sm",
258
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
259
259
  children: [/* @__PURE__ */ w("p", {
260
- className: "text-xs text-muted-foreground",
260
+ className: "text-xs text-text-secondary",
261
261
  children: "Today's Tasks"
262
262
  }), /* @__PURE__ */ w("p", {
263
- className: "text-2xl font-bold text-foreground",
263
+ className: "text-2xl font-bold text-text-primary",
264
264
  children: F.totalTasks
265
265
  })]
266
266
  }),
@@ -285,32 +285,32 @@ var A = () => {
285
285
  })]
286
286
  }),
287
287
  /* @__PURE__ */ T("div", {
288
- className: "rounded-lg border border-border bg-card p-4 shadow-sm",
288
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
289
289
  children: [/* @__PURE__ */ w("p", {
290
- className: "text-xs text-muted-foreground",
290
+ className: "text-xs text-text-secondary",
291
291
  children: "Avg Time"
292
292
  }), /* @__PURE__ */ T("p", {
293
- className: "text-2xl font-bold text-foreground",
293
+ className: "text-2xl font-bold text-text-primary",
294
294
  children: [F.averageTime, " min"]
295
295
  })]
296
296
  }),
297
297
  /* @__PURE__ */ T("div", {
298
- className: "rounded-lg border border-border bg-card p-4 shadow-sm",
298
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
299
299
  children: [/* @__PURE__ */ w("p", {
300
- className: "text-xs text-muted-foreground",
300
+ className: "text-xs text-text-secondary",
301
301
  children: "Today's Earnings"
302
302
  }), /* @__PURE__ */ w("p", {
303
- className: "text-2xl font-bold text-foreground",
303
+ className: "text-2xl font-bold text-text-primary",
304
304
  children: a(F.earnings, { minimumFractionDigits: 0 })
305
305
  })]
306
306
  }),
307
307
  /* @__PURE__ */ T("div", {
308
- className: "rounded-lg border border-border bg-card p-4 shadow-sm",
308
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
309
309
  children: [/* @__PURE__ */ w("p", {
310
- className: "text-xs text-muted-foreground",
310
+ className: "text-xs text-text-secondary",
311
311
  children: "Rating"
312
312
  }), /* @__PURE__ */ T("p", {
313
- className: "text-2xl font-bold text-foreground flex items-center gap-1",
313
+ className: "text-2xl font-bold text-text-primary flex items-center gap-1",
314
314
  children: [/* @__PURE__ */ w(S, { className: "h-4 w-4 fill-yellow-400 text-yellow-400" }), F.rating]
315
315
  })]
316
316
  })
@@ -322,14 +322,14 @@ var A = () => {
322
322
  className: "text-base font-semibold text-blue-600 dark:text-blue-400 mb-4",
323
323
  children: "Current Task"
324
324
  }), /* @__PURE__ */ T("div", {
325
- className: "rounded-lg border border-border bg-card p-4",
325
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
326
326
  children: [/* @__PURE__ */ T("div", {
327
327
  className: "flex items-center justify-between mb-4",
328
328
  children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
329
329
  className: "flex items-center gap-2 flex-wrap",
330
330
  children: [
331
331
  /* @__PURE__ */ T("h3", {
332
- className: "text-sm font-semibold text-foreground",
332
+ className: "text-sm font-semibold text-text-primary",
333
333
  children: ["Order #", j.orderId]
334
334
  }),
335
335
  (() => {
@@ -345,7 +345,7 @@ var A = () => {
345
345
  })
346
346
  ]
347
347
  }), /* @__PURE__ */ w("p", {
348
- className: "text-xs text-muted-foreground mt-1",
348
+ className: "text-xs text-text-secondary mt-1",
349
349
  children: j.cartName
350
350
  })] }), /* @__PURE__ */ T("div", {
351
351
  className: "text-right",
@@ -353,26 +353,26 @@ var A = () => {
353
353
  className: "text-xl font-bold text-blue-600 dark:text-blue-400",
354
354
  children: D(j.estimatedTime)
355
355
  }), /* @__PURE__ */ w("p", {
356
- className: "text-xs text-muted-foreground",
356
+ className: "text-xs text-text-secondary",
357
357
  children: "Time remaining"
358
358
  })]
359
359
  })]
360
360
  }), /* @__PURE__ */ T("div", {
361
- className: "border-t border-border pt-4",
361
+ className: "border-t border-border-subtle pt-4",
362
362
  children: [
363
363
  /* @__PURE__ */ T("div", {
364
364
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
365
365
  children: [/* @__PURE__ */ T("div", { children: [
366
366
  /* @__PURE__ */ w("p", {
367
- className: "text-xs font-medium text-muted-foreground",
367
+ className: "text-xs font-medium text-text-secondary",
368
368
  children: "Customer"
369
369
  }),
370
370
  /* @__PURE__ */ w("p", {
371
- className: "text-sm font-medium text-foreground",
371
+ className: "text-sm font-medium text-text-primary",
372
372
  children: j.customerName
373
373
  }),
374
374
  j.address && /* @__PURE__ */ T("p", {
375
- className: "text-xs text-muted-foreground mt-1",
375
+ className: "text-xs text-text-secondary mt-1",
376
376
  children: [
377
377
  j.address.addressLine1,
378
378
  ", ",
@@ -380,12 +380,12 @@ var A = () => {
380
380
  ]
381
381
  })
382
382
  ] }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
383
- className: "text-xs font-medium text-muted-foreground",
383
+ className: "text-xs font-medium text-text-secondary",
384
384
  children: "Items"
385
385
  }), /* @__PURE__ */ w("div", {
386
386
  className: "space-y-0.5",
387
387
  children: j.items.map((e, t) => /* @__PURE__ */ T("p", {
388
- className: "text-xs text-foreground",
388
+ className: "text-xs text-text-primary",
389
389
  children: [
390
390
  e.quantity,
391
391
  "x ",
@@ -410,13 +410,13 @@ var A = () => {
410
410
  /* @__PURE__ */ T("button", {
411
411
  type: "button",
412
412
  onClick: () => H(j.customerPhone),
413
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors",
413
+ className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
414
414
  children: [/* @__PURE__ */ w(y, { className: "h-3.5 w-3.5" }), "Call Customer"]
415
415
  }),
416
416
  j.type === "delivery" && j.address && /* @__PURE__ */ T("button", {
417
417
  type: "button",
418
418
  onClick: () => U(j),
419
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors",
419
+ className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors",
420
420
  children: [/* @__PURE__ */ w(_, { className: "h-3.5 w-3.5" }), "Navigate"]
421
421
  }),
422
422
  /* @__PURE__ */ T("button", {
@@ -432,14 +432,14 @@ var A = () => {
432
432
  })]
433
433
  }),
434
434
  /* @__PURE__ */ w("div", {
435
- className: "rounded-lg border border-border bg-card p-4 shadow-sm",
435
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm",
436
436
  children: /* @__PURE__ */ T("div", {
437
437
  className: "grid grid-cols-1 md:grid-cols-4 gap-3",
438
438
  children: [
439
439
  /* @__PURE__ */ T("select", {
440
440
  value: N.status,
441
441
  onChange: (e) => z("status", e.target.value),
442
- className: "w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500/40",
442
+ className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-blue-500/40",
443
443
  children: [
444
444
  /* @__PURE__ */ w("option", {
445
445
  value: "",
@@ -462,7 +462,7 @@ var A = () => {
462
462
  /* @__PURE__ */ T("select", {
463
463
  value: N.type,
464
464
  onChange: (e) => z("type", e.target.value),
465
- className: "w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500/40",
465
+ className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-blue-500/40",
466
466
  children: [
467
467
  /* @__PURE__ */ w("option", {
468
468
  value: "",
@@ -485,7 +485,7 @@ var A = () => {
485
485
  /* @__PURE__ */ T("select", {
486
486
  value: N.priority,
487
487
  onChange: (e) => z("priority", e.target.value),
488
- className: "w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500/40",
488
+ className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-blue-500/40",
489
489
  children: [
490
490
  /* @__PURE__ */ w("option", {
491
491
  value: "",
@@ -512,7 +512,7 @@ var A = () => {
512
512
  /* @__PURE__ */ T("select", {
513
513
  value: N.sortBy,
514
514
  onChange: (e) => z("sortBy", e.target.value),
515
- className: "w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500/40",
515
+ className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-blue-500/40",
516
516
  children: [
517
517
  /* @__PURE__ */ w("option", {
518
518
  value: "priority",
@@ -532,6 +532,7 @@ var A = () => {
532
532
  })
533
533
  }),
534
534
  C.length === 0 ? /* @__PURE__ */ w(i, {
535
+ illustration: "empty-data",
535
536
  icon: /* @__PURE__ */ w(p, { className: "h-12 w-12" }),
536
537
  title: "No tasks available",
537
538
  description: "Check back later for new tasks"
@@ -540,7 +541,7 @@ var A = () => {
540
541
  children: C.map((e) => {
541
542
  let n = O(e.type), i = n.icon;
542
543
  return /* @__PURE__ */ T("div", {
543
- className: "rounded-lg border border-border bg-card p-5 shadow-sm hover:shadow-md transition-shadow",
544
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm hover:shadow-md transition-shadow",
544
545
  children: [
545
546
  /* @__PURE__ */ T("div", {
546
547
  className: "flex items-center justify-between mb-3",
@@ -548,7 +549,7 @@ var A = () => {
548
549
  className: "flex items-center gap-2 flex-wrap",
549
550
  children: [
550
551
  /* @__PURE__ */ T("h3", {
551
- className: "text-sm font-semibold text-foreground",
552
+ className: "text-sm font-semibold text-text-primary",
552
553
  children: ["Order #", e.orderId]
553
554
  }),
554
555
  /* @__PURE__ */ T("span", {
@@ -561,7 +562,7 @@ var A = () => {
561
562
  })
562
563
  ]
563
564
  }), /* @__PURE__ */ T("p", {
564
- className: "text-xs text-muted-foreground mt-1",
565
+ className: "text-xs text-text-secondary mt-1",
565
566
  children: [
566
567
  e.cartName,
567
568
  " · ",
@@ -570,7 +571,7 @@ var A = () => {
570
571
  })] }), /* @__PURE__ */ T("div", {
571
572
  className: "text-right",
572
573
  children: [/* @__PURE__ */ w("p", {
573
- className: "text-lg font-bold text-foreground",
574
+ className: "text-lg font-bold text-text-primary",
574
575
  children: a(e.payment.amount, { minimumFractionDigits: 0 })
575
576
  }), /* @__PURE__ */ w("p", {
576
577
  className: t("text-xs", e.payment.status === "completed" ? "text-green-600 dark:text-green-400" : "text-yellow-600 dark:text-yellow-400"),
@@ -585,10 +586,10 @@ var A = () => {
585
586
  className: "grid grid-cols-1 md:grid-cols-3 gap-3 mb-3 text-sm",
586
587
  children: [
587
588
  /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
588
- className: "text-xs text-muted-foreground",
589
+ className: "text-xs text-text-secondary",
589
590
  children: "Items"
590
591
  }), /* @__PURE__ */ w("div", {
591
- className: "text-xs text-foreground",
592
+ className: "text-xs text-text-primary",
592
593
  children: e.items.map((t, n) => /* @__PURE__ */ T("span", { children: [
593
594
  t.quantity,
594
595
  "x ",
@@ -597,39 +598,39 @@ var A = () => {
597
598
  ] }, n))
598
599
  })] }),
599
600
  e.address && /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
600
- className: "text-xs text-muted-foreground",
601
+ className: "text-xs text-text-secondary",
601
602
  children: "Delivery Address"
602
603
  }), /* @__PURE__ */ w("p", {
603
- className: "text-xs text-foreground",
604
+ className: "text-xs text-text-primary",
604
605
  children: e.address.addressLine1
605
606
  })] }),
606
607
  /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
607
- className: "text-xs text-muted-foreground",
608
+ className: "text-xs text-text-secondary",
608
609
  children: "Time"
609
610
  }), /* @__PURE__ */ w("p", {
610
- className: t("text-xs font-medium", D(e.estimatedTime) === "Overdue" ? "text-red-600 dark:text-red-400" : "text-foreground"),
611
+ className: t("text-xs font-medium", D(e.estimatedTime) === "Overdue" ? "text-red-600 dark:text-red-400" : "text-text-primary"),
611
612
  children: D(e.estimatedTime)
612
613
  })] })
613
614
  ]
614
615
  }),
615
616
  e.status === "pending" && /* @__PURE__ */ T("div", {
616
- className: "flex items-center flex-wrap gap-2 border-t border-border pt-3",
617
+ className: "flex items-center flex-wrap gap-2 border-t border-border-subtle pt-3",
617
618
  children: [
618
619
  /* @__PURE__ */ T("button", {
619
620
  type: "button",
620
621
  onClick: () => B(e.id),
621
622
  disabled: j !== null,
622
- className: t("inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors", j === null ? "bg-blue-500/10 text-blue-600 dark:text-blue-400 hover:bg-blue-500/20" : "bg-muted text-muted-foreground cursor-not-allowed"),
623
+ className: t("inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors", j === null ? "bg-blue-500/10 text-blue-600 dark:text-blue-400 hover:bg-blue-500/20" : "bg-bg-sunken text-text-secondary cursor-not-allowed"),
623
624
  children: [/* @__PURE__ */ w(b, { className: "h-3.5 w-3.5" }), j ? "Complete current first" : "Start Task"]
624
625
  }),
625
626
  /* @__PURE__ */ T("button", {
626
627
  type: "button",
627
628
  onClick: () => H(e.customerPhone),
628
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors",
629
+ 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",
629
630
  children: [/* @__PURE__ */ w(y, { className: "h-3.5 w-3.5" }), "Call"]
630
631
  }),
631
632
  e.type === "delivery" && e.distance != null && /* @__PURE__ */ T("span", {
632
- className: "ml-auto text-xs text-muted-foreground flex items-center gap-1",
633
+ className: "ml-auto text-xs text-text-secondary flex items-center gap-1",
633
634
  children: [
634
635
  /* @__PURE__ */ w(g, { className: "h-3 w-3" }),
635
636
  e.distance,
@@ -639,7 +640,7 @@ var A = () => {
639
640
  ]
640
641
  }),
641
642
  e.status === "in_progress" && e.id !== j?.id && /* @__PURE__ */ T("div", {
642
- className: "flex items-center gap-2 border-t border-border pt-3",
643
+ className: "flex items-center gap-2 border-t border-border-subtle pt-3",
643
644
  children: [/* @__PURE__ */ T("button", {
644
645
  type: "button",
645
646
  onClick: () => V(e.id),
@@ -648,16 +649,16 @@ var A = () => {
648
649
  }), /* @__PURE__ */ T("button", {
649
650
  type: "button",
650
651
  onClick: () => f(`/worker/task/${e.id}`),
651
- className: "inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors",
652
+ 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",
652
653
  children: ["Details", /* @__PURE__ */ w(u, { className: "h-3.5 w-3.5" })]
653
654
  })]
654
655
  }),
655
656
  e.status === "completed" && /* @__PURE__ */ T("div", {
656
- className: "flex items-center gap-2 border-t border-border pt-3",
657
+ className: "flex items-center gap-2 border-t border-border-subtle pt-3",
657
658
  children: [/* @__PURE__ */ w(r, { status: "completed" }), /* @__PURE__ */ T("button", {
658
659
  type: "button",
659
660
  onClick: () => f(`/worker/task/${e.id}`),
660
- className: "ml-auto inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent/80 transition-colors",
661
+ className: "ml-auto 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",
661
662
  children: ["Details", /* @__PURE__ */ w(u, { className: "h-3.5 w-3.5" })]
662
663
  })]
663
664
  })