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 ? `
RC
Rosalinda
Workspace Codage
` : `
RC
`}
${!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);