import React, { useState, useContext } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { AuthContext } from '../../context/AuthContext'; import './Login.css'; const Login = () => { const [formData, setFormData] = useState({ email: '', password: '' }); const [errors, setErrors] = useState({}); const [isLoading, setIsLoading] = useState(false); const { login } = useContext(AuthContext); const navigate = useNavigate(); const handleChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); // Clear error when user starts typing if (errors[name]) { setErrors(prev => ({ ...prev, [name]: '' })); } }; const validateForm = () => { const newErrors = {}; if (!formData.email.trim()) { newErrors.email = 'Email is required'; } else if (!/\S+@\S+\.\S+/.test(formData.email)) { newErrors.email = 'Email is invalid'; } if (!formData.password) { newErrors.password = 'Password is required'; } else if (formData.password.length < 6) { newErrors.password = 'Password must be at least 6 characters'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e) => { e.preventDefault(); if (validateForm()) { setIsLoading(true); // Simulate API call try { await new Promise(resolve => setTimeout(resolve, 1000)); // Mock successful login const mockUser = { id: 1, name: 'John Doe', email: formData.email }; login(mockUser); setIsLoading(false); navigate('/'); } catch (error) { setIsLoading(false); setErrors({ submit: 'Invalid email or password' }); } } }; return (
Don't have an account? Register here