import { Button } from '@/components/ui/button'; import { Field, FieldError, FieldLabel } from '@/components/ui/field'; import { Input } from '@/components/ui/input'; import { useAuth } from '@/lib/auth'; import { zodResolver } from '@hookform/resolvers/zod'; import { Link, useNavigate } from '@tanstack/react-router'; import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; const loginSchema = z.object({ email: z.string().email('Ingresá un email válido.'), password: z.string().min(6, 'La contraseña debe tener al menos 6 caracteres.'), }); type LoginForm = z.infer; type LoginPageProps = { redirectTo?: string; }; export function LoginPage({ redirectTo = '/' }: LoginPageProps) { const navigate = useNavigate(); const { signInWithPassword } = useAuth(); const [submitError, setSubmitError] = useState(null); const { register, handleSubmit, formState: { errors, isSubmitting, isValid }, } = useForm({ resolver: zodResolver(loginSchema), mode: 'onChange', defaultValues: { email: '', password: '', }, }); const onSubmit = async (values: LoginForm) => { setSubmitError(null); try { await signInWithPassword(values); await navigate({ to: redirectTo }); } catch { setSubmitError('No pudimos iniciar sesión. Verificá tus credenciales.'); } }; return (

Iniciar sesión

Ingresá con tu cuenta para acceder a Home.

Email Contraseña {submitError &&

{submitError}

}

¿Solo querés explorar?{' '} Ir a About

); }