class CustomPreloader extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
LOADING
`; // Simulate loading progress const progressFill = this.shadowRoot.getElementById('progress-fill'); let progress = 0; const interval = setInterval(() => { progress += Math.random() * 30; if (progress >= 100) { progress = 100; clearInterval(interval); setTimeout(() => { this.classList.add('hidden'); document.body.style.overflow = 'auto'; }, 300); } progressFill.style.width = `${progress}%`; }, 200); // Prevent scroll while loading document.body.style.overflow = 'hidden'; } } customElements.define('custom-preloader', CustomPreloader);