onValueChangeEnd?.(toPublicValue(details.value))}
+ >
+
+ {label && (
+
+ {label}
+
+ )}
+
+
+ {valueText}
+
+
+
+
+
+
+
+
+ {values.map((_, index) => (
+
+
+
+ ))}
+
+
+ );
+};
+
+DsSlider.displayName = 'DsSlider';
+
+export default DsSlider;
diff --git a/packages/design-system/src/components/ds-slider/ds-slider.types.ts b/packages/design-system/src/components/ds-slider/ds-slider.types.ts
new file mode 100644
index 000000000..72944b3b9
--- /dev/null
+++ b/packages/design-system/src/components/ds-slider/ds-slider.types.ts
@@ -0,0 +1,102 @@
+import type { CSSProperties, Ref } from 'react';
+
+export const sliderTypes = ['value', 'range'] as const;
+export type DsSliderType = (typeof sliderTypes)[number];
+
+export const sliderSizes = ['small', 'medium', 'large'] as const;
+export type DsSliderSize = (typeof sliderSizes)[number];
+
+/**
+ * Value for a `value` slider (single number) or a `range` slider ([min, max] tuple).
+ */
+export type DsSliderValue = number | [number, number];
+
+/**
+ * Props for the DsSlider component.
+ */
+export type DsSliderProps = {
+ /**
+ * Forwarded ref for the slider root element.
+ */
+ ref?: Ref