Files
WeChatDataAnalysis/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue
2977094657 b6295071b8 feat(wrapped-ui): 引入多主题系统与切换器(Modern/Game Boy/DOS/VHS)
- 新增 useWrappedTheme:主题状态全局共享、localStorage 持久化,支持 F1-F4 快捷键与循环切换

- 新增主题切换器组件(Modern/Game Boy/DOS/VHS)与主题化年份选择器

- 年度总结页接入 themeClass/currentBg;CRT 叠加层支持 VHS 效果(REC/时间戳/跟踪线)

- 补充主题全局样式与卡片/控制面板主题适配
2026-01-31 19:59:41 +08:00

32 lines
840 B
Vue

<template>
<div class="flex items-center gap-2">
<span class="text-xs text-[#00000099]">Theme</span>
<div class="inline-flex rounded-lg border border-[#EDEDED] overflow-hidden">
<button
v-for="t in themes"
:key="t.value"
class="px-3 py-1.5 text-xs wrapped-label transition-colors"
:class="[
theme === t.value
? 'bg-[#07C160] text-white'
: 'bg-white text-[#333] hover:bg-[#F5F5F5]'
]"
@click="setTheme(t.value)"
>
{{ t.label }}
</button>
</div>
</div>
</template>
<script setup>
const { theme, setTheme, VALID_THEMES } = useWrappedTheme()
const themes = [
{ value: 'off', label: 'Modern' },
{ value: 'gameboy', label: 'Game Boy' },
{ value: 'dos', label: 'DOS' },
{ value: 'vhs', label: 'VHS' }
]
</script>