| <template> | 
|   <div class="sidebar-logo-container" :class="{ 'collapse': collapse }"> | 
|     <transition name="sidebarLogoFade"> | 
|       <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/"> | 
|         <img v-if="logo" :src="logo" class="sidebar-logo" /> | 
|         <h1 v-else class="sidebar-title">{{ title }}</h1> | 
|       </router-link> | 
|       <router-link v-else key="expand" class="sidebar-logo-link" to="/"> | 
|         <img v-if="logo" :src="logo" class="sidebar-logo" /> | 
|         <h1 class="sidebar-title">{{ title }}</h1> | 
|       </router-link> | 
|     </transition> | 
|   </div> | 
| </template> | 
|   | 
| <script setup> | 
| import logo from '@/assets/logo/logo.png' | 
| import useSettingsStore from '@/store/modules/settings' | 
| import variables from '@/assets/styles/variables.module.scss' | 
|   | 
| defineProps({ | 
|   collapse: { | 
|     type: Boolean, | 
|     required: true | 
|   } | 
| }) | 
|   | 
| const title = import.meta.env.VITE_APP_TITLE; | 
| const settingsStore = useSettingsStore(); | 
| const sideTheme = computed(() => settingsStore.sideTheme); | 
|   | 
| // 获取Logo背景色 | 
| const getLogoBackground = computed(() => { | 
|   if (settingsStore.isDark) { | 
|     return 'var(--sidebar-bg)'; | 
|   } | 
|   return sideTheme.value === 'theme-dark' ? variables.menuBg : variables.menuLightBg; | 
| }); | 
|   | 
| // 获取Logo文字颜色 | 
| const getLogoTextColor = computed(() => { | 
|   if (settingsStore.isDark) { | 
|     return 'var(--sidebar-text)'; | 
|   } | 
|   return sideTheme.value === 'theme-dark' ? '#fff' : variables.menuLightText; | 
| }); | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| @import '@/assets/styles/variables.module.scss'; | 
|   | 
| .sidebarLogoFade-enter-active { | 
|   transition: opacity 1.5s; | 
| } | 
|   | 
| .sidebarLogoFade-enter, | 
| .sidebarLogoFade-leave-to { | 
|   opacity: 0; | 
| } | 
|   | 
| .sidebar-logo-container { | 
|   position: relative; | 
|   width: 100%; | 
|   height: 50px; | 
|   line-height: 50px; | 
|   background: v-bind(getLogoBackground); | 
|   text-align: center; | 
|   overflow: hidden; | 
|   | 
|   & .sidebar-logo-link { | 
|     height: 100%; | 
|     width: 100%; | 
|   | 
|     & .sidebar-logo { | 
|       width: 32px; | 
|       height: 32px; | 
|       vertical-align: middle; | 
|       margin-right: 12px; | 
|     } | 
|   | 
|     & .sidebar-title { | 
|       display: inline-block; | 
|       margin: 0; | 
|       color: v-bind(getLogoTextColor); | 
|       font-weight: 600; | 
|       line-height: 50px; | 
|       font-size: 14px; | 
|       font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; | 
|       vertical-align: middle; | 
|     } | 
|   } | 
|   | 
|   &.collapse { | 
|     .sidebar-logo { | 
|       margin-right: 0px; | 
|     } | 
|   } | 
| } | 
| </style> |