import { useState, type FormEvent } from 'react'; import { SocialButtons } from './SocialButtons.js'; import type { LoginFormProps } from './types.js'; /** * Email/password login form with optional social login buttons. * Styled via CSS custom properties (inherits --bl-* from host app). */ export function LoginForm({ onSubmit, providers, onSocialLogin, isLoading = false, error, className, }: LoginFormProps) { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); function handleSubmit(e: FormEvent) { e.preventDefault(); onSubmit(email, password); } return (
setEmail(e.target.value)} required disabled={isLoading} data-testid="bl-login-email" style={{ padding: '10px 12px', border: '1px solid var(--bl-border, #ccc)', borderRadius: 'var(--bl-radius, 6px)', fontSize: '14px', }} /> setPassword(e.target.value)} required disabled={isLoading} data-testid="bl-login-password" style={{ padding: '10px 12px', border: '1px solid var(--bl-border, #ccc)', borderRadius: 'var(--bl-radius, 6px)', fontSize: '14px', }} /> {error && (
{error}
)}
{providers && providers.length > 0 && onSocialLogin && ( <>

or
)}
); }