diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 16c3545..843c0d8 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -21,8 +21,13 @@ import MenuBar from "./components/MenuBar.vue"; import { RouteRecordName, RouterView } from "vue-router"; import CalendarPreview from "./components/CalendarPreview.vue"; import moduleStore from "./store/moduleStore.ts"; -import { provide, ref } from "vue"; +import { onMounted, provide, ref } from "vue"; import { VueQueryDevtools } from "@tanstack/vue-query-devtools"; +import settingsStore from "@/store/settingsStore.ts"; +import { setTheme } from "@/helpers/theme.ts"; +import { usePrimeVue } from "primevue/config"; + +const primeVue = usePrimeVue(); const disabledPages = [ "room-finder", @@ -33,7 +38,7 @@ const disabledPages = [ "edit-calendar", "rooms", "free-rooms", - "room-schedule", + "room-schedule" ]; const store = moduleStore(); @@ -51,12 +56,25 @@ const updateMobile = () => { updateMobile(); window.addEventListener("resize", updateMobile); + +const settings = settingsStore(); +const emit = defineEmits(["dark-mode-toggled"]); + +onMounted(() => { +// set theme matching browser preference + setTheme(settings, primeVue, emit, (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches)); + + window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (e) => { + setTheme(settings, primeVue, emit, e.matches); + }); +}); +