Files
livetrail/src/styles/_page.project.panel.scss
T
2026-04-17 20:23:59 +02:00

222 lines
4.2 KiB
SCSS

@use "common";
@use "var";
@use "color";
@use "fa";
$panel-width: 30vw;
$panel-width-max: "400px + 3 * #{var.$block-spacing}";
$panel-actual-width: min($panel-width, #{$panel-width-max});
#projects {
&.with-feed, &.with-settings {
#title {
max-width: calc(100vw - var.$block-spacing - $panel-actual-width - (var.$button-width + var.$block-spacing * 2) * 2);
}
}
&.with-feed {
#submap {
transform: translateX(calc($panel-actual-width / -2));
}
.map-container-right {
transform: translateX(calc(100vw - $panel-actual-width));
}
}
&.with-settings {
#submap {
transform: translateX(calc($panel-actual-width / 2));
}
.map-container-left {
transform: translateX(0);
.map-panel {
box-shadow: 2px 2px var.$block-shadow 0px color.$over-img-shadow;
}
}
}
&.with-feed.with-settings {
#submap {
transform: translateX(0);
}
#title {
max-width: calc(100vw - var.$block-spacing - $panel-actual-width * 2 - (var.$button-width + var.$block-spacing * 2) * 2);
}
}
.map-container { //#feed, #settings
position: absolute;
top: 0;
bottom: 0;
z-index: 1;
user-select: none;
width: #{$panel-width};
max-width: calc(#{$panel-width-max});
transition: transform 0.5s;
&.moving {
cursor: grabbing;
transition: none;
}
.map-panel { //#feed-panel, #settings-panel
position: absolute;
top: 0;
bottom: 0;
left: 0;
}
input, textarea {
background-color: color.$post-input-bg;
color: color.$post;
outline: none;
}
button, a.button {
background-color: color.$default-inv-bg;
color: color.$default-inv;
&:hover, &:hover a, &:hover a:visited {
background-color: color.$default-bg-light;
color: color.$default;
}
a, a:visited {
background-color: color.$default;
color: color.$default-bg;
text-decoration: none;
}
&+ button, &+ a.button {
margin-left: var.$elem-spacing;
}
}
}
.map-container-left { //#settings
transform: translateX(-100%);
.map-panel { //#settings-panel
width: calc(100% - var.$block-spacing);
margin: var.$block-spacing;
border-radius: var.$block-radius;
color: color.$default;
background: color.$default-bg-trans;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
}
}
.map-container-right { //#feed
transform: translateX(100vw);
.map-panel { //#feed-panel
width: 100%;
padding-top: var.$block-spacing;
}
}
.map-control {
position: absolute;
background-color: color.$default-bg;
padding: var.$elem-spacing;
border-radius: 3px;
box-shadow: 2px 2px var.$block-shadow 0px color.$over-img-shadow;
font-size: 12px;
line-height: 1.5;
&.map-control-top {
top: var.$block-spacing;
}
&.map-control-bottom {
bottom: var.$block-spacing;
}
&.map-control-icon {
cursor: pointer;
.fa {
@extend .fa-fw;
color: color.$default;
}
&:hover {
background-color: color.$default-inv-bg;
.fa {
color: color.$default-inv;
}
}
}
}
.feed-control {
right: calc(100% + var.$block-spacing);
}
.settings-control {
left: calc(100% + var.$block-spacing);
}
#legend {
.track {
white-space: nowrap;
.line {
width: 2em;
display: inline-block;
border-radius: 2px;
vertical-align: middle;
}
.desc {
font-size: 1em;
margin-left: 0.5em;
color: color.$legend;
}
}
}
#title {
left: calc(100% + var.$button-width + 2 * var.$block-spacing);
max-width: calc(100vw - var.$block-spacing - (var.$button-width + 2 * var.$block-spacing) * 2);
transition: max-width 0.5s;
@include common.no-text-overflow();
span {
font-size: 1.3em;
line-height: calc(var.$block-spacing / 1.3);
}
}
#background {
background: color.$loader-bg;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
}
#submap {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
transition: transform 0.5s;
.loader {
position: absolute;
font-size: 3em;
top: calc(50% - 0.5em);
left: calc(50% - 1.25em/2);
color: color.$loader;
}
}
}