document.addEventListener('DOMContentLoaded', function() {
const themeToggle = document.getElementById('theme-toggle');
+ const sunIcon = document.getElementById('theme-icon-sun');
+ const moonIcon = document.getElementById('theme-icon-moon');
+
+ function updateThemeIcon() {
+ const isDark = document.documentElement.classList.contains('theme-dark');
+ if (sunIcon && moonIcon) {
+ if (isDark) {
+ sunIcon.style.display = 'block';
+ moonIcon.style.display = 'none';
+ } else {
+ sunIcon.style.display = 'none';
+ moonIcon.style.display = 'block';
+ }
+ }
+ }
+
+ // Update icon on initial load
+ if (sunIcon && moonIcon) {
+ updateThemeIcon();
+ }
if (!themeToggle) {
return;
// Add the new theme class
htmlElement.classList.add(`theme-${newTheme}`);
- // Update article type badge colors
- const badges = document.querySelectorAll('[data-theme-dark-color]');
- badges.forEach(badge => {
- if (newTheme === 'dark') {
- const darkColor = badge.getAttribute('data-theme-dark-color');
- badge.style.color = darkColor;
- badge.style.backgroundColor = darkColor + '20';
- } else {
- const lightColor = badge.style.color; // Already set to light in HTML
- badge.style.color = lightColor;
- // backgroundColor stays as is (light color with opacity)
- }
- });
-
// Persist to localStorage
localStorage.setItem('theme', newTheme);
+ // Update icon display
+ updateThemeIcon();
+
// Update Feather Icons if available
if (window.feather) {
window.feather.replace();
<!-- Theme toggle button -->
<button
id="theme-toggle"
- x-data="{
- theme: document.documentElement.classList.contains('theme-light') ? 'light' : 'dark',
- toggle() {
- this.theme = this.theme === 'dark' ? 'light' : 'dark';
- document.documentElement.className = 'theme-' + this.theme;
- localStorage.setItem('theme', this.theme);
- }
- }"
- @click="toggle()"
aria-label="{{ i18n "toggleTheme" }}"
class="p-2 rounded hover:bg-surface transition-colors"
>
- <i x-show="theme === 'dark'" data-feather="sun" class="w-5 h-5" aria-hidden="true"></i>
- <i x-show="theme === 'light'" data-feather="moon" class="w-5 h-5" aria-hidden="true"></i>
+ <i id="theme-icon-sun" data-feather="sun" class="w-5 h-5" aria-hidden="true"></i>
+ <i id="theme-icon-moon" data-feather="moon" class="w-5 h-5" aria-hidden="true"></i>
</button>
<!-- Hamburger menu button (mobile only) -->