"use client" import { AnimatePresence, motion } from "framer-motion" import { useEffect, useState } from "react" import { Dialog, Modal, ModalOverlay } from "react-aria-components" import FullView from "./FullView" import Gallery from "./Gallery" import styles from "./Lightbox.module.css" import type { LightboxProps } from "@/types/components/lightbox/lightbox" export default function Lightbox({ images, dialogTitle, onClose, isOpen, }: LightboxProps) { const [selectedImageIndex, setSelectedImageIndex] = useState(0) const [isFullView, setIsFullView] = useState(false) useEffect(() => { if (isOpen) { setSelectedImageIndex(0) setIsFullView(false) } }, [isOpen]) function handleNext() { setSelectedImageIndex((prevIndex) => (prevIndex + 1) % images.length) } function handlePrev() { setSelectedImageIndex( (prevIndex) => (prevIndex - 1 + images.length) % images.length ) } return ( {isOpen && ( {isFullView ? ( setIsFullView(false)} onNext={handleNext} onPrev={handlePrev} currentIndex={selectedImageIndex} totalImages={images.length} /> ) : ( { setSelectedImageIndex( images.findIndex((img) => img === image) ) }} onImageClick={() => setIsFullView(true)} selectedImage={images[selectedImageIndex]} /> )} )} ) }