fix(Header): Remove duplicate variable declarations and event listeners

This commit is contained in:
Daniel LaForce 2025-04-23 14:18:31 -06:00
parent 23ea734d66
commit b340d3fe78
1 changed files with 3 additions and 66 deletions

View File

@ -379,13 +379,13 @@ const navItems = [
</style> </style>
<script> <script>
// Only define one DOMContentLoaded event handler
// Handle mobile menu toggle
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
const menuBtn = document.getElementById('mobile-menu-btn'); const menuBtn = document.getElementById('mobile-menu-btn');
const mainNav = document.querySelector('.main-nav'); const mainNav = document.querySelector('.main-nav');
const header = document.querySelector('.site-header'); const header = document.querySelector('.site-header');
// Mobile menu toggle
if (menuBtn && mainNav) { if (menuBtn && mainNav) {
menuBtn.addEventListener('click', () => { menuBtn.addEventListener('click', () => {
mainNav.classList.toggle('active'); mainNav.classList.toggle('active');
@ -402,70 +402,7 @@ const navItems = [
} }
}); });
// Theme toggle functionality // Theme toggle functionality - only define once
const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) {
themeToggle.addEventListener('click', () => {
document.documentElement.classList.toggle('light-mode');
// Store preference in localStorage
const isLightMode = document.documentElement.classList.contains('light-mode');
localStorage.setItem('theme', isLightMode ? 'light' : 'dark');
});
}
// Add interactive network nodes animation
const header_el = document.querySelector('.site-header');
if (header_el) {
// Create animated nodes
for (let i = 0; i < 5; i++) {
const node = document.createElement('div');
node.className = 'nav-node';
node.style.left = `${Math.random() * 100}%`;
node.style.animationDelay = `${Math.random() * 5}s`;
node.style.animationDuration = `${5 + Math.random() * 5}s`;
header_el.appendChild(node);
}
}
// Theme toggle functionality
const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) {
themeToggle.addEventListener('click', () => {
document.documentElement.classList.toggle('light-mode');
// Store preference in localStorage
const isLightMode = document.documentElement.classList.contains('light-mode');
localStorage.setItem('theme', isLightMode ? 'light' : 'dark');
});
}
// Handle mobile menu toggle
document.addEventListener('DOMContentLoaded', () => {
const menuBtn = document.getElementById('mobile-menu-btn');
const mainNav = document.querySelector('.main-nav');
const header = document.querySelector('.site-header');
if (menuBtn && mainNav) {
menuBtn.addEventListener('click', () => {
mainNav.classList.toggle('active');
menuBtn.classList.toggle('mobile-menu-active');
});
}
// Header scroll effect
window.addEventListener('scroll', () => {
if (window.scrollY > 50) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
});
// Theme toggle functionality
const themeToggle = document.getElementById('theme-toggle'); const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) { if (themeToggle) {