// ============================================================
// Nuevo Proyecto - alta de proyecto con mismas características
// ============================================================
const NuevoProyecto = ({ onCreate, onClose }) => {
const [form, setForm] = useState({
nombre: '',
metaLibros: 400,
metaImagenes: 70000,
fechaInicio: '2026-08-02',
deadline: '',
responsable: '',
series: '',
procesos: ['digitalizacion', 'edicion', 'control_calidad', 'conversion'],
formatos: ['JPG', 'TIFF', 'PDF-C', 'PDF-BN', 'EPUB'],
horariosCorte: '11:00, 13:00, 16:00, 18:00',
});
const [creado, setCreado] = useState(false);
const set = (k, v) => setForm({ ...form, [k]: v });
const puedeCrear = form.nombre && form.metaLibros && form.metaImagenes && form.deadline && form.responsable;
const crearProyecto = () => {
if (!puedeCrear) return;
setCreado(true);
// Simular guardado
setTimeout(() => {
onCreate && onCreate(form);
onClose && onClose();
}, 1600);
};
if (creado) {
return (
Proyecto creado
{form.nombre}
Meta: {fmtNum(form.metaLibros)} libros · {fmtNum(form.metaImagenes)} imágenes · Deadline {fmtDate(form.deadline)}
Redirigiendo al dashboard del nuevo proyecto…
);
}
return (
Nuevo proyecto de digitalización
Crear un nuevo proyecto con las mismas características del proyecto actual
{/* Info general */}
{/* Metas */}
{/* Series */}
Series o colecciones a digitalizar
{/* Procesos */}
Procesos incluidos
{[
{ k: 'digitalizacion', l: 'Digitalización', icon: 'camera' },
{ k: 'edicion', l: 'Edición', icon: 'edit' },
{ k: 'control_calidad', l: 'Control Calidad', icon: 'check_shield' },
{ k: 'conversion', l: 'Conversión', icon: 'convert' },
].map(p => (
{
const arr = form.procesos.includes(p.k)
? form.procesos.filter(x => x !== p.k)
: [...form.procesos, p.k];
set('procesos', arr);
}}
style={{ justifyContent: 'flex-start', padding: 12 }}
>
{form.procesos.includes(p.k) && }
{p.l}
))}
{/* Formatos */}
Formatos de conversión
{['JPG', 'TIFF', 'PDF-C', 'PDF-BN', 'EPUB'].map(f => (
{
const arr = form.formatos.includes(f)
? form.formatos.filter(x => x !== f)
: [...form.formatos, f];
set('formatos', arr);
}}
style={{ justifyContent: 'center', padding: 12 }}
>
{form.formatos.includes(f) && }
{f}
))}
{/* Horarios */}
Horarios de corte para producción de edición
);
};
Object.assign(window, { NuevoProyecto });