@datalayer/core
Version:
[](https://datalayer.io)
738 lines (640 loc) • 16.6 kB
CSS
/*
* Copyright (c) 2023-2025 Datalayer, Inc.
* Distributed under the terms of the Modified BSD License.
*/
/*
* Main styles for the subdomain navigation bar.
*/
.SubdomainNavBar {
position: relative;
z-index: 90;
font-weight: 550;
background: var(--brand-SubdomainNavBar-canvas-default);
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
transition:
background-color var(--brand-animation-duration-fast)
var(--brand-animation-easing-default),
border-color var(--brand-animation-duration-fast)
var(--brand-animation-easing-default);
height: 75px;
}
/*
* Outer container
*/
.SubdomainNavBar-outer-container {
z-index: 90;
}
.SubdomainNavBar-outer-container--fixed {
position: fixed;
top: 0;
right: 0;
left: 0;
}
/*
* Inner container
*/
.SubdomainNavBar-inner-container {
display: flex;
padding: 4px 28px;
}
.SubdomainNavBar-inner-container--centered {
max-width: 1280px;
margin: 0 auto;
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-inner-container {
padding: 4px 32px;
}
}
.SubdomainNavBar-inner-container--search-open {
animation: fade-out 150ms;
}
/*
* Logo and title area
*/
.SubdomainNavBar-title-area {
display: inline-flex;
list-style-type: none;
align-items: center;
gap: 16px;
padding: 0;
margin: 0;
max-width: 340px;
color: var(--brand-color-text-default);
padding: var(--base-size-16) 0;
}
.SubdomainNavBar-logo-mark {
color: var(--brand-color-text-default);
position: relative;
}
.SubdomainNavBar-back-arrow {
position: absolute;
left: calc(-32px + 5px);
opacity: 0;
transition:
opacity var(--brand-animation-duration-fast),
transform var(--brand-animation-duration-fast) ease;
transform: translateX(5px);
color: var(--brand-color-text-muted);
}
.SubdomainNavBar-logo-mark:hover .SubdomainNavBar-back-arrow {
opacity: 1;
transform: translateX(0);
}
.SubdomainNavBar-title-separator {
color: var(--brand-color-text-muted);
font-weight: var(--base-text-weight-semibold);
font-size: var(--base-size-32);
line-height: 29px;
}
.SubdomainNavBar-logo-mark svg {
width: 32px;
height: 32px;
}
.SubdomainNavBar-title {
font-family: var(--brand-heading-fontFamily);
font-weight: var(--base-text-weight-semibold);
font-size: var(--base-size-24);
line-height: var(--base-size-32);
color: var(--brand-color-text-default);
text-decoration: none;
padding-right: var(--base-size-16);
white-space: nowrap;
}
.SubdomainNavBar-title:hover {
text-decoration: none;
}
/*
* Primary navigation link area
*/
.SubdomainNavBar-primary-nav {
display: inline-flex;
list-style-type: none;
align-items: center;
padding: 0;
margin: 0;
}
.SubdomainNavBar-primary-nav-list {
list-style-type: none;
}
@media screen and (max-width: 767px) {
.SubdomainNavBar-primary-nav-list {
display: none;
}
.SubdomainNavBar-primary-nav-list--invisible {
display: none;
}
.SubdomainNavBar-primary-nav-list--visible {
display: block;
margin: 0;
padding: 0;
}
.SubdomainNavBar-menu-wrapper {
display: flex;
flex-direction: column;
justify-content: space-between;
overflow-y: auto;
position: absolute;
top: 75px;
left: 0;
right: 0;
bottom: 0;
z-index: 2;
background-color: var(--brand-color-canvas-default);
width: 100vw;
height: calc(100vh - 75px);
animation: fade-in-down 500ms;
animation-timing-function: var(--brand-animation-easing-default);
}
.SubdomainNavBar-menu-wrapper--close {
display: none;
}
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-primary-nav-list {
display: flex;
align-items: center;
width: 100%;
max-width: 150px;
padding: 0;
margin: 0 24px 0 0;
/* overflow: hidden; */
}
}
@media screen and (min-width: 768px) {
.SubdomainNavBar-primary-nav-list {
max-width: 100px;
}
}
@media screen and (min-width: 850px) {
.SubdomainNavBar-primary-nav-list {
max-width: 200px;
}
}
@media screen and (min-width: 1024px) {
.SubdomainNavBar-primary-nav-list {
max-width: 300px;
}
}
@media screen and (min-width: 1280px) {
.SubdomainNavBar-primary-nav-list {
max-width: 520px;
margin-right: 80px;
}
}
.SubdomainNavBar-primary-nav-list-item {
white-space: nowrap;
}
@media screen and (max-width: 767px) {
.SubdomainNavBar-primary-nav-list-item {
animation-name: fade-in-down-staggered;
animation-duration: 500ms;
animation-delay: calc(var(--animation-order) * 80ms);
animation-fill-mode: both;
animation-timing-function: var(--brand-animation-easing-default);
}
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-primary-nav-list-item--visible {
order: 0;
visibility: visible;
opacity: 1;
}
.SubdomainNavBar-primary-nav-list-item--invisible {
order: 100;
visibility: hidden;
pointer-events: none;
}
.SubdomainNavBar-primary-nav-list-item--overflow {
order: 99;
position: relative;
right: 0;
}
}
.SubdomainNavBar-link {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
gap: var(--base-size-8);
color: var(--brand-color-text-default);
font-family: var(--brand-heading-fontFamily);
font-weight: var(--base-text-weight-normal);
font-size: var(--base-size-20);
line-height: var(--base-size-20);
padding: var(--base-size-8) var(--base-size-16) var(--base-size-16)
var(--base-size-28);
text-decoration: none;
}
.SubdomainNavBar-link:hover {
text-decoration: none;
}
.SubdomainNavBar-link-text {
position: relative;
}
@media screen and (max-width: 767px) {
.SubdomainNavBar-link:first-of-type {
padding-top: var(--base-size-24);
}
.SubdomainNavBar-link--title {
font-weight: var(--base-text-weight-bold);
}
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-link {
font-family: var(--brand-heading-fontFamily);
font-weight: var(--base-text-weight-semibold);
font-size: var(--base-size-16);
line-height: var(--base-size-16);
padding: var(--base-size-16) var(--base-size-24);
}
.SubdomainNavBar-link::after {
content: '';
position: absolute;
bottom: 10px;
left: 0;
width: 100%;
height: 2px;
background-color: var(--brand-SubdomainNavBar-border-nav-default);
opacity: 0;
transition:
opacity var(--brand-animation-duration-fast),
transform var(--brand-animation-duration-fast);
opacity: 1;
transform: scale(0);
transform-origin: center;
}
.SubdomainNavBar-link:hover::after,
.SubdomainNavBar-link:focus::after {
opacity: 1;
transform: translate3d(0, 0.2em, 0);
transform: scale(0.4);
}
.SubdomainNavBar-link:active::after {
background-color: var(--brand-SubdomainNavBar-border-nav-pressed);
transform: scale(0.6);
}
.SubdomainNavBar-overflow-menu-item .SubdomainNavBar-link {
transition: background-color var(--brand-animation-easing-default) 250ms;
background-color: var(--brand-SubdomainNavBar-canvas-overflow-default);
color: var(--brand-SubdomainNavBar-fg-overflow-default);
}
.SubdomainNavBar-overflow-menu-item .SubdomainNavBar-link::after {
display: none;
}
.SubdomainNavBar-overflow-menu-item .SubdomainNavBar-link:hover {
background-color: var(--brand-SubdomainNavBar-canvas-overflow-hover);
}
.SubdomainNavBar-overflow-menu-item .SubdomainNavBar-link:focus,
.SubdomainNavBar-overflow-menu-item .SubdomainNavBar-link:focus-visible {
box-shadow: inset 0px 0px 0px 2px var(--brand-color-focus);
outline: none;
}
}
.SubdomainNavBar-more-link {
display: none;
}
.SubdomainNavBar-more-link[aria-expanded='true']:hover::after,
.SubdomainNavBar-more-link[aria-expanded='true']:focus::after {
display: none;
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-more-link {
cursor: pointer;
appearance: none;
border: none;
background-color: transparent;
display: inline-flex;
align-items: center;
gap: var(--base-size-4);
}
}
.SubdomainNavBar-overflow-menu {
position: absolute;
right: 0;
top: var(--base-size-48);
background-color: var(--base-color-scale-white-0);
border-radius: var(--brand-borderRadius-large);
animation:
fade-in-down 0.25s,
enlarge-shadow 250ms forwards;
animation-timing-function: var(--brand-animation-easing-default);
box-shadow: 0px 8px 24px rgba(1, 4, 9, 0.15);
overflow: hidden;
}
.SubdomainNavBar-overflow-menu-list {
display: grid;
list-style-type: none;
padding: 0;
margin: 0;
width: max-content;
}
/*
* Toolbar actions area for search and mobile menu
*/
.SubdomainNavBar-secondary-nav {
display: flex;
align-items: center;
margin-left: auto;
min-width: 0;
}
.SubdomainNavBar-search-trigger {
display: flex;
align-items: center;
}
.SubdomainNavBar-search-button,
.SubdomainNavBar-menu-button {
cursor: pointer;
appearance: none;
background-color: transparent;
border: var(--brand-borderWidth-thick) solid transparent;
color: var(--brand-color-text-default);
width: calc(48px - var(--brand-borderWidth-thick));
height: calc(48px - var(--brand-borderWidth-thick));
display: flex;
align-items: center;
justify-content: center;
transition:
border 250ms var(--brand-animation-easing-default),
box-shadow 250ms ease;
border-radius: var(--brand-borderRadius-medium);
box-shadow: 0 0 0 2px transparent;
}
.SubdomainNavBar-search-button svg,
.SubdomainNavBar-menu-button svg {
width: 24px;
height: 24px;
}
.SubdomainNavBar-menu-button {
display: inline-block;
align-self: center;
}
.SubdomainNavBar-menu-button-bar {
width: 22px;
height: 2px;
background-color: var(--brand-color-text-default);
margin: var(--base-size-4) auto;
border-radius: var(--brand-borderRadius-large);
display: block;
}
@media (prefers-reduced-motion: no-preference) {
.SubdomainNavBar-menu-button-bar {
transition-timing-function: var(--brand-animation-easing-default);
transition-duration: 500ms;
transition-property: opacity, transform;
}
}
.SubdomainNavBar-menu-button-bar:nth-of-type(1) {
transform-origin: bottom right;
}
.SubdomainNavBar-menu-button-bar:nth-of-type(3) {
transform-origin: top right;
}
.SubdomainNavBar-menu-button--close
.SubdomainNavBar-menu-button-bar:nth-of-type(1) {
transform: rotate(-45deg) translateY(-3px);
}
.SubdomainNavBar-menu-button--close
.SubdomainNavBar-menu-button-bar:nth-of-type(2) {
opacity: 0;
transform: scale(0);
}
.SubdomainNavBar-menu-button--close
.SubdomainNavBar-menu-button-bar:nth-of-type(3) {
transform: rotate(45deg) translateY(3px);
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-search-button:hover,
.SubdomainNavBar-menu-button:hover {
border: var(--brand-borderWidth-thick) solid
var(--brand-SubdomainNavBar-border-button-hover);
}
.SubdomainNavBar-search-button:active,
.SubdomainNavBar-menu-button:active {
box-shadow: 0 0 0 1px var(--brand-SubdomainNavBar-border-button-hover);
}
.SubdomainNavBar-mobile-menu-button {
display: none;
}
.SubdomainNavBar-search-dialog-control-area .SubdomainNavBar-search-button,
.SubdomainNavBar-search-dialog-control-area .SubdomainNavBar-menu-button {
display: inline-flex;
width: 48px;
}
.SubdomainNavBar-search-button {
margin: 0 var(--base-size-16) 0 auto;
}
}
.SubdomainNavBar-button-area {
display: inline-flex;
gap: var(--base-size-16);
align-items: center;
min-width: 0;
}
.SubdomainNavBar-button-area-inner {
display: flex;
gap: 16px;
min-width: 0;
}
@media screen and (max-width: 48rem) {
.SubdomainNavBar-button-area {
display: none;
}
.SubdomainNavBar-button-area--visible {
display: flex;
left: 0;
z-index: 99;
width: 100%;
height: auto;
animation-name: fade-in-down-staggered;
animation-duration: 500ms;
animation-delay: calc(10 * 80ms);
animation-fill-mode: both;
animation-timing-function: var(--brand-animation-easing-default);
}
.SubdomainNavBar-inner-container--search-open
.SubdomainNavBar-button-area--visible {
display: none;
}
.SubdomainNavBar-button-area-inner {
width: 100%;
flex-direction: column;
margin: 24px;
min-width: 0;
}
}
.SubdomainNavBar-cta-button {
white-space: nowrap;
min-width: 0;
}
@media screen and (min-width: 1024px) {
.SubdomainNavBar-cta-button--secondary {
display: inline-flex;
}
}
/*
* Search dialog control area
*/
.SubdomainNavBar-search-form {
display: flex;
width: 100%;
}
.SubdomainNavBar-search-dialog {
position: absolute;
z-index: 99;
}
@media screen and (max-width: 767px) {
.SubdomainNavBar-search-dialog {
top: 0;
left: 0;
right: 0;
background: var(--brand-SubdomainNavBar-canvas-search);
-webkit-backdrop-filter: blur(100px);
backdrop-filter: blur(100px);
height: 100vh;
width: 100vw;
animation: fade-in-down var(--brand-animation-duration-fast);
animation-timing-function: var(--brand-animation-easing-default);
}
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-search-dialog {
position: absolute;
top: 0;
bottom: 1px;
width: 100vw;
left: 0;
right: 0;
background-color: var(--brand-SubdomainNavBar-canvas-search);
}
}
.SubdomainNavBar-search-dialog
.SubdomainNavBar-search-trigger
.SubdomainNavBar-search-button {
margin-right: 0;
}
.SubdomainNavBar-search-dialog-control-area {
height: 74px;
background: var(--brand-SubdomainNavBar-canvas-default);
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
padding: var(--base-size-12) var(--base-size-28);
display: flex;
align-items: center;
animation: fade-in-down 500ms;
gap: var(--base-size-4);
}
@media screen and (min-width: 48rem) {
.SubdomainNavBar-search-dialog-control-area {
max-width: 570px;
margin: 0 auto;
}
}
.SubdomainNavBar-search-text-input {
border-color: transparent;
}
.SubdomainNavBar-search-results-container {
animation: fade-in-down 500ms;
padding: var(--base-size-24);
background-color: var(--base-color-scale-white-0);
border-radius: var(--brand-borderRadius-large);
box-shadow: 0px 8px 24px rgba(1, 4, 9, 0.15);
max-height: 514px;
height: 70vh;
max-width: 570px;
margin: 0 auto;
width: 80%;
}
.SubdomainNavBar-search-results {
overflow-y: scroll;
list-style: none;
padding: 0 var(--base-size-24) 0 0;
margin: 0;
height: 90%;
}
.SubdomainNavBar-search-results-heading {
display: block;
font-weight: var(--brand-heading-weight-600);
font-size: var(--base-size-20);
line-height: var(--base-size-24);
margin-bottom: var(--base-size-20);
padding: 0 var(--base-size-8);
color: var(--base-color-scale-black-0);
}
.SubdomainNavBar-search-result-item {
padding: var(--base-size-16) var(--base-size-8);
border-bottom: solid var(--brand-borderWidth-thin, 1px)
var(--brand-SubdomainNavBar-search-results-border-default, #b7bfc7);
}
.SubdomainNavBar-search-result-item[aria-selected='true'] a {
outline: var(--brand-color-focus) auto var(--brand-borderWidth-thick);
}
.SubdomainNavBar-search-result-item-container {
letter-spacing: var(--brand-heading-letterSpacing-400);
font-size: var(--brand-text-size-400);
}
.SubdomainNavBar-search-result-item-container a {
display: block;
color: var(--base-color-scale-black-0);
text-decoration: none;
margin: 0 0 var(--base-size-12);
font-size: var(--base-size-16);
font-weight: var(--brand-heading-weight-400);
font-family: var(--brand-heading-fontFamily);
line-height: var(--brand-text-lineHeight-400);
}
.SubdomainNavBar-search-result-item-container a:hover {
text-decoration: none;
}
.SubdomainNavBar-search-result-item-desc {
color: var(--base-color-scale-black-0);
}
.SubdomainNavBar-skip-to-content {
position: fixed;
top: 75px;
border-radius: 0px;
width: 100vw;
z-index: 100;
}
/*
* Reusable animations
*/
@keyframes fade-in-down {
0% {
opacity: 0;
transform: translateY(-20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fade-out {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes enlarge-shadow {
0% {
scale: 0.98;
box-shadow: 0px 8px 0 rgba(1, 4, 9, 0.15);
}
100% {
scale: 1;
box-shadow: 0px 8px 24px rgba(1, 4, 9, 0.15);
}
}
@keyframes fade-in-down-staggered {
0% {
opacity: 0;
transform: scale(0.6) translateY(-8px);
}
100% {
opacity: 1;
}
}