import { useState } from 'react'; import { Link, useNavigate, useLocation } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Mail, Lock, Eye, EyeOff } from 'lucide-react'; import { AuthLayout } from '@app/layouts/AuthLayout'; import { Button } from '@components/atoms/Button'; import { FormField } from '@components/molecules/FormField'; import { Alert } from '@components/molecules/Alert'; import { useAuthStore } from '@stores/useAuthStore'; const loginSchema = z.object({ email: z.string().email('Email inválido'), password: z.string().min(1, 'La contraseña es requerida'), }); type LoginFormData = z.infer; export default function LoginPage() { const navigate = useNavigate(); const location = useLocation(); const { login, isLoading, error, clearError } = useAuthStore(); const [showPassword, setShowPassword] = useState(false); const from = (location.state as { from?: Location })?.from?.pathname || '/dashboard'; const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data: LoginFormData) => { try { await login(data); navigate(from, { replace: true }); } catch { // Error is handled in the store } }; return ( {error && ( {error} )}
} {...register('email')} /> } rightIcon={ } {...register('password')} />
¿Olvidaste tu contraseña?

¿No tienes cuenta?{' '} Regístrate aquí

); }