class CustomSidebar extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.render(); // Observe attribute changes const observer = new MutationObserver(() => this.render()); observer.observe(this, { attributes: true }); } static get observedAttributes() { return ['collapsed', 'active-view']; } render() { const collapsed = this.hasAttribute('collapsed'); const activeView = this.getAttribute('active-view') || 'home'; this.shadowRoot.innerHTML = ` ${!collapsed ? `
` : ''} ${!collapsed ? `

Vos Projets

${this.createProjectItem(1, 'Portfolio Pro', 'active', '2 jours', false)} ${this.createProjectItem(2, 'E-shop Mode', 'active', '5 jours', false)} ${this.createProjectItem(3, 'App SaaS', 'archived', '10 jours', false)}
` : ''} `; feather.replace(); } createNavItem(id, label, icon, isActive, collapsed) { return ` `; } createProjectItem(id, name, status, time, isActive) { return ` `; } } customElements.define('custom-sidebar', CustomSidebar);