"use client" import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faUser, faLock, faEye, faEyeSlash, faSignInAlt, faGraduationCap } from '@fortawesome/free-solid-svg-icons'; import { useState } from 'react'; import { login } from '@/lib/auth'; import { useTranslation } from 'react-i18next'; import LanguageSwitcher from '@/components/LanguageSwitcher'; export default function LoginPage() { const { t } = useTranslation(); const [showPassword, setShowPassword] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); const [errorMessage, setErrorMessage] = useState(null); const [formData, setFormData] = useState({ email: '', password: '' }); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setErrorMessage(null); setIsSubmitting(true); try { const session = await login({ email: formData.email, password: formData.password }); // Admins previously fell through to /students, where they have no // enrolments and every page renders empty. const home = session.role === 'Professor' ? '/professor' : session.role === 'Admin' ? '/admin' : '/students'; window.location.href = home; } catch (err) { setErrorMessage(err instanceof Error ? err.message : 'Login failed.'); } finally { setIsSubmitting(false); } }; return (
{/* Login Form */}
{/* Sticky Notes */}
{t('login_student_title')}
{t('login_student_example')}
{t('login_demo_note')}
{t('login_professor_title')}
{t('login_professor_example')}
{t('login_demo_note')}
{t('login_admin_title')}
{t('login_admin_example')}
{t('login_demo_note')}
{/* Login Card Column */}
{/* Login Card */}
{/* Header */}

{t('login_welcome')}

{t('login_subtitle')}

{/* Form */}
{/* Language Switcher above email field, centered */}
{/* Email Field */}
{/* Password Field */}
{/* Remember Me & Forgot Password */}
{errorMessage && (
{t(errorMessage) || errorMessage}
)} {/* Submit Button */}
{/* Footer */}

{t('login_no_account')}{' '}

{/* Additional Info */}
{t('login_footer')}
{/* Right spacer column (keeps login centered) */}
); }