File size: 2,274 Bytes
8b83782 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | // Theme toggle functionality
const toggleTheme = () => {
document.documentElement.classList.toggle('dark');
localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light');
};
// Initialize theme
if (localStorage.getItem('theme') === 'dark' ||
(window.matchMedia('(prefers-color-scheme: dark)').matches && !localStorage.getItem('theme'))) {
document.documentElement.classList.add('dark');
}
// Auto-resize textarea
const textarea = document.querySelector('textarea');
const resizeTextarea = () => {
textarea.style.height = 'auto';
textarea.style.height = `${textarea.scrollHeight}px`;
};
textarea.addEventListener('input', resizeTextarea);
// Send message functionality
const sendMessage = () => {
const message = textarea.value.trim();
if (!message) return;
// Add user message
addMessage(message, 'user');
textarea.value = '';
resizeTextarea();
// Simulate AI response
setTimeout(() => {
addMessage("I'm Gemini, your AI assistant. I'll respond shortly...", 'ai');
}, 1000);
};
const addMessage = (content, sender) => {
const messagesContainer = document.querySelector('.chat-messages');
const messageElement = document.createElement('div');
messageElement.className = `message ${sender}-message`;
messageElement.innerHTML = `
<div class="message-content">
<p>${content}</p>
</div>
`;
messagesContainer.appendChild(messageElement);
messagesContainer.scrollTop = messagesContainer.scrollHeight;
};
// Event listeners
document.querySelector('.send-btn').addEventListener('click', sendMessage);
textarea.addEventListener('keydown', (e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
// Mobile menu toggle
const toggleMobileMenu = () => {
document.querySelector('.sidebar').classList.toggle('active');
};
// Initialize feather icons
feather.replace();
// Chat item selection
document.querySelectorAll('.chat-item').forEach(item => {
item.addEventListener('click', () => {
document.querySelectorAll('.chat-item').forEach(i => i.classList.remove('active'));
item.classList.add('active');
});
}); |