@burdenoff/microfe-adaptercloud 2026.614.1 → 2026.624.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/adaptercloud/components/EmptyState.js +3 -3
  2. package/dist/adaptercloud/components/EmptyState.js.map +1 -1
  3. package/dist/adaptercloud/components/InvestmentCard.js +9 -9
  4. package/dist/adaptercloud/components/InvestmentCard.js.map +1 -1
  5. package/dist/adaptercloud/components/MetricsCard.js +5 -5
  6. package/dist/adaptercloud/components/MetricsCard.js.map +1 -1
  7. package/dist/adaptercloud/components/PageLayout.js +3 -3
  8. package/dist/adaptercloud/components/PageLayout.js.map +1 -1
  9. package/dist/adaptercloud/components/RatingDisplay.js +3 -3
  10. package/dist/adaptercloud/components/RatingDisplay.js.map +1 -1
  11. package/dist/adaptercloud/components/StatusBadge.js +2 -2
  12. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  13. package/dist/adaptercloud/pages/HomePage.js +54 -54
  14. package/dist/adaptercloud/pages/HomePage.js.map +1 -1
  15. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +60 -60
  16. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +1 -1
  17. package/dist/adaptercloud/pages/admin/AdminDashboard.js +77 -77
  18. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +1 -1
  19. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +43 -43
  20. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +1 -1
  21. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +85 -85
  22. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +1 -1
  23. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +34 -34
  24. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +1 -1
  25. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +40 -40
  26. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +1 -1
  27. package/dist/adaptercloud/pages/admin/CartManagementPage.js +86 -86
  28. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +1 -1
  29. package/dist/adaptercloud/pages/admin/UserManagementPage.js +80 -80
  30. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +1 -1
  31. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +100 -100
  32. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  33. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +29 -29
  34. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  35. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +81 -81
  36. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  37. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +100 -100
  38. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  39. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +67 -67
  40. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  41. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +94 -94
  42. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  43. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +57 -57
  44. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +1 -1
  45. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +75 -75
  46. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +1 -1
  47. package/dist/adaptercloud/pages/common/HelpSupportPage.js +102 -102
  48. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +1 -1
  49. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +35 -35
  50. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +1 -1
  51. package/dist/adaptercloud/pages/common/SettingsPage.js +109 -109
  52. package/dist/adaptercloud/pages/common/SettingsPage.js.map +1 -1
  53. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +60 -60
  54. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +1 -1
  55. package/dist/adaptercloud/pages/customer/CartDetailPage.js +71 -71
  56. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +1 -1
  57. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +54 -54
  58. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +1 -1
  59. package/dist/adaptercloud/pages/customer/CheckoutPage.js +75 -75
  60. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +1 -1
  61. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +69 -69
  62. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +1 -1
  63. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +72 -72
  64. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +1 -1
  65. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +75 -75
  66. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +1 -1
  67. package/dist/adaptercloud/pages/customer/FavoritesPage.js +30 -30
  68. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +1 -1
  69. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +41 -41
  70. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +1 -1
  71. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +53 -53
  72. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +1 -1
  73. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +51 -51
  74. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +1 -1
  75. package/dist/adaptercloud/pages/customer/ReviewsPage.js +33 -33
  76. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +1 -1
  77. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +33 -33
  78. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +1 -1
  79. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +108 -108
  80. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +1 -1
  81. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +76 -76
  82. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  83. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +69 -69
  84. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  85. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +53 -53
  86. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +1 -1
  87. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +32 -32
  88. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  89. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +55 -55
  90. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +1 -1
  91. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +138 -138
  92. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +1 -1
  93. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +65 -65
  94. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +1 -1
  95. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +74 -74
  96. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +1 -1
  97. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +49 -49
  98. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +1 -1
  99. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +92 -92
  100. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +1 -1
  101. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +55 -55
  102. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +1 -1
  103. package/dist/adaptercloud/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 +1 -1
  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/adaptercloud/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 adaptercloud/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 { useAdapterCloud } from '../../context/AdapterCloudContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n useWorkerClockInOut,\n} from '../../hooks/useAdapterCloudApi';\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 } = useAdapterCloud();\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":"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"}
1
+ {"version":3,"file":"WorkerDashboard.js","names":[],"sources":["../../../../src/adaptercloud/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 adaptercloud/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 { useAdapterCloud } from '../../context/AdapterCloudContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n useWorkerClockInOut,\n} from '../../hooks/useAdapterCloudApi';\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 } = useAdapterCloud();\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",
@@ -540,7 +540,7 @@ var A = () => {
540
540
  children: C.map((e) => {
541
541
  let n = O(e.type), i = n.icon;
542
542
  return /* @__PURE__ */ T("div", {
543
- className: "rounded-lg border border-border bg-card p-5 shadow-sm hover:shadow-md transition-shadow",
543
+ className: "rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm hover:shadow-md transition-shadow",
544
544
  children: [
545
545
  /* @__PURE__ */ T("div", {
546
546
  className: "flex items-center justify-between mb-3",
@@ -548,7 +548,7 @@ var A = () => {
548
548
  className: "flex items-center gap-2 flex-wrap",
549
549
  children: [
550
550
  /* @__PURE__ */ T("h3", {
551
- className: "text-sm font-semibold text-foreground",
551
+ className: "text-sm font-semibold text-text-primary",
552
552
  children: ["Order #", e.orderId]
553
553
  }),
554
554
  /* @__PURE__ */ T("span", {
@@ -561,7 +561,7 @@ var A = () => {
561
561
  })
562
562
  ]
563
563
  }), /* @__PURE__ */ T("p", {
564
- className: "text-xs text-muted-foreground mt-1",
564
+ className: "text-xs text-text-secondary mt-1",
565
565
  children: [
566
566
  e.cartName,
567
567
  " · ",
@@ -570,7 +570,7 @@ var A = () => {
570
570
  })] }), /* @__PURE__ */ T("div", {
571
571
  className: "text-right",
572
572
  children: [/* @__PURE__ */ w("p", {
573
- className: "text-lg font-bold text-foreground",
573
+ className: "text-lg font-bold text-text-primary",
574
574
  children: a(e.payment.amount, { minimumFractionDigits: 0 })
575
575
  }), /* @__PURE__ */ w("p", {
576
576
  className: t("text-xs", e.payment.status === "completed" ? "text-green-600 dark:text-green-400" : "text-yellow-600 dark:text-yellow-400"),
@@ -585,10 +585,10 @@ var A = () => {
585
585
  className: "grid grid-cols-1 md:grid-cols-3 gap-3 mb-3 text-sm",
586
586
  children: [
587
587
  /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
588
- className: "text-xs text-muted-foreground",
588
+ className: "text-xs text-text-secondary",
589
589
  children: "Items"
590
590
  }), /* @__PURE__ */ w("div", {
591
- className: "text-xs text-foreground",
591
+ className: "text-xs text-text-primary",
592
592
  children: e.items.map((t, n) => /* @__PURE__ */ T("span", { children: [
593
593
  t.quantity,
594
594
  "x ",
@@ -597,39 +597,39 @@ var A = () => {
597
597
  ] }, n))
598
598
  })] }),
599
599
  e.address && /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
600
- className: "text-xs text-muted-foreground",
600
+ className: "text-xs text-text-secondary",
601
601
  children: "Delivery Address"
602
602
  }), /* @__PURE__ */ w("p", {
603
- className: "text-xs text-foreground",
603
+ className: "text-xs text-text-primary",
604
604
  children: e.address.addressLine1
605
605
  })] }),
606
606
  /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
607
- className: "text-xs text-muted-foreground",
607
+ className: "text-xs text-text-secondary",
608
608
  children: "Time"
609
609
  }), /* @__PURE__ */ w("p", {
610
- className: t("text-xs font-medium", D(e.estimatedTime) === "Overdue" ? "text-red-600 dark:text-red-400" : "text-foreground"),
610
+ className: t("text-xs font-medium", D(e.estimatedTime) === "Overdue" ? "text-red-600 dark:text-red-400" : "text-text-primary"),
611
611
  children: D(e.estimatedTime)
612
612
  })] })
613
613
  ]
614
614
  }),
615
615
  e.status === "pending" && /* @__PURE__ */ T("div", {
616
- className: "flex items-center flex-wrap gap-2 border-t border-border pt-3",
616
+ className: "flex items-center flex-wrap gap-2 border-t border-border-subtle pt-3",
617
617
  children: [
618
618
  /* @__PURE__ */ T("button", {
619
619
  type: "button",
620
620
  onClick: () => B(e.id),
621
621
  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"),
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-bg-sunken text-text-secondary cursor-not-allowed"),
623
623
  children: [/* @__PURE__ */ w(b, { className: "h-3.5 w-3.5" }), j ? "Complete current first" : "Start Task"]
624
624
  }),
625
625
  /* @__PURE__ */ T("button", {
626
626
  type: "button",
627
627
  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",
628
+ 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
629
  children: [/* @__PURE__ */ w(y, { className: "h-3.5 w-3.5" }), "Call"]
630
630
  }),
631
631
  e.type === "delivery" && e.distance != null && /* @__PURE__ */ T("span", {
632
- className: "ml-auto text-xs text-muted-foreground flex items-center gap-1",
632
+ className: "ml-auto text-xs text-text-secondary flex items-center gap-1",
633
633
  children: [
634
634
  /* @__PURE__ */ w(g, { className: "h-3 w-3" }),
635
635
  e.distance,
@@ -639,7 +639,7 @@ var A = () => {
639
639
  ]
640
640
  }),
641
641
  e.status === "in_progress" && e.id !== j?.id && /* @__PURE__ */ T("div", {
642
- className: "flex items-center gap-2 border-t border-border pt-3",
642
+ className: "flex items-center gap-2 border-t border-border-subtle pt-3",
643
643
  children: [/* @__PURE__ */ T("button", {
644
644
  type: "button",
645
645
  onClick: () => V(e.id),
@@ -648,16 +648,16 @@ var A = () => {
648
648
  }), /* @__PURE__ */ T("button", {
649
649
  type: "button",
650
650
  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",
651
+ 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
652
  children: ["Details", /* @__PURE__ */ w(u, { className: "h-3.5 w-3.5" })]
653
653
  })]
654
654
  }),
655
655
  e.status === "completed" && /* @__PURE__ */ T("div", {
656
- className: "flex items-center gap-2 border-t border-border pt-3",
656
+ className: "flex items-center gap-2 border-t border-border-subtle pt-3",
657
657
  children: [/* @__PURE__ */ w(r, { status: "completed" }), /* @__PURE__ */ T("button", {
658
658
  type: "button",
659
659
  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",
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-text-primary hover:bg-accent/80 transition-colors",
661
661
  children: ["Details", /* @__PURE__ */ w(u, { className: "h-3.5 w-3.5" })]
662
662
  })]
663
663
  })