class ChatBot { constructor() { this.isLoading = false; this.init(); } init() { this.bindEvents(); this.updateCharCounter(); this.setupMobileMenu(); } bindEvents() { const input = document.getElementById('messageInput'); input.addEventListener('keypress', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); this.sendMessage(); } }); input.addEventListener('input', () => this.updateCharCounter()); document.getElementById('sendButton').addEventListener('click', () => this.sendMessage()); } updateCharCounter() { const input = document.getElementById('messageInput'); const counter = document.getElementById('charCount'); if (counter) { const length = input.value.length; counter.textContent = length; counter.style.color = length > 450 ? '#d78b8b' : '#9aabbe'; } } async sendMessage() { const input = document.getElementById('messageInput'); const message = input.value.trim(); if (!message || this.isLoading) return; this.addMessage(message, 'user'); input.value = ''; this.updateCharCounter(); this.showLoading(); try { // Simulação de chamada a api/chat.php (igual ao original) const response = await fetch('api/chat.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mensagem: message }) }); if (!response.ok) throw new Error('resposta da rede falhou'); const data = await response.json(); this.addMessage(data.resposta || 'resposta recebida', 'bot'); } catch (error) { console.warn('erro simulado — usando fallback amigável'); const demoResponse = `obrigado pela mensagem "${message}". (simulação — conecte api/chat.php para respostas reais)`; this.addMessage(demoResponse, 'bot'); } finally { this.hideLoading(); } } addMessage(text, sender) { const container = document.getElementById('chatMessages'); const messageDiv = document.createElement('div'); messageDiv.className = `message ${sender === 'user' ? 'user-message' : 'bot-message'}`; const now = new Date(); const timeString = now.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }); const avatarSVG = sender === 'bot' ? '' : ''; messageDiv.innerHTML = `