import { createFileRoute, useNavigate } from '@tanstack/react-router' import { startTransition, useState } from 'react' import { m } from '@/i18n/messages' import { useLocale } from '@/i18n/config' import { useQueryClient } from '@tanstack/react-query' import { Alert, Button, Container, Paper, PasswordInput, Stack, Text, TextInput, Title, } from '@pikku/mantine/core' import { BrandMark } from '../components/Brand' import { signIn } from '../lib/auth' function LoginPage() { useLocale() const navigate = useNavigate() const qc = useQueryClient() const [email, setEmail] = useState(import.meta.env.DEV ? 'sarah@seminarhof.example' : '') const [password, setPassword] = useState(import.meta.env.DEV ? 'owner1234' : '') const [isPending, setIsPending] = useState(false) const [error, setError] = useState(false) const handleSubmit = async () => { setIsPending(true) setError(false) try { await signIn(email, password) await qc.invalidateQueries({ queryKey: ['me'] }) startTransition(() => { navigate({ to: '/' }) }) } catch { setError(true) } finally { setIsPending(false) } } return ( {m.auth__login__title()} {m.auth__login__subtitle()} setEmail(e.currentTarget.value)} /> setPassword(e.currentTarget.value)} /> {error && ( {m.auth__login__errors__invalid_credentials()} )} ) } export const Route = createFileRoute('/login')({ component: LoginPage, })