import { Task } from "@/lib/schema/tasks" import { Checkbox } from "@/components/ui/checkbox" import { format } from "date-fns" import { useState, useRef, useEffect } from "react" interface TaskItemProps { task: Task onUpdateTask: (taskId: string, updates: Partial) => void onDeleteTask: (taskId: string) => void } export const TaskItem: React.FC = ({ task, onUpdateTask, onDeleteTask }) => { const [isEditing, setIsEditing] = useState(false) const [editedTitle, setEditedTitle] = useState(task.title) const inputRef = useRef(null) useEffect(() => { if (isEditing && inputRef.current) { inputRef.current.focus() } }, [isEditing]) const statusChange = (checked: boolean) => { if (checked) { onDeleteTask(task.id) } else { onUpdateTask(task.id, { status: "todo" }) } } const clickTitle = () => { setIsEditing(true) } const titleChange = (e: React.ChangeEvent) => { setEditedTitle(e.target.value) } const titleBlur = () => { setIsEditing(false) if (editedTitle.trim() !== task.title) { onUpdateTask(task.id, { title: editedTitle.trim() }) } } const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter") { titleBlur() } } const formattedDate = task.dueDate ? format(new Date(task.dueDate), "EEE, MMMM do, yyyy") : "No due date" return (
  • {isEditing ? ( ) : (

    {task.title}

    )}
    {formattedDate}
  • ) }