"use client"; import { useState } from "react"; import { ArrowLeft, MoreHorizontal, Pencil, Trash2, Clock, Copy, ExternalLink } from "lucide-react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { DeleteConfirmationDialog } from "@/components/ui/delete-confirmation-dialog"; import { TaskFormSheet } from "@/components/task-form/task-form-sheet"; import { deleteTask } from "@/lib/tasksService"; import { Task, TaskStatus, TaskPriority, TASK_STATUS_CONFIG, TASK_PRIORITY_CONFIG } from "@/types/task"; import { Project } from "@/types/project"; interface TaskHeaderProps { task: Task; project: Project | null; onTaskUpdated?: (task: Task) => void; onTaskDeleted?: () => void; } // Badge de estado function TaskStatusBadge({ status }: { status: TaskStatus }) { const config = TASK_STATUS_CONFIG[status]; return ( {config.label} ); } // Badge de prioridad function TaskPriorityBadge({ priority }: { priority: TaskPriority }) { const config = TASK_PRIORITY_CONFIG[priority]; if (priority === '0') return null; return ( {config.label} ); } export function TaskHeader({ task, project, onTaskUpdated, onTaskDeleted }: TaskHeaderProps) { const router = useRouter(); const [isEditSheetOpen, setIsEditSheetOpen] = useState(false); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isDeleting, setIsDeleting] = useState(false); const handleCopyRef = () => { navigator.clipboard.writeText(task.ref); }; const handleEditSuccess = (updatedTask: Task) => { onTaskUpdated?.(updatedTask); }; const handleConfirmDelete = async () => { setIsDeleting(true); try { await deleteTask(task.id); onTaskDeleted?.(); // Navegar al proyecto o a la lista de proyectos if (project) { router.push(`/proyectos/${project.id}`); } else { router.push('/proyectos'); } } catch (error) { console.error("Error deleting task:", error); toast.error("Error al eliminar la tarea", { description: "No se pudo eliminar la tarea. Inténtalo de nuevo.", }); } finally { setIsDeleting(false); } }; return (
{/* Breadcrumb */} {/* Header principal */}
{/* Título y badges */}

{task.title}

{/* Referencia y proyecto */}
{project && ( <> | Proyecto: {project.name} )}
{/* Acciones */}
setIsEditSheetOpen(true)}> Editar tarea Registrar tiempo setIsDeleteDialogOpen(true)}> Eliminar
{/* Sheet de edición */} {/* Diálogo de confirmación de eliminación */}
); }