2026-02-01 10:29:16 +00:00

98 lines
3.4 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
// Dark Mode Toggle
const toggleButton = document.createElement('button');
toggleButton.id = 'dark-mode-toggle';
toggleButton.setAttribute('aria-label', 'Toggle Dark Mode');
toggleButton.innerHTML = '🌙';
document.body.appendChild(toggleButton);
const currentTheme = localStorage.getItem('theme');
if (currentTheme === 'dark') {
document.body.classList.add('dark-mode');
toggleButton.innerHTML = '☀️';
}
toggleButton.addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
let theme = 'light';
if (document.body.classList.contains('dark-mode')) {
theme = 'dark';
toggleButton.innerHTML = '☀️';
} else {
toggleButton.innerHTML = '🌙';
}
localStorage.setItem('theme', theme);
});
// Scroll Progress Bar
const scrollProgress = document.createElement('div');
scrollProgress.id = 'scroll-progress';
document.body.appendChild(scrollProgress);
// Back to Top Button
const backToTop = document.createElement('button');
backToTop.id = 'back-to-top';
backToTop.setAttribute('aria-label', 'Back to Top');
backToTop.innerHTML = '↑';
document.body.appendChild(backToTop);
// Floating Telegram FAB
const fabTelegram = document.createElement('a');
fabTelegram.className = 'fab-telegram';
fabTelegram.href = 'https://t.me/Bilnett';
fabTelegram.target = '_blank';
fabTelegram.innerHTML = '✈️';
fabTelegram.setAttribute('aria-label', 'Contact on Telegram');
document.body.appendChild(fabTelegram);
// Intersection Observer for Reveal Animations
const observerOptions = {
threshold: 0.1
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
});
}, observerOptions);
// Apply reveal to groups and columns
document.querySelectorAll('.wp-block-group, .wp-block-column').forEach(el => {
el.classList.add('reveal');
observer.observe(el);
});
window.addEventListener('scroll', () => {
// Scroll Progress
const winScroll = document.body.scrollTop || document.documentElement.scrollTop;
const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
const scrolled = (winScroll / height) * 100;
scrollProgress.style.width = scrolled + "%";
// Back to Top Visibility
if (window.scrollY > 400) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
backToTop.addEventListener('click', () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
// Handle Newsletter form submission (Demo)
const newsletterForm = document.querySelector('.newsletter-section form');
if (newsletterForm) {
newsletterForm.addEventListener('submit', (e) => {
e.preventDefault();
const email = newsletterForm.querySelector('input[type="email"]').value;
if (email) {
alert('Thank you for subscribing, ' + email + '! (Demo only)');
newsletterForm.reset();
}
});
}
});