type Props = { values: number[] min: number max: number step: number unit?: string onChange: (index: number, value: number) => void } /** One labelled slider per harmonic, with a numeric box for exact entry. */ export function HarmonicSliders({ values, min, max, step, unit, onChange }: Props) { return (
{values.map((v, k) => (
{k + 1} onChange(k, Number(e.target.value))} /> { const x = Number(e.target.value) if (Number.isFinite(x)) onChange(k, Math.min(max, Math.max(min, x))) }} /> {unit && {unit}}
))}
) }