'use client' import Button from '@/components/button/PrimaryButton' import OTPInputField from '@/components/input/MultiInputField' import { AUTH_PAGE_ELEMENT, AUTH_PAGE_ELEMENT as AUTH_PAGE_ELEMENTS } from '@/enums' import clsx from 'clsx' import { formatCountdown } from '@/hooks/useCountdown' import Image from 'next/image' import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' type Props = { onChange: ((e: React.ChangeEvent) => void) & React.ChangeEventHandler onClick: React.MouseEventHandler | undefined value: string phoneNumber: string timerRunning: boolean secondsLeft: number pending?: boolean | undefined } & Omit, 'id'> function StepEnterOtp ({ onChange, onClick, pending, disabled = false, value, phoneNumber, timerRunning, secondsLeft }: Props) { const [error, setError] = useState('') const { t } = useTranslation('auth') const hasError = (e = error) => { return e.trim().length > 0 } useEffect(() => { let error = '' if (!/^\d{6}$/.test(value)) { error = t('Errors.OTPFormat') } setError(error) }, [t, value]) return ( <> login banner
{/* // TODO: add persian digits font */}
{t('OTP.Heading')}

{t('OTP.Description').replace('{phoneNumber}', phoneNumber)}

{timerRunning ? (
{t('OTP.TimerRunning', { time: formatCountdown(secondsLeft, t) })}
) : (
{t('OTP.TimerOut')}
)}
) } export default StepEnterOtp