45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
"use client"
|
|
import { Card, CardContent } from "@/components/ui/card"
|
|
import Autoplay from "embla-carousel-autoplay"
|
|
|
|
import {
|
|
Carousel,
|
|
CarouselContent,
|
|
CarouselItem,
|
|
CarouselNext,
|
|
CarouselPrevious,
|
|
} from "@/components/ui/carousel"
|
|
import { useRef } from "react";
|
|
|
|
const AutoplayCarousel = () => {
|
|
const plugin = useRef(
|
|
Autoplay({ delay: 2000, stopOnInteraction: true })
|
|
)
|
|
|
|
return (
|
|
<Carousel
|
|
className="w-full max-w-sm mx-auto"
|
|
plugins={[plugin.current]}
|
|
onMouseEnter={plugin.current.stop}
|
|
onMouseLeave={plugin.current.reset}
|
|
>
|
|
<CarouselContent className="-ml-1">
|
|
{Array.from({ length: 5 }).map((_, index) => (
|
|
<CarouselItem key={index} className="pl-1 md:basis-1/2 lg:basis-1/3">
|
|
<div className="p-1">
|
|
<Card className="dark:border-default-300">
|
|
<CardContent className="flex aspect-square items-center justify-center p-6">
|
|
<span className="text-2xl font-semibold">{index + 1}</span>
|
|
</CardContent>
|
|
</Card>
|
|
</div>
|
|
</CarouselItem>
|
|
))}
|
|
</CarouselContent>
|
|
<CarouselPrevious />
|
|
<CarouselNext />
|
|
</Carousel>
|
|
);
|
|
};
|
|
|
|
export default AutoplayCarousel; |