mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-10 17:42:50 +08:00
89 lines
2.5 KiB
SCSS
89 lines
2.5 KiB
SCSS
@use "../mixins";
|
||
@use "@configured-variables" as variables;
|
||
@use "vuetify/lib/styles/tools/states" as vuetifyStates;
|
||
@use "../utils";
|
||
|
||
// Nav items styles (including section title)
|
||
%vertical-nav-item {
|
||
margin-block: 0;
|
||
margin-inline: variables.$vertical-nav-horizontal-spacing;
|
||
padding-block: 0;
|
||
padding-inline: variables.$vertical-nav-horizontal-padding;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
// This is same as `%vertical-nav-item` except section title is excluded
|
||
%vertical-nav-item-interactive {
|
||
block-size: 2.625rem;
|
||
border-end-end-radius: 3.125rem;
|
||
border-start-end-radius: 3.125rem;
|
||
|
||
/*
|
||
ℹ️ We will use `margin-block-end` instead of `margin-block` to give more space for shadow to appear.
|
||
With `margin-block`, due to small space (space gets divided between top & bottom) shadow cuts
|
||
*/
|
||
margin-block-end: 0.375rem;
|
||
}
|
||
|
||
// Common styles for nav item icon styles
|
||
// ℹ️ Nav group's children icon styles are not here (Adjusts height, width & margin)
|
||
%vertical-nav-items-icon {
|
||
flex-shrink: 0;
|
||
font-size: variables.$vertical-nav-items-icon-size;
|
||
margin-inline-end: variables.$vertical-nav-items-icon-margin-inline-end;
|
||
}
|
||
|
||
// Section title
|
||
%vertical-nav-section-title {
|
||
// ℹ️ Setting height will prevent jerking when text & icon is toggled
|
||
block-size: 1.5rem;
|
||
color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity));
|
||
font-size: 0.75rem;
|
||
padding-inline: variables.$vertical-nav-horizontal-padding;
|
||
text-transform: uppercase;
|
||
|
||
/*
|
||
ℹ️ We will use this to add gap between divider and text.
|
||
Moreover, we will use this to adjust the `flex-basis` property of left divider
|
||
*/
|
||
$divider-gap: 0.625rem;
|
||
|
||
// Thanks: https://stackoverflow.com/a/62359101/10796681
|
||
.title-text {
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
justify-content: flex-start;
|
||
column-gap: $divider-gap;
|
||
|
||
&::before,
|
||
&::after {
|
||
border-block-end: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
|
||
content: "";
|
||
}
|
||
|
||
&::after {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
&::before {
|
||
flex: 0 1 calc(variables.$vertical-nav-horizontal-padding-start - $divider-gap);
|
||
margin-inline-start: -#{variables.$vertical-nav-horizontal-padding-start};
|
||
}
|
||
}
|
||
}
|
||
|
||
// Vertical nav item badge styles
|
||
%vertical-nav-item-badge {
|
||
display: inline-block;
|
||
border-radius: 1.5rem;
|
||
font-size: 0.8em;
|
||
font-weight: 500;
|
||
line-height: 1;
|
||
padding-block: 0.25em;
|
||
padding-inline: 0.55em;
|
||
text-align: center;
|
||
vertical-align: baseline;
|
||
white-space: nowrap;
|
||
}
|