import { useState, type FormEvent } from 'react'; import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import { useSession } from '@/entities/session'; export function LoginPage() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const { login } = useSession(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const redirect = searchParams.get('redirect') || '/'; async function handleSubmit(e: FormEvent) { e.preventDefault(); setError(''); setLoading(true); try { await login(email, password); navigate(redirect); } catch (err) { setError(err instanceof Error ? err.message : 'Ошибка входа'); } finally { setLoading(false); } } return (

Вход

{error &&
{error}
}
setEmail(e.target.value)} required style={inputStyle} placeholder="email@example.com" />
setPassword(e.target.value)} required style={inputStyle} placeholder="••••••••" />

Нет аккаунта?{' '} Зарегистрироваться

); } const inputStyle: React.CSSProperties = { width: '100%', padding: '10px 12px', border: '1px solid #e0e0e0', borderRadius: 'var(--border-radius)', fontSize: 16, outline: 'none', boxSizing: 'border-box', }; const buttonStyle: React.CSSProperties = { padding: '12px 24px', background: 'var(--color-primary)', color: '#fff', border: 'none', borderRadius: 'var(--border-radius)', fontSize: 16, fontWeight: 600, cursor: 'pointer', };