Skip to content

Slider

Slider with spring-curve thumb drag. Tooltip appears on focus/drag, supports keyboard precision stepping.

Basic Usage

tsx
import { Slider } from '@airo-ui/react'
import { useState } from 'react'

function Demo() {
  const [value, setValue] = useState(40)

  return (
    <div>
      <Slider value={value} onChange={setValue} />
      <p style={{ marginTop: 12, fontSize: 13, color: 'var(--vp-c-text-2)' }}>
        Value: {value}
      </p>
    </div>
  )
}

Custom Range & Step

tsx
<Slider value={value} onChange={setValue} min={0} max={200} step={10} />

Decimal Step

tsx
<Slider value={value} onChange={setValue} min={0} max={1} step={0.1} />

Tooltip Formatting

tsx
<Slider value={value} onChange={setValue} formatTooltip={(v) => `${v}%`} />

Size / Disabled

tsx
<Slider value={40} size="sm" />
<Slider value={40} size="md" />
<Slider value={40} disabled />

API

Props

NameTypeDefaultDescription
valuenumber--Controlled value
defaultValuenumber0Default value (uncontrolled)
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step, supports decimals
disabledbooleanfalseDisabled
size'sm' | 'md''md'Size
tooltipbooleantrueShow tooltip
formatTooltip(value: number) => string | number--Custom tooltip content
onChange(value: number) => void--Value change handler

Keyboard Interaction

KeyBehavior
ArrowLeft / ArrowDownDecrease by 1 step
ArrowRight / ArrowUpIncrease by 1 step
Shift + ArrowStep x 10
HomeJump to minimum
EndJump to maximum

Accessibility

  • Thumb uses role="slider" with aria-valuemin / aria-valuemax / aria-valuenow / aria-orientation
  • tabIndex set to -1 when disabled, focus ring follows global :focus-visible
  • Screen reader announces current value

MIT License