import { useEffect, useCallback } from "react"; import { X } from "lucide-react"; import { typography, spacing } from "./styles/theme"; const ImageLightbox = ({ src, alt, caption, onClose }) => { // Close on escape key const handleKeyDown = useCallback( (e) => { if (e.key === "Escape") { onClose(); } }, [onClose] ); useEffect(() => { document.addEventListener("keydown", handleKeyDown); document.body.style.overflow = "hidden"; return () => { document.removeEventListener("keydown", handleKeyDown); document.body.style.overflow = ""; }; }, [handleKeyDown]); // Close when clicking backdrop const handleBackdropClick = (e) => { if (e.target === e.currentTarget) { onClose(); } }; return (
{/* Close button */} {/* Image container */}
{alt} e.stopPropagation()} /> {caption && (

{caption}

)}
); }; export default ImageLightbox;