import * as React from "react" import Autoplay from "embla-carousel-autoplay" import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CarouselApi, } from "@/ui/carousel" import { CardContent } from "@/ui/card" import { cn } from "@/lib/utils" type Slide = { key?: React.Key content: React.ReactNode } type CarouselPresetProps = { slides: Slide[] autoplayDelay?: number showControls?: boolean showIndicators?: boolean indicatorVariant?: "dot" | "pill" className?: string contentClassName?: string itemClassName?: string } export function CarouselPreset({ slides, autoplayDelay = 3000, showControls = true, showIndicators = true, indicatorVariant = "dot", className, contentClassName, itemClassName, }: CarouselPresetProps) { const [api, setApi] = React.useState() const [current, setCurrent] = React.useState(0) const [count, setCount] = React.useState(0) React.useEffect(() => { if (!api) return setCount(api.scrollSnapList().length) setCurrent(api.selectedScrollSnap()) api.on("select", () => setCurrent(api.selectedScrollSnap())) }, [api]) return (
{slides.map((slide, index) => ( {slide.content} ))} {showControls && ( <> )} {showIndicators && (
{Array.from({ length: count }).map((_, index) => (
)}
) }