diff options
| author | Danilo M. <danix@danix.xyz> | 2026-04-15 15:36:17 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-04-15 15:36:17 +0200 |
| commit | 8d1efef01dfd0eca47a2009a08adcfde8b78fb29 (patch) | |
| tree | 1a519901327ec8f8324ecc3c1ed6b68fd7366c09 /themes/danix-xyz-hacker/assets | |
| parent | 3ef03223462317e2aaed060a7514d34df728618b (diff) | |
| download | danixxyz-8d1efef01dfd0eca47a2009a08adcfde8b78fb29.tar.gz danixxyz-8d1efef01dfd0eca47a2009a08adcfde8b78fb29.zip | |
feat: create theme toggle with localStorage persistence
Diffstat (limited to 'themes/danix-xyz-hacker/assets')
| -rw-r--r-- | themes/danix-xyz-hacker/assets/js/theme-toggle.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/themes/danix-xyz-hacker/assets/js/theme-toggle.js b/themes/danix-xyz-hacker/assets/js/theme-toggle.js new file mode 100644 index 0000000..97ed1ce --- /dev/null +++ b/themes/danix-xyz-hacker/assets/js/theme-toggle.js @@ -0,0 +1,30 @@ +document.addEventListener('DOMContentLoaded', function() { + const themeToggle = document.getElementById('theme-toggle'); + + if (!themeToggle) { + return; + } + + themeToggle.addEventListener('click', function(e) { + e.preventDefault(); + + // Get current theme from html element + const htmlElement = document.documentElement; + const isDark = htmlElement.classList.contains('theme-dark'); + const newTheme = isDark ? 'light' : 'dark'; + + // Remove both theme classes + htmlElement.classList.remove('theme-light', 'theme-dark'); + + // Add the new theme class + htmlElement.classList.add(`theme-${newTheme}`); + + // Persist to localStorage + localStorage.setItem('theme', newTheme); + + // Update Feather Icons if available + if (window.feather) { + window.feather.replace(); + } + }); +}); |
