import { EmblaOptionsType, EmblaPluginType } from "embla-carousel-react"; import type { ReactNode } from "react"; export type NavigationVariant = "dark" | "light"; export interface CarouselIndicatorButtonProps { selected?: boolean; variant?: NavigationVariant; onClick?: () => void; ariaLabel?: string; } export interface CarouselIndicatorsProps { indicatorsList: number[]; selectedIndex: number; onClick: (index: number) => void; variant?: NavigationVariant; } export interface CarouselButtonProps { displayed?: boolean; onClick?: () => void; variant?: NavigationVariant; className?: string; } export interface CustomButtonProps extends CarouselButtonProps { renderButton?: boolean | ((props: CarouselButtonProps) => ReactNode); } export interface CarouselItemProps { children: ReactNode; className?: string; } export type IndicatorsPosition = "inside" | "outside"; export interface IndicatorsInterface { indicatorsPosition?: IndicatorsPosition; indicators?: boolean | ((props: CarouselIndicatorsProps) => ReactNode); indicatorsVariant?: NavigationVariant; } interface ArrowsInterface { arrowsVariant?: NavigationVariant; nextButton?: boolean | ((props: CarouselButtonProps) => ReactNode); prevButton?: boolean | ((props: CarouselButtonProps) => ReactNode); } export interface EmblaCarouselProps { options?: Omit, "slides">; plugins?: EmblaPluginType[]; } interface BaseCarouselProps { slides: ReactNode[]; slidesWrapperClassName?: string; slideClassName?: string; } export interface CarouselProps extends IndicatorsInterface, ArrowsInterface, EmblaCarouselProps, BaseCarouselProps { } export interface SlidesCarouselProps extends ArrowsInterface, BaseCarouselProps { slidesToScroll?: number; experimentalDragScroll?: boolean; } export {};