import { createFileRoute, Outlet, Link } from '@tanstack/react-router' import { ChevronLeft, GraduationCap, Clock, Hash, CalendarDays, Save, } from 'lucide-react' import { useState, useEffect, forwardRef } from 'react' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Skeleton } from '@/components/ui/skeleton' import { usePlan } from '@/data/hooks/usePlans' export const Route = createFileRoute('/planes/$planId/_detalle')({ component: RouteComponent, }) function RouteComponent() { const { planId } = Route.useParams() const { data, isLoading } = usePlan(planId) // Estados locales para manejar la edición "en vivo" antes de persistir const [nombrePlan, setNombrePlan] = useState('') const [nivelPlan, setNivelPlan] = useState('') const [isDirty, setIsDirty] = useState(false) useEffect(() => { if (data) { setNombrePlan(data.nombre || '') setNivelPlan(data.nivel || '') } }, [data]) const niveles = [ 'Licenciatura', 'Maestría', 'Doctorado', 'Diplomado', 'Especialidad', ] const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault() // Evita el salto de línea e.currentTarget.blur() // Quita el foco, lo que dispara el onBlur y "guarda" en el estado } } const handleSave = () => { console.log('Guardando en DB...', { nombrePlan, nivelPlan }) // Aquí iría tu mutation setIsDirty(false) } return (
{data?.carreras?.facultades?.nombre}{' '} {data?.carreras?.nombre_corto}
{label}
{value || '---'}