import * as React from "react"; import Autoplay from "embla-carousel-autoplay"; import { Card, CardContent } from "@/ui/card"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CarouselApi, } from "@/ui/carousel"; const imageUrls = [ "/images/carousel-1.jpg", "/images/carousel-2.jpg", "/images/carousel-3.jpg", "/images/carousel-4.jpg", "/images/carousel-5.jpg", "/images/carousel-6.jpg", ]; export interface CarouselDemoProps { paginationPosition?: 'left' | 'right'; // 默认右下角 paginationStyle?: 'dot' | 'bar'; // 默认圆形 } export function CarouselDemo({ paginationPosition = 'right', paginationStyle = 'dot', }: CarouselDemoProps) { const [api, setApi] = React.useState(); const [current, setCurrent] = React.useState(0); const [count, setCount] = React.useState(0); const totalSlides = imageUrls.length; React.useEffect(() => { if (!api) return; setCount(api.scrollSnapList().length); setCurrent(api.selectedScrollSnap()); api.on("select", () => { setCurrent(api.selectedScrollSnap()); }); }, [api]); return (
{imageUrls.map((src, index) => (
{`Slide
))}
{/* 分页指示器 */}
{Array.from({ length: count }).map((_, index) => (
); }