import React, { useState, type FormEvent } from "react"; import { Mail, Lock, LogIn } from "lucide-react"; import API from "../../api/api"; import { useAuth } from "../context/AuthContext"; interface SignInProps { onSwitchToSignUp: () => void; } const SignIn: React.FC = ({ onSwitchToSignUp }) => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const { login } = useAuth(); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setError(""); try { const res = await API.post("/auth/login", { email, password }); // ✅ UPDATED: Pass token to login() to persist session login( res.data.username || res.data.user?.username || "User", res.data.access_token ); } catch (err: any) { console.error("Login error:", err); let errorMessage = "Login failed."; if (err.response?.data?.detail) { const detail = err.response.data.detail; if (typeof detail === "string") errorMessage = detail; else if (Array.isArray(detail)) { const first = detail[0]; errorMessage = `${first.loc.join(" -> ")}: ${first.msg}`; } } setError(errorMessage); } }; return ( <>

Welcome Back

{error &&

{error}

}
setEmail(e.target.value)} className="w-full pl-10 py-3 bg-slate-800 border border-slate-700 text-white rounded-lg" required />
setPassword(e.target.value)} className="w-full pl-10 py-3 bg-slate-800 border border-slate-700 text-white rounded-lg" required />

Don’t have an account?{" "}

); }; export default SignIn;