import { useState, type FormEvent } from 'react'; import type { MfaChallengeProps } from './types.js'; /** * MFA code entry form (6-digit TOTP or recovery code). * Styled via CSS custom properties (inherits --bl-* from host app). */ export function MfaChallenge({ onSubmit, onUseRecovery, methods, isLoading = false, error, className, }: MfaChallengeProps) { const [code, setCode] = useState(''); function handleSubmit(e: FormEvent) { e.preventDefault(); onSubmit(code); } return (
Enter your authentication code
{methods && methods.length > 0 && (
Available methods: {methods.join(', ')}
)} setCode(e.target.value)} required disabled={isLoading} maxLength={8} data-testid="bl-mfa-code" style={{ padding: '12px', border: '1px solid var(--bl-border, #ccc)', borderRadius: 'var(--bl-radius, 6px)', fontSize: '24px', textAlign: 'center', letterSpacing: '4px', fontFamily: 'monospace', }} /> {error && (
{error}
)} {onUseRecovery && ( )}
); }