import { CSSProperties, ReactNode } from 'react'; import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types.js'; export type CarouselSlots = 'root' | 'track' | 'slide' | 'prevButton' | 'nextButton' | 'dots' | 'dot'; /** Text Carousel renders of its own, for translating it. */ export interface CarouselLabels { /** Button to the previous slide, and its tooltip. */ previous?: string; /** Button to the next slide, and its tooltip. */ next?: string; /** The dot strip, read out by screen readers. */ slides?: string; /** One dot, given its 1-based slide number. */ goToSlide?: (slide: number) => string; } export interface CarouselProps extends Omit { children?: ReactNode; currentIndex?: number; defaultIndex?: number; onChange?: (index: number) => void; loop?: boolean; autoPlay?: boolean; autoPlayInterval?: number; pauseOnHover?: boolean; showArrows?: boolean; showDots?: boolean; swipeable?: boolean; lazyRender?: boolean; adaptiveHeight?: boolean; className?: string; style?: CSSProperties; classNames?: SlotClassNames; styles?: SlotStyles; /** Overrides the text Carousel renders of its own. Merged per key. */ labels?: CarouselLabels; }