summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-04-15 15:36:17 +0200
committerDanilo M. <danix@danix.xyz>2026-04-15 15:36:17 +0200
commit8d1efef01dfd0eca47a2009a08adcfde8b78fb29 (patch)
tree1a519901327ec8f8324ecc3c1ed6b68fd7366c09
parent3ef03223462317e2aaed060a7514d34df728618b (diff)
downloaddanixxyz-8d1efef01dfd0eca47a2009a08adcfde8b78fb29.tar.gz
danixxyz-8d1efef01dfd0eca47a2009a08adcfde8b78fb29.zip
feat: create theme toggle with localStorage persistence
-rw-r--r--themes/danix-xyz-hacker/assets/js/theme-toggle.js30
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();
+ }
+ });
+});