document.addEventListener('DOMContentLoaded', () => { const loginForm = document.getElementById('loginForm'); const passwordInput = document.getElementById('password'); const togglePasswordBtn = document.getElementById('togglePassword'); const errorMessage = document.getElementById('errorMessage'); const btnSubmit = document.getElementById('btnSubmit'); // Alternar visualização da senha togglePasswordBtn.addEventListener('click', () => { const isPassword = passwordInput.getAttribute('type') === 'password'; passwordInput.setAttribute('type', isPassword ? 'text' : 'password'); // Altera o ícone do olho togglePasswordBtn.innerHTML = isPassword ? ` ` : ` `; }); // Submissão do formulário loginForm.addEventListener('submit', async (e) => { e.preventDefault(); // Resetar estado de erro errorMessage.classList.remove('visible'); errorMessage.textContent = ''; const password = passwordInput.value; if (!password) return; // Desabilitar botão e mostrar loading btnSubmit.disabled = true; btnSubmit.classList.add('loading'); btnSubmit.querySelector('span').textContent = 'Conectando...'; try { const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ password }) }); const data = await response.json(); if (response.ok && data.success) { // Sucesso - redireciona para a página principal btnSubmit.querySelector('span').textContent = 'Autenticado!'; setTimeout(() => { window.location.href = '/'; }, 600); } else { // Mostrar erro throw new Error(data.error || 'Acesso negado'); } } catch (error) { errorMessage.textContent = error.message; errorMessage.classList.add('visible'); // Habilitar botão novamente btnSubmit.disabled = false; btnSubmit.classList.remove('loading'); btnSubmit.querySelector('span').textContent = 'Entrar no Workspace'; // Feedback vibratório (se houver API) e animação shake no card const card = document.querySelector('.login-card'); card.classList.add('shake'); setTimeout(() => card.classList.remove('shake'), 500); } }); });