// Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); document.querySelector(this.getAttribute('href')).scrollIntoView({ behavior: 'smooth' }); }); }); // Dark mode toggle functionality const darkModeToggle = document.getElementById('darkModeToggle'); if (darkModeToggle) { darkModeToggle.addEventListener('click', () => { document.documentElement.classList.toggle('dark'); localStorage.setItem('darkMode', document.documentElement.classList.contains('dark')); }); // Check for saved user preference if (localStorage.getItem('darkMode') === 'true') { document.documentElement.classList.add('dark'); } } // Register custom elements and initialize components document.addEventListener('DOMContentLoaded', function() { // Initialize Chart.js tooltips Chart.defaults.plugins.tooltip.backgroundColor = 'rgba(0, 0, 0, 0.8)'; Chart.defaults.plugins.tooltip.bodyFont = { family: "'Inter', sans-serif", size: 12 }; Chart.defaults.plugins.tooltip.titleFont = { family: "'Inter', sans-serif", size: 14, weight: 'bold' }; Chart.defaults.plugins.tooltip.padding = 10; Chart.defaults.plugins.tooltip.cornerRadius = 4; Chart.defaults.plugins.tooltip.displayColors = true; Chart.defaults.plugins.tooltip.usePointStyle = true; Chart.defaults.plugins.tooltip.mode = 'nearest'; Chart.defaults.plugins.tooltip.intersect = false; const tooltipTriggers = document.querySelectorAll('[data-tooltip]'); tooltipTriggers.forEach(trigger => { const tooltip = document.createElement('div'); tooltip.className = 'tooltip hidden absolute z-10 bg-gray-800 text-white text-xs rounded py-1 px-2'; tooltip.textContent = trigger.getAttribute('data-tooltip'); document.body.appendChild(tooltip); trigger.addEventListener('mouseenter', (e) => { const rect = trigger.getBoundingClientRect(); tooltip.style.left = `${rect.left + rect.width / 2 - tooltip.offsetWidth / 2}px`; tooltip.style.top = `${rect.top - tooltip.offsetHeight - 5}px`; tooltip.classList.remove('hidden'); }); trigger.addEventListener('mouseleave', () => { tooltip.classList.add('hidden'); }); }); });