Co-authored-by: fez5587 <957959+fez5587@users.noreply.github.com>
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
// ===== TAB SWITCHING =====
|
|
const tabButtons = document.querySelectorAll('.tab-btn');
|
|
const tabContents = document.querySelectorAll('.tab-content');
|
|
|
|
tabButtons.forEach(button => {
|
|
button.addEventListener('click', () => {
|
|
// Remove active class from all buttons and contents
|
|
tabButtons.forEach(btn => btn.classList.remove('active'));
|
|
tabContents.forEach(content => content.classList.remove('active'));
|
|
|
|
// Add active class to clicked button
|
|
button.classList.add('active');
|
|
|
|
// Show corresponding content
|
|
const tabId = button.getAttribute('data-tab');
|
|
document.getElementById(tabId).classList.add('active');
|
|
});
|
|
});
|
|
|
|
// ===== MOBILE MENU TOGGLE =====
|
|
const mobileToggle = document.querySelector('.mobile-menu-toggle');
|
|
const navMenu = document.querySelector('.nav-menu');
|
|
|
|
mobileToggle.addEventListener('click', () => {
|
|
const isExpanded = mobileToggle.getAttribute('aria-expanded') === 'true';
|
|
mobileToggle.setAttribute('aria-expanded', !isExpanded);
|
|
navMenu.classList.toggle('active');
|
|
});
|
|
|
|
// Close mobile menu when clicking a link
|
|
document.querySelectorAll('.nav-link').forEach(link => {
|
|
link.addEventListener('click', () => {
|
|
navMenu.classList.remove('active');
|
|
mobileToggle.setAttribute('aria-expanded', 'false');
|
|
});
|
|
});
|
|
|
|
// ===== SMOOTH SCROLL =====
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
anchor.addEventListener('click', function (e) {
|
|
const href = this.getAttribute('href');
|
|
if (!href || href === '#') return;
|
|
e.preventDefault();
|
|
const target = document.querySelector(href);
|
|
if (target) {
|
|
target.scrollIntoView({
|
|
behavior: 'smooth',
|
|
block: 'start'
|
|
});
|
|
}
|
|
});
|
|
});
|