nuka-carousel
Version:
Pure React Carousel
65 lines (60 loc) • 2.01 kB
TypeScript
import * as react from 'react';
import react__default, { ReactNode } from 'react';
type ShowArrowsOption = boolean | 'always' | 'hover';
type ScrollDistanceType = number | 'slide' | 'screen';
type CarouselCallbacks = {
beforeSlide?: (currentSlideIndex: number, endSlideIndex: number) => void;
afterSlide?: (endSlideIndex: number) => void;
};
type CarouselProps = CarouselCallbacks & {
children: ReactNode;
arrows?: ReactNode;
autoplay?: boolean;
autoplayInterval?: number;
className?: string;
dots?: ReactNode;
id?: string;
keyboard?: boolean;
minSwipeDistance?: number;
scrollDistance?: ScrollDistanceType;
showArrows?: ShowArrowsOption;
showDots?: boolean;
swiping?: boolean;
title?: string;
wrapMode?: 'nowrap' | 'wrap';
initialPage?: number;
};
type SlideHandle = {
goForward: () => void;
goBack: () => void;
goToPage: (proposedIndex: number) => void;
};
type CarouselContextType = CarouselProps & {
currentPage: number;
scrollOffset: number[];
totalPages: number;
goToPage: (idx: number) => void;
goForward: () => void;
goBack: () => void;
};
declare const CarouselProvider: react__default.Provider<CarouselContextType>;
declare const useCarousel: () => CarouselContextType;
declare const Carousel: react.ForwardRefExoticComponent<CarouselCallbacks & {
children: react.ReactNode;
arrows?: react.ReactNode;
autoplay?: boolean;
autoplayInterval?: number;
className?: string;
dots?: react.ReactNode;
id?: string;
keyboard?: boolean;
minSwipeDistance?: number;
scrollDistance?: ScrollDistanceType;
showArrows?: ShowArrowsOption;
showDots?: boolean;
swiping?: boolean;
title?: string;
wrapMode?: "nowrap" | "wrap";
initialPage?: number;
} & react.RefAttributes<SlideHandle>>;
export { Carousel, type CarouselCallbacks, type CarouselProps, CarouselProvider, type ScrollDistanceType, type ShowArrowsOption, type SlideHandle, useCarousel };