class CustomCard extends HTMLElement { static get observedAttributes() { return ['title', 'description', 'icon']; } constructor() { super(); this.attachShadow({ mode: 'open' }); } connectedCallback() { this.render(); } attributeChangedCallback() { this.render(); } render() { const title = this.getAttribute('title') || 'Card Title'; const description = this.getAttribute('description') || 'Default card description'; const icon = this.getAttribute('icon') || 'box'; this.shadowRoot.innerHTML = `
${description}