'use client' import { forwardRef, InputHTMLAttributes } from 'react' import { cn } from '@/utils/helpers' export interface SliderProps extends Omit, 'type'> { label?: string min: number max: number step?: number value: number onValueChange: (value: number) => void showValue?: boolean valueFormat?: (value: number) => string } export const Slider = forwardRef( ({ className, label, min, max, step = 1, value, onValueChange, showValue = false, valueFormat, ...props }, ref) => { const sliderId = label?.toLowerCase().replace(/\s+/g, '-') return (
{label && (
{showValue && ( {valueFormat ? valueFormat(value) : value} )}
)} onValueChange(Number(e.target.value))} className={cn( 'w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer', 'accent-blue-600 dark:bg-gray-700', 'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2', 'disabled:cursor-not-allowed disabled:opacity-50' )} {...props} />
) } ) Slider.displayName = 'Slider'