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