// ── Login Page ── registerPage('login', { init() { const usernameInput = $('#loginUsername'); const passwordInput = $('#loginPassword'); const loginBtn = $('#loginBtn'); const errorDiv = $('#loginError'); async function doLogin() { errorDiv.hidden = true; loginBtn.disabled = true; loginBtn.textContent = 'Anmelden...'; try { var username = usernameInput.value.trim(); var password = passwordInput.value; if (!username || !password) { errorDiv.textContent = 'Benutzername und Passwort eingeben'; errorDiv.hidden = false; return; } currentUser = await apiLogin(username, password); navigateTo('dashboard'); } catch (err) { errorDiv.textContent = err.message || 'Login fehlgeschlagen'; errorDiv.hidden = false; passwordInput.value = ''; passwordInput.focus(); } finally { loginBtn.disabled = false; loginBtn.textContent = 'Anmelden'; } } loginBtn.addEventListener('click', doLogin); usernameInput.addEventListener('keydown', function(e) { if (e.key === 'Enter') passwordInput.focus(); }); passwordInput.addEventListener('keydown', function(e) { if (e.key === 'Enter') doLogin(); }); }, destroy() {} });