| | |
| | document.addEventListener('DOMContentLoaded', function() { |
| | |
| | const savedTheme = localStorage.getItem('theme') || |
| | (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); |
| | document.documentElement.classList.add(savedTheme); |
| | |
| | |
| | const themeToggle = document.querySelector('#theme-toggle'); |
| | if (themeToggle) { |
| | themeToggle.addEventListener('click', () => { |
| | const currentTheme = document.documentElement.classList.contains('dark') ? 'dark' : 'light'; |
| | const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; |
| | |
| | document.documentElement.classList.remove(currentTheme); |
| | document.documentElement.classList.add(newTheme); |
| | localStorage.setItem('theme', newTheme); |
| | |
| | |
| | const icon = themeToggle.querySelector('[data-feather]'); |
| | if (icon) { |
| | icon.setAttribute('data-feather', newTheme === 'dark' ? 'sun' : 'moon'); |
| | feather.replace(); |
| | } |
| | }); |
| | } |
| | |
| | |
| | document.querySelectorAll('.project-status').forEach(status => { |
| | const text = status.textContent.trim().toLowerCase(); |
| | if (text === 'running') { |
| | status.classList.add('bg-green-100', 'text-green-800'); |
| | } else if (text === 'stopped') { |
| | status.classList.add('bg-red-100', 'text-red-800'); |
| | } else if (text === 'starting') { |
| | status.classList.add('bg-yellow-100', 'text-yellow-800'); |
| | } |
| | }); |
| | |
| | |
| | async function loadProjects() { |
| | try { |
| | |
| | |
| | |
| | |
| | |
| | await new Promise(resolve => setTimeout(resolve, 1000)); |
| | |
| | |
| | console.log('Projects loaded'); |
| | } catch (error) { |
| | console.error('Failed to load projects:', error); |
| | } |
| | } |
| | |
| | loadProjects(); |
| | }); |