/* global React */ // Slide-over: Nueva Institución (HU.4.3) // Súper Admin · CGR — alta de institución reportante en el catálogo const { useState: useStateNI } = React; const TIPOS_INST = [ { id: 'min', label: 'Ministerio', desc: 'Carteras del Poder Ejecutivo' }, { id: 'sec', label: 'Secretaría Ejecutiva', desc: 'Reporta directamente a la Presidencia' }, { id: 'ctrl', label: 'Órgano de Control', desc: 'CGR, Auditoría General, etc.' }, { id: 'extra',label: 'Órgano Extra-Poder', desc: 'Ministerio Público, Defensoría, etc.' }, { id: 'sub', label: 'Subsecretaría', desc: 'Dependiente de un ministerio' }, { id: 'dir', label: 'Dirección', desc: 'Dirección Nacional autónoma' }, { id: 'esp', label: 'Unidad Especializada', desc: 'Ej. SEPRELAD, UIF' }, { id: 'pod', label: 'Poder del Estado', desc: 'Legislativo, Judicial' }, ]; function NuevaInstitucionPanel({ open, onClose, onSave }) { const I = window.Icons; const FormSection = window.FormSection; const Field = window.Field; const [step, setStep] = useStateNI(1); const [form, setForm] = useStateNI({ nombre: '', sigla: '', tipo: 'Ministerio', descripcion: '', dominio: '', direccion: '', ciudad: 'Asunción', web: '', admin_nombre: '', admin_email: '', admin_telefono: '', admin_cargo: '', canalAlerta: ['email', 'bandeja'], estadoInicial: 'activo', notas: '', }); const update = (k, v) => setForm(f => ({ ...f, [k]: v })); const toggleCanal = (k) => setForm(f => ({ ...f, canalAlerta: f.canalAlerta.includes(k) ? f.canalAlerta.filter(x => x !== k) : [...f.canalAlerta, k], })); if (!open) return null; const steps = [ { n: 1, label: 'Identificación' }, { n: 2, label: 'Contacto principal' }, { n: 3, label: 'Notificaciones y estado' }, { n: 4, label: 'Revisión y alta' }, ]; const progress = (step / steps.length) * 100; const slugId = (form.sigla || '').toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); return (