Newer
Older
vmk-ui-kit / src / scss / components / _bottom-bar.scss
@Eugene Sukhodolskiy Eugene Sukhodolskiy 20 hours ago 2 KB so many changes
/* =========================
   Bottom Bar
   Figma: Bottom Bar Container.
   Floating pill nav for primary app sections.
========================= */

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

.bottom-bar {
  display: inline-flex;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: $space-1;
  border-radius: $radius-full;
  background-color: $neutral-0;
  box-shadow:
    0 4px 24px rgba($neutral-900, 0.08),
    0 1px 2px rgba($neutral-900, 0.04),
    inset 0 0 0 1px rgba($neutral-900, 0.04);

  &--stacked {
    gap: $space-1;
  }

  &--inline {
    gap: $space-1;
    background-color: transparent;
    box-shadow: none;
    padding: 0;
  }

  &__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: $space-1;
    padding: $space-2 $space-4;
    border: 0;
    border-radius: $radius-full;
    background-color: transparent;
    color: $neutral-500;
    font-family: inherit;
    font-size: $font-size-xs;
    font-weight: $font-weight-semibold;
    line-height: $line-height-tight;
    text-decoration: none;
    cursor: pointer;
    transition:
      color $motion-base $motion-ease,
      background-color $motion-base $motion-ease,
      box-shadow $motion-base $motion-ease;

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

    &:hover:not(.is-active) {
      color: $neutral-700;
    }

    .bottom-bar--stacked & {
      flex-direction: column;
      min-width: 64px;
      padding: $space-2 $space-3;
    }

    .bottom-bar--inline &.is-active,
    .bottom-bar--inline &:active {
      background-color: $neutral-0;
      color: $color-secondary;
      box-shadow:
        0 4px 24px rgba($neutral-900, 0.08),
        0 1px 2px rgba($neutral-900, 0.04),
        inset 0 0 0 1px rgba($neutral-900, 0.04);
    }

    &.is-active {
      color: $color-secondary;

      .bottom-bar--stacked & {
        background-color: transparent;
        box-shadow: none;
      }
    }
  }

  &__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: $icon-size-md;
    height: $icon-size-md;
    flex-shrink: 0;
    color: currentColor;

    svg {
      width: 100%;
      height: 100%;
      fill: currentColor;
    }
  }

  &__label {
    white-space: nowrap;
  }
}