import { useState, useEffect } from "react"; import { Stack, Text, NumberInput } from "@mantine/core"; interface NumberInputWithUnitProps { label: string; value: number; onChange: (value: number | string) => void; unit: string; min?: number; max?: number; disabled?: boolean; } const NumberInputWithUnit = ({ label, value, onChange, unit, min, max, disabled = false }: NumberInputWithUnitProps) => { const [localValue, setLocalValue] = useState(value); // Sync local value when external value changes useEffect(() => { setLocalValue(value); }, [value]); const handleBlur = () => { onChange(localValue); }; return ( {label} {unit} } rightSectionWidth={unit.length * 8 + 20} // Dynamic width based on unit length /> ); }; export default NumberInputWithUnit;