import React, { useState, useEffect } from 'react'; interface ImageItems { images: Array<{ src: string; alt?: string; id?: string | number; }>; } export default function Gallery({ images }: ImageItems) { const [selectedIndex, setSelectedIndex] = useState(null); const closeModal = () => setSelectedIndex(null); const prev = (e?: React.MouseEvent) => { e?.stopPropagation(); setSelectedIndex((i) => (i !== null && i > 0 ? i - 1 : i)); }; const next = (e?: React.MouseEvent) => { e?.stopPropagation(); setSelectedIndex((i) => (i !== null && i < images.length - 1 ? i + 1 : i)); }; useEffect(() => { function handleKeyDown(event: KeyboardEvent) { if (selectedIndex === null) return; if (event.key === 'ArrowLeft') { prev(); } else if (event.key === 'ArrowRight') { next(); } } window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [selectedIndex, images.length]); return ( <>
{images.map((image, idx) => ( ))}
{/* Overlay */} {selectedIndex !== null && (
{/* Prev arrow */} {images[selectedIndex].alt {/* Next arrow */}
)} ); }