import { useCallback, useRef, useState } from 'react'; import { Input } from '@/components/ui/input'; type PhoneNumberInputProps = { name?: string; defaultValue?: string | null; placeholder?: string; disabled?: boolean; className?: string; }; function formatPhone(value: string | null | undefined): string { const digits = (value ?? '').replace(/[^0-9]/g, ''); const groups: string[] = []; for (let i = 0; i < digits.length; i += 4) { groups.push(digits.slice(i, i + 4)); } return groups.join(' '); } export function PhoneNumberInput({ name, defaultValue = null, placeholder = '0812 3456 7890', disabled = false, className, }: PhoneNumberInputProps) { const [displayValue, setDisplayValue] = useState(formatPhone(defaultValue)); const lastValidRef = useRef(displayValue); const handleChange = useCallback( (e: React.ChangeEvent) => { const formatted = formatPhone(e.target.value); lastValidRef.current = formatted; setDisplayValue(formatted); }, [], ); const handleBlur = useCallback(() => { setDisplayValue(lastValidRef.current); }, []); return ( ); }