Slider
Select one or more values within a range.
- Documentation
- React Aria
- Pattern
- W3C ARIA
- Source
- GitHub
- Issues
- Report
- Composes
- Field
Slider example
import { Slider } from "@/shim-ui/slider";
export default () => <Slider defaultValue={37} label="Slope" />;
Install
Use the CLI or copy the source code manually.
Command
Source code
pnpm dlx @kkga/shim add slider
Controlled value
Control the slider value with value
and onChange
to keep it in sync with application state.
Value: 73
Controlled value example
"use client";
import { useState } from "react";
import { Slider } from "@/shim-ui/slider";
export default () => {
const [value, setValue] = useState<number | number[]>(73);
return (
<>
<Slider label="Slope" onChange={setValue} value={value} />
<p>Value: {value}</p>
</>
);
};
Controlled range example
"use client";
import { useState } from "react";
import { Slider } from "@/shim-ui/slider";
export default () => {
const [range, setRange] = useState<number | number[]>([17, 73]);
return (
<>
<Slider label="Range" onChange={setRange} value={range} />
<p className="tabular-nums">
Range: {Array.isArray(range) ? `${range[0]}–${range[1]}` : range}
</p>
</>
);
};
Label position example
import { Slider } from "@/shim-ui/slider";
export default () => (
<>
<Slider defaultValue={37} label="Slope" labelPosition="top" />
<Slider defaultValue={37} label="Slope" labelPosition="side" />
</>
);
Filled track example
import { Slider } from "@/shim-ui/slider";
export default () => (
<>
<Slider defaultValue={37} isFilled label="Slope" />
<Slider defaultValue={[17, 73]} isFilled label="Slope" />
</>
);
Variant example
import { Slider } from "@/shim-ui/slider";
export default () => (
<>
<Slider aria-label="Slope" defaultValue={37} isFilled variant="classic" />
<Slider aria-label="Slope" defaultValue={37} isFilled variant="soft" />
<Slider aria-label="Slope" defaultValue={37} isFilled variant="outline" />
</>
);
Size example
import { Slider } from "@/shim-ui/slider";
export default () => (
<>
<Slider defaultValue={37} isFilled label="Slope" size={1} />
<Slider defaultValue={37} isFilled label="Slope" size={2} />
<Slider defaultValue={37} isFilled label="Slope" size={3} />
<Slider defaultValue={37} isFilled label="Slope" size={4} />
</>
);
Orientation example
"use client";
import { Fragment } from "react";
import { Slider } from "@/shim-ui/slider";
export default () => (
<>
{([1, 2, 3, 4] as const).map((size) => (
<Fragment key={size}>
<Slider
aria-label="Slope"
defaultValue={37}
isFilled
orientation="vertical"
size={size}
/>
<Slider
aria-label="Slope"
defaultValue={[17, 73]}
isFilled
orientation="vertical"
size={size}
/>
</Fragment>
))}
</>
);