Spaces:
Running
Running
File size: 1,993 Bytes
37baacf dcca700 37baacf | 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 | // Shared JavaScript across all pages
console.log('AnomalyNinja loaded');
// AI Assistant functionality
function initAIAssistant() {
const assistant = document.querySelector('ai-assistant');
if (assistant) {
const shadow = assistant.shadowRoot;
const input = shadow.querySelector('.assistant-input');
const messages = shadow.querySelector('.assistant-messages');
input.addEventListener('keypress', (e) => {
if (e.key === 'Enter' && input.value.trim()) {
const userMessage = document.createElement('div');
userMessage.innerHTML = `<div style="text-align: right; margin-bottom: 0.5rem;">
<span style="background: #4f46e5; padding: 0.5rem 1rem; border-radius: 12px; display: inline-block;">
${input.value}
</span>
</div>`;
messages.appendChild(userMessage);
// Simulate AI response
setTimeout(() => {
const aiMessage = document.createElement('div');
aiMessage.innerHTML = `<div style="text-align: left; margin-bottom: 0.5rem;">
<span style="background: #374151; padding: 0.5rem 1rem; border-radius: 12px; display: inline-block;">
I've analyzed your database logs and found 3 potential SQL injection attempts in the last hour. Would you like me to show you the details?
</span>
</div>`;
messages.appendChild(aiMessage);
messages.scrollTop = messages.scrollHeight;
}, 1000);
input.value = '';
}
});
}
}
// Theme toggle functionality
document.addEventListener('DOMContentLoaded', () => {
initAIAssistant();
const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) {
themeToggle.addEventListener('click', () => {
document.documentElement.classList.toggle('dark');
localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light');
});
}
}); |