class CustomScrollProgress extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; const progressBar = this.shadowRoot.getElementById('progress-bar'); window.addEventListener('scroll', () => { const scrollTop = window.scrollY; const docHeight = document.documentElement.scrollHeight - window.innerHeight; const progress = (scrollTop / docHeight) * 100; progressBar.style.width = `${progress}%`; }); } } customElements.define('custom-scroll-progress', CustomScrollProgress);