summaryrefslogtreecommitdiff
path: root/static/js/components/themeSwitcher.js
diff options
context:
space:
mode:
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);