import { useState } from 'react'; import { Image, X, ZoomIn, Download } from 'lucide-react'; import { Link } from 'react-router-dom'; import BackButton from '@/components/ui/BackButton'; // Estructura de imágenes por bloque const imagenesPorBloque: Record = { 'bloque-0-fundamentos': [ { nombre: 'ALGORITMO OPERATIVO DEL TES.svg', ruta: '/assets/infografias/bloque-0-fundamentos/ALGORITMO OPERATIVO DEL TES.svg' }, { nombre: 'diagrama-seleccion-dispositivo-oxigenoterapia.png', ruta: '/assets/infografias/bloque-0-fundamentos/diagrama-seleccion-dispositivo-oxigenoterapia.png' }, { nombre: 'fast-transtelefonico.png', ruta: '/assets/infografias/bloque-0-fundamentos/fast-transtelefonico.png' }, { nombre: 'flujo-desa-telefono.png', ruta: '/assets/infografias/bloque-0-fundamentos/flujo-desa-telefono.png' }, { nombre: 'flujo-rcp-transtelefonica.png', ruta: '/assets/infografias/bloque-0-fundamentos/flujo-rcp-transtelefonica.png' }, { nombre: 'guia-colocacion-dispositivos-oxigenoterapia.png', ruta: '/assets/infografias/bloque-0-fundamentos/guia-colocacion-dispositivos-oxigenoterapia.png' }, { nombre: 'RESUMEN VISUAL DEL ALGORITMO START.svg', ruta: '/assets/infografias/bloque-0-fundamentos/RESUMEN VISUAL DEL ALGORITMO START.svg' }, { nombre: 'tabla-rangos-fio2-oxigenoterapia.png', ruta: '/assets/infografias/bloque-0-fundamentos/tabla-rangos-fio2-oxigenoterapia.png' }, { nombre: 'tabla-rangos-fio2-oxigenoterapia1.png', ruta: '/assets/infografias/bloque-0-fundamentos/tabla-rangos-fio2-oxigenoterapia1.png' }, ], 'bloque-2-inmovilizacion': [ { nombre: 'colocacion-colchon-vacio-paso-a-paso.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-colchon-vacio-paso-a-paso.png' }, { nombre: 'colocacion-collarin-paso-1-preparacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-1-preparacion.png' }, { nombre: 'colocacion-collarin-paso-2-parte-posterior.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-2-parte-posterior.png' }, { nombre: 'colocacion-collarin-paso-3-parte-anterior.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-3-parte-anterior.png' }, { nombre: 'colocacion-collarin-paso-4-ajuste-cierres.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-4-ajuste-cierres.png' }, { nombre: 'colocacion-collarin-paso-5-verificacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-5-verificacion.png' }, { nombre: 'colocacion-collarin-paso-6-liberacion-controlada.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/colocacion-collarin-paso-6-liberacion-controlada.png' }, { nombre: 'componentes-camilla-cuchara.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/componentes-camilla-cuchara.png' }, { nombre: 'componentes-colchon-vacio.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/componentes-colchon-vacio.png' }, { nombre: 'componentes-sistema-inmovilizacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/componentes-sistema-inmovilizacion.png' }, { nombre: 'componentes-sistema-inmovilizacion-1.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/componentes-sistema-inmovilizacion 1.png' }, { nombre: 'componentes-tablero-espinal.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/componentes-tablero-espinal.png' }, { nombre: 'coordinacion-equipo-inmovilizacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/coordinacion-equipo-inmovilizacion.png' }, { nombre: 'errores-frecuentes-collarin-cervical.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/errores-frecuentes-collarin-cervical.png' }, { nombre: 'posicion-tes-inmovilizacion-manual.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/posicion-tes-inmovilizacion-manual.png' }, { nombre: 'posicion-tes-inmovilizacion-manual-1.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/posicion-tes-inmovilizacion-manual 1.png' }, { nombre: 'secuencia-transicion-inmovilizacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/secuencia-transicion-inmovilizacion.png' }, { nombre: 'seleccion-talla-collarin-2.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin 2.png' }, { nombre: 'seleccion-talla-collarin-cervical.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin-cervical.png' }, { nombre: 'seleccion-talla-collarin-cervical1.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin-cervical1.png' }, { nombre: 'seleccion-talla-collarin-error-demasiado-grande.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin-error-demasiado-grande.png' }, { nombre: 'seleccion-talla-collarin-medicion-anatomica.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin-medicion-anatomica.png' }, { nombre: 'seleccion-talla-collarin-tabla-tallas.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/seleccion-talla-collarin-tabla-tallas.png' }, { nombre: 'situaciones-que-requieren-inmovilizacion.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/situaciones-que-requieren-inmovilizacion.png' }, { nombre: 'tecnica-sujecion-manual-1.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/tecnica-sujecion-manual 1.png' }, { nombre: 'tecnica-sujecion-manual-cervical.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/tecnica-sujecion-manual-cervical.png' }, { nombre: 'verificaciones-post-colocacion-collarin.png', ruta: '/assets/infografias/bloque-2-inmovilizacion/verificaciones-post-colocacion-collarin.png' }, ], 'bloque-3-material-sanitario': [ { nombre: 'canulas-guedel-nasofaringea.png', ruta: '/assets/infografias/bloque-3-material-sanitario/canulas-guedel-nasofaringea.png' }, { nombre: 'configuracion-maxima-fio2-bolsa-mascarilla.png', ruta: '/assets/infografias/bloque-3-material-sanitario/configuracion-maxima-fio2-bolsa-mascarilla.png' }, { nombre: 'dispositivos-supragloticos-guia.png', ruta: '/assets/infografias/bloque-3-material-sanitario/dispositivos-supragloticos-guia.png' }, { nombre: 'interpretacion-constantes-semaforo.png', ruta: '/assets/infografias/bloque-3-material-sanitario/interpretacion-constantes-semaforo.png' }, { nombre: 'registro-constantes-vitales.png', ruta: '/assets/infografias/bloque-3-material-sanitario/registro-constantes-vitales.png' }, { nombre: 'uso-correcto-ambu.png', ruta: '/assets/infografias/bloque-3-material-sanitario/uso-correcto-ambu.png' }, { nombre: 'uso-correcto-pulsioximetro.png', ruta: '/assets/infografias/bloque-3-material-sanitario/uso-correcto-pulsioximetro.png' }, { nombre: 'uso-correcto-tensiometro.png', ruta: '/assets/infografias/bloque-3-material-sanitario/uso-correcto-tensiometro.png' }, { nombre: 'ventilacion-medios-fortuna.png', ruta: '/assets/infografias/bloque-3-material-sanitario/ventilacion-medios-fortuna.png' }, ], 'bloque-7-conduccion': [ { nombre: 'configuracion-gps-antes-de-salir.png', ruta: '/assets/infografias/bloque-7-conduccion/configuracion-gps-antes-de-salir.png' }, ], 'bloque-12-marco-legal': [ { nombre: 'diagrama-decisiones-eticas-urgencias.png', ruta: '/assets/infografias/bloque-12-marco-legal/diagrama-decisiones-eticas-urgencias.png' }, { nombre: 'diagrama-decisiones-eticas.png', ruta: '/assets/infografias/bloque-12-marco-legal/diagrama-decisiones-eticas.png' }, ], }; const nombresBloques: Record = { 'bloque-0-fundamentos': 'Fundamentos', 'bloque-2-inmovilizacion': 'Inmovilización', 'bloque-3-material-sanitario': 'Material Sanitario', 'bloque-7-conduccion': 'Conducción', 'bloque-12-marco-legal': 'Marco Legal', }; const GaleriaImagenes = () => { const [imagenSeleccionada, setImagenSeleccionada] = useState(null); const [bloqueActivo, setBloqueActivo] = useState(null); const handleImagenClick = (ruta: string) => { setImagenSeleccionada(ruta); }; const handleDescargar = (ruta: string, nombre: string) => { const link = document.createElement('a'); link.href = ruta; link.download = nombre; link.click(); }; const totalImagenes = Object.values(imagenesPorBloque).reduce((acc, imagenes) => acc + imagenes.length, 0); return (

Galería de Infografías

{totalImagenes} imágenes organizadas por bloques temáticos

{/* Filtro por bloque */}
{Object.keys(imagenesPorBloque).map((bloque) => ( ))}
{/* Grid de imágenes */}
{(bloqueActivo ? [bloqueActivo] : Object.keys(imagenesPorBloque)).map((bloque) => (
{!bloqueActivo && (

{nombresBloques[bloque]}

)}
{imagenesPorBloque[bloque].map((imagen) => (
handleImagenClick(imagen.ruta)} >
{imagen.nombre} { (e.target as HTMLImageElement).style.display = 'none'; const parent = (e.target as HTMLImageElement).parentElement; if (parent) { parent.innerHTML = `

Error al cargar

`; } }} />

{imagen.nombre.replace(/\.(png|svg|jpg)$/i, '')}

))}
))}
{/* Modal de imagen ampliada */} {imagenSeleccionada && (
setImagenSeleccionada(null)} >
Imagen ampliada e.stopPropagation()} />
)}
); }; export default GaleriaImagenes;