import type { EstructuraPlanRow, FacultadRow, NivelPlanEstudio, TipoCiclo, } from '@/data/types/domain' import type { NewPlanWizardState } from '@/features/planes/nuevo/types' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { useCatalogosPlanes } from '@/data/hooks/usePlans' import { NIVELES, TIPOS_CICLO } from '@/features/planes/nuevo/catalogs' import { cn } from '@/lib/utils' export function PasoBasicosForm({ wizard, onChange, }: { wizard: NewPlanWizardState onChange: React.Dispatch> }) { const { data: catalogos } = useCatalogosPlanes() // Preferir los catálogos remotos si están disponibles; si no, usar los locales const facultadesList = catalogos?.facultades ?? [] const rawCarreras = catalogos?.carreras ?? [] const estructurasPlanList = catalogos?.estructurasPlan ?? [] const filteredCarreras = rawCarreras.filter((c: any) => { const facId = wizard.datosBasicos.facultad.id if (!facId) return true // soportar ambos shapes: `facultad_id` (BD) o `facultadId` (local) return c.facultad_id ? c.facultad_id === facId : c.facultadId === facId }) return (
) => onChange( (w): NewPlanWizardState => ({ ...w, datosBasicos: { ...w.datosBasicos, nombrePlan: e.target.value, }, }), ) } className="placeholder:text-muted-foreground/70 font-medium not-italic placeholder:font-normal placeholder:italic" />
{ if (['.', ',', '-', 'e', 'E', '+'].includes(e.key)) { e.preventDefault() } }} onChange={(e: React.ChangeEvent) => onChange( (w): NewPlanWizardState => ({ ...w, datosBasicos: { ...w.datosBasicos, // Keep undefined when the input is empty so the field stays optional numCiclos: (() => { const raw = e.target.value if (raw === '') return null const asNumber = Number(raw) if (Number.isNaN(asNumber)) return null // Coerce to positive integer (natural numbers without zero) const n = Math.floor(Math.abs(asNumber)) return n >= 1 ? n : 1 })(), }, }), ) } className="placeholder:text-muted-foreground/70 font-medium not-italic placeholder:font-normal placeholder:italic" placeholder="Ej. 8" />
{/*
onChange((w) => ({ ...w, datosBasicos: { ...w.datosBasicos, plantillaPlanId: templateId, plantillaPlanVersion: version, }, })) } /> onChange((w) => ({ ...w, datosBasicos: { ...w.datosBasicos, plantillaMapaId: templateId, plantillaMapaVersion: version, }, })) } />
*/}
) }