FreeTube/src/renderer/components/top-nav/top-nav.scss

227 lines
4.5 KiB
SCSS

@mixin top-nav-is-colored {
@at-root {
.topNavBarColor &,
.topNavBarColor#{&} {
@content;
}
}
}
.topNav {
align-content: center;
align-items: center;
background-color: var(--card-bg-color);
box-shadow: 0 2px 1px 0 var(--primary-shadow-color);
display: flex;
block-size: 60px;
inset-inline: 0;
line-height: 60px;
position: sticky;
inset-block-start: 0;
inline-size: 100%;
z-index: 4;
&:has(+ .sideNav + .routerView .floatingRefreshSection) {
box-shadow: none;
}
@media only screen and (width >= 961px) {
display: grid;
grid-template-columns: 1fr 440px 1fr;
}
@include top-nav-is-colored {
background-color: var(--primary-color);
}
@media only screen and (width <= 680px) {
position: fixed;
}
}
.menuIcon {
@media only screen and (width <= 680px) {
display: none;
}
}
.navIcon {
border-radius: 50%;
color: var(--primary-text-color);
cursor: pointer;
font-size: 20px;
block-size: 1em;
padding: 10px;
transition: background 0.2s ease-out;
inline-size: 1em;
@include top-nav-is-colored {
color: var(--text-with-main-color);
}
&.arrowBackwardDisabled,
&.arrowForwardDisabled {
color: #808080;
opacity: 0.5;
pointer-events: none;
user-select: none;
}
&:hover {
background-color: var(--side-nav-hover-color);
color: var(--side-nav-hover-text-color);
transition: background 0.2s ease-in;
@include top-nav-is-colored {
background-color: var(--primary-color-hover);
}
}
&:active {
background-color: var(--tertiary-text-color);
color: var(--side-nav-active-text-color);
transition: background 0.2s ease-in;
@include top-nav-is-colored {
background-color: var(--primary-color-active);
}
}
}
.navFilterIcon {
$effect-distance: 10px;
margin-inline-start: $effect-distance;
&.filterChanged {
box-shadow: 0 0 $effect-distance var(--primary-color);
@include top-nav-is-colored {
box-shadow: 0 0 $effect-distance var(--text-with-main-color);
}
}
}
.side {
align-items: center;
display: flex;
gap: 3px;
margin-block: 0;
margin-inline: 6px;
&.profiles {
justify-content: flex-end;
}
.navSearchIcon {
@media only screen and (width >= 681px) {
display: none;
}
}
.navNewWindowIcon {
@media only screen and (width <= 680px) {
display: none;
}
}
.logo {
align-items: center;
cursor: pointer;
display: flex;
padding-block: 0;
padding-inline: 10px 25px;
&:hover {
background-color: var(--side-nav-hover-color);
color: var(--side-nav-hover-text-color);
transition: background 0.2s ease-in;
@include top-nav-is-colored {
background-color: var(--primary-color-hover);
}
}
&:active {
background-color: var(--tertiary-text-color);
transition: background 0.2s ease-in;
@include top-nav-is-colored {
background-color: var(--primary-color-active);
}
}
.logoIcon {
background-image: var(--logo-icon);
background-position: right top;
background-repeat: no-repeat;
background-size: 25px;
block-size: 25px;
inline-size: 25px;
@include top-nav-is-colored {
background-image: var(--logo-icon-bar-color);
}
}
.logoText {
background-image: var(--logo-text);
background-position: right top;
background-repeat: no-repeat;
background-size: 100px;
block-size: 40px;
margin-inline-start: 5px;
position: relative;
inset-block-start: -3px;
inline-size: 100px;
@media only screen and (width <= 680px) {
display: none;
}
@include top-nav-is-colored {
background-image: var(--logo-text-bar-color);
}
}
}
}
.middle {
flex: 1;
max-inline-size: 440px;
.searchContainer {
align-items: center;
display: flex;
@media only screen and (width <= 680px) {
background-color: var(--side-nav-color);
inset-inline: 0;
position: fixed;
inset-block-start: 60px;
@include top-nav-is-colored {
background-color: var(--primary-color-hover);
}
}
.searchInput {
flex: 1;
}
}
.searchFilters {
inset-inline: 0;
margin-block: 10px 20px;
margin-inline: 220px 20px;
position: absolute;
transition: margin 150ms ease-in-out;
@media only screen and (width <= 680px) {
inset-inline: 0;
margin-block: 95px 0;
margin-inline: 10px;
}
}
}