31 lines
No EOL
1.5 KiB
JavaScript
31 lines
No EOL
1.5 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')) html.setAttribute('data-theme', localStorage.getItem('theme') || 'dark');
|
|
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');
|
|
});
|
|
}); |