Skip to content

React

Import the Slider component from @tmedxp/react-components. For cases where you don’t need the built-in labels, use BasicSlider instead.

Prop Type Description Required
bottomLabels [string, string, string] Three scale labels displayed below the track. ✅
defaultValue number Initial value of the slider.
value number Controlled value of the slider.
min number Minimum value.
max number Maximum value.
step number Step increment.
steps number[] Discrete snap values (alternative to step).
disabled boolean Disables the slider.
theme 'default' | 'ev' | 'temperature' Visual theme variant.
ariaLabel string Accessible label for the thumb.
ariaLabelledby string ID of the element labelling the slider.
showProgress boolean Show the progress fill on the track.
formatValueText (value: number) => string Formats aria-valuetext for assistive technologies.
onChange (value: number) => void Callback when the value changes.
Prop Type Description Required
ariaLabels [string, string] Accessible labels for each thumb. ✅
topLabels [string, string, string] Three scale labels displayed above the track. ✅
defaultValue [number, number] Initial values for both thumbs.
value [number, number] Controlled values for both thumbs.
min number Minimum value.
max number Maximum value.
step number Step increment.
steps number[] Discrete snap values (alternative to step).
disabled boolean Disables the slider.
theme 'default' | 'ev' | 'temperature' Visual theme variant.
topIcons [SliderIcon?, SliderIcon?, SliderIcon?] Icons displayed alongside top labels.
showProgress boolean Show the progress fill on the track.
formatValueText (value: number) => string Formats aria-valuetext for assistive technologies.
onChange (value: [number, number]) => void Callback when either value changes.
import { Slider } from '@tmedxp/react-components';
const SliderExample = () => {
return (
<Slider
defaultValue={50}
ariaLabel="Percentage"
formatValueText={(value) => `${value}%`}
bottomLabels={['0%', '50%', '100%']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const ProgressSlider = () => {
return (
<Slider
defaultValue={60}
showProgress
ariaLabel="Percentage"
formatValueText={(value) => `${value}%`}
bottomLabels={['0%', '50%', '100%']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const EvSlider = () => {
return (
<Slider
defaultValue={80}
theme="ev"
ariaLabel="Battery charge level"
formatValueText={(value) => `${value}%`}
bottomLabels={['0%', '50%', '100%']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const TemperatureSlider = () => {
return (
<Slider
defaultValue={18}
min={-20}
max={30}
theme="temperature"
ariaLabel="Temperature"
formatValueText={(value) => `${value}°C`}
bottomLabels={['-20°C', '5°C', '30°C']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const SteppedSlider = () => {
return (
<Slider
defaultValue={50}
steps={[0, 25, 50, 75, 100]}
ariaLabel="Quality"
formatValueText={(value) => `${value}%`}
bottomLabels={['Low', 'Mid', 'High']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const DisabledSlider = () => {
return (
<Slider
defaultValue={40}
disabled
ariaLabel="Percentage"
formatValueText={(value) => `${value}%`}
bottomLabels={['0%', '50%', '100%']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const RangeSliderExample = () => {
return (
<Slider
defaultValue={[25, 75]}
ariaLabels={['Minimum', 'Maximum']}
topLabels={['Low', 'Mid', 'High']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const RangeSliderWithIcons = () => {
return (
<Slider
defaultValue={[25, 75]}
ariaLabels={['Minimum', 'Maximum']}
topLabels={['Low', 'Mid', 'High']}
topIcons={['highway', 'tree', 'check']}
/>
);
};
import { Slider } from '@tmedxp/react-components';
const TemperatureRangeSlider = () => {
return (
<Slider
defaultValue={[-5, 20]}
min={-20}
max={30}
theme="temperature"
ariaLabels={['Minimum temperature', 'Maximum temperature']}
formatValueText={(value) => `${value}°C`}
topLabels={['Cold', 'Mild', 'Hot']}
/>
);
};
import { useState } from 'react';
import { Slider } from '@tmedxp/react-components';
const ControlledSlider = () => {
const [value, setValue] = useState(50);
return (
<>
<Slider
value={value}
onChange={setValue}
ariaLabel="Volume"
formatValueText={(v) => `${v}%`}
bottomLabels={['Mute', '50%', 'Max']}
/>
<p>Current value: {value}%</p>
</>
);
};