// Login screen — Klant + Admin tabs, met register-modus function Login({ onLogin, onNav, brand }) { const [role, setRole] = React.useState("klant"); const [mode, setMode] = React.useState("login"); // login | register const [email, setEmail] = React.useState(""); const [pw, setPw] = React.useState(""); const [name, setName] = React.useState(""); const [phone, setPhone] = React.useState(""); const [error, setError] = React.useState(""); const [loading, setLoading] = React.useState(false); const isRegister = mode === "register" && role === "klant"; const submit = async (e) => { e?.preventDefault?.(); setError(""); if (!email || !pw) { setError("Vul e-mail en wachtwoord in."); return; } if (isRegister && !name) { setError("Vul uw naam in."); return; } if (isRegister && pw.length < 8) { setError("Wachtwoord moet minimaal 8 tekens zijn."); return; } setLoading(true); try { let data; if (isRegister) { data = await window.api.auth.register({ email, password: pw, name, phone }); } else { data = await window.api.auth.login({ email, password: pw }); } const u = data.user; if (role === "admin" && u.role !== "admin") { setError("Dit account heeft geen werkplaats-toegang."); await window.api.auth.logout().catch(() => {}); return; } onLogin({ role: u.role, name: u.name, email: u.email, id: u.id }); } catch (err) { setError(err.message || (isRegister ? "Registratie mislukt" : "Inloggen mislukt")); } finally { setLoading(false); } }; const quickFill = () => { if (role === "admin") { setEmail("info@garage-dede.nl"); setPw("wijzigDirect2026!"); } else { setEmail(""); setPw(""); } }; return (
{/* Left: brand panel */}
Inloggen

Welkom terug.

{role === "klant" ? "Bekijk uw afspraken, voertuigen en facturen op één plek. APK-reminders krijgt u automatisch." : "Plan in, beheer de werkplaats-agenda, en houd statussen up-to-date voor uw klanten."}

{role === "klant" ? "Wat u kunt:" : "Snelkoppelingen:"}
{(role === "klant" ? ["Mijn voertuigen + servicehistorie", "APK-reminder 4 weken vooraf", "Afspraken inzien en verzetten", "Facturen downloaden"] : ["Werkplaats-agenda (drag & drop)", "Klant- en voertuigbeheer", "Werkbonnen en statussen", "Capaciteit en blokkades"] ).map((x, i) => (
{x}
))}
{/* Right: form */}
{/* Role tabs */}
{[ { id: "klant", label: "Klant", icon: I.Car, sub: "Afspraken & voertuigen" }, { id: "admin", label: "Werkplaats", icon: I.Wrench, sub: "Admin dashboard" }, ].map(opt => ( ))}

{isRegister ? "Account aanmaken" : `Inloggen als ${role === "klant" ? "klant" : "admin"}`}

{role === "admin" ? "Alleen voor medewerkers van Garage DéDé." : ( <> {isRegister ? "Heb je al een account? " : "Of "} { setMode(isRegister ? "login" : "register"); setError(""); }} style={{ color: "var(--accent)", cursor: "pointer", textDecoration: "underline" }} > {isRegister ? "log in" : "maak een account"} {isRegister ? "." : " als u nieuw bent."} )}

{isRegister && (
setName(e.target.value)}/>
)}
setEmail(e.target.value)}/>
{isRegister && (
setPhone(e.target.value)}/>
)}
setPw(e.target.value)}/>
{error &&
{error}
} {role === "admin" && ( )}

Wachtwoord vergeten? Magic-link via e-mail
); } window.Login = Login;