import { getConfig } from "./api.js";\r
import PrimeToast from "./components/PrimeToast.vue";\r
import { useGlobalStore } from "./globalStore.js";\r
-import { getUnknownServerErrorToastOptions } from "./helpers.js";\r
+import { getUnknownServerErrorToastOptions, loadTheme } from "./helpers.js";\r
import NavBar from "./partials/NavBar.vue";\r
import SearchModal from "./partials/SearchModal.vue";\r
import { loadStoredToken } from "./tokenStorage.js";\r
function toggleSearchModal() {\r
searchModal.value.toggle();\r
}\r
+\r
+loadTheme();\r
</script>\r
true,
);
}
+
+export function setDarkThemeOn(save = true) {
+ document.body.classList.add("dark");
+ if (save) localStorage.setItem("darkTheme", "true");
+}
+
+export function setDarkThemeOff(save = true) {
+ document.body.classList.remove("dark");
+ if (save) localStorage.setItem("darkTheme", "false");
+}
+
+export function toggleTheme() {
+ document.body.classList.contains("dark")
+ ? setDarkThemeOff()
+ : setDarkThemeOn();
+}
+
+export function loadTheme() {
+ const storedTheme = localStorage.getItem("darkTheme");
+ if (storedTheme === "true") {
+ setDarkThemeOn();
+ } else if (
+ storedTheme === null &&
+ window.matchMedia("(prefers-color-scheme: dark)").matches
+ ) {
+ setDarkThemeOn(false);
+ }
+}
import CustomButton from "../components/CustomButton.vue";\r
import Logo from "../components/Logo.vue";\r
import PrimeMenu from "../components/PrimeMenu.vue";\r
+import { toggleTheme } from "../helpers.js";\r
import { clearStoredToken } from "../tokenStorage.js";\r
\r
const menu = ref();\r
const router = useRouter();\r
-const searchModal = ref();\r
\r
defineProps({\r
hideLogo: Boolean,\r
},\r
];\r
\r
-function toggleTheme() {\r
- document.body.classList.toggle("dark");\r
-}\r
-\r
function logOut() {\r
clearStoredToken();\r
router.push({ name: "login" });\r