// Outputs properties based on contents of text()

$text-utililies: (
  font-feature-settings:
    map-collect(
      map-deep-get($system-properties, font-feature-settings, standard),
      map-deep-get($system-properties, font-feature-settings, extended)
    ),
  font-style:
    map-collect(
      map-deep-get($system-properties, font-style, standard),
      map-deep-get($system-properties, font-style, extended)
    ),
  font-weight:
    map-collect(
      map-deep-get($system-properties, font-weight, standard),
      map-deep-get($system-properties, font-weight, extended)
    ),
  letter-spacing:
    map-collect(
      map-deep-get($system-properties, letter-spacing, standard),
      map-deep-get($system-properties, letter-spacing, extended)
    ),
  text-align:
    map-collect(
      map-deep-get($system-properties, text-align, standard),
      map-deep-get($system-properties, text-align, extended)
    ),
  text-decoration:
    map-collect(
      map-deep-get($system-properties, text-decoration, standard),
      map-deep-get($system-properties, text-decoration, extended)
    ),
  text-transform:
    map-collect(
      map-deep-get($system-properties, text-transform, standard),
      map-deep-get($system-properties, text-transform, extended)
    ),
  vertical-align:
    map-collect(
      map-deep-get($system-properties, vertical-align, standard),
      map-deep-get($system-properties, vertical-align, extended)
    ),
  white-space:
    map-collect(
      map-deep-get($system-properties, white-space, standard),
      map-deep-get($system-properties, white-space, extended)
    ),
  color: map-collect($tokens-color-required),
);

@mixin u-text($value...) {
  $important: null;
  @if has-important($value) {
    $value: remove($value, "!important");
    $important: " !important";
  }
  @each $this-value in $value {
    $this-value: smart-quote($this-value);
    $match: false;
    @if map-has-key($all-color-shortcodes, $this-value) {
      $match: true;
      color: color($this-value) #{$important};
    } @else {
      @each $property, $map in $text-utililies {
        @if not $match and map-has-key($map, $this-value) {
          #{$property}: get-uswds-value($property, $this-value...)
            #{$important};
          $match: true;
        }
      }
    }
    @if not $match {
      @error '`#{$this-value}` is not a valid `text` value.';
    }
  }
}
