import { Dialog, DialogContent } from "@/components/ui/dialog"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useEffect } from "react"; interface ImageViewerModalProps { isOpen: boolean; onClose: () => void; imageUrl: string; onNavigate?: (direction: 'prev' | 'next') => void; } export function ImageViewerModal({ isOpen, onClose, imageUrl, onNavigate }: ImageViewerModalProps) { const handleNavigation = (direction: 'prev' | 'next') => (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); onNavigate?.(direction); }; // Add keyboard navigation useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (!onNavigate) return; if (e.key === 'ArrowLeft') { e.preventDefault(); onNavigate('prev'); } else if (e.key === 'ArrowRight') { e.preventDefault(); onNavigate('next'); } else if (e.key === 'Escape') { e.preventDefault(); onClose(); } }; if (isOpen) { window.addEventListener('keydown', handleKeyDown); } return () => { window.removeEventListener('keydown', handleKeyDown); }; }, [isOpen, onNavigate, onClose]); return (
{onNavigate && ( <> )}
Full size image
); }