class ProjectsComponent extends HTMLElement { constructor() { super(); this.projects = [ { id: 1, name: 'Portfolio Pro', status: 'active', timestamp: '2 jours', code: '' }, { id: 2, name: 'E-shop Mode', status: 'active', timestamp: '5 jours', code: '' }, { id: 3, name: 'App SaaS', status: 'archived', timestamp: '10 jours', code: '' } ]; } connectedCallback() { this.attachShadow({ mode: 'open' }); this.render(); } render() { this.shadowRoot.innerHTML = `

Mes Projets

${this.projects.length > 0 ? this.projects.map(project => `

${project.name}

${project.status === 'active' ? 'Actif' : 'Archivé'} ${project.timestamp}
`).join('') : `

Aucun projet trouvé

Commencez par créer un nouveau projet ou demandez à Rosalinda de générer du code pour vous.

`}
`; // Initialize feather icons const featherScript = document.createElement('script'); featherScript.src = 'https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js'; this.shadowRoot.appendChild(featherScript); featherScript.onload = () => { feather.replace(); }; // Add event listeners this.shadowRoot.querySelectorAll('.project-card').forEach(card => { card.addEventListener('click', () => { const projectId = parseInt(card.getAttribute('data-id')); const project = this.projects.find(p => p.id === projectId); if (project && project.code) { document.dispatchEvent(new CustomEvent('show-code', { detail: { code: project.code, description: project.name } })); } }); }); // New project button this.shadowRoot.querySelector('.new-project-button').addEventListener('click', () => { document.dispatchEvent(new CustomEvent('navigate', { detail: 'chat' })); }); // Empty state button const emptyButton = this.shadowRoot.querySelector('.empty-button'); if (emptyButton) { emptyButton.addEventListener('click', () => { document.dispatchEvent(new CustomEvent('navigate', { detail: 'chat' })); }); } } } customElements.define('projects-component', ProjectsComponent);