"use client" import { AnimatePresence, motion } from "framer-motion" import { ChevronRightIcon } from "@/components/Icons" import ArrowRightIcon from "@/components/Icons/ArrowRight" import CloseIcon from "@/components/Icons/Close" import Image from "@/components/Image" import Button from "@/components/TempDesignSystem/Button" import Caption from "@/components/TempDesignSystem/Text/Caption" import styles from "./Lightbox.module.css" import type { GalleryProps } from "@/types/components/lightbox/lightbox" export default function Gallery({ images, onClose, onSelectImage, onImageClick, selectedImage, }: GalleryProps) { const mainImage = selectedImage || images[0] const mainImageIndex = images.findIndex((img) => img.url === mainImage.url) function getThumbImages() { const thumbs = [] for (let i = 1; i <= 5; i++) { const index = (mainImageIndex + i) % images.length thumbs.push(images[index]) } return thumbs } function handleNext() { const nextIndex = (mainImageIndex + 1) % images.length onSelectImage(images[nextIndex]) } function handlePrev() { const prevIndex = (mainImageIndex - 1 + images.length) % images.length onSelectImage(images[prevIndex]) } return (
{/* Desktop Gallery */}
{mainImage.title}
{mainImage.alt}
{getThumbImages().map((image, index) => ( onSelectImage(image)} initial={{ opacity: 0, x: 50 }} animate={{ opacity: 1, x: 0 }} exit={{ opacity: 0, x: -50 }} transition={{ duration: 0.2, delay: index * 0.05 }} > {image.alt} ))}
{/* Mobile Gallery */}
{images.map((image, index) => ( onImageClick()} initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.3, delay: index * 0.05 }} > {image.alt} ))}
) }