'use client' import * as React from 'react' import { Loader2 } from 'lucide-react' import { useT } from '@open-mercato/shared/lib/i18n/context' import { Button } from '@open-mercato/ui/primitives/button' import { Input } from '@open-mercato/ui/primitives/input' type GenericProviderVerifyProps = { onVerify: (payload: { code: string }) => Promise onCancel?: () => void onResend?: () => Promise submitLabel?: string } export default function GenericProviderVerify({ onVerify, onCancel, onResend, submitLabel, }: GenericProviderVerifyProps) { const t = useT() const [code, setCode] = React.useState('') const [submitting, setSubmitting] = React.useState(false) const [resending, setResending] = React.useState(false) const canSubmit = code.trim().length > 0 && !submitting const handleSubmit = React.useCallback(async (event: React.FormEvent) => { event.preventDefault() if (!canSubmit) return setSubmitting(true) try { await onVerify({ code: code.trim() }) setCode('') } finally { setSubmitting(false) } }, [canSubmit, code, onVerify]) const handleResend = React.useCallback(async () => { if (!onResend || resending) return setResending(true) try { await onResend() } finally { setResending(false) } }, [onResend, resending]) return (
setCode(event.target.value)} placeholder={t('security.profile.mfa.verify.codePlaceholder', 'Enter verification code')} />
{onResend ? ( ) : null} {onCancel ? ( ) : null}
) }