import { useState, type FormEvent } from 'react' import { useTranslation } from '@shared/i18n/react' import { useLocation, useNavigate } from 'react-router' import { describeError } from '@shared/api/errors' import { Button } from '@shared/ui/Button' import { Notice } from '@shared/ui/Notice' import { TextField } from '@shared/ui/text-field/TextField' import { useSession } from '../session' export function LoginForm() { const { t } = useTranslation('auth') const { t: tc } = useTranslation('common') const { signIn } = useSession() const navigate = useNavigate() const from = (useLocation().state as { from?: string } | null)?.from ?? '/configs' const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [error, setError] = useState() const [busy, setBusy] = useState(false) async function submit(e: FormEvent) { e.preventDefault() setBusy(true) setError(undefined) try { await signIn(email.trim(), password) navigate(from, { replace: true }) } catch (err) { setError(describeError(tc, err, { 401: t('login.wrongCredentials') })) } finally { setBusy(false) } } return (
setEmail(e.target.value)} /> setPassword(e.target.value)} /> {error ? {error} : null} ) }