"use client"; import { useCallback, useEffect, useState } from "react"; import useEmblaCarousel from "embla-carousel-react"; import { Icon } from "@iconify/react"; interface Props { images: string[]; className?: string; } export default function Carousel({ images, className }: Props) { const [emblaRef, emblaApi] = useEmblaCarousel(); const [selectedIndex, setSelectedIndex] = useState(0); const [scrollSnaps, setScrollSnaps] = useState([]); useEffect(() => { if (!emblaApi) return; setScrollSnaps(emblaApi.scrollSnapList()); emblaApi.on("select", () => setSelectedIndex(emblaApi.selectedScrollSnap())); }, [emblaApi]); const scrollTo = useCallback((index: number) => emblaApi && emblaApi.scrollTo(index), [emblaApi]); const scrollPrev = useCallback(() => emblaApi && emblaApi.scrollPrev(), [emblaApi]); const scrollNext = useCallback(() => emblaApi && emblaApi.scrollNext(), [emblaApi]); return (
{images.map((src, index) => (
))}
{images.length > 1 && ( <>
{scrollSnaps.map((_, index) => (
)}
); }