// Margin classes
/*
  * This will create a `margin: 0 !important;` rule as well
  * as a `margin-[top|right|bottom|left]: 0;`
*/

@use 'sass:map';
@use '../../config' as CONFIG;

@mixin margins(
  $start: map.get(CONFIG.$MARGINS_INTERNAL, 'start'),
  $end: map.get(CONFIG.$MARGINS_INTERNAL, 'end'),
  $multiplier: map.get(CONFIG.$MARGINS_INTERNAL, 'incrimentBy'),
) {
  $_positions: (
    'top',
    'bottom',
    'left',
    'right',
  );
  @if ($start == 0) {
    .u-margin-0 {
      &#{&} {
        // stylelint-disable-next-line
        margin: 0 !important;
      }
    }
  }
  @each $position in $_positions {
    $value: $start;
    @for $i from $start through $end {
      @if ($value < $end) {
        $value: if($i == $start, $value, $value + $multiplier);
        .u-margin-#{$position}-#{$value} {
          &#{&} {
            margin-#{$position}: #{$value}px;
          }
        }
        @if ($position == 'top') {
          .u-margin-block-#{$value} {
            &#{&} {
              margin-block: #{$value}px;
              margin-top: #{$value}px;
              margin-bottom: #{$value}px;
            }
          }
        } @else if ($position == 'left') {
          .u-margin-inline-#{$value} {
            &#{&} {
              margin-inline: #{$value}px;
              margin-left: #{$value}px;
              margin-right: #{$value}px;
            }
          }
          .u-margin-all-#{$value} {
            &#{&} {
              margin: #{$value}px;
            }
          }
        }
      }
    }
  }
}
