'use client' import * as SliderPrimitive from '@radix-ui/react-slider' import { forwardRef } from 'react' import { tv } from 'tailwind-variants' import type { Merge } from 'type-fest' const slider = tv({ slots: { root: 'relative flex w-full touch-none select-none items-center', track: 'relative h-1.5 w-full grow overflow-hidden rounded-full bg-bg--muted', range: 'absolute h-full bg-fg-brand', thumb: 'block h-4 w-4 rounded-full border border-fg/70 bg-bg--contrast shadow transition-colors disabled:pointer-events-none disabled:opacity-50', }, }) const Slider = forwardRef< React.ElementRef, Merge< React.ComponentPropsWithoutRef, { trackProps?: React.ComponentProps rangeProps?: React.ComponentProps thumbProps?: React.ComponentProps } > >(({ trackProps, rangeProps, thumbProps, ...props }, ref) => { const { root, range, thumb, track } = slider() return ( ) }) Slider.displayName = SliderPrimitive.Root.displayName export default Slider export { slider, SliderPrimitive }