website/assets/js/pages/legal.js

35 lines
No EOL
1.6 KiB
JavaScript

// assets/js/pages/legal.js - minimal fallback for legal pages
document.addEventListener('DOMContentLoaded', () => {
// replace feather icons if available (use centralized loader if present)
if (typeof window.ensureFeather === 'function') {
window.ensureFeather().then(() => { try { if (window.feather && feather.replace) feather.replace(); } catch (e) {} }).catch(()=>{});
} else if (window.feather && feather.replace) {
try { feather.replace(); } catch (e) { /* ignore */ }
}
// theme fallback (will be overwritten by assets/js/main.js if present)
const html = document.documentElement;
if (!html.getAttribute('data-theme')) {
const saved = localStorage.getItem('theme');
const validTheme = ['dark', 'light'].includes(saved) ? saved : 'dark';
html.setAttribute('data-theme', validTheme);
}
const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) themeToggle.addEventListener('click', () => {
const newTheme = html.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
html.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
});
// navbar scrolled
const navbar = document.getElementById('navbar');
if (navbar) window.addEventListener('scroll', () => navbar.classList.toggle('scrolled', window.scrollY > 50));
// mobile toggle (minimal)
const mobileToggle = document.getElementById('mobile-toggle');
const navLinks = document.getElementById('nav-links');
if (mobileToggle && navLinks) mobileToggle.addEventListener('click', () => {
mobileToggle.classList.toggle('active');
navLinks.classList.toggle('active');
});
});