@burdenoff/microfe-kadaikodi 2026.802.1 → 2026.830.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -1
- package/dist/kadaikodi/KadaikodiRoot.js +69 -72
- package/dist/kadaikodi/KadaikodiRoot.js.map +1 -1
- package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -1
- package/dist/kadaikodi/components/InvestmentCard.js +58 -54
- package/dist/kadaikodi/components/InvestmentCard.js.map +1 -1
- package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -1
- package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -1
- package/dist/kadaikodi/components/StatusBadge.js +25 -14
- package/dist/kadaikodi/components/StatusBadge.js.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +24 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +177 -132
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +284 -282
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +7 -2
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +319 -228
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +10 -4
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +320 -279
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +365 -292
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +7 -2
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +300 -158
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +286 -286
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +3 -3
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +13 -3
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +270 -220
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +97 -97
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +5 -3
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +286 -199
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/types/index.d.ts +46 -2
- package/dist/kadaikodi/types/index.d.ts.map +1 -1
- package/dist/shared/hooks/useTr.d.ts +2 -0
- package/dist/shared/hooks/useTr.d.ts.map +1 -0
- package/dist/shared/hooks/useTr.js +14 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetailsPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/worker/TaskDetailsPage.tsx"],"sourcesContent":["/**\n * Task Details Page\n *\n * A delivery-job detail screen, elevated to the kk-worker-02-task-details\n * concept: a stylised (honest, not-to-scale) pickup → drop route panel, a\n * StepProgress tracker for the delivery flow, separate Pickup and Drop cards\n * with Call / Navigate actions, an earnings summary, a delivery-note field and\n * a single primary CTA that advances the task (Mark Picked Up → Mark Delivered).\n *\n * All data is real (useWorkerTasks). Status transitions use\n * useUpdateWorkerTaskStatus; the delivery note uses useUpdateWorkerTask. Nothing\n * is fabricated — fields the worker-task backend does not carry (per-item order\n * breakdown, payment badge) are simply omitted.\n *\n * @module kadaikodi/pages/worker\n */\n\nimport { useState, useEffect, useMemo } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Package,\n Phone,\n MapPin,\n Clock,\n Navigation,\n CheckCircle2,\n Loader2,\n Truck,\n ShoppingBag,\n User,\n AlertTriangle,\n FileText,\n StickyNote,\n IndianRupee,\n ShoppingCart,\n} from 'lucide-react';\nimport { GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { StepProgress, Timeline, type TimelineItem } from '../../components/viz';\nimport { PageLayout } from '../../components/PageLayout';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport {\n useWorkerTasks,\n useUpdateWorkerTask,\n useUpdateWorkerTaskStatus,\n} from '../../hooks/useKadaikodiApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatDate } from '../../utils/formatters';\nimport type { TaskStatus, WorkerTask } from '../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface TaskCustomerInfo {\n name: string;\n phone: string;\n address: string;\n}\n\ninterface TaskDetails {\n id: string;\n orderId: string;\n cartId: string;\n cartName: string;\n type: WorkerTask['type'];\n status: TaskStatus;\n priority: WorkerTask['priority'];\n title: string;\n description: string;\n estimatedTime: number;\n assignedBy: string;\n assignedTime: string;\n dueTime: string;\n location?: string;\n earnings: number;\n distance?: number;\n customerInfo: TaskCustomerInfo;\n specialInstructions?: string;\n notes?: string;\n completedAt?: string;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst typeLabels: Record<string, string> = {\n delivery: 'Delivery',\n pickup: 'Pickup',\n service: 'Service',\n};\n\nfunction getTaskTypeIcon(type: string) {\n switch (type) {\n case 'delivery':\n return Truck;\n case 'pickup':\n return ShoppingBag;\n case 'service':\n return Package;\n default:\n return FileText;\n }\n}\n\nfunction getPriorityStyle(priority: string): string {\n switch (priority) {\n case 'urgent':\n case 'high':\n return 'bg-status-error-bg-subtle text-status-error-text';\n case 'medium':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'low':\n return 'bg-status-success-bg-subtle text-status-success-text';\n default:\n return 'bg-bg-sunken text-text-secondary';\n }\n}\n\nfunction formatTime(dateString: string): string {\n const d = new Date(dateString);\n if (Number.isNaN(d.getTime())) return dateString;\n return d.toLocaleTimeString('en-IN', { hour: 'numeric', minute: '2-digit', hour12: true });\n}\n\n/** Map a real worker task into the page's detail view-model (no fabricated fields). */\nfunction mapWorkerTaskToDetails(t: WorkerTask): TaskDetails {\n const address = t.deliveryAddress\n ? [\n t.deliveryAddress.street,\n t.deliveryAddress.area,\n t.deliveryAddress.city,\n t.deliveryAddress.pincode,\n ]\n .filter(Boolean)\n .join(', ')\n : '';\n return {\n id: t.id,\n orderId: t.orderId,\n cartId: t.cartId,\n cartName: t.cartName,\n type: t.type,\n status: t.status,\n priority: t.priority,\n title: t.title ?? t.description ?? 'Task',\n description: t.description,\n estimatedTime: t.estimatedTime ?? 0,\n assignedBy: t.assignedBy ?? '',\n assignedTime: t.assignedAt || '',\n dueTime: t.dueAt,\n location: t.location,\n earnings: t.earnings,\n distance: t.distance,\n customerInfo: { name: t.customerName, phone: t.customerPhone, address },\n specialInstructions: t.notes ?? undefined,\n notes: t.notes ?? '',\n completedAt: t.completedAt,\n };\n}\n\nconst DELIVERY_STEPS = [{ label: 'Assigned' }, { label: 'Picked Up' }, { label: 'Delivered' }];\n\nfunction currentStep(status: TaskStatus): number {\n switch (status) {\n case 'pending':\n return 1;\n case 'in_progress':\n return 2;\n case 'completed':\n return 3;\n default:\n return 0;\n }\n}\n\n/**\n * Honest, illustrative pickup → drop panel. This is a stylised schematic (clearly\n * labelled \"not to scale\"), NOT a real map — the worker-task backend does not\n * expose geo-coordinates, so we never imply a real position.\n */\nfunction RouteSchematic({\n pickupLabel,\n dropLabel,\n distance,\n}: {\n pickupLabel: string;\n dropLabel: string;\n distance?: number;\n}) {\n return (\n <div className=\"relative overflow-hidden rounded-[var(--radius-card)] border border-border-subtle bg-bg-sunken\">\n <svg\n viewBox=\"0 0 400 190\"\n className=\"block w-full\"\n role=\"img\"\n aria-label={`Illustrative route from ${pickupLabel} to ${dropLabel}`}\n >\n {/* faint street grid */}\n <g stroke=\"var(--color-border-subtle)\" strokeWidth=\"1\" opacity=\"0.7\">\n <path d=\"M0 45 H400 M0 95 H400 M0 145 H400\" />\n <path d=\"M70 0 V190 M160 0 V190 M250 0 V190 M330 0 V190\" />\n </g>\n {/* route */}\n <path\n d=\"M70 55 H150 Q165 55 165 70 V120 Q165 135 180 135 H300\"\n fill=\"none\"\n stroke=\"var(--color-accent-primary)\"\n strokeWidth=\"3.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray=\"1 0\"\n />\n {/* pickup node */}\n <circle cx=\"70\" cy=\"55\" r=\"7\" fill=\"var(--color-accent-primary)\" />\n <circle cx=\"70\" cy=\"55\" r=\"12\" fill=\"var(--color-accent-primary)\" opacity=\"0.18\" />\n {/* drop node */}\n <circle cx=\"300\" cy=\"135\" r=\"7\" fill=\"var(--color-status-success-text)\" />\n <circle cx=\"300\" cy=\"135\" r=\"12\" fill=\"var(--color-status-success-text)\" opacity=\"0.18\" />\n </svg>\n <div className=\"pointer-events-none absolute left-3 top-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur\">\n <Package className=\"h-3.5 w-3.5 text-accent-primary\" />\n <span className=\"max-w-[9rem] truncate text-[11px] font-medium text-text-primary\">\n {pickupLabel}\n </span>\n </div>\n <div className=\"pointer-events-none absolute bottom-3 right-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur\">\n <MapPin className=\"h-3.5 w-3.5 text-status-success-text\" />\n <span className=\"max-w-[9rem] truncate text-[11px] font-medium text-text-primary\">\n {dropLabel}\n </span>\n </div>\n <div className=\"flex items-center justify-between border-t border-border-subtle px-3 py-2\">\n <span className=\"text-[11px] text-text-muted\">Illustrative route · not to scale</span>\n {distance != null && (\n <span className=\"text-[11px] font-medium text-text-secondary tabular-nums\">\n {distance} km\n </span>\n )}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function TaskDetailsPage() {\n const { taskId } = useParams<{ taskId: string }>();\n const { navigateTo, currentUser } = useKadaikodi();\n const workerId = currentUser?.id ?? '';\n const { data: tasks = [], isLoading: loading } = useWorkerTasks(workerId);\n const updateStatus = useUpdateWorkerTaskStatus();\n const updateNotes = useUpdateWorkerTask();\n const [task, setTask] = useState<TaskDetails | null>(null);\n const [notes, setNotes] = useState('');\n const [notesSaved, setNotesSaved] = useState(false);\n\n useEffect(() => {\n const found = tasks.find((t) => t.id === taskId);\n if (found) {\n const mapped = mapWorkerTaskToDetails(found);\n setTask(mapped);\n setNotes(mapped.notes ?? '');\n } else {\n setTask(null);\n }\n }, [tasks, taskId]);\n\n const handleAdvanceStatus = () => {\n if (!task) return;\n if (task.status === 'pending') {\n setTask({ ...task, status: 'in_progress' });\n updateStatus.mutate({ taskId: task.id, status: 'IN_PROGRESS' });\n } else if (task.status === 'in_progress') {\n setTask({ ...task, status: 'completed' });\n updateStatus.mutate({ taskId: task.id, status: 'COMPLETED' });\n }\n };\n\n const handleCallCustomer = () => {\n if (task?.customerInfo?.phone) {\n window.location.href = `tel:${task.customerInfo.phone.replace(/\\s/g, '')}`;\n }\n };\n\n const handleNavigate = (query: string) => {\n if (query) {\n window.open(`https://maps.google.com?q=${encodeURIComponent(query)}`, '_blank');\n }\n };\n\n const handleSaveNotes = () => {\n if (!task) return;\n setNotesSaved(false);\n updateNotes.mutate(\n { taskId: task.id, notes },\n {\n onSuccess: () => {\n setTask((t) => (t ? { ...t, notes } : t));\n setNotesSaved(true);\n },\n }\n );\n };\n\n const timeline = useMemo<TimelineItem[]>(() => {\n if (!task) return [];\n return [\n {\n title: 'Task assigned',\n time: task.assignedTime ? formatTime(task.assignedTime) : undefined,\n meta: task.assignedBy || undefined,\n tone: 'success',\n },\n {\n title: 'Picked up',\n time: task.status === 'in_progress' || task.status === 'completed' ? 'Done' : undefined,\n tone: task.status === 'in_progress' || task.status === 'completed' ? 'success' : 'muted',\n },\n {\n title: 'Delivered',\n time:\n task.status === 'completed'\n ? task.completedAt\n ? formatTime(task.completedAt)\n : 'Done'\n : undefined,\n tone: task.status === 'completed' ? 'success' : 'muted',\n },\n ];\n }, [task]);\n\n if (loading) {\n return (\n <PageLayout title=\"Task Details\">\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 task details...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n if (!task) {\n return (\n <PageLayout title=\"Task Not Found\">\n <EmptyState\n icon={<FileText className=\"h-12 w-12\" />}\n title=\"Task not found\"\n description={`No task found with ID \"${taskId}\".`}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg-hover transition-colors\"\n >\n View All Orders\n </button>\n }\n />\n </PageLayout>\n );\n }\n\n const TaskTypeIcon = getTaskTypeIcon(task.type);\n const typeLabel = typeLabels[task.type] ?? 'Task';\n const pickupLabel = task.cartName || 'Pickup';\n const dropLabel = task.customerInfo.address || task.customerInfo.name || 'Drop-off';\n const ctaLabel =\n task.status === 'pending'\n ? 'Mark Picked Up'\n : task.status === 'in_progress'\n ? 'Mark Delivered'\n : 'Delivered';\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3 min-w-0\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"rounded-md p-1 text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors shrink-0\"\n aria-label=\"Back to orders\"\n >\n <ArrowLeft className=\"h-5 w-5\" />\n </button>\n <span className=\"truncate\">\n {typeLabel}\n {task.orderId ? <span className=\"text-text-secondary\"> · #{task.orderId}</span> : null}\n </span>\n </div>\n }\n description=\"Everything you need to complete this delivery\"\n >\n <PagePurpose className=\"mb-6\">\n One delivery, start to finish. Reach the customer, follow the route, jot a note, and advance\n the job — mark it picked up, then delivered — so nothing gets missed and your completion\n stats stay strong.\n </PagePurpose>\n\n <div className=\"space-y-6\">\n {/* Delivery step tracker */}\n <GlassCard treatment=\"metric\" className=\"p-5\">\n <div className=\"mb-4 flex flex-wrap items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-accent-primary/12 text-accent-primary\">\n <TaskTypeIcon className=\"h-4.5 w-4.5\" />\n </span>\n <h2 className=\"text-base font-semibold text-text-primary\">{task.title}</h2>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium uppercase',\n getPriorityStyle(task.priority)\n )}\n >\n {task.priority}\n </span>\n </div>\n <StepProgress steps={DELIVERY_STEPS} current={currentStep(task.status)} />\n </GlassCard>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Main column */}\n <div className=\"lg:col-span-2 space-y-6\">\n <RouteSchematic\n pickupLabel={pickupLabel}\n dropLabel={dropLabel}\n distance={task.distance}\n />\n\n {/* Pickup + Drop cards */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n {/* Pickup */}\n <GlassCard className=\"p-5\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">\n Pickup\n </p>\n <p className=\"mt-1 text-sm font-semibold text-text-primary\">{task.cartName}</p>\n {task.location && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.location}</p>\n )}\n <div className=\"mt-4\">\n <button\n type=\"button\"\n onClick={() => handleNavigate(task.location || task.cartName)}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n </div>\n </GlassCard>\n\n {/* Drop */}\n <GlassCard className=\"p-5\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">Drop</p>\n <p className=\"mt-1 text-sm font-semibold text-text-primary\">\n {task.customerInfo.name || 'Customer'}\n </p>\n {task.customerInfo.address && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.customerInfo.address}</p>\n )}\n {task.customerInfo.phone && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.customerInfo.phone}</p>\n )}\n <div className=\"mt-4 flex gap-2\">\n {task.customerInfo.phone && (\n <button\n type=\"button\"\n onClick={handleCallCustomer}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call\n </button>\n )}\n {task.customerInfo.address && (\n <button\n type=\"button\"\n onClick={() => handleNavigate(task.customerInfo.address)}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n )}\n </div>\n </GlassCard>\n </div>\n\n {/* Earnings summary */}\n <GlassCard treatment=\"insight\" className=\"p-5\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle text-status-success-text\">\n <IndianRupee className=\"h-4.5 w-4.5\" />\n </span>\n <div>\n <p className=\"text-xs text-text-secondary\">You earn</p>\n <p className=\"text-lg font-bold text-text-primary\">\n {formatCurrency(task.earnings, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-4 text-sm\">\n <span className=\"flex items-center gap-1.5 text-text-secondary\">\n <ShoppingCart className=\"h-4 w-4\" />\n {task.cartName}\n </span>\n {task.dueTime && (\n <span className=\"flex items-center gap-1.5 text-text-secondary\">\n <Clock className=\"h-4 w-4\" />\n Due {formatTime(task.dueTime)}\n </span>\n )}\n </div>\n </div>\n </GlassCard>\n\n {/* Special Instructions */}\n {task.specialInstructions && (\n <div className=\"rounded-[var(--radius-card)] border border-status-warning-text/20 bg-status-warning-bg-subtle p-4\">\n <p className=\"text-sm text-status-warning-text flex items-start gap-2\">\n <AlertTriangle className=\"h-4 w-4 shrink-0 mt-0.5\" />\n {task.specialInstructions}\n </p>\n </div>\n )}\n\n {/* Delivery note */}\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <StickyNote className=\"h-4 w-4 text-text-secondary\" />\n Delivery note\n </h3>\n <textarea\n value={notes}\n onChange={(e) => {\n setNotes(e.target.value);\n setNotesSaved(false);\n }}\n placeholder=\"Add a delivery note...\"\n rows={3}\n className=\"w-full resize-none rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n />\n <div className=\"mt-3 flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={handleSaveNotes}\n disabled={updateNotes.isPending}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n {updateNotes.isPending ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <StickyNote className=\"h-3.5 w-3.5\" />\n )}\n {updateNotes.isPending ? 'Saving...' : 'Save note'}\n </button>\n {notesSaved && !updateNotes.isPending && (\n <span className=\"text-xs text-status-success-text\">Note saved</span>\n )}\n {updateNotes.isError && (\n <span className=\"text-xs text-status-error-text\">Couldn't save — retry</span>\n )}\n </div>\n </GlassCard>\n\n {/* Primary CTA */}\n <button\n type=\"button\"\n onClick={handleAdvanceStatus}\n disabled={task.status === 'completed' || updateStatus.isPending}\n className={cn(\n 'w-full inline-flex items-center justify-center gap-2 rounded-[var(--radius-card)] px-4 py-3.5 text-base font-semibold transition-colors',\n task.status === 'completed'\n ? 'bg-status-success-bg-subtle text-status-success-text cursor-default'\n : 'bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-60'\n )}\n >\n {updateStatus.isPending ? (\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n ) : (\n <CheckCircle2 className=\"h-5 w-5\" />\n )}\n {ctaLabel}\n </button>\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 text-sm font-semibold text-text-primary\">Delivery timeline</h3>\n <Timeline items={timeline} />\n </GlassCard>\n\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 text-sm font-semibold text-text-primary\">Job details</h3>\n <dl className=\"space-y-3 text-sm\">\n {task.orderId && (\n <div className=\"flex items-center gap-2\">\n <FileText className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Order ID</dt>\n <dd className=\"font-mono font-medium text-text-primary\">{task.orderId}</dd>\n </div>\n </div>\n )}\n {task.customerInfo.name && (\n <div className=\"flex items-center gap-2\">\n <User className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Customer</dt>\n <dd className=\"font-medium text-text-primary\">{task.customerInfo.name}</dd>\n </div>\n </div>\n )}\n {task.distance != null && (\n <div className=\"flex items-center gap-2\">\n <Navigation className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Distance</dt>\n <dd className=\"font-medium text-text-primary\">{task.distance} km</dd>\n </div>\n </div>\n )}\n {task.assignedTime && (\n <div className=\"flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Assigned</dt>\n <dd className=\"font-medium text-text-primary\">\n {formatDate(task.assignedTime)}\n </dd>\n </div>\n </div>\n )}\n </dl>\n </GlassCard>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TaskDetailsPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/worker/TaskDetailsPage.tsx"],"sourcesContent":["/**\n * Task Details Page\n *\n * A delivery-job detail screen, elevated to the kk-worker-02-task-details\n * concept: a stylised (honest, not-to-scale) pickup → drop route panel, a\n * StepProgress tracker for the delivery flow, separate Pickup and Drop cards\n * with Call / Navigate actions, an earnings summary, a delivery-note field and\n * a single primary CTA that advances the task (Mark Picked Up → Mark Delivered).\n *\n * All data is real (useWorkerTasks). Status transitions use\n * useUpdateWorkerTaskStatus; the delivery note uses useUpdateWorkerTask. The\n * order summary (line items, total, payment state, order number) comes from\n * `KadaikodiWorkerTask.order`, whose resolver admits the assigned worker.\n * Nothing is fabricated — there is still no geo data behind the route panel, so\n * it stays a labelled schematic.\n *\n * @module kadaikodi/pages/worker\n */\n\nimport { useState, useEffect, useMemo } from 'react';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Package,\n Phone,\n MapPin,\n Clock,\n Navigation,\n CheckCircle2,\n Loader2,\n Truck,\n ShoppingBag,\n User,\n AlertTriangle,\n FileText,\n StickyNote,\n IndianRupee,\n ShoppingCart,\n RotateCcw,\n} from 'lucide-react';\nimport { GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { StepProgress, Timeline, type TimelineItem } from '../../components/viz';\nimport { PageLayout } from '../../components/PageLayout';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport {\n useWorkerTasks,\n useUpdateWorkerTask,\n useUpdateWorkerTaskStatus,\n} from '../../hooks/useKadaikodiApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatDate } from '../../utils/formatters';\nimport type { PaymentStatus, TaskStatus, WorkerTask, WorkerTaskOrderSummary } from '../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface TaskCustomerInfo {\n name: string;\n phone: string;\n address: string;\n}\n\ninterface TaskDetails {\n id: string;\n orderId: string;\n cartId: string;\n cartName: string;\n type: WorkerTask['type'];\n status: TaskStatus;\n priority: WorkerTask['priority'];\n title: string;\n description: string;\n estimatedTime: number;\n assignedBy: string;\n assignedTime: string;\n dueTime: string;\n location?: string;\n earnings: number;\n distance?: number;\n customerInfo: TaskCustomerInfo;\n specialInstructions?: string;\n notes?: string;\n completedAt?: string;\n order?: WorkerTaskOrderSummary;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst typeLabels: Record<string, string> = {\n delivery: 'Delivery',\n pickup: 'Pickup',\n service: 'Service',\n};\n\nfunction getTaskTypeIcon(type: string) {\n switch (type) {\n case 'delivery':\n return Truck;\n case 'pickup':\n return ShoppingBag;\n case 'service':\n return Package;\n default:\n return FileText;\n }\n}\n\nfunction getPriorityStyle(priority: string): string {\n switch (priority) {\n case 'urgent':\n case 'high':\n return 'bg-status-error-bg-subtle text-status-error-text';\n case 'medium':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'low':\n return 'bg-status-success-bg-subtle text-status-success-text';\n default:\n return 'bg-bg-sunken text-text-secondary';\n }\n}\n\nfunction formatTime(dateString: string): string {\n const d = new Date(dateString);\n if (Number.isNaN(d.getTime())) return dateString;\n return d.toLocaleTimeString('en-IN', { hour: 'numeric', minute: '2-digit', hour12: true });\n}\n\n/** Map a real worker task into the page's detail view-model (no fabricated fields). */\nfunction mapWorkerTaskToDetails(t: WorkerTask): TaskDetails {\n const address = t.deliveryAddress\n ? [\n t.deliveryAddress.street,\n t.deliveryAddress.area,\n t.deliveryAddress.city,\n t.deliveryAddress.pincode,\n ]\n .filter(Boolean)\n .join(', ')\n : '';\n return {\n id: t.id,\n orderId: t.orderId,\n cartId: t.cartId,\n cartName: t.cartName,\n type: t.type,\n status: t.status,\n priority: t.priority,\n title: t.title ?? t.description ?? 'Task',\n description: t.description,\n estimatedTime: t.estimatedTime ?? 0,\n assignedBy: t.assignedBy ?? '',\n assignedTime: t.assignedAt || '',\n dueTime: t.dueAt,\n location: t.location,\n earnings: t.earnings,\n distance: t.distance,\n customerInfo: { name: t.customerName, phone: t.customerPhone, address },\n specialInstructions: t.notes ?? undefined,\n notes: t.notes ?? '',\n completedAt: t.completedAt,\n order: t.order,\n };\n}\n\n/**\n * How each `KadaikodiPaymentStatus` reads to the worker on the doorstep — the\n * distinction that matters to them is \"already settled\" vs \"collect on delivery\".\n */\nconst PAYMENT_META: Record<\n PaymentStatus,\n { label: string; cls: string; icon: typeof CheckCircle2 }\n> = {\n paid: {\n label: 'Paid',\n cls: 'bg-status-success-bg-subtle text-status-success-text',\n icon: CheckCircle2,\n },\n processing: {\n label: 'Payment processing',\n cls: 'bg-status-warning-bg-subtle text-status-warning-text',\n icon: Clock,\n },\n pending: {\n label: 'Collect payment',\n cls: 'bg-status-warning-bg-subtle text-status-warning-text',\n icon: IndianRupee,\n },\n failed: {\n label: 'Payment failed',\n cls: 'bg-status-error-bg-subtle text-status-error-text',\n icon: AlertTriangle,\n },\n refunded: {\n label: 'Refunded',\n cls: 'bg-bg-sunken text-text-secondary',\n icon: RotateCcw,\n },\n};\n\nconst DELIVERY_STEPS = [{ label: 'Assigned' }, { label: 'Picked Up' }, { label: 'Delivered' }];\n\nfunction currentStep(status: TaskStatus): number {\n switch (status) {\n case 'pending':\n return 1;\n case 'in_progress':\n return 2;\n case 'completed':\n return 3;\n case 'blocked':\n case 'cancelled':\n default:\n return 0;\n }\n}\n\n/** True only for the two states the worker can actually advance from. */\nconst canAdvance = (status: TaskStatus): boolean =>\n status === 'pending' || status === 'in_progress';\n\n/**\n * Honest, illustrative pickup → drop panel. This is a stylised schematic (clearly\n * labelled \"not to scale\"), NOT a real map — the worker-task backend does not\n * expose geo-coordinates, so we never imply a real position.\n */\nfunction RouteSchematic({\n pickupLabel,\n dropLabel,\n distance,\n}: {\n pickupLabel: string;\n dropLabel: string;\n distance?: number;\n}) {\n return (\n <div className=\"relative overflow-hidden rounded-[var(--radius-card)] border border-border-subtle bg-bg-sunken\">\n <svg\n viewBox=\"0 0 400 190\"\n className=\"block w-full\"\n role=\"img\"\n aria-label={`Illustrative route from ${pickupLabel} to ${dropLabel}`}\n >\n {/* faint street grid */}\n <g stroke=\"var(--color-border-subtle)\" strokeWidth=\"1\" opacity=\"0.7\">\n <path d=\"M0 45 H400 M0 95 H400 M0 145 H400\" />\n <path d=\"M70 0 V190 M160 0 V190 M250 0 V190 M330 0 V190\" />\n </g>\n {/* route */}\n <path\n d=\"M70 55 H150 Q165 55 165 70 V120 Q165 135 180 135 H300\"\n fill=\"none\"\n stroke=\"var(--color-accent-primary)\"\n strokeWidth=\"3.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray=\"1 0\"\n />\n {/* pickup node */}\n <circle cx=\"70\" cy=\"55\" r=\"7\" fill=\"var(--color-accent-primary)\" />\n <circle cx=\"70\" cy=\"55\" r=\"12\" fill=\"var(--color-accent-primary)\" opacity=\"0.18\" />\n {/* drop node */}\n <circle cx=\"300\" cy=\"135\" r=\"7\" fill=\"var(--color-status-success-text)\" />\n <circle cx=\"300\" cy=\"135\" r=\"12\" fill=\"var(--color-status-success-text)\" opacity=\"0.18\" />\n </svg>\n <div className=\"pointer-events-none absolute left-3 top-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur\">\n <Package className=\"h-3.5 w-3.5 text-accent-primary\" />\n <span className=\"max-w-[9rem] truncate text-[11px] font-medium text-text-primary\">\n {pickupLabel}\n </span>\n </div>\n <div className=\"pointer-events-none absolute bottom-3 right-3 flex items-center gap-1.5 rounded-md bg-bg-surface/85 px-2 py-1 backdrop-blur\">\n <MapPin className=\"h-3.5 w-3.5 text-status-success-text\" />\n <span className=\"max-w-[9rem] truncate text-[11px] font-medium text-text-primary\">\n {dropLabel}\n </span>\n </div>\n <div className=\"flex items-center justify-between border-t border-border-subtle px-3 py-2\">\n <span className=\"text-[11px] text-text-muted\">Illustrative route · not to scale</span>\n {distance != null && (\n <span className=\"text-[11px] font-medium text-text-secondary tabular-nums\">\n {distance} km\n </span>\n )}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function TaskDetailsPage() {\n const { taskId } = useParams<{ taskId: string }>();\n const { navigateTo, currentUser } = useKadaikodi();\n const workerId = currentUser?.id ?? '';\n const { data: tasks = [], isLoading: loading } = useWorkerTasks(workerId);\n const updateStatus = useUpdateWorkerTaskStatus();\n const updateNotes = useUpdateWorkerTask();\n const [task, setTask] = useState<TaskDetails | null>(null);\n const [notes, setNotes] = useState('');\n const [notesSaved, setNotesSaved] = useState(false);\n\n useEffect(() => {\n const found = tasks.find((t) => t.id === taskId);\n if (found) {\n const mapped = mapWorkerTaskToDetails(found);\n setTask(mapped);\n setNotes(mapped.notes ?? '');\n } else {\n setTask(null);\n }\n }, [tasks, taskId]);\n\n const handleAdvanceStatus = () => {\n if (!task) return;\n if (task.status === 'pending') {\n setTask({ ...task, status: 'in_progress' });\n updateStatus.mutate({ taskId: task.id, status: 'IN_PROGRESS' });\n } else if (task.status === 'in_progress') {\n setTask({ ...task, status: 'completed' });\n updateStatus.mutate({ taskId: task.id, status: 'COMPLETED' });\n }\n };\n\n const handleCallCustomer = () => {\n if (task?.customerInfo?.phone) {\n window.location.href = `tel:${task.customerInfo.phone.replace(/\\s/g, '')}`;\n }\n };\n\n const handleNavigate = (query: string) => {\n if (query) {\n window.open(`https://maps.google.com?q=${encodeURIComponent(query)}`, '_blank');\n }\n };\n\n const handleSaveNotes = () => {\n if (!task) return;\n setNotesSaved(false);\n updateNotes.mutate(\n { taskId: task.id, notes },\n {\n onSuccess: () => {\n setTask((t) => (t ? { ...t, notes } : t));\n setNotesSaved(true);\n },\n }\n );\n };\n\n const timeline = useMemo<TimelineItem[]>(() => {\n if (!task) return [];\n return [\n {\n title: 'Task assigned',\n time: task.assignedTime ? formatTime(task.assignedTime) : undefined,\n meta: task.assignedBy || undefined,\n tone: 'success',\n },\n {\n title: 'Picked up',\n time: task.status === 'in_progress' || task.status === 'completed' ? 'Done' : undefined,\n tone: task.status === 'in_progress' || task.status === 'completed' ? 'success' : 'muted',\n },\n {\n title: 'Delivered',\n time:\n task.status === 'completed'\n ? task.completedAt\n ? formatTime(task.completedAt)\n : 'Done'\n : undefined,\n tone: task.status === 'completed' ? 'success' : 'muted',\n },\n ];\n }, [task]);\n\n if (loading) {\n return (\n <PageLayout title=\"Task Details\">\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 task details...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n if (!task) {\n return (\n <PageLayout title=\"Task Not Found\">\n <EmptyState\n icon={<FileText className=\"h-12 w-12\" />}\n title=\"Task not found\"\n description={`No task found with ID \"${taskId}\".`}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg-hover transition-colors\"\n >\n View All Orders\n </button>\n }\n />\n </PageLayout>\n );\n }\n\n const TaskTypeIcon = getTaskTypeIcon(task.type);\n const typeLabel = typeLabels[task.type] ?? 'Task';\n const pickupLabel = task.cartName || 'Pickup';\n const dropLabel = task.customerInfo.address || task.customerInfo.name || 'Drop-off';\n const advanceable = canAdvance(task.status);\n const ctaLabel =\n task.status === 'pending'\n ? 'Mark Picked Up'\n : task.status === 'in_progress'\n ? 'Mark Delivered'\n : task.status === 'completed'\n ? 'Delivered'\n : task.status === 'cancelled'\n ? 'Cancelled'\n : 'Blocked';\n // Prefer the order's human reference over the raw task/order UUID.\n const orderRef = task.order?.orderNumber || task.orderId;\n const payment = task.order ? PAYMENT_META[task.order.paymentStatus] : undefined;\n const itemCount = task.order?.items.reduce((sum, i) => sum + i.quantity, 0) ?? 0;\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3 min-w-0\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/worker/orders')}\n className=\"rounded-md p-1 text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors shrink-0\"\n aria-label=\"Back to orders\"\n >\n <ArrowLeft className=\"h-5 w-5\" />\n </button>\n <span className=\"truncate\">\n {typeLabel}\n {orderRef ? <span className=\"text-text-secondary\"> · #{orderRef}</span> : null}\n </span>\n </div>\n }\n description=\"Everything you need to complete this delivery\"\n >\n <PagePurpose className=\"mb-6\">\n One delivery, start to finish. Reach the customer, follow the route, jot a note, and advance\n the job — mark it picked up, then delivered — so nothing gets missed and your completion\n stats stay strong.\n </PagePurpose>\n\n <div className=\"space-y-6\">\n {/* Delivery step tracker */}\n <GlassCard treatment=\"metric\" className=\"p-5\">\n <div className=\"mb-4 flex flex-wrap items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-accent-primary/12 text-accent-primary\">\n <TaskTypeIcon className=\"h-4.5 w-4.5\" />\n </span>\n <h2 className=\"text-base font-semibold text-text-primary\">{task.title}</h2>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium uppercase',\n getPriorityStyle(task.priority)\n )}\n >\n {task.priority}\n </span>\n </div>\n <StepProgress steps={DELIVERY_STEPS} current={currentStep(task.status)} />\n </GlassCard>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Main column */}\n <div className=\"lg:col-span-2 space-y-6\">\n <RouteSchematic\n pickupLabel={pickupLabel}\n dropLabel={dropLabel}\n distance={task.distance}\n />\n\n {/* Pickup + Drop cards */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n {/* Pickup */}\n <GlassCard className=\"p-5\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">\n Pickup\n </p>\n <p className=\"mt-1 text-sm font-semibold text-text-primary\">{task.cartName}</p>\n {task.location && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.location}</p>\n )}\n <div className=\"mt-4\">\n <button\n type=\"button\"\n onClick={() => handleNavigate(task.location || task.cartName)}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n </div>\n </GlassCard>\n\n {/* Drop */}\n <GlassCard className=\"p-5\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">Drop</p>\n <p className=\"mt-1 text-sm font-semibold text-text-primary\">\n {task.customerInfo.name || 'Customer'}\n </p>\n {task.customerInfo.address && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.customerInfo.address}</p>\n )}\n {task.customerInfo.phone && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{task.customerInfo.phone}</p>\n )}\n <div className=\"mt-4 flex gap-2\">\n {task.customerInfo.phone && (\n <button\n type=\"button\"\n onClick={handleCallCustomer}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call\n </button>\n )}\n {task.customerInfo.address && (\n <button\n type=\"button\"\n onClick={() => handleNavigate(task.customerInfo.address)}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n )}\n </div>\n </GlassCard>\n </div>\n\n {/* Order summary — real line items from the task's parent order */}\n {task.order && (\n <GlassCard className=\"p-5\">\n <div className=\"mb-3 flex flex-wrap items-center justify-between gap-2\">\n <h3 className=\"flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <ShoppingBag className=\"h-4 w-4 text-text-secondary\" />\n Order\n {task.order.orderNumber && (\n <span className=\"font-mono text-xs font-normal text-text-secondary\">\n #{task.order.orderNumber}\n </span>\n )}\n </h3>\n {payment && (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium',\n payment.cls\n )}\n >\n <payment.icon className=\"h-3 w-3\" />\n {payment.label}\n </span>\n )}\n </div>\n\n {task.order.items.length > 0 ? (\n <>\n <p className=\"mb-2 text-xs text-text-secondary\">\n {itemCount} {itemCount === 1 ? 'item' : 'items'}\n </p>\n <ul className=\"divide-y divide-border-subtle\">\n {task.order.items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-center justify-between gap-3 py-2 text-sm\"\n >\n <span className=\"min-w-0 truncate text-text-primary\">{item.name}</span>\n <span className=\"shrink-0 tabular-nums text-text-secondary\">\n ×{item.quantity}\n </span>\n </li>\n ))}\n </ul>\n </>\n ) : (\n <p className=\"text-sm text-text-secondary\">\n This order has no itemised lines recorded.\n </p>\n )}\n\n <div className=\"mt-3 flex items-center justify-between border-t border-border-subtle pt-3\">\n <span className=\"text-sm text-text-secondary\">Order total</span>\n <span className=\"text-base font-semibold tabular-nums text-text-primary\">\n {formatCurrency(task.order.total, { minimumFractionDigits: 0 })}\n </span>\n </div>\n </GlassCard>\n )}\n\n {/* Earnings summary */}\n <GlassCard treatment=\"insight\" className=\"p-5\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle text-status-success-text\">\n <IndianRupee className=\"h-4.5 w-4.5\" />\n </span>\n <div>\n <p className=\"text-xs text-text-secondary\">You earn</p>\n <p className=\"text-lg font-bold text-text-primary\">\n {formatCurrency(task.earnings, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-4 text-sm\">\n <span className=\"flex items-center gap-1.5 text-text-secondary\">\n <ShoppingCart className=\"h-4 w-4\" />\n {task.cartName}\n </span>\n {task.dueTime && (\n <span className=\"flex items-center gap-1.5 text-text-secondary\">\n <Clock className=\"h-4 w-4\" />\n Due {formatTime(task.dueTime)}\n </span>\n )}\n </div>\n </div>\n </GlassCard>\n\n {/* Special Instructions */}\n {task.specialInstructions && (\n <div className=\"rounded-[var(--radius-card)] border border-status-warning-text/20 bg-status-warning-bg-subtle p-4\">\n <p className=\"text-sm text-status-warning-text flex items-start gap-2\">\n <AlertTriangle className=\"h-4 w-4 shrink-0 mt-0.5\" />\n {task.specialInstructions}\n </p>\n </div>\n )}\n\n {/* Delivery note */}\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <StickyNote className=\"h-4 w-4 text-text-secondary\" />\n Delivery note\n </h3>\n <textarea\n value={notes}\n onChange={(e) => {\n setNotes(e.target.value);\n setNotesSaved(false);\n }}\n placeholder=\"Add a delivery note...\"\n rows={3}\n className=\"w-full resize-none rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n />\n <div className=\"mt-3 flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={handleSaveNotes}\n disabled={updateNotes.isPending}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-default bg-bg-surface px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n {updateNotes.isPending ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <StickyNote className=\"h-3.5 w-3.5\" />\n )}\n {updateNotes.isPending ? 'Saving...' : 'Save note'}\n </button>\n {notesSaved && !updateNotes.isPending && (\n <span className=\"text-xs text-status-success-text\">Note saved</span>\n )}\n {updateNotes.isError && (\n <span className=\"text-xs text-status-error-text\">Couldn't save — retry</span>\n )}\n </div>\n </GlassCard>\n\n {/* Primary CTA */}\n <button\n type=\"button\"\n onClick={handleAdvanceStatus}\n disabled={!advanceable || updateStatus.isPending}\n className={cn(\n 'w-full inline-flex items-center justify-center gap-2 rounded-[var(--radius-card)] px-4 py-3.5 text-base font-semibold transition-colors',\n !advanceable\n ? task.status === 'completed'\n ? 'bg-status-success-bg-subtle text-status-success-text cursor-default'\n : 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-60'\n )}\n >\n {updateStatus.isPending ? (\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n ) : task.status === 'blocked' || task.status === 'cancelled' ? (\n <AlertTriangle className=\"h-5 w-5\" />\n ) : (\n <CheckCircle2 className=\"h-5 w-5\" />\n )}\n {ctaLabel}\n </button>\n {task.status === 'blocked' && (\n <p className=\"-mt-4 text-xs text-text-secondary\">\n This task is blocked. Ask the cart owner to unblock it before continuing.\n </p>\n )}\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 text-sm font-semibold text-text-primary\">Delivery timeline</h3>\n <Timeline items={timeline} />\n </GlassCard>\n\n <GlassCard className=\"p-5\">\n <h3 className=\"mb-3 text-sm font-semibold text-text-primary\">Job details</h3>\n <dl className=\"space-y-3 text-sm\">\n {orderRef && (\n <div className=\"flex items-center gap-2\">\n <FileText className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Order</dt>\n <dd className=\"font-mono font-medium text-text-primary\">{orderRef}</dd>\n </div>\n </div>\n )}\n {task.customerInfo.name && (\n <div className=\"flex items-center gap-2\">\n <User className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Customer</dt>\n <dd className=\"font-medium text-text-primary\">{task.customerInfo.name}</dd>\n </div>\n </div>\n )}\n {task.distance != null && (\n <div className=\"flex items-center gap-2\">\n <Navigation className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Distance</dt>\n <dd className=\"font-medium text-text-primary\">{task.distance} km</dd>\n </div>\n </div>\n )}\n {task.assignedTime && (\n <div className=\"flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-text-secondary shrink-0\" />\n <div>\n <dt className=\"text-xs text-text-secondary\">Assigned</dt>\n <dd className=\"font-medium text-text-primary\">\n {formatDate(task.assignedTime)}\n </dd>\n </div>\n </div>\n )}\n </dl>\n </GlassCard>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
@@ -108,6 +108,13 @@ export interface BusinessDayHours {
|
|
|
108
108
|
close: string;
|
|
109
109
|
isOpen: boolean;
|
|
110
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Lifecycle status of a service provider (cart), mirroring the service's
|
|
113
|
+
* `KadaikodiProviderStatus` enum exactly. Values arrive uppercase from the
|
|
114
|
+
* resolver; `normalizeProviderStatus` in the API layer is the only place that
|
|
115
|
+
* widens an unrecognised value.
|
|
116
|
+
*/
|
|
117
|
+
export type ProviderLifecycleStatus = 'DRAFT' | 'ACTIVE' | 'VERIFIED' | 'PAUSED' | 'SUSPENDED' | 'ARCHIVED';
|
|
111
118
|
/**
|
|
112
119
|
* A service provider (cart) on the platform
|
|
113
120
|
*/
|
|
@@ -129,6 +136,13 @@ export interface MockCart {
|
|
|
129
136
|
images?: string[];
|
|
130
137
|
isOpen: boolean;
|
|
131
138
|
isVerified?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Raw `KadaikodiServiceProvider.status` enum value as the service stores it
|
|
141
|
+
* (DRAFT | ACTIVE | VERIFIED | PAUSED | SUSPENDED | ARCHIVED). `isOpen` and
|
|
142
|
+
* `isVerified` are lossy derivations of this — admin surfaces that must tell
|
|
143
|
+
* a suspended cart from an archived or paused one read `status` directly.
|
|
144
|
+
*/
|
|
145
|
+
status?: ProviderLifecycleStatus;
|
|
132
146
|
location: {
|
|
133
147
|
address: string;
|
|
134
148
|
coordinates: {
|
|
@@ -152,7 +166,7 @@ export type OrderStatus = 'pending' | 'confirmed' | 'preparing' | 'ready' | 'pic
|
|
|
152
166
|
/**
|
|
153
167
|
* Payment status for an order
|
|
154
168
|
*/
|
|
155
|
-
export type PaymentStatus = 'pending' | '
|
|
169
|
+
export type PaymentStatus = 'pending' | 'processing' | 'paid' | 'failed' | 'refunded';
|
|
156
170
|
/**
|
|
157
171
|
* An item within an order
|
|
158
172
|
*/
|
|
@@ -342,6 +356,14 @@ export interface AdminAnalytics {
|
|
|
342
356
|
total: number;
|
|
343
357
|
status: string;
|
|
344
358
|
createdAt: string;
|
|
359
|
+
/**
|
|
360
|
+
* Ships in the payload today — `adminAnalytics` selects `customerId` on
|
|
361
|
+
* every row and `orderTrends` is an opaque JSON scalar, so the field
|
|
362
|
+
* arrives over the wire whether or not the client names it. It is the only
|
|
363
|
+
* per-customer signal in this query and is what makes a real customer-growth
|
|
364
|
+
* series derivable (`customerGrowth` itself is a bare total).
|
|
365
|
+
*/
|
|
366
|
+
customerId?: string | null;
|
|
345
367
|
}>;
|
|
346
368
|
topProviders: Array<{
|
|
347
369
|
id: string;
|
|
@@ -361,7 +383,26 @@ export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
|
|
|
361
383
|
/**
|
|
362
384
|
* Task status in the worker workflow
|
|
363
385
|
*/
|
|
364
|
-
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
|
|
386
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled' | 'blocked';
|
|
387
|
+
/**
|
|
388
|
+
* The slice of the task's parent order a worker is allowed to see.
|
|
389
|
+
*
|
|
390
|
+
* Sourced from `KadaikodiWorkerTask.order`, whose resolver (`getOrder`) admits
|
|
391
|
+
* the worker the task is assigned to, so every field here is really readable by
|
|
392
|
+
* the signed-in worker — it is not a merchant-only projection.
|
|
393
|
+
*/
|
|
394
|
+
export interface WorkerTaskOrderSummary {
|
|
395
|
+
id: string;
|
|
396
|
+
/** Human-readable order reference (e.g. "ORD-1042"), not the UUID. */
|
|
397
|
+
orderNumber: string;
|
|
398
|
+
total: number;
|
|
399
|
+
paymentStatus: PaymentStatus;
|
|
400
|
+
items: Array<{
|
|
401
|
+
id: string;
|
|
402
|
+
name: string;
|
|
403
|
+
quantity: number;
|
|
404
|
+
}>;
|
|
405
|
+
}
|
|
365
406
|
/**
|
|
366
407
|
* A task assigned to a worker
|
|
367
408
|
*/
|
|
@@ -386,8 +427,11 @@ export interface WorkerTask {
|
|
|
386
427
|
title?: string;
|
|
387
428
|
estimatedTime?: number;
|
|
388
429
|
dueTime?: string;
|
|
430
|
+
/** Pickup address — the assigned provider's own `location.address`. */
|
|
389
431
|
location?: string;
|
|
390
432
|
assignedBy?: string;
|
|
433
|
+
/** Parent order (items, total, payment state) when the task carries an orderId. */
|
|
434
|
+
order?: WorkerTaskOrderSummary;
|
|
391
435
|
}
|
|
392
436
|
/**
|
|
393
437
|
* A scheduled shift for a worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTr.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useTr.ts"],"names":[],"mappings":"AAkBA,wBAAgB,KAAK,IAAI,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACrC,MAAM,CAcV"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useCallback as e } from "react";
|
|
2
|
+
import { useI18n as t } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
3
|
+
//#region src/shared/hooks/useTr.ts
|
|
4
|
+
function n() {
|
|
5
|
+
let { t: n } = t();
|
|
6
|
+
return e((e, t, r) => {
|
|
7
|
+
let i = n(e), a = i === e ? t : i;
|
|
8
|
+
return r ? Object.entries(r).reduce((e, [t, n]) => e.replace(RegExp(`\\{\\{${t}\\}\\}`, "g"), String(n)), a) : a;
|
|
9
|
+
}, [n]);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as useTr };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=useTr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTr.js","names":[],"sources":["../../../src/shared/hooks/useTr.ts"],"sourcesContent":["/**\n * useTr — translation hook with fallback semantics.\n *\n * Wraps `useI18n().t()` so that when a key has no translation (i.e. the\n * provider returns the key itself), the caller's English fallback is used\n * instead. This keeps consumer call sites consistent and avoids leaking\n * untranslated keys into the UI.\n *\n * Supports optional interpolation params using `{{key}}` placeholders.\n *\n * @example\n * const tr = useTr();\n * return <h1>{tr('kadaikodi.dashboard.title', 'Dashboard')}</h1>;\n * return <p>{tr('kadaikodi.delete.confirm', 'Delete {{count}} items?', { count: 5 })}</p>;\n */\nimport { useCallback } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nexport function useTr(): (\n key: string,\n fallback: string,\n params?: Record<string, string | number>\n) => string {\n const { t } = useI18n();\n return useCallback(\n (key: string, fallback: string, params?: Record<string, string | number>): string => {\n const translated = t(key);\n const raw = translated === key ? fallback : translated;\n if (!params) return raw;\n return Object.entries(params).reduce(\n (str, [k, v]) => str.replace(new RegExp(`\\\\{\\\\{${k}\\\\}\\\\}`, 'g'), String(v)),\n raw\n );\n },\n [t]\n );\n}\n"],"mappings":";;;AAkBA,SAAgB,IAIJ;CACV,IAAM,EAAE,SAAM,GAAS;AACvB,QAAO,GACJ,GAAa,GAAkB,MAAqD;EACnF,IAAM,IAAa,EAAE,EAAI,EACnB,IAAM,MAAe,IAAM,IAAW;AAE5C,SADK,IACE,OAAO,QAAQ,EAAO,CAAC,QAC3B,GAAK,CAAC,GAAG,OAAO,EAAI,QAAY,OAAO,SAAS,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC,EAC5E,EACD,GAJmB;IAMtB,CAAC,EAAE,CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-kadaikodi",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.830.1",
|
|
4
4
|
"description": "Burdenoff Kadaikodi Microfrontend - Mobile services marketplace platform for connecting service providers with customers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"zustand": "^5.0.0"
|
|
102
102
|
},
|
|
103
103
|
"publishConfig": {
|
|
104
|
-
"access": "
|
|
104
|
+
"access": "public"
|
|
105
105
|
},
|
|
106
106
|
"overrides": {
|
|
107
107
|
"lodash": ">=4.17.21",
|