@mixin active-toggle {
  background-color: $gray-50 !important;
  mix-blend-mode: multiply;

  .gl-dark & {
    mix-blend-mode: screen;
  }
}

$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 $gray-10; // Same as the sidebar's background color.
  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(#{$header-height} + #{$calc-application-bars-height});
  width: calc(#{$super-sidebar-width} - #{$gl-spacing-scale-5});
  z-index: $super-sidebar-skip-to-z-index;
}

.super-sidebar {
  display: flex;
  flex-direction: column;
  position: fixed;
  top: calc(#{$header-height} + #{$calc-application-bars-height});
  bottom: $calc-application-footer-height;
  left: 0;
  background-color: var(--gray-10, $gray-10);
  border-right: 1px solid $t-gray-a-08;
  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: $t-gray-a-04;

    .tanuki-logo {
      @include gl-vertical-align-middle;
    }

    .user-bar-item,
    .tanuki-logo-container {
      @include gl-rounded-base;
      @include gl-p-2;
      @include gl-bg-transparent;
      @include gl-border-none;

      &:focus,
      &:active {
        @include gl-focus;
      }
    }

    .user-bar-item {
      &:hover,
      &:focus,
      &:active {
        @include active-toggle;
      }
    }

    $light-mode-btn-bg: #e0dfe5;
    $dark-mode-btn-bg: #53515b;

    .tanuki-logo-container {
      &:hover,
      &:focus,
      &:active {
        background-color: $light-mode-btn-bg;

        .gl-dark & {
          background-color: $dark-mode-btn-bg;
        }
      }
    }
  }

  .counter .gl-icon,
  .item-icon {
    color: var(--gray-600, $gray-500);
  }

  .counter:hover,
  .counter:focus,
  .counter[aria-expanded='true'] {
    background-color: $gray-50;
    border-color: transparent;
    mix-blend-mode: multiply;

    .gl-dark & {
      mix-blend-mode: screen;
    }

    .gl-icon {
      color: var(--gray-700, $gray-700);
    }
  }

  .counter:hover,
  .counter[aria-expanded='true'] {
    box-shadow: none;
  }

  .context-switcher .gl-new-dropdown-custom-toggle {
    width: 100%;
  }

  .context-switcher .gl-new-dropdown-panel {
    overflow-y: auto;
  }

  .context-switcher-search-box input {
    @include gl-font-sm;
  }

  .gl-new-dropdown-custom-toggle .context-switcher-toggle {
    &[aria-expanded='true'] {
      background-color: $t-gray-a-08;
    }

    &:focus {
      @include gl-focus($inset: true); }
  }

  .btn-with-notification {
    position: relative;

    .notification-dot-info {
      @include notification-dot($blue-500, 9px, 5px, 22px);
    }

    .notification-dot-warning {
      @include notification-dot($orange-300, 12px, 1px, 19px);
    }

    &:hover,
    &:focus {
      .notification {
        border-color: $gray-50; // Same as the button's hover background color.
      }
    }
  }

  .gl-new-dropdown-toggle[aria-expanded='true'] {
    @include active-toggle;
  }

  .gl-new-dropdown-custom-toggle {
    .btn-with-notification {
      mix-blend-mode: unset; // Our tertiary buttons otherwise use another mix-blend mode, making border-color semi-transparent.
    }

    [aria-expanded='true'] {
      @include active-toggle;
    }
  }

  .nav-item-link {
    button,
    .draggable-icon {
      opacity: 0;
    }

    .draggable-icon {
      cursor: grab;
    }

    &:hover {
      button,
      .draggable-icon {
        opacity: 1;
      }
    }

    &:hover,
    &:focus-within {
      .nav-item-badge {
        opacity: 0;
      }
    }

    &:focus button,
    button:focus {
      opacity: 1;
    }
  }

  #trial-status-sidebar-widget:hover {
    text-decoration: none;
    @include gl-text-contrast-light;
  }
}

.super-sidebar-overlay {
  display: none;
}

.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;
  }
}

.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: $black-transparent;
      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;
  }

  .is-searching {
    .in-search-scope-help {
      position: absolute;
      top: 0.625rem;
      right: 2.5rem;
    }
  }

  .gl-search-box-by-type-input-borderless {
    @include gl-rounded-base;
  }

  .global-search-results {
    max-height: 30rem;
  }
}
