mirror of
https://github.com/HSLdevcom/digitransit-ui
synced 2025-07-27 23:35:15 +02:00
847 lines
15 KiB
SCSS
847 lines
15 KiB
SCSS
.navi-start-container {
|
|
padding: 0 10px;
|
|
width: 100%;
|
|
|
|
button {
|
|
width: inherit;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
background-color: $navigation-background-color;
|
|
margin: 4px 0 0 0;
|
|
padding: var(--space-m);
|
|
gap: var(--space-s);
|
|
font-weight: normal;
|
|
border-radius: $border-radius-bigger;
|
|
letter-spacing: $letter-spacing;
|
|
|
|
.content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
gap: var(--space-s);
|
|
}
|
|
|
|
span.icon-container {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
:last-of-type {
|
|
margin-left: auto;
|
|
}
|
|
}
|
|
|
|
span.icon-container:last-of-type {
|
|
margin-left: auto;
|
|
}
|
|
}
|
|
|
|
.navigation-icon {
|
|
width: $navigation-icon-size;
|
|
height: $navigation-icon-size;
|
|
}
|
|
}
|
|
|
|
.bar {
|
|
border-radius: $border-radius;
|
|
}
|
|
|
|
.bold {
|
|
font-weight: $font-weight-medium;
|
|
}
|
|
|
|
.notification-header {
|
|
font-size: $font-size-normal;
|
|
font-weight: $font-weight-medium;
|
|
text-align: left;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.navi-header-chain {
|
|
display: block;
|
|
}
|
|
|
|
.navi-card-container {
|
|
position: fixed;
|
|
width: 100%;
|
|
padding: 0 var(--space-s);
|
|
|
|
svg.mode {
|
|
width: 32px;
|
|
height: 32px;
|
|
color: $black;
|
|
}
|
|
}
|
|
|
|
.navi-transfer-container {
|
|
display: inline-flex;
|
|
vertical-align: middle;
|
|
margin-bottom: 2px;
|
|
|
|
.navi-transfer {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
|
|
.arrow-center {
|
|
.icon-container {
|
|
display: flex;
|
|
align-self: stretch;
|
|
height: 18px;
|
|
width: 14px;
|
|
|
|
.icon {
|
|
padding: 1px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.bar {
|
|
height: 18px;
|
|
|
|
.route-number {
|
|
font-size: $font-size-xxsmall;
|
|
min-width: fit-content;
|
|
height: 18px;
|
|
display: inline-flex;
|
|
|
|
.vcenter-children {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.vehicle-number-container-v {
|
|
display: flex;
|
|
|
|
.vehicle-number {
|
|
color: white;
|
|
padding: 0 8px 0 2px;
|
|
font-size: 15px;
|
|
line-height: 15px;
|
|
}
|
|
|
|
.special-icon {
|
|
.icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.route-info {
|
|
display: flex;
|
|
align-self: flex-start;
|
|
margin-bottom: var(--space-xs);
|
|
|
|
.expand {
|
|
margin-left: var(--space-m);
|
|
display: flex;
|
|
|
|
.icon {
|
|
margin-right: var(--space-s);
|
|
margin-top: 5px;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.extension-routenumber,
|
|
.route-info {
|
|
.route-number {
|
|
font-size: $font-size-xxsmall;
|
|
min-width: fit-content;
|
|
height: fit-content;
|
|
display: inline-flex;
|
|
vertical-align: middle;
|
|
|
|
.vcenter-children {
|
|
.vehicle-number {
|
|
color: white;
|
|
margin-top: 5px;
|
|
line-height: 24px;
|
|
}
|
|
|
|
display: flex;
|
|
}
|
|
|
|
.icon,
|
|
.special-icon {
|
|
height: 24px;
|
|
font-size: 24px;
|
|
}
|
|
|
|
.vehicle-number-container-v {
|
|
.vehicle-number {
|
|
margin: 0;
|
|
font-size: $font-size-normal;
|
|
padding: 0 var(--space-s) 0 var(--space-xxs);
|
|
line-height: 24px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.boarding {
|
|
display: flex;
|
|
margin-top: 3px;
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
|
|
&.with-icon {
|
|
margin-left: 40px;
|
|
|
|
.wait-duration {
|
|
margin-left: var(--space-l);
|
|
}
|
|
}
|
|
|
|
.headsign {
|
|
margin-left: var(--space-xs);
|
|
font-size: $font-size-small;
|
|
max-width: 85%;
|
|
text-align: left;
|
|
align-content: center;
|
|
line-height: 100%;
|
|
}
|
|
}
|
|
|
|
.compact-boarding {
|
|
display: flex;
|
|
margin-top: 3px;
|
|
align-items: flex-start;
|
|
flex-direction: row;
|
|
font-size: $font-size-xsmall;
|
|
font-weight: $font-weight-book;
|
|
|
|
.bar {
|
|
display: flex;
|
|
}
|
|
|
|
.route-number {
|
|
margin-top: 1px;
|
|
height: 16px;
|
|
|
|
.vcenter-children {
|
|
display: inline-flex;
|
|
align-self: stretch;
|
|
|
|
.special-icon {
|
|
font-size: $font-size-xsmall;
|
|
height: 18px;
|
|
|
|
.icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.wait-duration {
|
|
margin-left: var(--space-s);
|
|
}
|
|
}
|
|
|
|
.navi-top-card {
|
|
border-radius: var(--radius-m);
|
|
min-height: 70px;
|
|
color: $black;
|
|
background-color: white !important;
|
|
display: flex;
|
|
align-items: center;
|
|
letter-spacing: -0.3px;
|
|
box-shadow: 0 2px 4px 0 rgba(51, 51, 51, 0.2);
|
|
width: inherit;
|
|
cursor: default;
|
|
font-size: $font-size-normal;
|
|
font-weight: $font-weight-book;
|
|
z-index: 1;
|
|
|
|
.navi-top-card-arrow {
|
|
.inverted {
|
|
transform: rotate(180deg);
|
|
}
|
|
}
|
|
|
|
.main-card {
|
|
width: inherit;
|
|
margin: var(--space-m) var(--space-m);
|
|
|
|
.content {
|
|
display: flex;
|
|
flex-direction: row;
|
|
color: $black;
|
|
justify-content: center;
|
|
|
|
svg.mode {
|
|
margin-right: var(--space-s);
|
|
margin-top: 1px;
|
|
}
|
|
}
|
|
|
|
.instructions {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
margin-right: var(--space-m);
|
|
|
|
&.expanded {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.vehicle-leg {
|
|
display: flex;
|
|
text-align: left;
|
|
}
|
|
}
|
|
|
|
.duration {
|
|
&.fade-out {
|
|
animation: fadeOut 3s forwards;
|
|
}
|
|
|
|
font-size: $font-size-xsmall;
|
|
font-weight: $font-weight-book;
|
|
display: flex;
|
|
}
|
|
|
|
.extension {
|
|
flex-direction: column;
|
|
transition: all 0.4s ease;
|
|
overflow-y: hidden;
|
|
|
|
&.no-gap {
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.extension-divider {
|
|
height: 1px;
|
|
background: #ddd;
|
|
width: 85%;
|
|
margin-left: 35px;
|
|
margin-top: var(--space-s);
|
|
margin-bottom: var(--space-s);
|
|
}
|
|
|
|
.stop-count {
|
|
display: flex;
|
|
margin-left: 35px;
|
|
|
|
.icon-container {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.icon {
|
|
height: 16px;
|
|
width: 16px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.extension-routenumber {
|
|
display: flex;
|
|
flex-direction: row;
|
|
margin-left: 40px;
|
|
margin-bottom: var(--space-s);
|
|
text-align: left;
|
|
margin-top: var(--space-m);
|
|
|
|
.bar {
|
|
border-radius: $border-radius;
|
|
}
|
|
|
|
.headsign {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-left: var(--space-xs);
|
|
justify-content: center;
|
|
font-size: $font-size-small;
|
|
max-width: 85%;
|
|
line-height: 100%;
|
|
}
|
|
}
|
|
|
|
.extension-walk {
|
|
display: flex;
|
|
margin-left: var(--space-xl);
|
|
margin-bottom: var(--space-s);
|
|
margin-top: var(--space-xs);
|
|
}
|
|
|
|
.wait-in-vehicle {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
text-align: start;
|
|
margin-left: var(--space-xl);
|
|
}
|
|
|
|
.wait-leg {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin-left: var(--space-m);
|
|
|
|
.icon {
|
|
margin-top: 2px;
|
|
height: 25px;
|
|
width: 25px;
|
|
}
|
|
}
|
|
|
|
.icon-expand {
|
|
margin-top: 5px;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
.icon-expand-small {
|
|
margin-top: 5px;
|
|
width: 16px;
|
|
height: 16px;
|
|
margin-right: var(--space-s);
|
|
}
|
|
|
|
.destination-icon {
|
|
margin: 0 10px;
|
|
|
|
&.place {
|
|
fill: $to-color;
|
|
}
|
|
|
|
&.bus-stop {
|
|
color: $bus-color;
|
|
}
|
|
|
|
&.bus-express {
|
|
color: $bus-express-color;
|
|
}
|
|
|
|
&.speedtram {
|
|
color: $speedtram-color;
|
|
}
|
|
|
|
&.replacement-bus {
|
|
color: $replacement-bus-color;
|
|
}
|
|
|
|
&.tram-stop {
|
|
color: $tram-color;
|
|
}
|
|
|
|
&.subway-stop {
|
|
color: $metro-color;
|
|
}
|
|
|
|
&.rail-stop {
|
|
color: $rail-color;
|
|
}
|
|
|
|
&.ferry-stop {
|
|
color: $ferry-color;
|
|
}
|
|
|
|
&.ferry-external-stop {
|
|
color: $external-feed-color;
|
|
}
|
|
|
|
&.funicular-stop {
|
|
color: $funicular-color;
|
|
}
|
|
|
|
&.speedtram-stop {
|
|
color: $speedtram-color;
|
|
}
|
|
}
|
|
|
|
.destination {
|
|
text-align: left;
|
|
|
|
.details {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
|
|
.address {
|
|
color: #888;
|
|
}
|
|
|
|
.platform-short {
|
|
width: unset;
|
|
font-family: $font-family;
|
|
font-size: $font-size-small;
|
|
letter-spacing: $letter-spacing;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
|
|
.platform-number-wrapper {
|
|
padding: 0 var(--space-xxs);
|
|
height: 16px;
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
line-height: 13px;
|
|
font-size: 11px;
|
|
}
|
|
}
|
|
|
|
.zone-icon-container {
|
|
.circle {
|
|
width: 16px;
|
|
height: 16px;
|
|
font-size: 0.9rem;
|
|
padding: 0 2px 0 2px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&.hide-card {
|
|
animation: hideTopCard $slide-up-down-animation;
|
|
pointer-events: none;
|
|
}
|
|
|
|
&.show-card {
|
|
animation: slideDownFromTop $slide-up-down-animation;
|
|
}
|
|
}
|
|
|
|
.navi-initializer-container {
|
|
position: fixed;
|
|
width: 100%;
|
|
padding: 0 var(--space-s);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xxs);
|
|
font-weight: 325;
|
|
font-size: 14px;
|
|
line-height: 21px;
|
|
|
|
&.slide-out {
|
|
animation: slideUpToTop 1s ease-in-out forwards;
|
|
}
|
|
|
|
.navi-initializer-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xxs);
|
|
align-items: center;
|
|
justify-content: center;
|
|
align-content: center;
|
|
flex-wrap: wrap;
|
|
background-color: white;
|
|
border-radius: var(--radius-m);
|
|
padding: var(--space-m);
|
|
box-shadow: 0 2px 4px 0 rgba(51, 51, 51, 0.2);
|
|
text-align: center;
|
|
|
|
&.success {
|
|
background-color: $success-color;
|
|
gap: var(--space-xs);
|
|
|
|
button {
|
|
color: white;
|
|
background-color: $realtime-color;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.navigator-modal-container {
|
|
position: fixed;
|
|
width: 100%;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: 1000; // higher than navbar
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.navigator-modal-backdrop {
|
|
background-color: rgba(0, 0, 0, 0.2);
|
|
z-index: 999; // higher than navbar, below modal body
|
|
height: 100%;
|
|
}
|
|
|
|
.navigator-modal {
|
|
position: fixed;
|
|
background: white;
|
|
width: 100%;
|
|
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
|
box-shadow: 0 -10px 10px 0 rgba(0, 52, 86, 0.1);
|
|
outline: none;
|
|
|
|
&.slide-in {
|
|
animation: slideUpFromBottom 0.5s ease-in-out;
|
|
}
|
|
}
|
|
|
|
.navigator-modal-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: var(--space-xl) var(--space-l) var(--space-l) var(--space-l);
|
|
gap: var(--space-xl);
|
|
}
|
|
|
|
.info-stack {
|
|
position: relative;
|
|
letter-spacing: -0.3px;
|
|
width: inherit;
|
|
|
|
&.hide-card {
|
|
animation:
|
|
hideTopCard $slide-up-down-animation,
|
|
fadeOut $slide-up-down-fade;
|
|
pointer-events: none;
|
|
}
|
|
|
|
&.show-card {
|
|
animation:
|
|
slideDownFromTop $slide-up-down-animation,
|
|
fadeIn $slide-up-down-fade;
|
|
}
|
|
|
|
.info-stack-item {
|
|
position: relative;
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 16px;
|
|
box-shadow: 0 2px 4px 0 rgba(51, 51, 51, 0.2);
|
|
font-size: $font-size-xsmall;
|
|
font-weight: $font-weight-book;
|
|
margin-top: 5px;
|
|
color: $black;
|
|
line-height: 1.4;
|
|
|
|
.icon-container {
|
|
display: flex;
|
|
align-self: flex-start;
|
|
align-items: center;
|
|
|
|
.icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
}
|
|
|
|
.navi-info-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin-left: 8px;
|
|
margin-right: 8px;
|
|
width: 100%;
|
|
}
|
|
|
|
.navi-alert-content {
|
|
display: flex;
|
|
align-self: flex-start;
|
|
margin-left: var(--space-s, 8px);
|
|
margin-right: var(--space-m, 16px);
|
|
width: 100%;
|
|
}
|
|
|
|
&.info {
|
|
background-color: $infobox-color-generic-blue;
|
|
}
|
|
|
|
&.warning {
|
|
background-color: #fff8e8;
|
|
}
|
|
|
|
&.alert {
|
|
background-color: #fdf3f6;
|
|
}
|
|
|
|
.new-itinerary-search {
|
|
padding: var(--space-s, 16px) var(--space-xs, 8px) var(--space-s, 16px)
|
|
var(--space-s, 16px);
|
|
background: #0074bf;
|
|
color: #fff;
|
|
border-radius: 999px; // var(--radius-radius-medium, 8px);
|
|
margin-top: var(--space-s);
|
|
width: 220px;
|
|
}
|
|
|
|
&.slide-out-right {
|
|
animation: slideLeft 0.5s cubic-bezier(0.3, -0.05, 0.7, -0.5);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.info-close {
|
|
display: flex;
|
|
align-self: flex-start;
|
|
margin-left: 1px;
|
|
|
|
.icon-container {
|
|
height: 32px;
|
|
width: 32px;
|
|
|
|
.icon {
|
|
&.notification-close {
|
|
width: 32px;
|
|
height: 32px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.info-icon {
|
|
margin-right: 8px;
|
|
}
|
|
|
|
&.show-card {
|
|
animation:
|
|
slideDownFromTop $slide-up-down-animation,
|
|
fadeIn $slide-up-down-fade;
|
|
}
|
|
|
|
&.hide-card {
|
|
animation:
|
|
hideTopCard $slide-up-down-animation,
|
|
fadeOut $slide-up-down-fade;
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
.navi-bottom-sheet {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: $font-size-normal;
|
|
text-align: center;
|
|
margin: var(--space-m) var(--space-l);
|
|
|
|
&.ticket-link {
|
|
margin: var(--space-m) var(--space-m);
|
|
|
|
.navi-time {
|
|
align-items: inherit;
|
|
}
|
|
}
|
|
|
|
.navi-close-button {
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
border-radius: 20px;
|
|
width: 100px;
|
|
height: 40px;
|
|
text-align: center;
|
|
background-color: white;
|
|
border-color: $cancelation-red;
|
|
color: $cancelation-red;
|
|
}
|
|
|
|
.navi-time {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
color: $black;
|
|
|
|
.navi-daytime {
|
|
font-size: $font-size-xsmall;
|
|
font-weight: $font-weight-book;
|
|
}
|
|
}
|
|
|
|
.navi-ticket-button {
|
|
border-radius: 20px;
|
|
width: 100px;
|
|
height: 40px;
|
|
text-align: center;
|
|
margin-left: 16px;
|
|
background-color: $primary-color;
|
|
color: white;
|
|
|
|
a {
|
|
color: white;
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
@keyframes slideDownFromTop {
|
|
from {
|
|
transform: translateY(-100%);
|
|
margin-top: -65px;
|
|
}
|
|
|
|
to {
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes hideTopCard {
|
|
from {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
to {
|
|
transform: translateY(-100%);
|
|
margin-top: -65px;
|
|
}
|
|
}
|
|
|
|
@keyframes slideUpFromBottom {
|
|
from {
|
|
transform: translateY(100%);
|
|
}
|
|
|
|
to {
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slideUpToTop {
|
|
from {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
to {
|
|
transform: translateY(calc(-100vh - 100%));
|
|
}
|
|
}
|
|
|
|
@keyframes slideLeft {
|
|
from {
|
|
transform: translateX(0);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(-100%);
|
|
}
|
|
}
|
|
|
|
@keyframes fadeOut {
|
|
from {
|
|
opacity: 1;
|
|
}
|
|
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|