@amsterdam/design-system-react
Version:
All React components from the Amsterdam Design System. Use it to compose pages in your website or application.
14 lines (13 loc) • 1.36 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { ChevronBackwardIcon, ChevronForwardIcon } from '@amsterdam/design-system-react-icons';
import { clsx } from 'clsx';
import { forwardRef, useCallback, useContext } from 'react';
import { Button } from '../Button';
import { ImageSliderContext } from './ImageSliderContext';
export const ImageSliderControls = forwardRef(({ className, nextLabel, previousLabel, ...restProps }, ref) => {
const { goToNextSlide, goToPreviousSlide, isAtEnd, isAtStart } = useContext(ImageSliderContext);
const handleClickPrevious = useCallback(() => goToPreviousSlide(), [goToPreviousSlide]);
const handleClickNext = useCallback(() => goToNextSlide(), [goToNextSlide]);
return (_jsxs("div", { ...restProps, className: clsx('ams-image-slider__controls', className), ref: ref, children: [_jsx(Button, { className: "ams-image-slider__control ams-image-slider__control--previous", color: "inverse", disabled: isAtStart, icon: ChevronBackwardIcon, iconOnly: true, onClick: handleClickPrevious, children: previousLabel }), _jsx(Button, { className: "ams-image-slider__control ams-image-slider__control--next", color: "inverse", disabled: isAtEnd, icon: ChevronForwardIcon, iconOnly: true, onClick: handleClickNext, children: nextLabel })] }));
});
ImageSliderControls.displayName = 'ImageSliderControls';