summaryrefslogtreecommitdiff
path: root/static/js/components/themeSwitcher.js
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2025-01-05 16:39:13 -0800
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2025-01-05 16:39:13 -0800
commitd25ec27fb1c3df175e1b98af1fdc26881d68a1ab (patch)
treea79c729b92c0d0a52b19b37c3a506b988f1e0b80 /static/js/components/themeSwitcher.js
downloadwhois-d25ec27fb1c3df175e1b98af1fdc26881d68a1ab.tar.gz
whois-d25ec27fb1c3df175e1b98af1fdc26881d68a1ab.zip
initial commit by simponic-infra
Diffstat (limited to 'static/js/components/themeSwitcher.js')
-rw-r--r--static/js/components/themeSwitcher.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/static/js/components/themeSwitcher.js b/static/js/components/themeSwitcher.js
new file mode 100644
index 0000000..e5497f0
--- /dev/null
+++ b/static/js/components/themeSwitcher.js
@@ -0,0 +1,27 @@
+const THEMES = {
+ DARK: "DARK",
+ LIGHT: "LIGHT",
+};
+
+const flipFlopTheme = (theme) =>
+ THEMES[theme] === THEMES.DARK ? THEMES.LIGHT : THEMES.DARK;
+
+const themePickerText = {
+ DARK: "light mode.",
+ LIGHT: "dark mode.",
+};
+
+const themeSwitcher = document.getElementById("theme-switcher");
+
+const setTheme = (theme) => {
+ themeSwitcher.textContent = `${themePickerText[theme]}`;
+
+ document.documentElement.setAttribute("data-theme", theme);
+ localStorage.setItem("theme", theme);
+};
+
+themeSwitcher.addEventListener("click", () =>
+ setTheme(flipFlopTheme(document.documentElement.getAttribute("data-theme"))),
+);
+
+setTheme(localStorage.getItem("theme") || THEMES.LIGHT);