@mixin menu-direction($direction: default) {
  @if $direction == default {
    $direction: "horizontal";
  }
  @if $direction == "vertical" {
    @include flex-direction(column);
  } @else {
    @include flex-direction(row);
  }
}

@mixin menu($horizontal-spacer: default, $horizontal-item-vertical-spacer: default, $wrap: default) {
  @if $horizontal-spacer == default {
    $horizontal-spacer: map-get($menu, horizontal-spacer);
  }
  @if $horizontal-item-vertical-spacer == default {
    $horizontal-item-vertical-spacer: map-get($menu, horizontal-item-vertical-spacer);
  }
  @if $wrap == default {
    $wrap: wrap;
  }
  @include flexbox();
  @include flex-wrap($wrap);
  margin-top: 0;
  margin-bottom: 0;
  & > li {
    @if $horizontal-item-vertical-spacer {
      margin-top: map-get($spacers, $horizontal-item-vertical-spacer);
      margin-bottom: map-get($spacers, $horizontal-item-vertical-spacer);
    }
    margin-right: map-get($spacers, $horizontal-spacer);
    list-style-type: none;
    &:last-child {
      margin-right: 0;
    }
  }
}

.menu {
  @include menu();
  @include menu-direction();
  @include align-items(center);
}

.menu--vertical {
  @include menu-direction("vertical");
  @include align-items(normal);
  & > li {
    margin-right: 0;
  }
}

.menu--inline {
  @include inline-flex();
}

.menu--center {
  @include justify-content(center);
}

.menu--nowrap {
  @include flex-wrap(nowrap);
}

.menu--grow {
  @include flex-grow(1);
}