35c794cf58
- Modularized the Sass architecture to enhance code maintainability and reduce the output file size - Replaced deprecated `@import` with `@use` / `@forward`
258 lines
5 KiB
SCSS
258 lines
5 KiB
SCSS
@use '../abstracts/variables' as v;
|
|
@use '../abstracts/mixins' as mx;
|
|
@use '../abstracts/breakpoints' as bp;
|
|
@use '../abstracts/placeholders';
|
|
|
|
$btn-border-width: 3px;
|
|
$btn-mb: 0.5rem;
|
|
$sidebar-display: 'sidebar-display'; /* the attribute for sidebar display */
|
|
|
|
#sidebar {
|
|
@include mx.pl-pr(0);
|
|
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
width: v.$sidebar-width;
|
|
background: var(--sidebar-bg);
|
|
border-right: 1px solid var(--sidebar-border-color);
|
|
|
|
/* Hide scrollbar for IE, Edge and Firefox */
|
|
-ms-overflow-style: none; /* IE and Edge */
|
|
scrollbar-width: none; /* Firefox */
|
|
|
|
/* Hide scrollbar for Chrome, Safari and Opera */
|
|
&::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
@include bp.lt(bp.get(lg)) {
|
|
@include mx.slide;
|
|
|
|
transform: translateX(-#{v.$sidebar-width}); /* hide */
|
|
-webkit-transform: translateX(-#{v.$sidebar-width});
|
|
|
|
[#{$sidebar-display}] & {
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
@include bp.xxxl {
|
|
width: v.$sidebar-width-large;
|
|
}
|
|
|
|
%sidebar-link-hover {
|
|
&:hover {
|
|
color: var(--sidebar-active-color);
|
|
}
|
|
}
|
|
|
|
a {
|
|
@extend %sidebar-links;
|
|
}
|
|
|
|
#avatar {
|
|
display: block;
|
|
width: 6.5rem;
|
|
height: 6.5rem;
|
|
overflow: hidden;
|
|
box-shadow: var(--avatar-border-color) 0 0 0 2px;
|
|
transform: translateZ(0); /* fixed the zoom in Safari */
|
|
|
|
@include bp.sm {
|
|
width: 7rem;
|
|
height: 7rem;
|
|
}
|
|
|
|
img {
|
|
transition: transform 0.5s;
|
|
|
|
&:hover {
|
|
transform: scale(1.2);
|
|
}
|
|
}
|
|
}
|
|
|
|
.profile-wrapper {
|
|
@include mx.mt-mb(2.5rem);
|
|
@extend %clickable-transition;
|
|
|
|
padding-left: 2.5rem;
|
|
padding-right: 1.25rem;
|
|
width: 100%;
|
|
|
|
@include bp.lg {
|
|
margin-top: 3rem;
|
|
}
|
|
|
|
@include bp.xxxl {
|
|
margin-top: 3.5rem;
|
|
margin-bottom: 2.5rem;
|
|
padding-left: 3.5rem;
|
|
}
|
|
}
|
|
|
|
.site-title {
|
|
@extend %clickable-transition;
|
|
@extend %sidebar-link-hover;
|
|
|
|
font-family: inherit;
|
|
font-weight: 900;
|
|
font-size: 1.75rem;
|
|
line-height: 1.2;
|
|
letter-spacing: 0.25px;
|
|
margin-top: 1.25rem;
|
|
margin-bottom: 0.5rem;
|
|
width: fit-content;
|
|
color: var(--site-title-color);
|
|
}
|
|
|
|
.site-subtitle {
|
|
font-size: 95%;
|
|
color: var(--site-subtitle-color);
|
|
margin-top: 0.25rem;
|
|
word-spacing: 1px;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
ul {
|
|
margin-bottom: 2rem;
|
|
|
|
li.nav-item {
|
|
opacity: 0.9;
|
|
width: 100%;
|
|
|
|
@include mx.pl-pr(1.5rem);
|
|
|
|
@include bp.xxxl {
|
|
@include mx.pl-pr(2.75rem);
|
|
}
|
|
|
|
a.nav-link {
|
|
@include mx.pt-pb(0.6rem);
|
|
|
|
display: flex;
|
|
align-items: center;
|
|
border-radius: 0.75rem;
|
|
font-weight: 600;
|
|
|
|
&:hover {
|
|
background-color: var(--sidebar-hover-bg);
|
|
}
|
|
|
|
i {
|
|
font-size: 95%;
|
|
opacity: 0.8;
|
|
margin-right: 1.5rem;
|
|
}
|
|
|
|
span {
|
|
font-size: 90%;
|
|
letter-spacing: 0.2px;
|
|
}
|
|
}
|
|
|
|
&.active {
|
|
.nav-link {
|
|
color: var(--sidebar-active-color);
|
|
background-color: var(--sidebar-hover-bg);
|
|
|
|
span {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
&:not(:first-child) {
|
|
margin-top: 0.25rem;
|
|
}
|
|
}
|
|
}
|
|
|
|
.sidebar-bottom {
|
|
padding-left: 2rem;
|
|
padding-right: 1rem;
|
|
margin-bottom: 1.5rem;
|
|
|
|
@include bp.xxxl {
|
|
padding-left: 2.75rem;
|
|
margin-bottom: 1.75rem;
|
|
}
|
|
|
|
$btn-size: 1.75rem;
|
|
|
|
%button {
|
|
width: $btn-size;
|
|
height: $btn-size;
|
|
margin-bottom: $btn-mb; // multi line gap
|
|
border-radius: 50%;
|
|
color: var(--sidebar-btn-color);
|
|
background-color: var(--sidebar-btn-bg);
|
|
text-align: center;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
&:not(:focus-visible) {
|
|
box-shadow: var(--sidebar-border-color) 0 0 0 1px;
|
|
}
|
|
|
|
&:hover {
|
|
background-color: var(--sidebar-hover-bg);
|
|
}
|
|
}
|
|
|
|
a {
|
|
@extend %button;
|
|
@extend %sidebar-link-hover;
|
|
@extend %clickable-transition;
|
|
|
|
&:not(:last-child) {
|
|
margin-right: v.$sb-btn-gap;
|
|
|
|
@include bp.xxxl {
|
|
margin-right: v.$sb-btn-gap-lg;
|
|
}
|
|
}
|
|
}
|
|
|
|
i {
|
|
line-height: $btn-size;
|
|
}
|
|
|
|
#mode-toggle {
|
|
@extend %button;
|
|
@extend %sidebar-links;
|
|
@extend %sidebar-link-hover;
|
|
}
|
|
|
|
.icon-border {
|
|
@extend %no-cursor;
|
|
@include mx.ml-mr(calc((v.$sb-btn-gap - $btn-border-width) / 2));
|
|
|
|
background-color: var(--sidebar-btn-color);
|
|
content: '';
|
|
width: $btn-border-width;
|
|
height: $btn-border-width;
|
|
border-radius: 50%;
|
|
margin-bottom: $btn-mb;
|
|
|
|
@include bp.xxxl {
|
|
@include mx.ml-mr(calc((v.$sb-btn-gap-lg - $btn-border-width) / 2));
|
|
}
|
|
}
|
|
} /* .sidebar-bottom */
|
|
} /* #sidebar */
|
|
|
|
[#{$sidebar-display}] {
|
|
#main-wrapper {
|
|
@include bp.lt(bp.get(lg)) {
|
|
transform: translateX(v.$sidebar-width);
|
|
}
|
|
}
|
|
}
|