b2in/resources/views/partials/theme-toggle-script.blade.php
2026-01-23 17:33:10 +01:00

48 lines
1.9 KiB
PHP

<script>
(function() {
// Theme Toggle Funktionalität
const themeToggleBtn = document.getElementById('theme-toggle');
const themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
const themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
const themeToggleText = document.getElementById('theme-toggle-text');
const html = document.documentElement;
// Abbrechen wenn Elemente nicht gefunden wurden
if (!themeToggleBtn || !themeToggleLightIcon || !themeToggleDarkIcon || !themeToggleText) {
return;
}
// Theme aus localStorage laden oder Standard verwenden
const savedTheme = localStorage.getItem('theme') || 'dark';
function updateThemeUI(theme) {
if (theme === 'dark') {
html.classList.add('dark');
themeToggleLightIcon.classList.remove('hidden');
themeToggleDarkIcon.classList.add('hidden');
themeToggleText.textContent = 'Hell';
} else {
html.classList.remove('dark');
themeToggleLightIcon.classList.add('hidden');
themeToggleDarkIcon.classList.remove('hidden');
themeToggleText.textContent = 'Dunkel';
}
}
// Initiales Theme setzen
updateThemeUI(savedTheme);
// Vorherigen Event-Listener entfernen (falls vorhanden) und neuen hinzufügen
const newBtn = themeToggleBtn.cloneNode(true);
themeToggleBtn.parentNode.replaceChild(newBtn, themeToggleBtn);
newBtn.addEventListener('click', () => {
const currentTheme = html.classList.contains('dark') ? 'dark' : 'light';
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
localStorage.setItem('theme', newTheme);
updateThemeUI(newTheme);
});
})();
</script>