import { ChangeEvent, useId } from 'react';
import styles from './index.module.scss';
interface RangeFieldProps {
label?: string;
value: number;
min?: number;
max?: number;
step?: number;
color?: string;
suffix?: string;
onChange: (event: ChangeEvent<HTMLInputElement>) => void;
}
export const RangeField = ({
label,
value,
min = 0,
max = 100,
step = 1,
color = 'var(--blue-1)',
suffix = '%',
onChange,
}: RangeFieldProps) => {
const inputId = useId();
return (
<div className={styles.range}>
{label && (
<label
htmlFor={inputId}
className={styles.range_label}
>
{label}
</label>
)}
<div className={styles.range_wrapper}>
<input
id={inputId}
type="range"
min={min}
max={max}
step={step}
value={value}
className={styles.range_input}
style={{ ['--range-color' as string]: color }}
onChange={onChange}
/>
<span className={styles.range_value}>
{value}
{suffix}
</span>
</div>
</div>
);
};