import { forwardRef, type InputHTMLAttributes } from "react"; import "@shared/components/Slider.css"; export interface SliderProps extends Omit< InputHTMLAttributes, "type" | "value" | "onChange" > { value: number; min?: number; max?: number; step?: number; onChange: (value: number) => void; /** Optional formatter for the value pill (e.g. "0.85", "30 days"). */ formatValue?: (value: number) => string; /** Show the right-aligned value badge. Defaults to true. */ showValue?: boolean; } export const Slider = forwardRef(function Slider( { value, min = 0, max = 1, step = 0.01, onChange, formatValue, showValue = true, className, ...rest }, ref, ) { const pct = ((value - min) / (max - min)) * 100; return ( onChange(Number(e.target.value))} className="sui-slider__input" {...rest} /> {showValue && ( {formatValue ? formatValue(value) : value.toString()} )} ); });