import { useState } from 'react' import { createFileRoute, useRouter, redirect } from '@tanstack/react-router' import { useAuthStore } from '@/stores/auth.store' import { login } from '@/api/auth' export const Route = createFileRoute('/login')({ beforeLoad: () => { const { token } = useAuthStore.getState() if (token) { throw redirect({ to: '/accounts', search: { page: 1, limit: 25, q: undefined, sort: undefined, order: 'asc' as const } }) } }, component: LoginPage, }) function LoginPage() { const router = useRouter() const setAuth = useAuthStore((s) => s.setAuth) const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [error, setError] = useState('') const [loading, setLoading] = useState(false) async function handleSubmit(e: React.FormEvent) { e.preventDefault() setError('') setLoading(true) try { const res = await login(email, password) setAuth(res.token, res.user) await router.invalidate() await router.navigate({ to: '/accounts', search: { page: 1, limit: 25, q: undefined, sort: undefined, order: 'asc' as const }, replace: true }) } catch (err) { setError(err instanceof Error ? err.message : 'Login failed') } finally { setLoading(false) } } return (

LunarFront

Small Business Management

setEmail(e.target.value)} required className="h-9 w-full rounded-md border px-3 py-1 text-sm outline-none login-input" />
setPassword(e.target.value)} required className="h-9 w-full rounded-md border px-3 py-1 text-sm outline-none login-input" />
{error && (

{error}

)}
) }