import { Task, TaskStatus } from '@/lib/types'; import { TaskCard } from './TaskCard'; import { QuickAddTask } from './QuickAddTask'; import { Card, CardHeader, CardContent } from '@/components/ui/Card'; import { Badge } from '@/components/ui/Badge'; import { CreateTaskData } from '@/clients/tasks-client'; import { useState } from 'react'; import { useDroppable } from '@dnd-kit/core'; import { getStatusConfig, getTechStyle, getBadgeVariant } from '@/lib/status-config'; interface KanbanColumnProps { id: TaskStatus; tasks: Task[]; onCreateTask?: (data: CreateTaskData) => Promise; onDeleteTask?: (taskId: string) => Promise; onEditTask?: (task: Task) => void; onUpdateTitle?: (taskId: string, newTitle: string) => Promise; compactView?: boolean; } export function KanbanColumn({ id, tasks, onCreateTask, onDeleteTask, onEditTask, onUpdateTitle, compactView = false }: KanbanColumnProps) { const [showQuickAdd, setShowQuickAdd] = useState(false); // Configuration de la zone droppable const { setNodeRef, isOver } = useDroppable({ id: id, }); // Récupération de la config du statut const statusConfig = getStatusConfig(id); const style = getTechStyle(statusConfig.color); const badgeVariant = getBadgeVariant(statusConfig.color); return (

{statusConfig.label} {statusConfig.icon}

{String(tasks.length).padStart(2, '0')} {onCreateTask && ( )}
{/* Quick Add Task */} {showQuickAdd && onCreateTask && ( { await onCreateTask(data); // Ne pas fermer automatiquement pour permettre la création en série }} onCancel={() => setShowQuickAdd(false)} /> )} {tasks.length === 0 && !showQuickAdd ? (
{statusConfig.icon}

NO DATA

) : ( tasks.map((task) => ( )) )}
); }