| |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| anchor.addEventListener('click', function (e) { |
| e.preventDefault(); |
| document.querySelector(this.getAttribute('href')).scrollIntoView({ |
| behavior: 'smooth' |
| }); |
| }); |
| }); |
|
|
| |
| const darkModeToggle = document.getElementById('darkModeToggle'); |
| if (darkModeToggle) { |
| darkModeToggle.addEventListener('click', () => { |
| document.documentElement.classList.toggle('dark'); |
| localStorage.setItem('darkMode', document.documentElement.classList.contains('dark')); |
| }); |
|
|
| |
| if (localStorage.getItem('darkMode') === 'true') { |
| document.documentElement.classList.add('dark'); |
| } |
| } |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| |
| 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'); |
| }); |
| }); |
| }); |