"use client";
import * as React from "react";
import { Card, CardContent } from "@/registry/ui/card";
import {
Carousel,
CarouselContent,
CarouselItem,
CarouselNext,
CarouselPrevious,
type CarouselApi,
} from "@/registry/ui/carousel";
import { cn } from "@/lib/utils";
export default function SlideOpacity() {
const [api, setApi] = React.useState<CarouselApi>();
const [current, setCurrent] = React.useState(0);
React.useEffect(() => {
if (!api) {
return;
}
setCurrent(api.selectedScrollSnap() + 1);
api.on("select", () => {
setCurrent(api.selectedScrollSnap() + 1);
});
}, [api]);
return (
<div className="mx-auto max-w-xs">
<Carousel
setApi={setApi}
className="w-full max-w-xs mx-2"
opts={{ loop: true }}
>
<CarouselContent>
{Array.from({ length: 5 }).map((_, index) => (
<CarouselItem key={index} className="basis-3/5">
<Card
className={cn(
"bg-primary text-primary-foreground transition-all duration-500",
{
"opacity-30": index !== current - 1,
}
)}
>
<CardContent className="flex aspect-video items-center justify-center p-6">
<span className="text-4xl font-semibold">{index + 1}</span>
</CardContent>
</Card>
</CarouselItem>
))}
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
</Carousel>
</div>
);
}