Logo.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <script lang="ts" setup>
  2. import {useSettingsStore} from "@/store/modules/settings";
  3. const settingsStore = useSettingsStore();
  4. defineProps({
  5. collapse: {
  6. type: Boolean,
  7. required: true,
  8. },
  9. });
  10. const logo = ref(new URL(`../../../assets/logo.png`, import.meta.url).href);
  11. const logoIco = ref(new URL(`../../../assets/logo-icon.png`, import.meta.url).href);
  12. </script>
  13. <template>
  14. <div class="w-full">
  15. <transition name="sidebarLogoFade">
  16. <router-link v-if="collapse" key="collapse" class="logo w-full flex items-center justify-center" to="/">
  17. <img v-if="settingsStore.sidebarLogo" :src="logoIco" class="h-11" />
  18. </router-link>
  19. <router-link v-else key="expand" class="logo w-full flex items-center justify-center" to="/">
  20. <img v-if="settingsStore.sidebarLogo" :src="logo" class="h-11" />
  21. </router-link>
  22. </transition>
  23. </div>
  24. </template>
  25. <style lang="scss" scoped>
  26. .sidebarLogoFade-enter-active {
  27. transition: opacity 2s;
  28. }
  29. .sidebarLogoFade-leave-active,
  30. .sidebarLogoFade-enter-from,
  31. .sidebarLogoFade-leave-to {
  32. opacity: 0;
  33. }
  34. .logo {
  35. height: 70px;
  36. line-height: 70px;
  37. }
  38. </style>