diff --git a/src/pages/Login/Login.tsx b/src/pages/Login/Login.tsx index 92b7073e..4d2ee3fa 100644 --- a/src/pages/Login/Login.tsx +++ b/src/pages/Login/Login.tsx @@ -12,17 +12,27 @@ interface LoginFormData { } const Login: React.FC = () => { - const [formData, setFormData] = useState({ email: "", password: "" }); + const [formData, setFormData] = useState({ + email: "", + password: "", + }); + const [message, setMessage] = useState(""); const [isLoading, setIsLoading] = useState(false); const navigate = useNavigate(); + const themeContext = useContext(ThemeContext) as ThemeContextType; + const { mode } = themeContext; const handleChange = (e: ChangeEvent) => { const { name, value } = e.target; - setFormData({ ...formData, [name]: value }); + + setFormData({ + ...formData, + [name]: value, + }); }; const handleSubmit = async (e: FormEvent) => { @@ -30,10 +40,14 @@ const Login: React.FC = () => { setIsLoading(true); try { - const response = await axios.post(`${backendUrl}/api/auth/login`, formData); + const response = await axios.post( + `${backendUrl}/api/auth/login`, + formData, + ); + setMessage(response.data.message); - if (response.data.message === 'Login successful') { + if (response.data.message === "Login successful") { navigate("/"); } } catch (error: unknown) { @@ -49,64 +63,101 @@ const Login: React.FC = () => { return (
- {/* Animated background elements */} + {/* Background */}
-
-
-
-
+ {/* Grid */} +
+ + {/* Blue Glow */} +
+ + {/* Cyan Glow */} +
+ + {/* Bottom Glow */} +
-
+
{/* Branding */}
-
- Logo +
+ Logo
-

+

GitHubTracker

-

- Track your GitHub journey + +

+ Track repositories, commits, contributions and developer activity + with powerful GitHub insights.

- {/* Form Card */} -
-

+ {/* Login Card */} +
+

Welcome Back

-
-
+

+ Sign in to access your GitHub analytics dashboard +

+ + + {/* Email */} +
-
+ {/* Password */} +
{ value={formData.password} onChange={handleChange} required - className={`w-full pl-4 pr-4 py-4 rounded-2xl focus:outline-none transition-all ${ + className={`w-full px-4 py-4 rounded-2xl transition-all duration-200 focus:outline-none ${ mode === "dark" - ? "bg-white/5 border border-white/10 text-white placeholder-slate-400 focus:ring-2 focus:ring-purple-500" - : "bg-gray-100 border border-gray-300 text-gray-900 placeholder-gray-500 focus:ring-2 focus:ring-purple-400" + ? "bg-slate-800 border border-slate-700 text-white placeholder-slate-500 focus:border-cyan-400 focus:ring-4 focus:ring-cyan-500/20" + : "bg-gray-100 border border-gray-300 text-gray-900 placeholder-gray-500 focus:border-cyan-500 focus:ring-4 focus:ring-cyan-500/20" }`} />
+ {/* Forgot Password */} +
+ + Forgot Password? + +
+ + {/* Submit Button */} - {/* Message */} + {/* Status Message */} {message && ( -
+
{message}
)} - {/* Footer Text */} -
-

+ {/* Footer */} +

+

Don't have an account? Sign up here @@ -158,9 +245,14 @@ const Login: React.FC = () => {

-
+ {/* Bottom Fade */} +
); }; -export default Login; \ No newline at end of file +export default Login;