Display
Carousel
An Embla carousel with round paper arrows and keyboard scrolling. Horizontal or vertical; autoplay optional.
1garden bed 1 of 5
2garden bed 2 of 5
3garden bed 3 of 5
4garden bed 4 of 5
5garden bed 5 of 5
Show codeHide code
"use client";
import { Card, CardContent } from "@/registry/lilt/ui/card";
import {
Carousel,
CarouselContent,
CarouselItem,
CarouselNext,
CarouselPrevious,
} from "@/registry/lilt/ui/carousel";
const gardenBeds = ["1", "2", "3", "4", "5"];
export default function CarouselDemo() {
return (
<Carousel className="w-full max-w-xs">
<CarouselContent>
{gardenBeds.map((numeral) => (
<CarouselItem key={numeral}>
<Card className="p-1">
<CardContent className="flex aspect-square flex-col items-center justify-center gap-2 p-6">
<span className="font-display text-6xl font-semibold tracking-[-0.02em]">
{numeral}
</span>
<span className="text-xs text-[var(--lilt-text-muted)]">
garden bed {numeral} of 5
</span>
</CardContent>
</Card>
</CarouselItem>
))}
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
</Carousel>
);
}Installation
npx shadcn@latest add @lilt/carouselAccessibility
- A labeled region (aria-roledescription='carousel'); each slide announces as 'slide' and arrow keys scroll once focused.
- Previous/Next are real buttons with labels and honest disabled states; if you add autoplay, pause it on hover and focus.