"use client"; import Image from "next/image"; import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "@/components/ui/pagination"; import useMedia from "@/hooks/use-media"; import { Loader2 } from "lucide-react"; import Lightbox from "yet-another-react-lightbox"; import "yet-another-react-lightbox/styles.css"; import Zoom from "yet-another-react-lightbox/plugins/zoom"; import { useState } from "react"; export default function PhotoGallery() { const { data, error: mediaError, isLoading, success, setPage, setLimit, mutate, } = useMedia(); const [index, setIndex] = useState(null); return (

Galerie Photo

{isLoading ? (
) : (
{data?.items.map((photo, idx) => (
setIndex(idx)} > {photo.alt}
))} setIndex(null)} slides={data?.items.map((i) => ({ src: i.url }))} index={index ?? 0} plugins={[Zoom]} />
)} { e.preventDefault(); setPage((prev) => Math.max(prev - 1, 1)); }} className={ data?.page === 1 ? "pointer-events-none opacity-50" : "" } /> {[...Array(data?.totalPages)].map((_, i) => ( { e.preventDefault(); setPage(i + 1); }} isActive={data?.page === i + 1} > {i + 1} ))} { e.preventDefault(); setPage((prev) => Math.min(prev + 1, data?.totalPages ?? 1), ); }} className={ data?.page === data?.totalPages ? "pointer-events-none opacity-50" : "" } />
); }