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'; interface KanbanColumnProps { id: TaskStatus; title: string; color: string; tasks: Task[]; onCreateTask?: (data: CreateTaskData) => Promise; onDeleteTask?: (taskId: string) => Promise; onEditTask?: (task: Task) => void; onUpdateTitle?: (taskId: string, newTitle: string) => Promise; } export function KanbanColumn({ id, title, color, tasks, onCreateTask, onDeleteTask, onEditTask, onUpdateTitle }: KanbanColumnProps) { const [showQuickAdd, setShowQuickAdd] = useState(false); // Configuration de la zone droppable const { setNodeRef, isOver } = useDroppable({ id: id, }); // Couleurs tech/cyberpunk const techStyles = { gray: { border: 'border-slate-700', glow: 'shadow-slate-500/20', accent: 'text-slate-400', badge: 'bg-slate-800 text-slate-300 border border-slate-600' }, blue: { border: 'border-cyan-500/30', glow: 'shadow-cyan-500/20', accent: 'text-cyan-400', badge: 'bg-cyan-950 text-cyan-300 border border-cyan-500/30' }, green: { border: 'border-emerald-500/30', glow: 'shadow-emerald-500/20', accent: 'text-emerald-400', badge: 'bg-emerald-950 text-emerald-300 border border-emerald-500/30' }, red: { border: 'border-red-500/30', glow: 'shadow-red-500/20', accent: 'text-red-400', badge: 'bg-red-950 text-red-300 border border-red-500/30' } }; const style = techStyles[color as keyof typeof techStyles]; // Icônes tech const techIcons = { todo: '⚡', in_progress: '🔄', done: '✓', cancelled: '✕' }; const badgeVariant = color === 'green' ? 'success' : color === 'blue' ? 'primary' : color === 'red' ? 'danger' : 'default'; return (

{title}

{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 ? (
{techIcons[id]}

NO DATA

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