Skip to content

Commit d873bd2

Browse files
committed
docs: add change theme
1 parent 5f74a28 commit d873bd2

File tree

4 files changed

+75
-25
lines changed

4 files changed

+75
-25
lines changed

packages/devui-vue/docs/.vitepress/devui-theme/components/NavBar.vue

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,39 @@
11
<script setup lang="ts">
22
import { ref, watch } from 'vue'
3-
import { ThemeServiceInit, devuiLightTheme, devuiDarkTheme } from 'devui-theme'
3+
import {
4+
ThemeServiceInit,
5+
devuiLightTheme, devuiDarkTheme,
6+
infinityTheme, provenceTheme, sweetTheme, deepTheme, galaxyTheme
7+
} from 'devui-theme'
48
import NavBarTitle from './NavBarTitle.vue'
59
import NavLinks from './NavLinks.vue'
610
import ToggleSideBarButton from './ToggleSideBarButton.vue'
7-
import DarkMode from './icons/DarkMode.vue'
8-
import LightMode from './icons/LightMode.vue'
911
import ZhLang from './icons/ZhLang.vue'
1012
import EnLang from './icons/EnLang.vue'
11-
12-
const defaultDarkMode = !!localStorage.getItem('dark_mode')
13-
const darkMode = ref(defaultDarkMode)
13+
import Theme from './icons/Theme.vue'
14+
15+
// 主题切换
16+
const THEME_MAP = {
17+
'devui-light-theme': devuiLightTheme,
18+
'devui-dark-theme': devuiDarkTheme,
19+
'infinity-theme': infinityTheme,
20+
'provence-theme': provenceTheme,
21+
'sweet-theme': sweetTheme,
22+
'deep-theme': deepTheme,
23+
'galaxy-theme': galaxyTheme,
24+
}
25+
const themes = Object.keys(THEME_MAP)
26+
const userCustomTheme = localStorage.getItem('user-custom-theme') || themes[0]
1427
const themeService = ThemeServiceInit({
15-
defaultTheme: getThemeByDarkMode(darkMode.value)
16-
}, 'defaultTheme')
28+
...THEME_MAP
29+
}, userCustomTheme)
30+
let themeIndex = themes.findIndex(item => item === userCustomTheme)
31+
const changeTheme = () => {
32+
themeIndex = (themeIndex + 1) % themes.length
33+
themeService.applyTheme(THEME_MAP[themes[themeIndex]])
34+
}
1735
36+
// 国际化
1837
const defaultLanguage = ref(localStorage.getItem('preferred_lang'))
1938
function useTranslation(target) {
2039
defaultLanguage.value = target
@@ -26,18 +45,6 @@ function useTranslation(target) {
2645
}
2746
}
2847
29-
function getThemeByDarkMode(target) {
30-
return target ? devuiDarkTheme : devuiLightTheme
31-
}
32-
33-
watch(
34-
() => darkMode.value,
35-
(darkMode, prevDarkMode) => {
36-
localStorage.setItem('dark_mode', darkMode ? true : '')
37-
themeService.applyTheme(getThemeByDarkMode(darkMode))
38-
}
39-
)
40-
4148
defineEmits(['toggle'])
4249
</script>
4350

@@ -65,8 +72,7 @@ defineEmits(['toggle'])
6572
<EnLang v-else></EnLang>
6673
</div>
6774
<div class="custom-nav-item flex items-center ml-m">
68-
<DarkMode v-if="darkMode" @click="darkMode = !darkMode"></DarkMode>
69-
<LightMode v-else @click="darkMode = !darkMode"></LightMode>
75+
<Theme @click="changeTheme"></Theme>
7076
</div>
7177
<a class="custom-nav-item ml-m" style="font-size: 0;user-select:none" href="https://github.com/DevCloudFE/vue-devui" target="_blank">
7278
<svg viewBox="0 0 20 20" width="18" height="18"><path fill="var(--devui-text, #252b3a)" d="M10 0a10 10 0 0 0-3.16 19.49c.5.1.68-.22.68-.48l-.01-1.7c-2.78.6-3.37-1.34-3.37-1.34-.46-1.16-1.11-1.47-1.11-1.47-.9-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.9 1.52 2.34 1.08 2.91.83.1-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.94 0-1.1.39-1.99 1.03-2.69a3.6 3.6 0 0 1 .1-2.64s.84-.27 2.75 1.02a9.58 9.58 0 0 1 5 0c1.91-1.3 2.75-1.02 2.75-1.02.55 1.37.2 2.4.1 2.64.64.7 1.03 1.6 1.03 2.69 0 3.84-2.34 4.68-4.57 4.93.36.31.68.92.68 1.85l-.01 2.75c0 .26.18.58.69.48A10 10 0 0 0 10 0"></path></svg>
@@ -95,9 +101,6 @@ defineEmits(['toggle'])
95101
padding: 0.7rem 1.5rem 0.7rem 4rem;
96102
height: var(--header-height);
97103
background-color: $devui-base-bg;
98-
&:hover {
99-
cursor: pointer;
100-
}
101104
}
102105
103106
@media (min-width: 720px) {
@@ -125,6 +128,8 @@ defineEmits(['toggle'])
125128
}
126129
127130
.custom-nav-item:hover {
131+
cursor: pointer;
132+
128133
svg,
129134
path {
130135
fill: $devui-brand;

packages/devui-vue/docs/.vitepress/devui-theme/components/NavBarTitle.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function gopage() {
3232
3333
.nav-bar-title:hover {
3434
text-decoration: none;
35+
cursor: pointer;
3536
}
3637
3738
.logo {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<template>
2+
<svg
3+
t="1646706273071"
4+
class="icon"
5+
viewBox="0 0 1024 1024"
6+
version="1.1"
7+
xmlns="http://www.w3.org/2000/svg"
8+
p-id="1242"
9+
width="20"
10+
height="20"
11+
>
12+
<path
13+
d="M361.28 853.67h-1c-64.14-0.32-111.49-30-124.48-39.09-33.47-23.43-61.42-63.11-80.82-114.74-17.15-45.65-26.6-98.32-26.6-148.33 0-51.48 10.21-101.42 30.34-148.46 19.43-45.39 47.23-86.14 82.63-121.12 35.37-34.95 76.56-62.4 122.43-81.57 47.48-19.84 97.89-29.91 149.83-29.91 51.95 0 102.36 10.06 149.83 29.91 45.87 19.17 87.06 46.61 122.43 81.57 35.4 34.98 63.2 75.73 82.63 121.12 20.13 47.03 30.34 96.98 30.34 148.46 0 32.15 0 72.16-15.91 107.63-9.52 21.23-29.24 33.94-58.62 37.78-19.38 2.54-41.77 1.44-67.69 0.18-75-3.65-168.33-8.2-233.38 73.46-54.6 68.56-118.02 83.1-161.96 83.11z m152.35-619.22c-85.88 0-166.59 33.03-227.28 93-60.59 59.87-93.95 139.44-93.95 224.05 0 42.51 7.99 87.19 22.51 125.82 14.63 38.93 35.09 69.05 57.61 84.82 18.84 13.19 51.87 27.34 88.09 27.52h0.7c43.07 0 80.71-19.84 111.9-58.99 85.48-107.3 206.48-101.41 286.55-97.51 18.63 0.91 34.72 1.69 47.68 1.03 11.04-0.57 15.96-2.07 17.8-2.83 9.62-22.81 9.62-53.08 9.62-79.86 0-84.62-33.37-164.19-93.95-224.05-60.69-59.97-141.41-93-227.28-93z m310.93 398.49c-0.01 0-0.01 0 0 0-0.01 0-0.01 0 0 0z"
14+
p-id="1243"
15+
/>
16+
<path
17+
d="M271.62 644.31a66.11 66.57 0 1 0 132.22 0 66.11 66.57 0 1 0-132.22 0Z"
18+
p-id="1244"
19+
/>
20+
<path d="M293.45 451.7a51.63 52 0 1 0 103.26 0 51.63 52 0 1 0-103.26 0Z" p-id="1245" />
21+
<path d="M437.12 335.46a49.05 49.4 0 1 0 98.1 0 49.05 49.4 0 1 0-98.1 0Z" p-id="1246" />
22+
<path d="M599.66 367.02a49.04 49.39 0 1 0 98.08 0 49.04 49.39 0 1 0-98.08 0Z" p-id="1247" />
23+
<path d="M681.94 504.15a49.04 49.39 0 1 0 98.08 0 49.04 49.39 0 1 0-98.08 0Z" p-id="1248" />
24+
</svg>
25+
</template>

packages/devui-vue/docs/.vitepress/devui-theme/styles/layout.scss

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,22 @@ $max-width: 1440px;
269269
}
270270
}
271271

272+
[ui-theme=infinity-theme], [ui-theme=galaxy-theme] {
273+
.nav-bar {
274+
background-color: $devui-base-bg !important;
275+
}
276+
}
277+
278+
[ui-theme=sweet-theme], [ui-theme=provence-theme], [ui-theme=deep-theme] {
279+
.nav-bar {
280+
background-color: $devui-brand !important;
281+
282+
a {
283+
color: #fff !important;
284+
}
285+
286+
svg, path, polygon {
287+
fill: #fff !important;
288+
}
289+
}
290+
}

0 commit comments

Comments
 (0)