'use client' import { useState } from 'react' import { cn } from '@/lib/utils' import { TaskCard } from './task-card' import { Plus } from 'lucide-react' import type { VikunjaTask, VikunjaBucket } from '@/lib/vikunja-client' interface KanbanColumnProps { bucket: VikunjaBucket tasks: VikunjaTask[] onEditTask?: (task: VikunjaTask) => void onToggleDone?: (task: VikunjaTask) => void onDragStart?: (e: React.DragEvent, task: VikunjaTask) => void onDrop?: (bucketId: number) => void onQuickAdd?: (title: string, bucketId: number) => void } export function KanbanColumn({ bucket, tasks, onEditTask, onToggleDone, onDragStart, onDrop, onQuickAdd, }: KanbanColumnProps) { const [isDragOver, setIsDragOver] = useState(false) const [isAdding, setIsAdding] = useState(false) const [quickTitle, setQuickTitle] = useState('') function handleDragOver(e: React.DragEvent) { e.preventDefault() setIsDragOver(true) } function handleDragLeave() { setIsDragOver(false) } function handleDrop(e: React.DragEvent) { e.preventDefault() setIsDragOver(false) onDrop?.(bucket.id) } function handleQuickAdd() { const title = quickTitle.trim() if (title) { onQuickAdd?.(title, bucket.id) setQuickTitle('') setIsAdding(false) } } return (

{bucket.title}

{tasks.length}
{isAdding && (
setQuickTitle(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter') handleQuickAdd() if (e.key === 'Escape') { setIsAdding(false); setQuickTitle('') } }} placeholder="Task title..." className="w-full rounded bg-transparent px-1 py-0.5 text-sm outline-none placeholder:text-muted-foreground" autoFocus />
)} {tasks.map((task) => ( ))} {tasks.length === 0 && !isAdding && (
Drop tasks here
)}
) }