import { useState } from 'react' import { t } from '@/shared/i18n' export function Otp({ value, onInput, error, label = t('ui.otp.label'), helper = t('ui.otp.helper'), }: { value: string onInput: (value: string) => void error?: string label?: string helper?: string }) { const [focused, setFocused] = useState(false) const [position, setPosition] = useState(0) return (
setFocused(true)} onBlur={() => setFocused(false)} onSelect={(event) => setPosition(Math.min(event.currentTarget.selectionStart ?? value.length, 5))} onChange={(event) => { const next = event.currentTarget.value.replace(/\D/g, '').slice(0, 6) onInput(next) setPosition(Math.min(next.length, 5)) }} onPaste={(event) => { const next = event.clipboardData?.getData('text').replace(/\D/g, '').slice(0, 6) if (next) { event.preventDefault() onInput(next) setPosition(Math.min(next.length, 5)) } }} className="absolute inset-0 h-full w-full cursor-text border-0 bg-transparent text-transparent caret-transparent opacity-[0.01] outline-none" />

{error || helper}

) }