80 lines
1.7 KiB
Vue
80 lines
1.7 KiB
Vue
<template>
|
|
<div class="sidebar-logo-container" :class="{ 'collapse': collapse }">
|
|
<transition name="sidebarLogoFade">
|
|
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" :aria-label="title" to="/">
|
|
<img :src="logoMark" :alt="title" class="sidebar-logo sidebar-logo-mark" />
|
|
</router-link>
|
|
<router-link v-else key="expand" class="sidebar-logo-link" :aria-label="title" to="/">
|
|
<img :src="logo" :alt="title" class="sidebar-logo sidebar-logo-full" />
|
|
</router-link>
|
|
</transition>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import logo from '@/assets/logo/sylvan-logo.svg'
|
|
import logoMark from '@/assets/logo/sylvan-mark.svg'
|
|
import variables from '@/assets/styles/variables.module.scss'
|
|
|
|
defineProps({
|
|
collapse: {
|
|
type: Boolean,
|
|
required: true
|
|
}
|
|
})
|
|
|
|
const title = import.meta.env.VITE_APP_TITLE;
|
|
const logoBackground = variables.menuBg;
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.sidebarLogoFade-enter-active {
|
|
transition: opacity 1.5s;
|
|
}
|
|
|
|
.sidebarLogoFade-enter,
|
|
.sidebarLogoFade-leave-to {
|
|
opacity: 0;
|
|
}
|
|
|
|
.sidebar-logo-container {
|
|
position: relative;
|
|
height: 50px;
|
|
line-height: 50px;
|
|
background: v-bind(logoBackground);
|
|
text-align: center;
|
|
overflow: hidden;
|
|
|
|
& .sidebar-logo-link {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 100%;
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
padding: 4px 12px;
|
|
|
|
& .sidebar-logo {
|
|
display: block;
|
|
object-fit: contain;
|
|
}
|
|
|
|
& .sidebar-logo-full {
|
|
width: 132px;
|
|
height: 42px;
|
|
}
|
|
|
|
& .sidebar-logo-mark {
|
|
width: 32px;
|
|
height: 32px;
|
|
}
|
|
}
|
|
|
|
&.collapse {
|
|
.sidebar-logo-link {
|
|
padding: 4px;
|
|
}
|
|
}
|
|
}
|
|
</style>
|