UNPKG

@datalayer/core

Version:

[![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)

718 lines (605 loc) 16.2 kB
/* * Copyright (c) 2023-2025 Datalayer, Inc. * Distributed under the terms of the Modified BSD License. */ .SubNav__container { position: absolute; width: 100%; z-index: 2; } .SubNav__container--with-anchor-nav { display: unset; position: relative; } .SubNav { width: 100%; display: flex; padding: var(--base-size-16); z-index: 1; } [data-color-mode='dark'] .SubNav { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .SubNav__heading { font-weight: var(--base-text-weight-semibold); color: var(--brand-color-text-default); font-family: var(--brand-heading-fontFamily); text-decoration: none; } .SubNav__heading:hover { color: var(--brand-color-text-muted); text-decoration: none !important; /* dotcom override */ } .SubNav--header-container-outer { width: 100%; } .SubNav__heading-container { position: relative; z-index: 9998; display: inline-block; margin-inline-end: var(--base-size-16); } .SubNav--has-shadow { box-shadow: var(--brand-SubNav-shadow); background-color: var(--brand-color-canvas-default); } .SubNav--full-width { padding-inline: 0; } .SubNav__action-container { margin-left: auto; } .SubNav__sub-menu-icon { display: none !important; } .SubNav__sub-menu-children { display: contents; } .SubNav__links-overlay { list-style: none; margin: 0; padding: 0; } .SubNav__links-overlay > span { display: none; } .SubNav__sub-menu-toggle { display: none; } .SubNav__heading-separator { position: relative; top: var(--base-size-2); color: var(--brand-color-text-muted); } /* * Anchor Nav Submenu */ .SubNav__anchor-menu-outer-container { position: sticky; top: -1px; z-index: 91; /* must be higher than subdomain nav bar */ } .SubNav__anchor-menu-container { opacity: 0; background-color: transparent; transform: translateY(var(--brand-animation-variant-slideInDown-distance)); transition: opacity var(--brand-animation-duration-default) var(--brand-animation-easing-default), background-color var(--brand-animation-duration-default) var(--brand-animation-easing-default); } .SubNav__anchor-menu-outer-container--stuck .SubNav__anchor-menu-container { transform: translateY(0); opacity: 1; background-color: var(--brand-color-canvas-default); } .SubNav__anchor-menu-outer-container { height: 0; transition: height var(--brand-animation-duration-default) var(--brand-animation-easing-default); } .SubNav__anchor-menu-outer-container--stuck { height: auto; } .SubNav__sub-menu--anchor { opacity: 0; visibility: hidden; transform: translateY(var(--brand-animation-variant-slideInDown-distance)); transition: opacity var(--brand-animation-duration-default) var(--brand-animation-easing-default), height var(--brand-animation-duration-default) var(--brand-animation-easing-default), transform var(--brand-animation-duration-default) var(--brand-animation-easing-default); } .SubNav__anchor-menu-outer-container--stuck .SubNav__sub-menu--anchor { visibility: visible; opacity: 1; transform: translateY(0); } .SubNav__sub-menu--anchor { display: flex; padding-block-start: var(--base-size-12); padding-block-end: var(--base-size-20); } .SubNav__sub-menu--anchor .SubNav__sub-menu-list { display: inline-flex; list-style-type: none; margin: 0; padding: 0; gap: var(--base-size-20); } .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label { color: var(--brand-color-text-default); } .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after, .SubNav__link:hover .SubNav__link-label::after, .SubNav__link:focus-visible .SubNav__link-label::after, .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after { opacity: 1; transform: scale(0.8, 1); } .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after, .SubNav__link:active .SubNav__link-label::after { border-color: var(--brand-color-text-default); transform: scale(0.9, 1); } .SubNav__link[data-active='true'] .SubNav__link-label::after, .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after { border-color: var(--brand-color-text-default); opacity: 1; } .SubNav__link:focus-visible .SubNav__link-label::after, .SubNav__sub-menu--anchor .SubNav__link--is-in-view:focus-visible .SubNav__link-label::after { opacity: 0; } .SubNav__link:hover .SubNav__link-label::after, .SubNav__link[aria-current]:not([aria-current='false']) * { color: var(--brand-SubNav-color-link-active); text-decoration: none !important; /* dotcom override */ } .SubNav__link-label::after { content: ''; position: absolute; bottom: calc(var(--base-size-2) * -1); left: 0; width: 100%; height: 2px; border-width: 2px; border-bottom: var(--base-size-2) solid var(--brand-color-text-muted); transition: opacity var(--brand-animation-duration-fast), transform var(--brand-animation-duration-fast), border-color var(--brand-animation-duration-fast); opacity: 1; transform: scale(0); transform-origin: center; } .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after { border-color: var(--brand-color-text-default); } .SubNav__link:hover .SubNav__link-label { transition: color var(--brand-animation-duration-fast) var(--brand-animation-easing-default); color: var(--brand-SubNav-color-link-active); } .SubNav__link:hover .SubNav__link-label::after { border-color: var(--brand-color-text-default); } /* * Narrow breakpoint */ @media screen and (max-width: 63.24rem) { .SubNav { position: relative; } .SubNav::before { content: ''; position: absolute; top: 0; left: 0; bottom: 0; right: 0; opacity: 0; z-index: 9997; } .SubNav::after { content: ''; z-index: -1; position: fixed; background-color: var(--base-color-scale-black-0); opacity: 0; visibility: hidden; top: 0; right: 0; left: 0; bottom: 0; width: 100%; height: 100%; } .SubNav--open::after { opacity: 0.3; visibility: visible; transition: visibility var(--brand-animation-duration-default) var(--brand-animation-easing-default), opacity var(--brand-animation-duration-default) var(--brand-animation-easing-default); } .SubNav__heading { font-size: var(--base-size-16); line-height: var(--base-size-24); } .SubNav--open { display: block; } .SubNav--open + .SubNav__anchor-menu-outer-container { z-index: -1; } .SubNav--open::before { background-color: var(--brand-color-canvas-default); animation: fade-in 0.3s var(--brand-animation-easing-glide) forwards; } .SubNav__header-container { display: flex; width: 100%; white-space: pre; } .SubNav__heading-separator { margin-inline-end: var(--base-size-16); z-index: 9998; } .SubNav__heading-separator:not( .SubNav__heading-separator--has-adjacent-label ) { display: none; } .SubNav__links-overlay { position: relative; display: flex; flex: auto; flex-direction: column; justify-content: center; z-index: 9998; display: none; } .SubNav__links-overlay--open { display: flex; flex-direction: column; gap: var(--base-size-8); padding-block-start: var(--base-size-16); padding-block-end: var(--base-size-16); } .SubNav__links-overlay--open .SubNav__link:hover .SubNav__link-label { color: var(--brand-color-text-default); } .SubNav__links-overlay--open .SubNav__link--has-sub-menu:hover .SubNav__link-label { color: var(--brand-color-text-muted); } .SubNav__overlay-toggle { background-color: transparent; border: none; cursor: pointer; display: flex; position: relative; width: 100%; display: flex; order: 1; z-index: 9999; padding-inline: 0; justify-content: end; } .SubNav__overlay-toggle-content { justify-content: space-between; width: 100%; } .SubNav--full-width .SubNav__overlay-toggle { right: 0; } .SubNav__link, .SubNav__action-container { display: none; text-decoration: none; } .SubNav__links-overlay--open .SubNav__link-label { position: relative; } .SubNav__links-overlay--open .SubNav__link[aria-current]:not([aria-current='false']) * { color: var(--brand-SubNav-color-link-active); } .SubNav__links-overlay--open .SubNav__link, .SubNav__links-overlay--open .SubNav__action-container { display: block; padding: var(--base-size-8) 0; animation: fade-in 0.3s var(--brand-animation-easing-glide) forwards; } .SubNav__links-overlay--open .SubNav__link--has-sub-menu { padding-block: 0; } .SubNav__links-overlay--open .SubNav__action-container { width: 100%; } .SubNav__links-overlay--open .SubNav__action { width: 100%; } .SubNav__sub-menu { list-style: none; padding: 0; margin: 0; padding-inline-start: var(--base-size-16); } .SubNav__sub-menu--dropdown .SubNav__link:hover .SubNav__link-label { color: var(--brand-color-text-default) !important; } .SubNav__anchor-menu-container { z-index: 99; overflow-x: auto; overflow-y: hidden; width: 100%; } .SubNav__anchor-menu-outer-container { position: sticky; top: -1px; } .SubNav__anchor-menu-outer-container::after { content: ''; position: absolute; right: 0; top: 0; bottom: 0; width: var(--base-size-32); background: linear-gradient( to left, var(--brand-color-canvas-default), transparent ); pointer-events: none; z-index: 100; } .SubNav__link-label { font-size: var(--brand-text-size-200); font-weight: var(--base-text-weight-semibold); padding-block-end: var(--base-size-6); } .SubNav__sub-menu--anchor { padding-inline: var(--base-size-16); padding-block-end: var(--base-size-16); padding-block-start: var(--base-size-16); } .SubNav__sub-menu--anchor .SubNav__link-label { font-size: var(--brand-text-size-100); line-height: var(--brand-text-lineHeight-100); letter-spacing: var(--brand-text-letterSpacing-100); } .SubNav__sub-menu--anchor .SubNav__sub-menu-list { padding-inline-end: var(--base-size-32); } .SubNav__sub-menu--anchor .SubNav__link { display: block; white-space: pre; position: relative; } .SubNav .SubNav__link-label::after { opacity: 0; transform: scale(0); bottom: 0; } .SubNav__link:hover .SubNav__link-label::after, .SubNav__link:focus-visible .SubNav__link-label::after, .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after { opacity: 1; transform: scale(1); } } .SubNav__overlay-toggle-icon { fill: var(--brand-color-text-default); } .SubNav__overlay-toggle-content { display: flex; align-items: center; gap: var(--base-size-8); /* optical alignment */ position: relative; top: calc(var(--base-size-4) / 4 * -1); } .SubNav__overlay-toggle-content--end { justify-content: flex-end; } @media screen and (min-width: 48rem) { .SubNav { padding: var(--base-size-16) var(--base-size-24); } .SubNav--full-width { padding-inline: 0; } .SubNav__sub-menu--anchor { padding-inline: var(--base-size-24); } } .SubNav__heading-label { white-space: pre; } /* * Wide breakpoint */ @media screen and (min-width: 63.25rem) { .SubNav { padding: var(--base-size-16) var(--base-size-32); align-items: center; display: flex; z-index: 92; } .SubNav:has(+ .SubNav__anchor-menu-container) { padding-block-end: 0; } .SubNav--full-width { padding-inline: 0; } .SubNav__overlay-toggle { display: none; } .SubNav__heading { font-size: calc(var(--base-size-20) - 2px); line-height: var(--base-size-24); } .SubNav__heading-separator { margin-inline-end: var(--base-size-20); } .SubNav--header-container-outer { display: flex; align-items: center; } .SubNav__heading-container { margin-inline-end: var(--base-size-20); } .SubNav__links-overlay { align-items: center; display: flex; gap: var(--base-size-20); z-index: 92; flex-grow: 1; } .SubNav__link { text-decoration: none !important; /* dotcom override */ transition: color 0.2s var(--brand-animation-easing-glide); position: relative; padding: var(--base-size-4) 0; } .SubNav__link-label { font-size: var(--brand-text-size-100); line-height: var(--brand-text-lineHeight-100); } .SubNav__link--has-sub-menu { padding: var(--base-size-4) 0; } /* To fix hover distance between link and dropdown */ .SubNav__link--has-sub-menu::after { content: ''; position: absolute; bottom: calc(var(--base-size-12) * -1); left: 0; width: 100%; height: var(--base-size-12); background: transparent; } .SubNav__sub-menu.SubNav__sub-menu--dropdown { background-clip: padding-box; background-color: var(--brand-SubNav-color-subMenu-bgColor); border: var(--borderWidth-thin, max(1px, 0.0625rem)) solid var(--borderColor-default, var(--color-border-default)); border-radius: var(--brand-borderRadius-xlarge, 0.375rem); box-shadow: var(--shadow-floating-legacy, var(--color-shadow-large)); left: 0; list-style: none; margin-block-start: var(--base-size-8); padding: var(--base-size-24); padding-inline-end: var(--base-size-24); position: absolute; top: 100%; z-index: 9998; transition-timing-function: var(--brand-animation-easing-glide); transition-duration: var(--brand-animation-duration-fast); transition-property: opacity, transform; left: calc(var(--base-size-4) / 4 * -16); visibility: hidden; opacity: 0; transform: scale(0.99) translateY(-0.7em) translateX(-8px); transform-origin: top; display: flex; flex-direction: column; gap: var(--base-size-8); width: var(--brand-SubNav-width-subMenu); } .SubNav__link--expanded .SubNav__sub-menu.SubNav__sub-menu--dropdown { visibility: visible; opacity: 1; transform: scale(1) translateY(0) translateX(-8px); box-shadow: var(--brand-SubNav-shadow); } .SubNav__sub-menu-toggle { border: none; padding: 0; margin: 0; background: none; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .SubNav__sub-menu .SubNav__link { display: block; } .SubNav__sub-menu--dropdown .SubNav__link:hover .SubNav__link-label { color: var(--brand-color-text-default) !important; } .SubNav__sub-menu--dropdown .SubNav__link-label::after { opacity: 1; transform: scale(0); } .SubNav__link--has-sub-menu { position: relative; display: inline-flex; align-items: center; gap: var(--base-size-4); cursor: pointer; } .SubNav__sub-menu--dropdown .SubNav__link-label { position: relative; padding: var(--base-size-4) 0; } /* Show underline on submenu parent when child has aria-current */ .SubNav__link--has-sub-menu:has( .SubNav__link[aria-current]:not([aria-current='false']) ) > .SubNav__link .SubNav__link-label::after { opacity: 1; transform: scale(0.8, 1); } .SubNav__link--has-sub-menu .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after, .SubNav__link--has-sub-menu .SubNav__link:hover .SubNav__link-label::after { opacity: 1; transform: scale(1); } .SubNav__sub-menu-icon { display: inline-block !important; fill: var(--brand-color-text-muted); transition: transform var(--brand-animation-duration-fast); } .SubNav__link--has-sub-menu:hover .SubNav__sub-menu-icon { transform: translateY(2px); } .SubNav__sub-menu--anchor { padding-inline: var(--base-size-32); } } @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes fade-in-down { 0% { opacity: 0; } 100% { opacity: 1; } }