mirror of
https://github.com/oSoWoSo/DistroHopper.git
synced 2026-06-14 17:36:40 +00:00
98 lines
3.5 KiB
JavaScript
98 lines
3.5 KiB
JavaScript
// ========================================
|
|
// Mobile Navigation Toggle
|
|
// ========================================
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const navToggle = document.querySelector('.nav-toggle');
|
|
const navMenu = document.querySelector('.nav-menu');
|
|
|
|
if (navToggle) {
|
|
navToggle.addEventListener('click', function() {
|
|
navMenu.classList.toggle('active');
|
|
|
|
// Animate hamburger icon
|
|
const spans = this.querySelectorAll('span');
|
|
if (navMenu.classList.contains('active')) {
|
|
spans[0].style.transform = 'rotate(45deg) translate(6px, 6px)';
|
|
spans[1].style.opacity = '0';
|
|
spans[2].style.transform = 'rotate(-45deg) translate(6px, -6px)';
|
|
} else {
|
|
spans[0].style.transform = 'none';
|
|
spans[1].style.opacity = '1';
|
|
spans[2].style.transform = 'none';
|
|
}
|
|
});
|
|
|
|
// Close menu when clicking on a link
|
|
const navLinks = document.querySelectorAll('.nav-menu a');
|
|
navLinks.forEach(link => {
|
|
link.addEventListener('click', () => {
|
|
navMenu.classList.remove('active');
|
|
const spans = navToggle.querySelectorAll('span');
|
|
spans[0].style.transform = 'none';
|
|
spans[1].style.opacity = '1';
|
|
spans[2].style.transform = 'none';
|
|
});
|
|
});
|
|
}
|
|
|
|
// Initialize theme
|
|
initTheme();
|
|
});
|
|
|
|
// ========================================
|
|
// Theme Toggle
|
|
// ========================================
|
|
function initTheme() {
|
|
// Check for saved theme preference or default to 'dark' mode
|
|
const currentTheme = localStorage.getItem('theme') || 'dark';
|
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
|
updateThemeIcon(currentTheme);
|
|
|
|
// Add click listener to theme toggle button
|
|
const themeToggle = document.querySelector('.theme-toggle');
|
|
if (themeToggle) {
|
|
themeToggle.addEventListener('click', toggleTheme);
|
|
}
|
|
}
|
|
|
|
function toggleTheme() {
|
|
const currentTheme = document.documentElement.getAttribute('data-theme');
|
|
const newTheme = currentTheme === 'light' ? 'dark' : 'light';
|
|
|
|
document.documentElement.setAttribute('data-theme', newTheme);
|
|
localStorage.setItem('theme', newTheme);
|
|
updateThemeIcon(newTheme);
|
|
}
|
|
|
|
function updateThemeIcon(theme) {
|
|
const lightIcon = document.querySelector('.theme-toggle .light-icon');
|
|
const darkIcon = document.querySelector('.theme-toggle .dark-icon');
|
|
|
|
if (lightIcon && darkIcon) {
|
|
if (theme === 'dark') {
|
|
// When dark theme is active, show sun icon (to switch TO light)
|
|
lightIcon.classList.add('active');
|
|
darkIcon.classList.remove('active');
|
|
} else {
|
|
// When light theme is active, show moon icon (to switch TO dark)
|
|
lightIcon.classList.remove('active');
|
|
darkIcon.classList.add('active');
|
|
}
|
|
}
|
|
}
|
|
|
|
// ========================================
|
|
// Smooth Scroll
|
|
// ========================================
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
anchor.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
const target = document.querySelector(this.getAttribute('href'));
|
|
if (target) {
|
|
target.scrollIntoView({
|
|
behavior: 'smooth',
|
|
block: 'start'
|
|
});
|
|
}
|
|
});
|
|
});
|