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 = `
${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);