/* === DARK MODE === Reihenfolge: ausdrueckliche Auswahl des Nutzers > Systemeinstellung. */ (function() { const saved = localStorage.getItem('theme'); // Der Inline-Schnipsel im
hat das Theme bereits gesetzt – diese // Entscheidung wird hier nicht überschrieben. const current = document.documentElement.getAttribute('data-theme'); const system = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; document.documentElement.setAttribute('data-theme', saved || current || system); // Solange nichts ausgewaehlt wurde, folgt die Oberflaeche dem System. if (!saved && window.matchMedia) { window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => { if (localStorage.getItem('theme')) return; document.documentElement.setAttribute('data-theme', e.matches ? 'dark' : 'light'); if (typeof updateDarkModeBtn === 'function') updateDarkModeBtn(); }); } })(); function toggleDarkMode() { const html = document.documentElement; const current = html.getAttribute('data-theme') || 'light'; const next = current === 'dark' ? 'light' : 'dark'; html.setAttribute('data-theme', next); localStorage.setItem('theme', next); updateDarkModeBtn(); } function updateDarkModeBtn() { const btn = document.getElementById('darkModeBtn'); if (!btn) return; const isDark = document.documentElement.getAttribute('data-theme') === 'dark'; const icon = btn.querySelector('i'); if (icon) { icon.className = isDark ? 'fas fa-sun' : 'fas fa-moon'; } else { btn.textContent = isDark ? '☀' : '☾'; } btn.title = isDark ? 'Light Mode' : 'Dark Mode'; } document.addEventListener('DOMContentLoaded', updateDarkModeBtn); /* === TOAST NOTIFICATIONS === */ (function() { let container = null; function getContainer() { if (!container) { container = document.getElementById('toast-container'); if (!container) { container = document.createElement('div'); container.id = 'toast-container'; document.body.appendChild(container); } } return container; } const icons = { success: '✓', error: '✕', info: 'i', warning: '!' }; window.showToast = function(type, title, message, duration) { duration = duration || 4000; const c = getContainer(); const el = document.createElement('div'); el.className = 'toast ' + type; el.innerHTML = `