Tuimorphic

Slider

Terminal-style horizontal slider with ASCII track display.

Import

import { Slider } from 'tuimorphic';

Basic Usage

<Slider />

Props

PropTypeDefaultDescription
valuenumberCurrent value (controlled)
defaultValuenumber0Default value (uncontrolled)
onValueChange(value: number) => voidCallback when value changes
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step increment
labelstringLabel text
showValuebooleanfalseWhether to show current value
disabledbooleanfalseWhether the slider is disabled
classNamestringAdditional CSS class names
refReact.Ref<HTMLDivElement>Forwarded ref to the container

With Label

Volume
<Slider label="Volume" />

Show Value

Brightness
0
<Slider label="Brightness" showValue />

Custom Range

Temperature
25
<Slider label="Temperature" min={0} max={50} defaultValue={25} showValue />

Step Values

<Slider label="Step 1 (default)" min={0} max={100} step={1} showValue />
<Slider label="Step 5" min={0} max={100} step={5} showValue />
<Slider label="Step 10" min={0} max={100} step={10} showValue />
<Slider label="Step 25" min={0} max={100} step={25} showValue />

States

<Slider label="Enabled" defaultValue={50} showValue />
<Slider label="Disabled" defaultValue={50} showValue disabled />

Controlled Slider

Progress
50
Value: 50
const [value, setValue] = useState(50);
 
<Slider
  label="Brightness"
  value={value}
  onValueChange={setValue}
  showValue
/>

Volume Control Example

const [volume, setVolume] = useState(75);
 
<Slider
  label="Volume"
  value={volume}
  onValueChange={setVolume}
  showValue
/>

Interactive RGB Example

const [r, setR] = useState(128);
const [g, setG] = useState(128);
const [b, setB] = useState(128);
 
<Slider label="Red" min={0} max={255} value={r} onValueChange={setR} showValue />
<Slider label="Green" min={0} max={255} value={g} onValueChange={setG} showValue />
<Slider label="Blue" min={0} max={255} value={b} onValueChange={setB} showValue />

Visual Design

The slider uses ASCII characters to create a terminal-style track:

  • Track: - (box drawing horizontal)
  • Handle: * (bullet)
  • Display: [-----*------]

Keyboard Navigation

KeyAction
Arrow Left / Arrow DownDecrease by step
Arrow Right / Arrow UpIncrease by step
HomeGo to minimum
EndGo to maximum
Page UpIncrease by large step
Page DownDecrease by large step

Accessibility

  • Built on Base UI's accessible slider primitive
  • Proper ARIA attributes for screen readers
  • Full keyboard navigation support
  • Focus visible states

Styling

VariableDescription
--theme-textTrack and handle color
--theme-borderContainer border
--theme-focused-borderFocus outline color
  • Input - For numeric text entry
  • Toggle - For on/off values

On this page