GitHub

Slider

Range input for numeric value adjustment with immediate feedback.

01 Live Demo

40

Current value: 40

02 Code Snippet

src/ui/Slider.tsx
import { Slider } from "@/ui/Slider";

<Slider.Root
  label="Volume"
  value={volume}
  min={0}
  max={100}
  step={1}
  onValueChange={setVolume}
/>

03 Copy-Paste (Single File)

Slider.tsx
function SliderRoot({ value, onChange }: { value: number; onChange: (value: number) => void }) {
  return <input type="range" value={value} onChange={(e) => onChange(Number(e.target.value))} className="h-2 w-full accent-primary" />;
}

type SliderCompound = typeof SliderRoot & { Root: typeof SliderRoot };
export const Slider = Object.assign(SliderRoot, { Root: SliderRoot }) as SliderCompound;
react-principles