UNPKG

@amsterdam/design-system-react

Version:

All React components from the Amsterdam Design System. Use it to compose pages in your website or application.

18 lines (17 loc) 1.39 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; /** * @license EUPL-1.2+ * Copyright Gemeente Amsterdam */ import { ChevronLeftIcon, ChevronRightIcon } from '@amsterdam/design-system-react-icons'; import clsx from 'clsx'; import { forwardRef, useCallback, useContext } from 'react'; import { ImageSliderContext } from './ImageSliderContext'; import { IconButton } from '../IconButton'; 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(IconButton, { className: "ams-image-slider__control ams-image-slider__control--previous", color: "inverse", disabled: isAtStart, label: previousLabel, onClick: handleClickPrevious, svg: ChevronLeftIcon }), _jsx(IconButton, { className: "ams-image-slider__control ams-image-slider__control--next", color: "inverse", disabled: isAtEnd, label: nextLabel, onClick: handleClickNext, svg: ChevronRightIcon })] })); }); ImageSliderControls.displayName = 'ImageSliderControls';