@import '../tools/mixins/margin';
@import '../tools/mixins/breakpoints';

.u-margin {
  margin: $margin-normal;

  @mixin createMargin($infix) {
    &#{$infix}--tiny {
      margin: $margin-tiny;
    }

    &#{$infix}--small {
      margin: $margin-small;
    }

    &#{$infix}--medium {
      margin: $margin-medium;
    }

    &#{$infix}--big {
      margin: $margin-big;
    }

    &#{$infix}--enormous {
      margin: $margin-enormous;
    }

    &#{$infix}--jumbo {
      margin: $margin-jumbo;
    }

    &#{$infix}--none {
      margin: 0;
    }

    @include u-margin(bottom, $infix);
    @include u-margin(top, $infix);
    @include u-margin(left, $infix);
    @include u-margin(right, $infix);
  }

  @each $breakpoint in map-keys($grid-breakpoints) {
    @include media-breakpoint-up($breakpoint) {
      $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

      @include createMargin($infix);
    }
  }

  @each $breakpoint in map-keys($print-grid-breakpoints) {
    @include media-breakpoint-up($breakpoint, $print-grid-breakpoints) {
      $infix: breakpoint-infix($breakpoint, $print-grid-breakpoints);

      @media print {
        @include createMargin($infix);
      }
    }
  }
}
