import type { Task } from "@mosaic/shared"; import { TaskStatus, TaskPriority } from "@mosaic/shared"; import { formatDate, isPastTarget, isApproachingTarget } from "@/lib/utils/date-format"; interface TaskItemProps { task: Task; } const statusIcons: Record = { [TaskStatus.NOT_STARTED]: "βšͺ", [TaskStatus.IN_PROGRESS]: "🟒", [TaskStatus.PAUSED]: "⏸️", [TaskStatus.COMPLETED]: "βœ…", [TaskStatus.ARCHIVED]: "πŸ’€", }; const priorityLabels: Record = { [TaskPriority.HIGH]: "High priority", [TaskPriority.MEDIUM]: "Medium priority", [TaskPriority.LOW]: "Low priority", }; export function TaskItem({ task }: TaskItemProps) { const statusIcon = statusIcons[task.status]; const priorityLabel = priorityLabels[task.priority]; // PDA-friendly date status let dateStatus = ""; if (task.dueDate) { if (isPastTarget(task.dueDate)) { dateStatus = "Target passed"; } else if (isApproachingTarget(task.dueDate)) { dateStatus = "Approaching target"; } } return (
{statusIcon}

{task.title}

{task.description && (

{task.description}

)}
{task.priority && ( {priorityLabel} )} {task.dueDate && ( {formatDate(task.dueDate)} )} {dateStatus && ( {dateStatus} )}
); }