| // View management | |
| function setView(view) { | |
| document.querySelectorAll('[id$="-view"]').forEach(el => { | |
| el.classList.add('hidden'); | |
| }); | |
| document.getElementById(`${view}-view`).classList.remove('hidden'); | |
| // Update active state in sidebar | |
| document.querySelectorAll('custom-sidebar').forEach(sidebar => { | |
| sidebar.setAttribute('active-view', view); | |
| }); | |
| } | |
| // Chat functionality | |
| let messages = []; | |
| function sendMessage() { | |
| const input = document.getElementById('chat-input'); | |
| if (!input.value.trim()) return; | |
| // Add user message | |
| const userMessage = { | |
| id: Date.now(), | |
| user: 'Vous', | |
| type: 'user', | |
| text: input.value, | |
| time: new Date().toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) | |
| }; | |
| messages.push(userMessage); | |
| renderMessages(); | |
| input.value = ''; | |
| // Simulate AI response | |
| setTimeout(() => { | |
| const aiResponse = { | |
| id: Date.now() + 1, | |
| user: 'Rosalinda', | |
| type: 'assistant', | |
| text: generateResponse(input.value), | |
| time: new Date().toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) | |
| }; | |
| messages.push(aiResponse); | |
| renderMessages(); | |
| }, 1000); | |
| } | |
| function generateResponse(userInput) { | |
| // This would be replaced with actual API calls to Claude or similar | |
| if (userInput.includes('portfolio')) { | |
| return "Voici un code HTML/CSS complet pour un portfolio professionnel:\n |