refactor: use @nuxtjs/color-mode to manage ssr (#612)

This commit is contained in:
Daniel Roe 2022-12-29 13:26:08 +01:00 committed by GitHub
parent 6fdcc558fc
commit 7a36fb8efd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 43 additions and 215 deletions

View file

@ -5,7 +5,7 @@ defineProps<{
}>()
const dropdown = $ref<any>()
const colorMode = useColorModeRef()
const colorMode = useColorMode()
provide(dropdownContextKey, {
hide: () => dropdown.hide(),
@ -13,7 +13,7 @@ provide(dropdownContextKey, {
</script>
<template>
<VDropdown v-bind="$attrs" ref="dropdown" :class="colorMode" :placement="placement || 'auto'">
<VDropdown v-bind="$attrs" ref="dropdown" :class="colorMode.value" :placement="placement || 'auto'">
<slot />
<template #popper="scope">
<slot name="popper" v-bind="scope" />

View file

@ -6,7 +6,7 @@ const emits = defineEmits<{
(event: 'update:modelValue', value: boolean): void
}>()
const visible = useVModel(props, 'modelValue', emits, { passive: true })
const colorMode = useColorModeRef()
const colorMode = useColorMode()
function changeShow() {
visible.value = !visible.value
@ -24,7 +24,7 @@ function clickEvent(mouse: MouseEvent) {
}
function toggleDark() {
colorMode.value = colorMode.value === 'dark' ? 'light' : 'dark'
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
}
watch(visible, (val) => {
@ -84,7 +84,7 @@ onBeforeUnmount(() => {
@click="toggleDark()"
>
<span class="i-ri:sun-line dark:i-ri:moon-line flex-shrink-0 text-xl mr-4 rtl-mr-0 rtl-ml-4 !align-middle" />
{{ colorMode === 'light' ? $t('menu.toggle_theme.dark') : $t('menu.toggle_theme.light') }}
{{ colorMode.value === 'light' ? $t('menu.toggle_theme.dark') : $t('menu.toggle_theme.light') }}
</button>
<NuxtLink
flex flex-row items-center

View file

@ -6,9 +6,9 @@ const timeAgoOptions = useTimeAgoOptions()
const buildTimeDate = new Date(buildInfo.time)
const buildTimeAgo = useTimeAgo(buildTimeDate, timeAgoOptions)
const colorMode = useColorModeRef()
const colorMode = useColorMode()
function toggleDark() {
colorMode.value = colorMode.value === 'dark' ? 'light' : 'dark'
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
}
</script>

View file

@ -8,7 +8,7 @@ const emit = defineEmits<{
const el = $ref<HTMLElement>()
let picker = $ref<Picker>()
const colorMode = useColorModeRef()
const colorMode = useColorMode()
async function openEmojiPicker() {
await updateCustomEmojis()

View file

@ -1,10 +1,10 @@
<script setup lang="ts">
import type { ColorMode } from '~/types'
const colorMode = useColorModeRef()
const colorMode = useColorMode()
function setColorMode(mode: ColorMode) {
colorMode.value = mode
colorMode.preference = mode
}
</script>
@ -12,7 +12,7 @@ function setColorMode(mode: ColorMode) {
<div flex="~ gap4" w-full>
<button
btn-text flex-1 flex="~ gap-1 center" p4 border="~ base rounded" bg-base
:class="colorMode === 'dark' ? 'pointer-events-none' : 'filter-saturate-0'"
:class="colorMode.value === 'dark' ? 'pointer-events-none' : 'filter-saturate-0'"
@click="setColorMode('dark')"
>
<div i-ri:moon-line />
@ -20,7 +20,7 @@ function setColorMode(mode: ColorMode) {
</button>
<button
btn-text flex-1 flex="~ gap-1 center" p4 border="~ base rounded" bg-base
:class="colorMode === 'light' ? 'pointer-events-none' : 'filter-saturate-0'"
:class="colorMode.value === 'light' ? 'pointer-events-none' : 'filter-saturate-0'"
@click="setColorMode('light')"
>
<div i-ri:sun-line />