$super-sidebar-transition-duration: $gl-transition-duration-medium; $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4; @mixin notification-dot($color, $size, $top, $left) { background-color: $color; border: 2px solid var(--super-sidebar-bg); position: absolute; height: $size; width: $size; top: $top; left: $left; border-radius: 50%; transition: background-color 100ms linear, border-color 100ms linear; } .super-sidebar-skip-to { top: $calc-application-bars-height; width: calc(#{$super-sidebar-width} - #{$gl-spacing-scale-5}); z-index: $super-sidebar-skip-to-z-index; } .super-sidebar { --super-sidebar-bg: #{$gray-10}; --super-sidebar-border-color: #{$t-gray-a-08}; --super-sidebar-context-header-color: inherit; --super-sidebar-active-indicator-color: #{$blue-500}; --super-sidebar-notification-dot: #{$blue-500}; --super-sidebar-user-bar-bg: #{$t-gray-a-04}; --super-sidebar-user-bar-button-bg: #{$gray-10}; --super-sidebar-user-bar-button-color: #{$gray-900}; --super-sidebar-user-bar-button-border-color: #{$t-gray-a-08}; --super-sidebar-user-bar-button-hover-bg: #{$t-gray-a-08}; --super-sidebar-user-bar-button-hover-color: #{$gray-900}; --super-sidebar-user-bar-button-active-bg: #{$t-gray-a-16}; --super-sidebar-user-bar-button-icon-color: #{$gray-500}; --super-sidebar-user-bar-button-icon-hover-color: #{$gray-700}; --super-sidebar-user-bar-button-icon-mix-blend-mode: normal; --super-sidebar-nav-item-hover-bg: #{$t-gray-a-08}; --super-sidebar-nav-item-active-bg: #{$t-gray-a-16}; --super-sidebar-nav-item-current-bg: #{$t-gray-a-08}; --super-sidebar-nav-item-icon-color: #{$gray-500}; --super-sidebar-hr-mix-blend-mode: normal; .gl-dark & { --super-sidebar-border-color: #{$t-white-a-08}; --super-sidebar-user-bar-bg: #{$t-white-a-04}; --super-sidebar-user-bar-button-bg: #{$gray-10}; --super-sidebar-user-bar-button-border-color: #{$t-white-a-08}; --super-sidebar-user-bar-button-hover-bg: #{$t-white-a-16}; --super-sidebar-user-bar-button-active-bg: #{$t-white-a-24}; --super-sidebar-user-bar-button-icon-color: #{$gray-600}; --super-sidebar-nav-item-hover-bg: #{$t-white-a-08}; --super-sidebar-nav-item-active-bg: #{$t-white-a-16}; --super-sidebar-nav-item-current-bg: #{$t-white-a-08}; --super-sidebar-nav-item-icon-color: #{$gray-600}; } } @mixin super-sidebar-theme( $background, $user-bar-background, $user-bar-button-color, $user-bar-button-icon-color, $context-header, $active-indicator, $notification-dot, ) { .super-sidebar { --super-sidebar-bg: #{$background}; --super-sidebar-user-bar-bg: #{$user-bar-background}; --super-sidebar-context-header-color: #{$context-header}; --super-sidebar-active-indicator-color: #{$active-indicator}; --super-sidebar-notification-dot: #{$notification-dot}; --super-sidebar-user-bar-button-bg: #{$t-white-a-16}; --super-sidebar-user-bar-button-color: #{$user-bar-button-color}; --super-sidebar-user-bar-button-border-color: #{$t-white-a-16}; --super-sidebar-user-bar-button-hover-bg: #{$t-white-a-24}; --super-sidebar-user-bar-button-hover-color: #{$white}; --super-sidebar-user-bar-button-active-bg: #{$t-white-a-36}; --super-sidebar-user-bar-button-icon-color: #{$user-bar-button-icon-color}; --super-sidebar-user-bar-button-icon-hover-color: #{$user-bar-button-icon-color}; --super-sidebar-user-bar-button-icon-mix-blend-mode: screen; --super-sidebar-hr-mix-blend-mode: multiply; } } .ui-blue { @include super-sidebar-theme( $background: $theme-blue-10, $user-bar-background: $theme-blue-900, $user-bar-button-color: $theme-blue-50, $user-bar-button-icon-color: $theme-blue-100, $context-header: $theme-blue-900, $active-indicator: $theme-blue-900, $notification-dot: $theme-blue-900, ); } .ui-gray { @include super-sidebar-theme( $background: $gray-10, $user-bar-background: $gray-900, $user-bar-button-color: $gray-50, $user-bar-button-icon-color: $gray-100, $context-header: $gray-900, $active-indicator: $gray-900, $notification-dot: $gray-900, ); } .ui-green { @include super-sidebar-theme( $background: $theme-green-10, $user-bar-background: $theme-green-900, $user-bar-button-color: $theme-green-50, $user-bar-button-icon-color: $theme-green-100, $context-header: $theme-green-900, $active-indicator: $theme-green-900, $notification-dot: $theme-green-900, ); } .ui-indigo { @include super-sidebar-theme( $background: $theme-indigo-10, $user-bar-background: $theme-indigo-900, $user-bar-button-color: $theme-indigo-50, $user-bar-button-icon-color: $theme-indigo-100, $context-header: $theme-indigo-900, $active-indicator: $theme-indigo-900, $notification-dot: $theme-indigo-900, ); } .ui-light-blue { @include super-sidebar-theme( $background: $theme-light-blue-10, $user-bar-background: $theme-light-blue-700, $user-bar-button-color: $theme-light-blue-50, $user-bar-button-icon-color: $theme-light-blue-100, $context-header: $theme-light-blue-900, $active-indicator: $theme-light-blue-900, $notification-dot: $theme-light-blue-900, ); } .ui-light-green { @include super-sidebar-theme( $background: $theme-green-10, $user-bar-background: $theme-green-700, $user-bar-button-color: $theme-green-50, $user-bar-button-icon-color: $theme-green-100, $context-header: $theme-green-900, $active-indicator: $theme-green-900, $notification-dot: $theme-green-900, ); } .ui-light-indigo { @include super-sidebar-theme( $background: $theme-indigo-10, $user-bar-background: $theme-indigo-700, $user-bar-button-color: $theme-indigo-50, $user-bar-button-icon-color: $theme-indigo-100, $context-header: $theme-indigo-900, $active-indicator: $theme-indigo-900, $notification-dot: $theme-indigo-900, ); } .ui-light-red { @include super-sidebar-theme( $background: $theme-light-red-10, $user-bar-background: $theme-light-red-700, $user-bar-button-color: $theme-light-red-50, $user-bar-button-icon-color: $theme-light-red-100, $context-header: $theme-light-red-900, $active-indicator: $theme-light-red-900, $notification-dot: $theme-light-red-900, ); } .ui-red { @include super-sidebar-theme( $background: $theme-red-10, $user-bar-background: $theme-red-900, $user-bar-button-color: $theme-red-50, $user-bar-button-icon-color: $theme-red-100, $context-header: $theme-red-900, $active-indicator: $theme-red-900, $notification-dot: $theme-red-900, ); } .super-sidebar { display: flex; flex-direction: column; position: fixed; top: $calc-application-bars-height; bottom: $calc-application-footer-height; left: 0; background-color: var(--super-sidebar-bg); border-right: 1px solid var(--super-sidebar-border-color); transform: translate3d(0, 0, 0); width: $super-sidebar-width; z-index: $super-sidebar-z-index; &.super-sidebar-loading { transform: translate3d(-100%, 0, 0); transition: none; @include media-breakpoint-up(xl) { transform: translate3d(0, 0, 0); } } @media (prefers-reduced-motion: no-preference) { transition: transform $super-sidebar-transition-duration; } .user-bar { background-color: var(--super-sidebar-user-bar-bg); .user-bar-dropdown-toggle { @include gl-p-2; @include gl-border-none; &[aria-expanded='true'] { background-color: var(--super-sidebar-user-bar-button-hover-bg); } } .brand-logo, .btn-default-tertiary, .user-bar-button { color: var(--super-sidebar-user-bar-button-color); .gl-icon { color: var(--super-sidebar-user-bar-button-icon-color) !important; mix-blend-mode: var(--super-sidebar-user-bar-button-icon-mix-blend-mode); } &:active, &:hover, &:focus { background-color: var(--super-sidebar-user-bar-button-hover-bg); color: var(--super-sidebar-user-bar-button-hover-color); .gl-icon { color: var(--super-sidebar-user-bar-button-icon-hover-color); } } &:active { background-color: var(--super-sidebar-user-bar-button-active-bg) !important; } &:focus, &:active { @include gl-focus; } } .btn-default-tertiary { mix-blend-mode: normal; } .user-bar-button { background-color: var(--super-sidebar-user-bar-button-bg); box-shadow: inset 0 0 0 $gl-border-size-1 var(--super-sidebar-user-bar-button-border-color); &[aria-expanded='true'] { background-color: var(--super-sidebar-user-bar-button-hover-bg); color: var(--super-sidebar-user-bar-button-hover-color); } } .gl-new-dropdown-toggle[aria-expanded='true'] { background-color: var(--super-sidebar-user-bar-button-hover-bg); color: var(--super-sidebar-user-bar-button-hover-color); } } .super-sidebar-nav-item { &:hover, &:focus { background-color: var(--super-sidebar-nav-item-hover-bg); } &.super-sidebar-nav-item-current { background-color: var(--super-sidebar-nav-item-current-bg); } &:active, &:focus:active { background-color: var(--super-sidebar-nav-item-active-bg); } } .super-sidebar-nav-item-icon { color: var(--super-sidebar-nav-item-icon-color); } hr { mix-blend-mode: var(--super-sidebar-hr-mix-blend-mode); } .active-indicator { background-color: var(--super-sidebar-active-indicator-color); } .btn-with-notification { position: relative; .notification-dot-info { @include notification-dot(var(--super-sidebar-notification-dot), 9px, 5px, 22px); } .notification-dot-warning { @include notification-dot($orange-300, 12px, 1px, 19px); } &:hover, &:focus { .notification { background-color: var(--super-sidebar-user-bar-button-hover-bg); } } } .super-sidebar-help-center-toggle[aria-expanded='true'] { background-color: $gray-50 !important; } #trial-status-sidebar-widget:hover { text-decoration: none; @include gl-text-contrast-light; } } .super-sidebar-context-header { color: var(--super-sidebar-context-header-color); } .super-sidebar-overlay { display: none; } .super-sidebar-has-peeked { margin-top: calc(#{$header-height} - #{$gl-spacing-scale-2}); margin-bottom: #{$gl-spacing-scale-2}; } .super-sidebar-peek { margin-left: #{$gl-spacing-scale-2}; } .super-sidebar-peek, .super-sidebar-peek-hint { @include gl-shadow; border-right: 0; } .super-sidebar-peek-hint { @media (prefers-reduced-motion: no-preference) { transition: transform $super-sidebar-transition-hint-duration ease-out; } } .super-sidebar-peek { border-radius: $border-radius-default; .user-bar { border-radius: $border-radius-default $border-radius-default 0 0; } } .page-with-super-sidebar { padding-left: 0; @media (prefers-reduced-motion: no-preference) { transition: padding-left $super-sidebar-transition-duration; } &:not(.page-with-super-sidebar-collapsed) { .super-sidebar-overlay { display: block; position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: $t-gray-a-24; z-index: $super-sidebar-z-index - 1; @include media-breakpoint-up(md) { display: none; } } } @include media-breakpoint-up(xl) { padding-left: $super-sidebar-width; .super-sidebar-toggle { display: none; } } } .page-with-super-sidebar-collapsed { .super-sidebar { transform: translate3d(-100%, 0, 0); &.super-sidebar-peek { transform: translate3d(0, 0, 0); } &.super-sidebar-peek-hint { transform: translate3d(calc(#{$gl-spacing-scale-3} - 100%), 0, 0); } } @include media-breakpoint-up(xl) { padding-left: 0; .super-sidebar-toggle { display: block; } } } .gl-dark { .super-sidebar { .gl-new-dropdown-custom-toggle { .btn-with-notification.btn-with-notification { mix-blend-mode: unset; } } } } .global-search-modal { padding: 3rem 0.5rem 0; &.gl-modal .modal-dialog { align-items: flex-start; } @include gl-media-breakpoint-up(sm) { padding: 5rem 1rem 0; } // This is a temporary workaround! // the button in GitLab UI Search components need to be updated to not be the small size // see in Figma: https://www.figma.com/file/qEddyqCrI7kPSBjGmwkZzQ/Component-library?node-id=43905%3A45540 .gl-search-box-by-type-clear.btn-sm { padding: 0.5rem !important; } .search-scope-help { top: 1rem; right: 3rem; } .gl-search-box-by-type-input-borderless { @include gl-rounded-base; } .global-search-results { max-height: 30rem; .gl-new-dropdown-item { @include gl-px-3; } // Target groups [id*='gl-disclosure-dropdown-group'] { @include gl-px-5; } } } .transition-opacity-on-hover--context { .transition-opacity-on-hover--target { transition: opacity $gl-transition-duration-fast linear; &:hover { transition-delay: $gl-transition-duration-slow; } } &:hover { .transition-opacity-on-hover--target { transition-delay: $gl-transition-duration-slow; } } } .show-on-focus-or-hover--context { .show-on-focus-or-hover--target { opacity: 0; &:hover, &:focus { opacity: 1; } } &:hover, &:focus-within { .show-on-focus-or-hover--control { background-color: var(--super-sidebar-nav-item-hover-bg); } .show-on-focus-or-hover--target { opacity: 1; } } .show-on-focus-or-hover--control { &:hover, &:focus { + .show-on-focus-or-hover--target { opacity: 1; } } } } .hide-on-focus-or-hover--context { .hide-on-focus-or-hover--target { opacity: 1; } &:hover, &:focus-within { .hide-on-focus-or-hover--target { opacity: 0; } } .hide-on-focus-or-hover--control { &:hover, &:focus { .hide-on-focus-or-hover--target { opacity: 0; } } } } .super-sidebar-empty-pinned-text { mix-blend-mode: multiply; .gl-dark & { mix-blend-mode: screen; } } // Styles for the ScrollScrim component. // Should eventually be moved to gitlab-ui. // See https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1869 $scroll-scrim-height: 2.25rem; .gl-scroll-scrim { .top-scrim-wrapper, .bottom-scrim-wrapper { height: $scroll-scrim-height; opacity: 0; position: sticky; z-index: 1; display: block; left: 0; right: 0; pointer-events: none; transition: opacity 0.1s; } .top-scrim-wrapper { top: 0; margin-bottom: -$scroll-scrim-height; .top-scrim { background: linear-gradient(180deg, var(--super-sidebar-bg, $gray-10) 0%, $transparent-rgba 100%); } } .bottom-scrim-wrapper { bottom: 0; margin-top: -$scroll-scrim-height; .bottom-scrim { background: linear-gradient(180deg, $transparent-rgba 0%, var(--super-sidebar-bg, $gray-10)); } } .top-scrim, .bottom-scrim { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } &.top-scrim-visible .top-scrim-wrapper, &.bottom-scrim-visible .bottom-scrim-wrapper { opacity: 1; } } // Tweaks to the styles for the ScrollScrim component above (line 418) // are leaking into the collapsible list box dropdowns // https://gitlab.com/gitlab-org/gitlab/-/issues/435538 .gl-new-dropdown { .top-scrim-wrapper { margin-bottom: 0; } .bottom-scrim-wrapper { margin-top: 0; } }