import { useCallback, useState } from "react"; import type { Task, TaskDetail } from "@hai/core"; import { fetchTaskDetail } from "../api"; import type { ToastType } from "../hooks/useToast"; interface TaskCardProps { task: Task; onOpenDetail: (task: TaskDetail) => void; addToast: (message: string, type?: ToastType) => void; } export function TaskCard({ task, onOpenDetail, addToast }: TaskCardProps) { const [dragging, setDragging] = useState(false); const handleDragStart = useCallback((e: React.DragEvent) => { e.dataTransfer.setData("text/plain", task.id); e.dataTransfer.effectAllowed = "move"; setDragging(true); }, [task.id]); const handleDragEnd = useCallback(() => { setDragging(false); }, []); const handleClick = useCallback(async () => { try { const detail = await fetchTaskDetail(task.id); onOpenDetail(detail); } catch (err: any) { addToast(err.message, "error"); } }, [task.id, onOpenDetail, addToast]); return (
{task.id}
{task.title}
{task.dependencies && task.dependencies.length > 0 && (
⛓ {task.dependencies.length} dep{task.dependencies.length > 1 ? "s" : ""}
)}
); }