// src/components/RadixSlider.jsx import * as Slider from "@radix-ui/react-slider"; import { useState } from "react"; const RadixSlider = () => { const [values, setValues] = useState([20, 80]); console.log(values); return ( <div className="bg-gray-200 "> <label htmlFor="slider" className="text-center text-sm font-medium text-gray-700" > range: {values.toString()} </label> <Slider.Root id="slider" className="outline outline-1 mx-auto relative flex items-center select-none touch-none w-[300px] h-5" defaultValue={values} // onValueChange={(values) => setValues(values)} onValueCommit={(values) => setValues(values)} max={100} step={1} minStepsBetweenThumbs={10} > <Slider.Track className="bg-blue-400 relative grow rounded-full h-[3px]"> <Slider.Range className="absolute bg-red-400 rounded-full h-full" /> </Slider.Track> <Slider.Thumb className="block bg-white shadow-[0_2px_10px] shadow-black rounded-full hover:bg-violet-300 focus:outline " aria-label="Volume" asChild > <p className=" px-1"> {values[0]}</p> </Slider.Thumb> <Slider.Thumb className="block bg-white shadow-[0_2px_10px] shadow-black rounded-full hover:bg-violet-300 focus:outline " aria-label="Volume" asChild > <p className=" px-1"> {values[1]}</p> </Slider.Thumb> </Slider.Root> </div> ); }; export default RadixSlider; // src/App.jsx const App = () => ( <div> <RadixSlider /> </div> </div> );
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter