import { useEffect } from 'react' import { Modal } from '../shared/Modal' type GalleryImage = { src: string name: string } type Props = { open: boolean images: GalleryImage[] activeIndex: number onClose: () => void onSelect: (index: number) => void } export function ImageGalleryModal({ open, images, activeIndex, onClose, onSelect }: Props) { const activeImage = images[activeIndex] useEffect(() => { if (!open || images.length <= 1) return const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'ArrowLeft') { event.preventDefault() onSelect((activeIndex - 1 + images.length) % images.length) } else if (event.key === 'ArrowRight') { event.preventDefault() onSelect((activeIndex + 1) % images.length) } } document.addEventListener('keydown', handleKeyDown) return () => document.removeEventListener('keydown', handleKeyDown) }, [activeIndex, images.length, onSelect, open]) if (!activeImage) return null return (
{activeImage.name}
{activeIndex + 1} / {images.length}
{images.length > 1 && (
)}
{activeImage.name}
{images.length > 1 && (
{images.map((image, index) => ( ))}
)}
) }