From 83ec32ad2b8ba2caa3961dd13e3a5fe656039645 Mon Sep 17 00:00:00 2001 From: LoTwT <709937065@qq.com> Date: Mon, 29 Jan 2024 12:51:16 +0800 Subject: [PATCH 1/9] fix: detect vitepress theme key --- packages/client/src/App.vue | 6 +++++- packages/client/src/utils/index.ts | 1 + packages/client/src/utils/theme.ts | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 packages/client/src/utils/theme.ts diff --git a/packages/client/src/App.vue b/packages/client/src/App.vue index 4e4050eab..1149ed5d2 100644 --- a/packages/client/src/App.vue +++ b/packages/client/src/App.vue @@ -3,11 +3,15 @@ import type { Ref } from 'vue' import { checkVueInspectorDetected, enableVueInspector, useDevToolsBridge, useDevToolsState } from '@vue/devtools-core' import { isInChromePanel } from '@vue/devtools-shared' import { Pane, Splitpanes } from 'splitpanes' +import { getThemeKey } from './utils' import('./setup/unocss-runtime') // @TODO: fix browser extension cross-origin localStorage issue -useColorMode() + +useColorMode({ + storageKey: getThemeKey(), +}) const router = useRouter() const route = useRoute() const { connected, clientConnected } = useDevToolsState() diff --git a/packages/client/src/utils/index.ts b/packages/client/src/utils/index.ts index 4b3a1e85d..3c3866eaf 100644 --- a/packages/client/src/utils/index.ts +++ b/packages/client/src/utils/index.ts @@ -1,2 +1,3 @@ export * from './color' export * from './time' +export * from './theme' diff --git a/packages/client/src/utils/theme.ts b/packages/client/src/utils/theme.ts new file mode 100644 index 000000000..e3e40c253 --- /dev/null +++ b/packages/client/src/utils/theme.ts @@ -0,0 +1,19 @@ +export const ThemeStorageKeys = { + default: 'vueuse-color-scheme', + vitepress: 'vitepress-theme-appearance', +} + +export function getThemeKey() { + let themeKey = ThemeStorageKeys.default + + const nonDefaultKeys = Object + .values(ThemeStorageKeys) + .filter(key => key !== ThemeStorageKeys.default) + + const resultKey = nonDefaultKeys.find(key => useLocalStorage(key, undefined).value) + + if (resultKey) + themeKey = resultKey + + return themeKey +} From 390ab41a3ccc3c7f315c45fa785752566ba5801f Mon Sep 17 00:00:00 2001 From: LoTwT <709937065@qq.com> Date: Mon, 29 Jan 2024 13:27:51 +0800 Subject: [PATCH 2/9] chore: add DarkToggle in playground --- packages/playground/basic/src/App.vue | 5 ++++- .../playground/basic/src/components/DarkToggle.vue | 12 ++++++++++++ packages/playground/basic/src/style.css | 10 ++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 packages/playground/basic/src/components/DarkToggle.vue diff --git a/packages/playground/basic/src/App.vue b/packages/playground/basic/src/App.vue index 07eb3ee79..60bdef99e 100644 --- a/packages/playground/basic/src/App.vue +++ b/packages/playground/basic/src/App.vue @@ -1,5 +1,5 @@ diff --git a/packages/playground/basic/src/components/DarkToggle.vue b/packages/playground/basic/src/components/DarkToggle.vue new file mode 100644 index 000000000..5e49a60a4 --- /dev/null +++ b/packages/playground/basic/src/components/DarkToggle.vue @@ -0,0 +1,12 @@ + + + diff --git a/packages/playground/basic/src/style.css b/packages/playground/basic/src/style.css index f0a3c1807..917220773 100644 --- a/packages/playground/basic/src/style.css +++ b/packages/playground/basic/src/style.css @@ -4,9 +4,9 @@ line-height: 24px; font-weight: 400; - color-scheme: light dark; + /* color-scheme: light dark; color: rgba(255, 255, 255, 0.87); - background-color: #242424; + background-color: #242424; */ font-synthesis: none; text-rendering: optimizeLegibility; @@ -14,3 +14,9 @@ -moz-osx-font-smoothing: grayscale; -webkit-text-size-adjust: 100%; } + +html.dark { + color-scheme: dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; +} From cd9ee5efe64190169bf101c66cf2411034dab6ef Mon Sep 17 00:00:00 2001 From: LoTwT <709937065@qq.com> Date: Fri, 1 Mar 2024 13:44:12 +0800 Subject: [PATCH 3/9] feat(ui): add useTheme composable --- packages/client/src/App.vue | 6 ++--- .../src/components/chrome/ViewModeSwitch.vue | 4 ++-- .../src/components/common/IframeView.vue | 4 +++- packages/client/src/utils/index.ts | 1 - packages/client/src/utils/theme.ts | 19 ---------------- packages/overlay/src/App.vue | 4 ++-- packages/ui/src/components/DarkToggle.vue | 5 +++-- packages/ui/src/composables/index.ts | 1 + packages/ui/src/composables/theme.ts | 22 +++++++++++++++++++ 9 files changed, 35 insertions(+), 31 deletions(-) delete mode 100644 packages/client/src/utils/theme.ts create mode 100644 packages/ui/src/composables/theme.ts diff --git a/packages/client/src/App.vue b/packages/client/src/App.vue index 1149ed5d2..d7f3180f5 100644 --- a/packages/client/src/App.vue +++ b/packages/client/src/App.vue @@ -3,15 +3,13 @@ import type { Ref } from 'vue' import { checkVueInspectorDetected, enableVueInspector, useDevToolsBridge, useDevToolsState } from '@vue/devtools-core' import { isInChromePanel } from '@vue/devtools-shared' import { Pane, Splitpanes } from 'splitpanes' -import { getThemeKey } from './utils' +import { useTheme } from '@vue/devtools-ui' import('./setup/unocss-runtime') // @TODO: fix browser extension cross-origin localStorage issue -useColorMode({ - storageKey: getThemeKey(), -}) +useTheme() const router = useRouter() const route = useRoute() const { connected, clientConnected } = useDevToolsState() diff --git a/packages/client/src/components/chrome/ViewModeSwitch.vue b/packages/client/src/components/chrome/ViewModeSwitch.vue index 1a7b294e8..34f4cb244 100644 --- a/packages/client/src/components/chrome/ViewModeSwitch.vue +++ b/packages/client/src/components/chrome/ViewModeSwitch.vue @@ -1,7 +1,7 @@ diff --git a/packages/client/src/components/common/IframeView.vue b/packages/client/src/components/common/IframeView.vue index 0979b02e8..4c5653bb4 100644 --- a/packages/client/src/components/common/IframeView.vue +++ b/packages/client/src/components/common/IframeView.vue @@ -1,4 +1,6 @@ @@ -7,7 +9,7 @@ const props = defineProps<{ src: string }>() -const colorMode = useColorMode() +const colorMode = useTheme() const anchor = ref() const key = computed(() => props.src) const iframeEl = ref() diff --git a/packages/client/src/utils/index.ts b/packages/client/src/utils/index.ts index 3c3866eaf..4b3a1e85d 100644 --- a/packages/client/src/utils/index.ts +++ b/packages/client/src/utils/index.ts @@ -1,3 +1,2 @@ export * from './color' export * from './time' -export * from './theme' diff --git a/packages/client/src/utils/theme.ts b/packages/client/src/utils/theme.ts deleted file mode 100644 index e3e40c253..000000000 --- a/packages/client/src/utils/theme.ts +++ /dev/null @@ -1,19 +0,0 @@ -export const ThemeStorageKeys = { - default: 'vueuse-color-scheme', - vitepress: 'vitepress-theme-appearance', -} - -export function getThemeKey() { - let themeKey = ThemeStorageKeys.default - - const nonDefaultKeys = Object - .values(ThemeStorageKeys) - .filter(key => key !== ThemeStorageKeys.default) - - const resultKey = nonDefaultKeys.find(key => useLocalStorage(key, undefined).value) - - if (resultKey) - themeKey = resultKey - - return themeKey -} diff --git a/packages/overlay/src/App.vue b/packages/overlay/src/App.vue index f92568258..2887ed5b2 100644 --- a/packages/overlay/src/App.vue +++ b/packages/overlay/src/App.vue @@ -1,16 +1,16 @@ diff --git a/packages/playground/basic/src/components/DarkToggle.vue b/packages/playground/basic/src/components/DarkToggle.vue deleted file mode 100644 index 5e49a60a4..000000000 --- a/packages/playground/basic/src/components/DarkToggle.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/packages/playground/basic/src/style.css b/packages/playground/basic/src/style.css index 917220773..f0a3c1807 100644 --- a/packages/playground/basic/src/style.css +++ b/packages/playground/basic/src/style.css @@ -4,9 +4,9 @@ line-height: 24px; font-weight: 400; - /* color-scheme: light dark; + color-scheme: light dark; color: rgba(255, 255, 255, 0.87); - background-color: #242424; */ + background-color: #242424; font-synthesis: none; text-rendering: optimizeLegibility; @@ -14,9 +14,3 @@ -moz-osx-font-smoothing: grayscale; -webkit-text-size-adjust: 100%; } - -html.dark { - color-scheme: dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; -} From 6f280e9b1df87db78fcfd4bfbc614bd7a304fd0e Mon Sep 17 00:00:00 2001 From: Lo Date: Tue, 5 Mar 2024 09:20:10 +0800 Subject: [PATCH 8/9] chore: restore --- packages/playground/basic/src/App.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/playground/basic/src/App.vue b/packages/playground/basic/src/App.vue index c6ff878ae..07eb3ee79 100644 --- a/packages/playground/basic/src/App.vue +++ b/packages/playground/basic/src/App.vue @@ -1,4 +1,5 @@