import * as React from 'react'; import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'; import { Button } from '../button'; type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters = Parameters; type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps = { opts?: CarouselOptions; plugins?: CarouselPlugin; orientation?: 'horizontal' | 'vertical'; setApi?: (api: CarouselApi) => void; }; /** * Smooth horizontal (or vertical) content slider powered by Embla Carousel. * * @description * Built on embla-carousel. Slide sizing is controlled via Tailwind flex-basis * utilities on `` (e.g., `basis-1/3` for 3-up layouts). * * @ai-rules * 1. Always include `` and `` for interactive navigation controls. * 2. NEVER put infinite data tables inside a Carousel — use `` for scrollable lists. * 3. Each slide must be wrapped in ``. */ declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React.ComponentProps<'div'> & CarouselProps): React.JSX.Element; declare function CarouselContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element; declare function CarouselItem({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element; interface CarouselPreviousProps extends React.ComponentProps { /** Screen-reader label for the previous-slide button. @default "Previous slide" */ previousLabel?: string; } declare function CarouselPrevious({ className, variant, size, previousLabel, ...props }: CarouselPreviousProps): React.JSX.Element; interface CarouselNextProps extends React.ComponentProps { /** Screen-reader label for the next-slide button. @default "Next slide" */ nextLabel?: string; } declare function CarouselNext({ className, variant, size, nextLabel, ...props }: CarouselNextProps): React.JSX.Element; export { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, };