Skip to content

Commit 7fc523e

Browse files
committed
refactor: Rewrite Dark Mode (#51)
1 parent c8fab0b commit 7fc523e

File tree

14 files changed

+418
-75
lines changed

14 files changed

+418
-75
lines changed

index.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />
5-
<meta name="theme-color" content="#ffffff" />
6-
<meta name="description" content="Vue + Vite H5 Starter Template" />
75
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no"/>
86
<link rel="icon" href="/favicon.ico" />
9-
<title>Vue3 Vant Mobile</title>
7+
<script>
8+
;(function () {
9+
const prefersDark =
10+
window.matchMedia &&
11+
window.matchMedia('(prefers-color-scheme: dark)').matches
12+
const setting = localStorage.getItem('vueuse-color-scheme') || 'auto'
13+
if (setting === 'dark' || (prefersDark && setting !== 'light'))
14+
document.documentElement.classList.toggle('dark', true)
15+
})()
16+
</script>
1017
</head>
1118
<body>
1219
<div id="app"></div>

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
"prepare": "npx husky install"
1818
},
1919
"dependencies": {
20+
"@unhead/vue": "^1.8.10",
2021
"@vant/touch-emulator": "^1.4.0",
2122
"@vant/use": "^1.6.0",
23+
"@vueuse/core": "^10.7.2",
2224
"axios": "^1.6.5",
2325
"echarts": "^5.4.3",
2426
"lodash-es": "^4.17.21",

pnpm-lock.yaml

Lines changed: 79 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/App.vue

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
<script setup lang="ts">
2-
import type { ConfigProviderTheme } from 'vant'
32
import { storeToRefs } from 'pinia'
3+
import useAppStore from '@/stores/modules/app'
44
import useRouteTransitionNameStore from '@/stores/modules/routeTransitionName'
55
6-
const theme = ref<ConfigProviderTheme>('light')
7-
provide('isRealDark', computed(() => theme.value === 'dark'))
6+
useHead({
7+
title: 'Vue3 Vant Mobile',
8+
meta: [
9+
{
10+
name: 'description',
11+
content: 'Vue + Vite H5 Starter Template',
12+
},
13+
{
14+
name: 'theme-color',
15+
content: () => isDark.value ? '#00aba9' : '#ffffff',
16+
},
17+
],
18+
})
19+
20+
const appStore = useAppStore()
21+
const { mode } = storeToRefs(appStore)
822
923
const routeTransitionNameStore = useRouteTransitionNameStore()
1024
const { routeTransitionName } = storeToRefs(routeTransitionNameStore)
1125
</script>
1226

1327
<template>
14-
<VanConfigProvider :theme="theme">
28+
<VanConfigProvider :theme="mode">
1529
<router-view v-slot="{ Component, route }">
1630
<transition :name="routeTransitionName">
1731
<div :key="route.name" class="app-wrapper">

0 commit comments

Comments
 (0)