import React, { useState } from 'react'; import { FaChevronLeft, FaChevronRight, FaTimes, FaExpand } from 'react-icons/fa'; import { getImageUrl, getPlaceholderImage } from '../utils/imageUtils'; const ImageGallery = ({ images = [], title = "Gallery" }) => { const [currentIndex, setCurrentIndex] = useState(0); const [isModalOpen, setIsModalOpen] = useState(false); if (!images || images.length === 0) { return (
📷

No images available

); } const nextImage = () => { setCurrentIndex((prev) => (prev + 1) % images.length); }; const prevImage = () => { setCurrentIndex((prev) => (prev - 1 + images.length) % images.length); }; const openModal = (index) => { setCurrentIndex(index); setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); }; return (
{/* Main Image */}
{`${title} openModal(currentIndex)} onError={(e) => { e.target.src = getPlaceholderImage(600, 400, 'Image Not Available'); }} /> {/* Expand Button */} {/* Navigation Arrows */} {images.length > 1 && ( <> )} {/* Image Counter */} {images.length > 1 && (
{currentIndex + 1} / {images.length}
)}
{/* Thumbnail Strip */} {images.length > 1 && (
{images.map((image, index) => ( ))}
)} {/* Fullscreen Modal */} {isModalOpen && (
{`${title} {/* Close Button */} {/* Modal Navigation */} {images.length > 1 && ( <> )} {/* Modal Counter */}
{currentIndex + 1} / {images.length}
)}
); }; export default ImageGallery;