Skip to Content

Slider

Capture numeric input from users with a draggable slider.

Import

import { Slider, RangeSlider } from '@tidbcloud/uikit'

Basic Usage

import { Slider } from '@tidbcloud/uikit' function Demo() { return ( <Slider defaultValue={40} marks={[ { value: 20, label: '20%' }, { value: 50, label: '50%' }, { value: 80, label: '80%' } ]} /> ) }

Controlled

import { useState } from 'react' import { Slider } from '@tidbcloud/uikit' function Demo() { const [value, setValue] = useState(40) return <Slider value={value} onChange={setValue} /> }

With Marks

import { Slider } from '@tidbcloud/uikit' function Demo() { return ( <Slider defaultValue={40} marks={[ { value: 20, label: '20%' }, { value: 50, label: '50%' }, { value: 80, label: '80%' } ]} /> ) }

Label Control

import { Slider } from '@tidbcloud/uikit' function Demo() { return ( <> {/* No label */} <Slider defaultValue={40} label={null} /> {/* Formatted label */} <Slider defaultValue={40} label={(value) => `${value} °C`} /> {/* Label always visible */} <Slider defaultValue={40} labelAlwaysOn /> </> ) }

Key Props

PropTypeDescription
valuenumberControlled value
defaultValuenumberDefault value for uncontrolled
onChange(value: number) => voidCalled when value changes
onChangeEnd(value: number) => voidCalled when user stops dragging
minnumberMinimum possible value
maxnumberMaximum possible value
stepnumberIncrement/decrement step
marks{ value: number; label?: ReactNode }[]Marks displayed on track
labelReactNode | ((value: number) => ReactNode)Label formatter
labelAlwaysOnbooleanAlways show label
disabledbooleanDisables slider
colorMantineColorTrack and thumb color
sizeMantineSizeControls track size
Last updated on