// assets/js/pages/auth/LoginApp.js const { useState, useEffect } = React; const LoginApp = () => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [toast, setToast] = useState(null); const [errors, setErrors] = useState({}); const state = { setErrors, setLoading, setToast }; const handlers = useLoginHandlers(state); useEffect(() => { const user = AuthUtils.getCurrentUser(); if (AuthUtils.isAuthenticated() && user?.role) { AuthUtils.redirectBasedOnRole(user); } }, []); return (
{/* Header */}

🔍 Login

Masuk ke Lost & Found System

{/* Body */}
handlers.handleSubmit(e, email, password)} className="space-y-6" > {/* Email */}
setEmail(e.target.value)} placeholder="mahasiswa@example.com" className={`w-full px-4 py-3 bg-slate-700 border-2 rounded-xl text-white placeholder-slate-400 focus:outline-none transition ${ errors.email ? "border-red-500 focus:border-red-500" : "border-slate-600 focus:border-blue-500" }`} required /> {errors.email && (

{errors.email}

)}
{/* Password */}
setPassword(e.target.value)} placeholder="********" className={`w-full px-4 py-3 bg-slate-700 border-2 rounded-xl text-white placeholder-slate-400 focus:outline-none transition ${ errors.password ? "border-red-500 focus:border-red-500" : "border-slate-600 focus:border-blue-500" }`} required /> {errors.password && (

{errors.password}

)}
{/* Submit Button */}
{/* Divider */}
atau
{/* Register Link */}

Belum punya akun?{" "} Register disini

{/* Back to Home */}
← Kembali ke Beranda
{/* Toast */} {toast && ( setToast(null)} /> )}
); }; ReactDOM.render(, document.getElementById("root"));