import React, { Children, Fragment, useMemo } from "react"; import { CaretFilled } from "../Icon"; import useSlider from "./Slider.hooks"; import { SliderProps } from "./Slider.types"; import SliderThumbnail from "./SliderThumbnail"; const Slider: React.FC = ({ children, sliderWidth, sliderHeight, unit = "rem", autoPlay = false, autoPlayInterval = 3000, showPageIndex = false, showPageIndicator = true, showPrevNextButton = false, showThumbnails = false, thumbnailWidth = 2, thumbnailGap = 1, showThumbnailCaret = true, }) => { const childrenArray = useMemo(() => { return Children.toArray(children); }, [children]); const numberOfSlides = childrenArray.length; const additionalHeightForPageIndicator = showPageIndicator ? 2 : 0; const { prev, next, moveToSelectedIndex, currentIndex, translateList, opacityList, thumbnailElement, sliderContainer, } = useSlider({ numberOfSlides, autoPlay, sliderWidth, autoPlayInterval, unit, }); return (
{!autoPlay && showThumbnails && ( )}
{showPageIndex && (
{currentIndex + 1} / {numberOfSlides}
)} {showPageIndicator && (
    {childrenArray.map((_, index) => (
  • {index}
  • ))}
)} {showPrevNextButton && ( <> )}
); }; export default Slider;