////
/// Link Tool : link
/// @group link
////

@mixin _nest-link($settings: $links-settings, $size: md, $place: null, $icon: null, $from: null, $insert: true, $align-on-content: false, $override-icon: true) {
  $selector: null;
  $sizes: map_get($settings, sizes);
  $size-settings: map_get($sizes, $size);
  $border-radius: map-get($settings, border-radius);
  $places: map-get($links-settings, places);
  $append: map-get($settings, append);
  $forced-color: map_get($settings, forced-color);

  @if $insert {
    $selector: ns(map-get($settings, selector));

    @if $append != null {
      $selector: '#{$selector} #{$append}';
    }
  }

  @include nest($selector) {
    @include respond-from($from) {
      @include _build-link-size($size-settings, $border-radius);

      @if $icon != null {
        $restrain: _get-link-restrain($places, $place);
        $is-before: _get-link-is-before($places, $place);
        $icon-size: _get-link-icon-size($size-settings, $places, $place);
        @if $place != null {
          @include _build-link-icon($size-settings, $place, $size, $override-icon);
        }
        @include icon-style($restrain);
        @include icon-image($icon, $restrain);
        @include icon-content($is-before, $override-icon and not $is-before);
        @include icon-forced-color($forced-color, true, $restrain);
      }
      @else {
        @if $place != null {
          @include _build-link-icon($size-settings, $place, $size);
        }
        @else if $size != null {
          $restrain: _get-link-restrain($places, $place);
          $icon-size: _get-link-icon-size($size-settings, $places, $place);
          @include icon-size($icon-size, $restrain);
        }
      }

      @if map-get($settings, align-on-content) and $align-on-content {
        @include _link-align-on-content($size, $place, $size-settings);
      }

      @content;
    }
  }
}

@mixin nest-link($size:md, $place: null, $icon:null, $from: null, $insert: true, $align-on-content: false) {
  @include _nest-link($links-settings, $size, $place, $icon, $from, $insert, $align-on-content) {
    @content;
  }
}
