Newer
Older
vmk-ui-kit / src / scss / components / _top-navbar.scss
@Eugene Sukhodolskiy Eugene Sukhodolskiy 19 hours ago 3 KB so many changes
/* =========================
   Top Navbar
   Figma: Top Navbar.
   App-level header bars: ghost (transparent over dark bg), solid white,
   centered logo, and compact mobile header.
========================= */

@use "../kit-deps" as *;

.top-navbar {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: $space-4;
  width: 100%;

  &--ghost {
    padding: $space-4 $space-5;
    color: $neutral-0;
  }

  &--solid {
    padding: $space-3 $space-5;
    background-color: $neutral-0;
    border-bottom: $border-width-base $border-style-base $neutral-100;
    color: $neutral-900;

    .top-navbar__center .top-navbar__title {
      color: $color-secondary;
    }
  }

  &--centered {
    justify-content: center;
    padding: $space-5;
    background-color: transparent;
    color: $neutral-0;
  }

  &--compact {
    padding: $space-2 $space-4;
    background-color: $neutral-0;
    border-bottom: $border-width-base $border-style-base $neutral-100;
    color: $neutral-900;

    .top-navbar__center .top-navbar__title {
      color: $color-secondary;
    }
  }

  &__brand {
    display: inline-flex;
    align-items: center;
    gap: $space-3;
    min-width: 0;
    text-decoration: none;
    color: inherit;

    &:hover {
      color: inherit;
    }
  }

  &__logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: $radius-full;
    background: radial-gradient(circle, $yellow-300 40%, $mint-500 41%, $mint-500 100%);
    box-shadow: inset 0 0 0 2px rgba($neutral-0, 0.6);

    &--sm {
      width: 32px;
      height: 32px;
    }
  }

  &__title {
    margin: 0;
    font-size: $font-size-lg;
    font-weight: $font-weight-bold;
    line-height: $line-height-tight;
    color: inherit;
  }

  &__center {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    gap: $space-3;
    max-width: 60%;

    &--stack {
      flex-direction: column;
      gap: $space-1;
    }

    .top-navbar--centered & {
      position: static;
      transform: none;
      max-width: none;
    }

    .top-navbar--compact & {
      position: static;
      transform: none;
      flex: 1 1 auto;
      justify-content: center;
      max-width: none;
    }
  }

  &__actions {
    display: inline-flex;
    align-items: center;
    gap: $space-3;
    margin-left: auto;
    min-width: 0;
  }

  &__meta {
    display: block;
    color: $neutral-500;
    font-size: $font-size-sm;
  }

  &__pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: $space-2;
    padding: $space-2 $space-4;
    border-radius: $radius-full;
    border: $border-width-base $border-style-base $neutral-200;
    background-color: $neutral-0;
    color: $color-secondary;
    font-size: $font-size-sm;
    font-weight: $font-weight-semibold;
    text-decoration: none;
    cursor: pointer;
    transition:
      background-color $motion-base $motion-ease,
      border-color $motion-base $motion-ease,
      color $motion-base $motion-ease;

    &:focus-visible {
      @include focus_ring;
      outline-offset: 2px;
    }

    &:hover {
      background-color: $neutral-50;
      border-color: $neutral-300;
    }

    .vmk-icon,
    .ph {
      color: currentColor;
    }
  }
}