The Slider component provides a range input control that allows users to select a value by dragging a handle along a track. It's designed for settings, forms, and any interface where users need to select a value within a range.
import { Slider } from '@dashflowx/core'export default function SliderExample() {return (<Slider />)}
Preview:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | '' | Additional CSS classes |
defaultValue | number[] | [50] | Default value(s) for the slider |
max | number | 100 | Maximum value |
min | number | 0 | Minimum value |
step | number | 1 | Step increment |
disabled | boolean | false | Whether the slider is disabled |
import { Slider } from '@dashflowx/core'export default function BasicSlider() {return (<Slider />)}
Preview:
import { Slider } from '@dashflowx/core'export default function CustomStyledSlider() {return (<Slider className="border border-blue-500 rounded-lg p-4" />)}
Preview:
import { Slider } from '@dashflowx/core'export default function VolumeSlider() {return (<SliderdefaultValue={[75]}max={100}min={0}step={1}/>)}
Preview:
import { Slider } from '@dashflowx/core'export default function PriceRangeSlider() {return (<SliderdefaultValue={[25, 75]}max={100}min={0}step={5}/>)}
Preview:
import { Slider } from '@dashflowx/core'export default function BrightnessSlider() {return (<SliderdefaultValue={[80]}max={100}min={0}step={10}/>)}
Preview:
const volumeControl = (<SliderdefaultValue={[50]}max={100}min={0}step={1}/>);
const brightnessControl = (<SliderdefaultValue={[80]}max={100}min={0}step={10}/>);
const priceRangeFilter = (<SliderdefaultValue={[25, 75]}max={100}min={0}step={5}/>);
const progressIndicator = (<SliderdefaultValue={[60]}max={100}min={0}step={1}disabled={true}/>);
Set appropriate min and max values for your use case.
// ✅ Good - Appropriate range<Slider max={100} min={0} />// ❌ Avoid - Extreme range<Slider max={1000000} min={0} />
Use logical step values based on your use case.
// ✅ Good - Logical steps<Slider step={1} /> // For precise control<Slider step={10} /> // For rough control// ❌ Avoid - Illogical steps<Slider step={7} /> // For most use cases
Provide clear labels for slider values.
// ✅ Good - Clear labels<div><label>Volume: {value}%</label><Slider /></div>// ❌ Avoid - No labels<Slider />
Ensure sliders are accessible to all users.
// ✅ Good - Accessible<Slider aria-label="Volume control" />// ❌ Avoid - Not accessible<Slider />
Maintain consistent styling across sliders.
// ✅ Good - Consistent styling<Slider className="standard-slider-style" />// ❌ Avoid - Inconsistent styling<Slider className="random-styles" />
You can customize the slider appearance using CSS classes:
<Slider className="border border-gray-300 rounded-lg p-4" />
Use different themes for different contexts:
// Light theme<Slider className="bg-white border-gray-200" />// Dark theme<Slider className="bg-gray-900 border-gray-700 text-white" />// Brand theme<Slider className="bg-blue-50 border-blue-200" />
Use different sizes for different emphasis levels:
// Small slider<Slider className="h-1" />// Standard slider<Slider className="h-2" />// Large slider<Slider className="h-3" />
Update slider values dynamically:
const [sliderValue, setSliderValue] = useState(50);<SliderdefaultValue={[sliderValue]}onValueChange={(value) => setSliderValue(value[0])}/>
Use multiple sliders for different controls:
const [volume, setVolume] = useState(50);const [brightness, setBrightness] = useState(80);<div className="space-y-4"><div><label>Volume: {volume}%</label><SliderdefaultValue={[volume]}onValueChange={(value) => setVolume(value[0])}/></div><div><label>Brightness: {brightness}%</label><SliderdefaultValue={[brightness]}onValueChange={(value) => setBrightness(value[0])}/></div></div>
Add labels and value displays:
const [value, setValue] = useState(50);<div className="space-y-2"><div className="flex justify-between"><span>Min: 0</span><span>Current: {value}</span><span>Max: 100</span></div><SliderdefaultValue={[value]}onValueChange={(value) => setValue(value[0])}/></div>
- Input: For text input
- Range: For range inputs
- Progress: For progress indicators
- Switch: For toggle controls
- Button: For action buttons
For the complete API reference and advanced usage patterns, see the Slider API documentation.
