@import '../jnt-variables';
@import '../elements/dot';
@import '../elements/icon';
@import '../jnt-hosts';
@import '../jnt-functions';

@mixin label-size($size, $wrapper) {
  padding: map-get($size, padding);
  font-size: map-get($size, font-size);
  #{$wrapper} [data-icon][child-of=jnt-label-host] {
    @include jnt-icon((size: map-get($size, icon-size)), '&');
  }
}
@mixin jnt-label($passed: (), $context: null, $strategy: 'changes') {
  $defs: (
    corner: $jnt-corner-small,
    background: $jnt-primary-color,
    font-size: inherit,
    border: 1px solid,
    color: null,
    dot: (
      size: 10px
    ),
    sizes: (
      small: (
        padding: 2px $jnt-gutter-small,
        font-size: 10px,
        icon-size: 12px
      ),
      normal: (
        padding: 3px $jnt-gutter-small,
        font-size: 12px,
        icon-size: 14px
      )
    )
  );
  $vars: $passed;
  $declare: false;
  $wrapper: null;
  @if $jnt-ng-deep {
    $wrapper: '::ng-deep';
  }
  @if $passed == () or $strategy == 'merge' {
    $vars: recursive-map-merge($defs, $passed);
    $declare: true;
  }
  #{if($context, $context, $jnt-label-host)} {
    @if $declare {
      display: inline-block;
      box-sizing: border-box;
      &[data-outline='ghost'] {
        background-color: transparent !important;
      }
      [data-text][child-of=jnt-label-host] {
        white-space: nowrap;
      }
    }
    border: map-get($vars, border);
    border-radius: map-get($vars, corner);
    font-size: map-get($vars, font-size);
    background: map-get($vars, background);
    @if map-has-key($vars, sizes) {
      @each $size, $map in map-get($vars, sizes) {
        &[data-size='#{$size}'] {
          @include label-size($map, $wrapper);
        }
      }
    }
    @if map-has-key($vars, dot) {
      $dot: map-get($vars, dot);
      #{$wrapper} [data-dot][child-of=jnt-label-host] {
        @include jnt-dot((size: map-get($dot, size)), '&');
      }
    }
  }
  #{$context} #{$wrapper} [data-icon][child-of=jnt-label-host] {
    line-height: 1;
  }
  #{$context} #{$wrapper} [data-text][child-of=jnt-label-host] {
    color: if(map-get($vars, color), map-get($vars, color) !important, null);
  }
}
@if $jnt-debug {
  @debug 'label compiled';
}
