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 { registerWithPassword, signInWithPassword, EMAIL_IN_USE } from '../lib/auth' function SignupPage() { useLocale() const navigate = useNavigate() const [displayName, setDisplayName] = useState('') const [email, setEmail] = useState('') const [password, setPassword] = useState('') const signup = useMutation({ mutationFn: async () => { await registerWithPassword(email.trim(), password, displayName.trim()) await signInWithPassword(email.trim(), password) }, onSuccess: () => navigate({ to: '/companies' }), }) const errorMsg = signup.error instanceof Error ? signup.error.message === EMAIL_IN_USE ? m.auth_signup_errors_email_taken() : asI18n(signup.error.message) : null return ( {m.auth_signup_have_account()}{' '} {m.auth_signup_login_cta()} } >
{ e.preventDefault(); signup.mutate() }}> setDisplayName(e.currentTarget.value)} required size="md" radius="md" autoComplete="name" /> setEmail(e.currentTarget.value)} required size="md" radius="md" autoComplete="email" /> setPassword(e.currentTarget.value)} required minLength={8} size="md" radius="md" autoComplete="new-password" /> {errorMsg && ( {errorMsg} )}
) } export const Route = createFileRoute('/signup')({ component: SignupPage, })