"use client"; import { useMemo } from "react"; import { TaskCard } from "@/components/molecules/TaskCard"; import { cn } from "@/lib/utils"; type Task = { id: string; title: string; status: string; due_at?: string | null; }; type TaskBoardProps = { tasks: Task[]; onCreateTask: () => void; isCreateDisabled?: boolean; }; const columns = [ { title: "Inbox", status: "inbox" }, { title: "Assigned", status: "assigned" }, { title: "In Progress", status: "in_progress" }, { title: "Testing", status: "testing" }, { title: "Review", status: "review" }, { title: "Done", status: "done" }, ]; const formatDueDate = (value?: string | null) => { if (!value) return undefined; const date = new Date(value); if (Number.isNaN(date.getTime())) return undefined; return date.toLocaleDateString(undefined, { month: "short", day: "numeric", }); }; export function TaskBoard({ tasks, onCreateTask, isCreateDisabled = false, }: TaskBoardProps) { const grouped = useMemo(() => { const buckets: Record = {}; for (const column of columns) { buckets[column.status] = []; } tasks.forEach((task) => { const bucket = buckets[task.status] ?? buckets.inbox; bucket.push(task); }); return buckets; }, [tasks]); return (
{columns.map((column) => { const columnTasks = grouped[column.status] ?? []; return (

{column.title}

{columnTasks.length}
{column.status === "inbox" ? ( ) : null} {columnTasks.map((task) => ( ))}
); })}
); }