diff --git a/docs/.vitepress/theme/Playground.vue b/docs/.vitepress/theme/Playground.vue index 0125fa2e2..58c9671a7 100644 --- a/docs/.vitepress/theme/Playground.vue +++ b/docs/.vitepress/theme/Playground.vue @@ -6,6 +6,7 @@ import { computed, onMounted, ref, shallowRef, watch } from 'vue'; import { useBreakpoints } from './breakpoint'; import { useDialect } from './dialect'; +import { useDarkMode } from './dark-mode'; const formatter = { cockroachdb: 'postgresql', @@ -20,6 +21,7 @@ const formatter = { }; const { dialect } = useDialect(); +const { isDark } = useDarkMode(); const { type } = useBreakpoints(); const isVertical = computed(() => ['xs', 'sm'].includes(type.value)); @@ -125,7 +127,7 @@ watch([code, dialect], () => { { -import { onMounted, ref, computed, watch } from 'vue'; +import { onMounted, watch } from 'vue'; +import { useDarkMode } from './dark-mode'; +const { isDark, toggleDark } = useDarkMode(); -const prefersDark = ref(false); -const setting = ref('auto'); -const isDark = computed( - () => - setting.value === 'dark' || (prefersDark.value && setting.value !== 'light') -); -const toggleDark = () => { - setting.value = setting.value === 'dark' ? 'light' : 'dark'; - localStorage.setItem('color-scheme', setting.value); -}; -watch(isDark, () => { +function onDarkChange() { document.documentElement.classList.toggle('dark', isDark.value); -}); +} -onMounted(() => { - prefersDark.value = - window.matchMedia && - window.matchMedia('(prefers-color-scheme: dark)').matches; - setting.value = localStorage.getItem('color-scheme') || 'auto'; - document.documentElement.classList.toggle('dark', isDark.value); -}); +watch(isDark, onDarkChange); +onMounted(onDarkChange);