From 257f665ce6aed8ca4bf948b7104624ac93a3bd2a Mon Sep 17 00:00:00 2001 From: minie4 Date: Mon, 3 Oct 2022 12:05:44 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20theme=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 25 +++++++++++---- src/assets/base.css | 27 ---------------- src/assets/themes.css | 53 ++++++++++++++++++++++++++++++++ src/components/initial-setup.vue | 16 ++++++++++ src/store.js | 4 +++ src/strings.js | 16 ++++++++++ src/views/SettingsView.vue | 12 ++++++++ 7 files changed, 120 insertions(+), 33 deletions(-) create mode 100644 src/assets/themes.css diff --git a/src/App.vue b/src/App.vue index bcfc5dc..d8c5c37 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,8 +4,17 @@ import TitleBar from "./components/titlebar-element.vue"; import BottomNavbar from "./components/bottom-navbar.vue"; import DateSelector from "./components/date-selector.vue"; import LoadingElement from "./components/loading-element.vue"; -import { loading } from "./store"; -import { computed } from "vue"; +import { loading, theme } from "./store"; +import { computed, ref } from "vue"; + +const autoThemes = { true: "dark", false: "light" }; +const autoTheme = ref("dark"); +const colorSchemeMedia = window.matchMedia("(prefers-color-scheme: dark)"); +autoTheme.value = autoThemes[colorSchemeMedia.matches]; +colorSchemeMedia.addEventListener( + "change", + (e) => (autoTheme.value = autoThemes[e.matches]) +); const route = useRoute(); const routeName = computed(() => route.name); @@ -17,7 +26,10 @@ const isDataView = computed(() => {