import { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import useAuth from '../hooks/useAuth' import { authModalSchema, type AuthModalFormData } from '../schemas/auth' export const AuthModal = () => { const { showAuthModal, login, register: authRegister } = useAuth() const [isLoginMode, setIsLoginMode] = useState(true) const [serverError, setServerError] = useState('') const { register, handleSubmit, reset, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(authModalSchema) }) if (!showAuthModal) return null const onSubmit = async (values: AuthModalFormData) => { setServerError('') try { if (isLoginMode) { await login(values.email, values.password) } else { await authRegister(values.email, values.password, values.fullName ?? '') } reset() } catch (err) { setServerError((err as Error).message || 'Authentication failed') } } const toggleMode = () => { setIsLoginMode(!isLoginMode) setServerError('') reset() } return (

{isLoginMode ? 'Welcome to Aria' : 'Create Account'}

{serverError &&
{serverError}
}
{errors.email &&

{errors.email.message}

}
{errors.password &&

{errors.password.message}

}
{!isLoginMode && (
{errors.fullName &&

{errors.fullName.message}

}
)}
{isLoginMode ? "Don't have an account?" : 'Already have an account?'}
) }