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()}
)}
);
});