class CustomPreloader extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
`;
// 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);