-
-
Enter the 6-digit code from your authenticator app.
-
- setTotpCode(e.target.value.replace(/\D/g, '').slice(0, 6))}
- autoComplete="one-time-code"
- inputMode="numeric"
- pattern="[0-9]*"
- required
- disabled={isSubmitting}
- autoFocus
- style={{ letterSpacing: '0.2em', textAlign: 'center', fontSize: '1.2rem', fontFamily: 'var(--font-mono, monospace)' }}
- />
-
+ {!useRecoveryCode ? (
+ <>
+
+
+ Enter the 6-digit code from your authenticator app.
+
+
+ {
+ setCodeError('');
+ setTotpCode(e.target.value.replace(/\D/g, '').slice(0, 6));
+ }}
+ autoComplete="one-time-code"
+ inputMode="numeric"
+ pattern="[0-9]*"
+ required
+ disabled={isSubmitting}
+ autoFocus
+ style={{
+ letterSpacing: '0.2em',
+ textAlign: 'center',
+ fontSize: '1.2rem',
+ fontFamily: 'var(--font-mono, monospace)',
+ borderColor: codeError ? '#ef4444' : undefined,
+ boxShadow: codeError ? '0 0 0 3px rgba(239, 68, 68, 0.2)' : undefined,
+ }}
+ />
+
+
+
+
+ >
+ ) : (
+ <>
+
+
+ Enter one of your 12-character backup recovery codes.
+
+
+ {
+ setCodeError('');
+ setRecoveryCode(e.target.value);
+ }}
+ autoComplete="off"
+ required
+ disabled={isSubmitting}
+ autoFocus
+ style={{
+ letterSpacing: '0.08em',
+ textAlign: 'center',
+ fontSize: '1.05rem',
+ fontFamily: 'var(--font-mono, monospace)',
+ borderColor: codeError ? '#ef4444' : undefined,
+ boxShadow: codeError ? '0 0 0 3px rgba(239, 68, 68, 0.2)' : undefined,
+ }}
+ />
+
+
+
+
+ >
+ )}
) : (
<>
+