// Gera estilos para Direção
@each $direction in $flex-directions {
  @include flex-direction($direction);
}

// Gera estilos para Justify content e Align items
@each $key, $value in $justify-content {
  @include flex-property("justify-content", $key, $value);
}

@each $key, $value in $align-items {
  @include flex-property("align-items", $key, $value);
}

@each $key, $value in $align-self {
  @include flex-property("align-self", $key, $value);
}

// Gera estilos para Grow e Shrink
@each $value in 1, 0 {
  @include flex-sizing("flex-grow", $value);
  @include flex-sizing("flex-shrink", $value);
}

// Gera estilo para Fill
.flex-fill {
  flex: $flex-fill;
}

// Gera estilos para Order
@each $key, $value in $flex-order {
  @include flex-order($key, $value);
}

// Gap

@each $key, $value in $spacings {
  // Não criar classes com valores "adjust"
  @if not str-index($key, "adjust-") {
    // Configura o alias para "0" se a chave for "none", caso contrário mantém apenas o último digito
    $alias: if($key == "none", "0", str-slice($key, -1));

    @include flex-gap($alias, $value);
  }
}

// Estilos com breakpoints
@each $breakpoint in "sm", "md", "lg", "xl" {
  @include media-breakpoint-up($breakpoint) {
    @each $direction in $flex-directions {
      @include flex-direction($direction, $breakpoint);
    }

    @each $key, $value in $justify-content {
      @include flex-property("justify-content", $key, $value, $breakpoint);
    }

    @each $key, $value in $align-items {
      @include flex-property("align-items", $key, $value, $breakpoint);
    }

    @each $key, $value in $align-self {
      @include flex-property("align-self", $key, $value, $breakpoint);
    }

    @each $value in 1, 0 {
      @include flex-sizing("flex-grow", $value, $breakpoint);
      @include flex-sizing("flex-shrink", $value, $breakpoint);
    }

    .flex-#{$breakpoint}-fill {
      flex: $flex-fill;
    }

    @each $key, $value in $flex-order {
      @include flex-order($key, $value, $breakpoint);
    }

    @each $key, $value in $spacings {
      // Não criar classes com valores "adjust"
      @if not str-index($key, "adjust-") {
        // Configura o alias para "0" se a chave for "none", caso contrário mantém apenas o último digito
        $alias: if($key == "none", "0", str-slice($key, -1));

        @include flex-gap($alias, $value, $breakpoint);
      }
    }
  }
}
