.label {
	@include clay-label-variant($label);

	// Inline Item in Labels are deprecated in v2.0.0-rc.11 use .label-item
	// pattern instead
	.inline-item {
		a {
			align-items: center;
			display: inline-flex;
			margin-top: $label-lexicon-icon-margin-top;
		}

		.btn-unstyled {
			color: inherit;
			display: inline-flex;
			margin-top: $label-lexicon-icon-margin-top;
			max-width: none;
		}

		.close {
			color: inherit;
			display: inline-flex;
			float: none;
			font-size: inherit;
			margin-top: $label-lexicon-icon-margin-top;
			opacity: 1;
		}

		a,
		.btn-unstyled,
		.close {
			.lexicon-icon {
				margin-top: 0;
			}
		}

		.lexicon-icon {
			height: $label-lexicon-icon-height;
			margin-top: $label-lexicon-icon-margin-top;
			width: $label-lexicon-icon-width;
		}
	}
}

.label-dismissible {
	@include clay-css($label-dismissible);
}

.label-item {
	@include clay-css($label-item);

	a {
		@include clay-link(map-get($label-item, link));
	}

	.btn-unstyled {
		@include clay-button-variant(map-get($label-item, btn-unstyled));
	}

	.close {
		@include clay-close(map-get($label-item, close));
	}

	.lexicon-icon {
		@include clay-css(map-get($label-item, lexicon-icon));
	}

	.text-truncate-inline {
		@include clay-css(map-get($label-item, text-truncate-inline));
	}
}

.label-item-expand {
	@include clay-css($label-item-expand);

	a {
		@include clay-link(map-get($label-item-expand, link));
	}
}

.label-item-before {
	@include clay-css($label-item-before);
}

.label-item-after {
	@include clay-css($label-item-after);
}

// Label Sizes

@each $size, $value in $label-sizes {
	@if not clay-is-map-unset($value) {
		$selector: if(
			starts-with($size, '.') or
				starts-with($size, '#') or
				starts-with($size, '%'),
			$size,
			str-insert($size, '.', 1)
		);

		@if (starts-with($size, '%') or map-get($value, extend)) {
			#{$selector} {
				@include clay-label-variant($value);
			}
		} @else if (starts-with($size, 'label-')) {
			$placeholder: '%#{size}';

			#{$placeholder} {
				@include clay-label-variant($value);
			}

			#{$selector} {
				@extend #{$placeholder} !optional;
			}
		} @else {
			#{$selector} {
				@include clay-label-variant($value);
			}
		}
	}
}

// Label Variants

@each $color, $value in $label-palette {
	@if not clay-is-map-unset($value) {
		$deprecated-keys: 'primary', 'secondary', 'success', 'info', 'warning',
			'danger', 'dark', 'light';

		$selector: if(
			starts-with($color, '.') or
				starts-with($color, '#') or
				starts-with($color, '%'),
			$color,
			str-insert($color, '.label-', 1)
		);

		@if (starts-with($color, '%') or map-get($value, extend)) {
			#{$selector} {
				@include clay-label-variant($value);
			}
		} @else if
			(
				starts-with($color, 'inverse-') or
					index($deprecated-keys, '#{$color}') !=
					null
			)
		{
			$placeholder: '%label-#{$color}';

			#{$placeholder} {
				@include clay-label-variant($value);
			}

			#{$selector} {
				@extend #{$placeholder} !optional;
			}
		} @else {
			#{$selector} {
				@include clay-label-variant($value);
			}
		}
	}
}
