2024-07-06 20:57:32 -07:00
|
|
|
/* eslint-disable no-undef */
|
2023-07-20 11:19:42 -07:00
|
|
|
export default defineNuxtPlugin(async (nuxtApp) => {
|
2024-07-06 20:57:32 -07:00
|
|
|
await useAuth();
|
|
|
|
|
await useUser();
|
|
|
|
|
const themeStore = useTheme();
|
|
|
|
|
const cosmetics = useCosmetics();
|
2023-03-12 13:00:09 -07:00
|
|
|
|
2024-07-06 20:57:32 -07:00
|
|
|
nuxtApp.hook("app:mounted", () => {
|
|
|
|
|
if (process.client && themeStore.value.preference === "system") {
|
|
|
|
|
const colorSchemeQueryList = window.matchMedia("(prefers-color-scheme: light)");
|
2023-04-13 15:27:41 -07:00
|
|
|
|
|
|
|
|
const setColorScheme = (e) => {
|
2024-07-06 20:57:32 -07:00
|
|
|
if (themeStore.value.preference === "system") {
|
2023-04-13 15:27:41 -07:00
|
|
|
if (e.matches) {
|
2024-07-06 20:57:32 -07:00
|
|
|
updateTheme("light");
|
2023-04-13 15:27:41 -07:00
|
|
|
} else {
|
2024-07-06 20:57:32 -07:00
|
|
|
updateTheme(cosmetics.value.preferredDarkTheme ?? "dark");
|
2023-04-13 15:27:41 -07:00
|
|
|
}
|
|
|
|
|
}
|
2024-07-06 20:57:32 -07:00
|
|
|
};
|
2023-04-13 15:27:41 -07:00
|
|
|
|
2024-07-06 20:57:32 -07:00
|
|
|
setColorScheme(colorSchemeQueryList);
|
|
|
|
|
colorSchemeQueryList.addEventListener("change", setColorScheme);
|
2023-04-13 15:27:41 -07:00
|
|
|
}
|
2024-07-06 20:57:32 -07:00
|
|
|
});
|
2023-03-27 09:20:25 -07:00
|
|
|
|
2024-07-06 20:57:32 -07:00
|
|
|
nuxtApp.provide("colorMode", themeStore.value);
|
|
|
|
|
});
|