// @gruapl/icons link base styles.
//
// This module provides icon component integration for the link component.
//
// It sets the `--graupl-icon-color` custom property to the appropriate `--graupl-link-color` property.
//
// The following selectors are generated by default:
// - `a`: The link component.
//
// The following custom properties control the generated selectors:
// - N/A
//
// The following variables control the generated selectors:
// - N/A
//
// @example
// <a href="#" class="icon-after">Link</a>

@use "pkg:@graupl/core/src/defaults" as root-defaults;
@use "pkg:@graupl/core/src/base/link/defaults" as link-defaults;
@use "pkg:@graupl/core/src/base/link/variables" as link;
@use "pkg:@graupl/core/src/mixins/layer" as *;
@use "pkg:@graupl/core/src/mixins/theme";
@use "../../component/icon/mixins" as icon;
@use "../../component/icon/defaults" as icon-defaults;
@use "variables" as *;

@include layer(theme) {
  // a
  #{link-defaults.$link-selector-base}#{link-defaults.$link-selector} {
    // &.icon, &.icon-before, &.icon-after
    &#{icon-defaults.$icon-selector-base}#{icon-defaults.$icon-selector},
    &#{icon-defaults.$icon-selector-base}#{icon-defaults.$icon-before-selector},
    &#{icon-defaults.$icon-selector-base}#{icon-defaults.$icon-after-selector} {
      @include icon.bind(link.$link-color, link.$link-color-states);

      @if root-defaults.$themeable-components and link-defaults.$themeable {
        @each $color, $map in link-defaults.$link-theme-map {
          // &.primary, &.secondary, &.tertiary
          &#{link-defaults.$link-theme-selector-base}#{link-defaults.$link-theme-selector-prefix}#{$color} {
            @include icon.bind(link.$link-color, link.$link-color-states);
          }
        }
      }
    }
  }
}
