import { createFileRoute } from '@tanstack/react-router' import { useState } from 'react' import { useLogin, authLoginSchema, TLoginRequest } from '@imphnen-frontend-service/service' import { useNavigate } from '@tanstack/react-router' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { toast } from 'sonner' import { Icon } from '@iconify/react' export const Route = createFileRoute('/_public/auth/login')({ component: LoginPage, }) function LoginPage() { const navigate = useNavigate() const loginMutation = useLogin() const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState(null) const { register, handleSubmit, formState: { errors, isValid } } = useForm({ resolver: zodResolver(authLoginSchema), mode: 'onChange', defaultValues: { email: '', password: '' }, }) const onSubmit = handleSubmit(async (data) => { setError(null) try { await loginMutation.mutateAsync(data) toast.success('Login successful!') navigate({ to: '/' }) } catch (err) { setError((err as Error).message || 'Login failed') } }) return (

Welcome Back

Sign in to IMPHNEN Backoffice

{error && (

{error}

)}
{errors.email &&

{errors.email.message}

}
{errors.password &&

{errors.password.message}

}

By signing in, you agree to our Terms of Service and Privacy Policy

) }