11<template >
2- <div class =" bg-white shadow" >
2+ <div class =" bg-white dark:bg-gray-800 shadow dark:shadow-gray-900 " >
33 <div class =" max-w-7xl mx-auto px-4 py-3 flex justify-between items-center" >
4- <!-- 左侧菜单按钮 -->
4+ <!-- 左侧图标和标题 -->
55 <div class =" flex items-center gap-2" >
6- <button @click =" toggleMobileMenu" class =" md:hidden p-2 rounded-md hover:bg-gray-100" >
7- <div class =" i-mdi-menu text-2xl text-gray-500" ></div >
8- </button >
96 <img src =" /icon.svg" alt =" 网站图标" class =" w-8 h-8" />
10- <h1 class =" text-xl font-bold text-gray-800" >我的导航</h1 >
7+ <h1 class =" text-xl font-bold text-gray-800 dark:text-gray-100" >我的导航</h1 >
8+ </div >
9+
10+ <!-- 右侧菜单按钮 -->
11+ <div class =" flex items-center gap-2" >
12+ <button @click =" toggleMobileMenu"
13+ class =" md:hidden p-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700" >
14+ <div :class =" [isMobileMenuOpen ? 'i-mdi-close text-red-500' : 'i-mdi-menu text-gray-500 dark:text-gray-300']"
15+ class =" text-2xl" ></div >
16+ </button >
1117 </div >
1218
1319 <!-- PC端按钮组 -->
1420 <div class =" hidden md:flex items-center gap-4" >
15- <button @click =" toggleEditMode" class =" flex items-center gap-2 px-3 py-2 rounded-md hover:bg-gray-100"
21+ <button @click =" toggleEditMode"
22+ class =" flex items-center gap-2 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"
1623 :title =" editMode ? '浏览模式' : '编辑模式'" >
17- <div :class =" [editMode ? 'i-mdi-eye text-blue-500' : 'i-mdi-pencil text-gray-400']" ></div >
24+ <div
25+ :class =" [editMode ? 'i-mdi-eye text-blue-500 dark:text-blue-300' : 'i-mdi-pencil text-gray-400 dark:text-gray-300']" >
26+ </div >
1827 </button >
19- <button @click =" $emit('add')" class =" flex items-center gap-2 px-3 py-2 rounded-md hover:bg-gray-100"
28+ <button @click =" $emit('add')"
29+ class =" flex items-center gap-2 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"
2030 title =" 添加网站" >
21- <div class =" i-mdi-plus-circle text-gray-400" ></div >
31+ <div class =" i-mdi-plus-circle text-gray-400 dark:text-gray-300" >
32+ </div >
2233 </button >
23- <button @click =" toggleTheme" class =" flex items-center gap-2 px-3 py-2 rounded-md hover:bg-gray-100"
24- :title =" isDarkTheme ? '浅色模式' : '深色模式'" >
25- <div class =" i-mdi-theme-light-dark text-gray-400" ></div >
34+ <button @click =" themeStore.toggleTheme"
35+ class =" flex items-center gap-2 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"
36+ :title =" themeStore.isDarkTheme ? '浅色模式' : '深色模式'" >
37+ <div
38+ :class =" themeStore.isDarkTheme ? 'i-mdi-white-balance-sunny text-blue-500 dark:text-blue-300' : 'i-mdi-moon-waxing-crescent text-gray-400 dark:text-gray-300'" >
39+ </div >
2640 </button >
41+
2742 <button v-if =" !isNoAuthMode" @click =" $emit('logout')"
28- class =" flex items-center gap-2 px-3 py-2 rounded-md hover:bg-gray-100" title =" 退出登录" >
29- <div class =" i-mdi-logout text-gray-400" ></div >
43+ class =" flex items-center gap-2 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"
44+ title =" 退出登录" >
45+ <div class =" i-mdi-logout text-gray-400 dark:text-gray-300" >
46+ </div >
3047 </button >
3148 </div >
3249 </div >
3350
3451 <!-- 移动端菜单 -->
35- <div v-if =" isMobileMenuOpen" class =" md:hidden bg-white shadow-lg" >
52+ <div v-if =" isMobileMenuOpen" class =" md:hidden bg-white dark:bg-gray-800 shadow-lg dark:shadow-gray-900 " >
3653 <div class =" flex flex-col gap-2 p-4" >
37- <button @click =" toggleEditMode" class =" flex items-center px-3 py-2 rounded-md hover:bg-gray-100" >
38- <div :class =" [editMode ? 'i-mdi-eye text-blue-500' : 'i-mdi-pencil text-gray-400']" ></div >
54+ <button @click =" toggleEditMode"
55+ class =" flex items-center gap-3 px-2 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700" >
56+ <div
57+ :class =" [editMode ? 'i-mdi-eye text-blue-500 dark:text-blue-300' : 'i-mdi-pencil text-gray-400 dark:text-gray-300']" >
58+ </div >
3959 {{ editMode ? '浏览模式' : '编辑模式' }}
4060 </button >
41- <button @click =" $emit('add')" class =" flex items-center px-3 py-2 rounded-md hover:bg-gray-100" >
42- <div class =" i-mdi-plus-circle text-gray-400" ></div >
61+ <button @click =" $emit('add')"
62+ class =" flex items-center gap-3 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700" >
63+ <div class =" i-mdi-plus-circle text-gray-400 dark:text-gray-300" >
64+ </div >
4365 添加网站
4466 </button >
45- <button @click =" toggleTheme" class =" flex items-center px-3 py-2 rounded-md hover:bg-gray-100" >
46- <div class =" i-mdi-theme-light-dark text-gray-400" ></div >
47- 切换到{{ isDarkTheme ? '浅色模式' : '深色模式' }}
67+ <button @click =" themeStore.toggleTheme"
68+ class =" flex items-center gap-3 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700" >
69+ <div
70+ :class =" themeStore.isDarkTheme ? 'i-mdi-white-balance-sunny text-blue-500 dark:text-blue-300' : 'i-mdi-moon-waxing-crescent text-gray-400 dark:text-gray-300'" >
71+ </div >
72+ {{ themeStore.isDarkTheme ? '浅色模式' : '深色模式' }}
4873 </button >
4974 <button v-if =" !isNoAuthMode" @click =" $emit('logout')"
50- class =" flex items-center px-3 py-2 rounded-md hover:bg-gray-100" >
51- <div class =" i-mdi-logout text-gray-400" ></div >
75+ class =" flex items-center gap-3 px-3 py-2 rounded-md bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700" >
76+ <div class =" i-mdi-logout text-gray-400 dark:text-gray-300" >
77+ </div >
5278 退出登录
5379 </button >
5480 </div >
5884
5985<script setup lang="ts">
6086import { ref } from ' vue'
87+ import { useThemeStore } from ' @/stores/themeStore'
88+
89+ const themeStore = useThemeStore ()
6190
6291const props = defineProps <{
6392 editMode: boolean
64- isNoAuthMode: boolean // 新增属性,表示是否启用无用户密码模式
93+ isNoAuthMode: boolean
6594}>()
6695
6796const emit = defineEmits <{
@@ -74,16 +103,10 @@ const toggleEditMode = () => {
74103 emit (' update:editMode' , ! props .editMode )
75104}
76105
77- // 主题切换
78- const isDarkTheme = ref (false )
79- const toggleTheme = () => {
80- isDarkTheme .value = ! isDarkTheme .value
81- document .documentElement .classList .toggle (' dark' , isDarkTheme .value )
82- }
83-
84106// 移动端菜单状态
85107const isMobileMenuOpen = ref (false )
86108const toggleMobileMenu = () => {
87109 isMobileMenuOpen .value = ! isMobileMenuOpen .value
88110}
111+
89112 </script >
0 commit comments