import type { TaskStatus } from '@self/db'; import type { get_tasks } from '../../service.ts'; import { TASK_STATUS_DESCRIPTION_MAP } from '@self/db/task-status'; import { SITE_BASE_URL } from '../../service.ts'; type StatusColorMap = Record; const STATUS_COLOR_MAP_ASSIGN: StatusColorMap = { PAUSED: 'bg-blue-100 text-blue-800', PENDING: 'bg-blue-100 text-blue-800', PICKUP: 'bg-green-100 text-green-800', DROPOFF: 'bg-green-100 text-green-800', DELIVERED: 'bg-green-100 text-green-800', CANCELLED: 'bg-red-100 text-red-800', RETURN: 'bg-red-100 text-red-800', RETURN_COMPLETE: 'bg-red-100 text-red-800', }; const STATUS_COLOR_MAP_PICKUP: StatusColorMap = { PAUSED: 'bg-blue-100 text-blue-800', PENDING: 'bg-blue-100 text-blue-800', PICKUP: 'bg-blue-100 text-blue-800', DROPOFF: 'bg-green-100 text-green-800', DELIVERED: 'bg-green-100 text-green-800', CANCELLED: 'bg-red-100 text-red-800', RETURN: 'bg-red-100 text-red-800', RETURN_COMPLETE: 'bg-red-100 text-red-800', }; const STATUS_COLOR_MAP_DROPOFF: StatusColorMap = { PAUSED: 'bg-blue-100 text-blue-800', PENDING: 'bg-blue-100 text-blue-800', PICKUP: 'bg-blue-100 text-blue-800', DROPOFF: 'bg-blue-100 text-blue-800', DELIVERED: 'bg-green-100 text-green-800', CANCELLED: 'bg-red-100 text-red-800', RETURN: 'bg-red-100 text-red-800', RETURN_COMPLETE: 'bg-red-100 text-red-800', }; const finalized_at_format_options: Intl.DateTimeFormatOptions = { month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', hour12: true, }; type Task = NonNullable>>[number]; export function TaskInfo({ task }: { task: Task }) { const status = task.status as TaskStatus; const pickup_finalized_at = task.stops.find(x => x.kind === 'PICKUP')?.finalized_at; const dropoff_finalized_at = task.stops.find(x => x.kind === 'DROPOFF')?.finalized_at; const task_url = `${SITE_BASE_URL}/tasks/${task.id}`; return (
{task.status !== 'PAUSED' ? ( View Details ) : ( View Shipping Rate )}
👤
1. Assign driver
 
📦
2. Pickup
{typeof pickup_finalized_at === 'string' ? new Date(pickup_finalized_at).toLocaleString('en-US', finalized_at_format_options) : '\u00A0'}
🚚
3. Dropoff
{typeof dropoff_finalized_at === 'string' ? new Date(dropoff_finalized_at).toLocaleString('en-US', finalized_at_format_options) : '\u00A0'}
Status: {TASK_STATUS_DESCRIPTION_MAP[status]} {' '} See task details.
); }