import React, { useState } from 'react' import { useNavigate, Link } from 'react-router-dom' import { Eye, EyeOff } from 'lucide-react' import logo from '../../assets/chapterX-removebg-preview.png' import { useAuthStore } from '../../store/authStore' import { useUIStore } from '../../store/uiStore' import { Button } from '../../components/ui/Button' export const LoginPage: React.FC = () => { const navigate = useNavigate() const { login } = useAuthStore() const { addToast } = useUIStore() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPw, setShowPw] = useState(false) const [loading, setLoading] = useState(false) const [errors, setErrors] = useState<{ email?: string; password?: string }>({}) const [noAccount, setNoAccount] = useState(false) const validate = () => { const e: typeof errors = {} if (!email.trim()) e.email = 'Email is required' if (!password.trim()) e.password = 'Password is required' setErrors(e) return Object.keys(e).length === 0 } const handleSubmit = async (ev: React.FormEvent) => { ev.preventDefault() if (!validate()) return setNoAccount(false) setLoading(true) try { await login(email, password) addToast('Welcome back!') navigate('/') } catch (err: any) { const message = err?.message || 'Incorrect email or password. Please try again.' if (/no account found/i.test(message)) { setNoAccount(true) setErrors(p => ({ ...p, email: message })) } else { setErrors(p => ({ ...p, password: message })) } addToast(message, 'error') } finally { setLoading(false) } } return (
Sign in to your account
Don't have an account?{' '} Create one