import { createFileRoute, Link, useNavigate } from '@tanstack/react-router' import { Alert, Anchor, Button, PasswordInput, Stack, Text, TextInput } from '@pikku/mantine/core' import { useState } from 'react' import { m } from '@/i18n/messages' import { useLocale } from '@/i18n/config' import { asI18n } from '@pikku/react' import { useMutation } from '@tanstack/react-query' import { AuthLayout } from '../auth/AuthLayout' import { signInWithPassword, INVALID_CREDENTIALS } from '../lib/auth' function LoginPage() { useLocale() const navigate = useNavigate() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const login = useMutation({ mutationFn: () => signInWithPassword(email.trim(), password), onSuccess: () => navigate({ to: '/companies' }), }) const errorMsg = login.error instanceof Error ? login.error.message === INVALID_CREDENTIALS ? m.auth_login_errors_invalid_credentials() : asI18n(login.error.message) : null return ( {m.auth_login_no_account()}{' '} {m.auth_login_signup_cta()} } >
{ e.preventDefault(); login.mutate() }}> setEmail(e.currentTarget.value)} required size="md" radius="md" autoComplete="email" /> setPassword(e.currentTarget.value)} required size="md" radius="md" autoComplete="current-password" /> {errorMsg && ( {errorMsg} )}
) } export const Route = createFileRoute('/login')({ component: LoginPage, })