<template>
|
|
<view :class="{'dark-mode': isDarkMode}" class="theme-provider">
|
|
<slot></slot>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters, mapMutations } from 'vuex'
|
|
|
|
export default {
|
|
name: 'ThemeProvider',
|
|
computed: {
|
|
...mapGetters(['isDarkMode', 'currentTheme'])
|
|
},
|
|
methods: {
|
|
...mapMutations(['toggleThemeMode', 'setThemeMode'])
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.theme-provider {
|
|
/* 确保占满容器,但不影响布局 */
|
|
width: 100%;
|
|
height: 100%;
|
|
|
|
/* 适配应用到深色模式的样式 */
|
|
&.dark-mode {
|
|
/* 这里不添加具体样式,由子元素通过对应的类应用样式 */
|
|
}
|
|
}
|
|
</style>
|