UNPKG

@datalayer/core

Version:
719 lines (621 loc) 16.5 kB
/* * 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; } }