+
+ {controls && }
+
+ {images.map(({ alt, aspectRatio, sizes, src, srcSet }, index) => (
+
+
+
+ ))}
+
+
+
+
+ )
+ },
+)
+
+ImageSliderRoot.displayName = 'ImageSlider'
+
+export const ImageSlider = Object.assign(ImageSliderRoot, { Item: ImageSliderItem })
diff --git a/packages/react/src/ImageSlider/ImageSliderContext.tsx b/packages/react/src/ImageSlider/ImageSliderContext.tsx
new file mode 100644
index 0000000000..f20148ccd6
--- /dev/null
+++ b/packages/react/src/ImageSlider/ImageSliderContext.tsx
@@ -0,0 +1,27 @@
+/**
+ * @license EUPL-1.2+
+ * Copyright Gemeente Amsterdam
+ */
+
+import { createContext } from 'react'
+
+export type ImageSliderContextValue = {
+ currentSlideId: number
+ isAtStart: boolean
+ isAtEnd: boolean
+ goToNextSlide: () => void
+ goToPreviousSlide: () => void
+ // eslint-disable-next-line no-unused-vars
+ goToSlideId: (id: number) => void
+}
+
+const defaultValues: ImageSliderContextValue = {
+ currentSlideId: 0,
+ isAtStart: true,
+ isAtEnd: false,
+ goToNextSlide: () => {},
+ goToPreviousSlide: () => {},
+ goToSlideId: () => {},
+}
+
+export const ImageSliderContext = createContext(defaultValues)
diff --git a/packages/react/src/ImageSlider/ImageSliderControls.test.tsx b/packages/react/src/ImageSlider/ImageSliderControls.test.tsx
new file mode 100644
index 0000000000..c267249965
--- /dev/null
+++ b/packages/react/src/ImageSlider/ImageSliderControls.test.tsx
@@ -0,0 +1,28 @@
+import { render } from '@testing-library/react'
+import { createRef } from 'react'
+import { ImageSliderControls } from './ImageSliderControls'
+import '@testing-library/jest-dom'
+
+describe('Image Slider Controls', () => {
+ const nextLabel = 'Volgende'
+ const previousLabel = 'Vorige'
+
+ it('renders', () => {
+ const { container } = render(