// ===================================
// ============= Mixins ==============
// ===================================

// Coloring support
// ===================================

@mixin lui_label_coloring($scheme) {
	& {
		background: map-get($scheme, color);
		color: map-get($scheme, text);
		@if luiIsLod($scheme) {
			text-shadow: 1px 0 1px darken(map-get($scheme, color), 5);
		}
	}
}
@mixin lui_labels_coloring($scheme) {
	.label { @include lui_label_coloring($scheme); }
}


// ===================================
// ============= Element =============
// ===================================

@if luiTheme(element, label, enabled) {
	@at-root #{$namespace} {
		$vars: luiTheme(element, label);

		#{$prefix}.label {
			display: inline-block;
			vertical-align: middle;
			font-size: map-get($vars, fontSize);
			padding: map-gets($vars, verticalPadding) map-gets($vars, horizontalPadding);
			margin: (map-get($vars, verticalMargin)) (map-get($vars, horizontalMargin));
			font-weight: normal;
			line-height: map-get($vars, lineHeight);
			text-align: map-get($vars, textAlign);
			white-space: nowrap;
			border-radius: map-gets($vars, borderRadius);

			// Icon support
			// ====
			#{$prefix}.icon, > i.icon {
				margin-right: map-get($vars, iconMargin);
				&[class*="right icon"] {
					margin-right: 0; margin-left: map-get($vars, iconMargin);
				}
			}

			// Circular
			// =====
			&.circular {
				display: inline-block;
				border-radius: 1em;
				&.icon:after {
					font-size: .5em;
				}
			}
		}


		// Sizing support
		// ===================================

		#{$prefix}.label {
			@include lui_supports_sizing();
		}


		// Addons
		// ===================================

		#{$prefix}.label[class*="with addon"],
		#{$prefix}.label[class*="with addons"] {
			@include display-flex(true);
			> .addon {
				display: inline-block;
				vertical-align: top;
				background: map-gets($vars, addonBackground);
				padding: map-gets($vars, verticalPadding) map-gets($vars, horizontalPadding);
				margin: (- map-gets($vars, verticalPadding)) (map-gets($vars, horizontalPadding)) (- map-gets($vars, verticalPadding)) (- map-gets($vars, horizontalPadding));
				&[class*="right addon"] {
					margin-right: -(map-gets($vars, horizontalPadding));
					margin-left: map-gets($vars, horizontalPadding);
				}
			}
		}

		// Labels: label collection
		// ===================================
		#{$prefix}.labels {
			padding: 0; margin: 0;
			> .label {
				margin: 0;
				&:not(:last-child) { margin-right: map-get($vars, horizontalMargin); }
			}
			@include lui_supports_sizing();
			@each $name, $scheme in luiPalettes() {
				&.#{map-get($scheme, class)} {
					@include lui_labels_coloring($scheme);
				}
			}
		}

		// Coloring support
		// ===================================

		#{$prefix}.label {
			// Default coloring scheme
			@include lui_label_coloring(map-gets($vars, defaultColoring));
			// Coloring support
			@each $name, $scheme in luiPalettes() {
				&.#{map-get($scheme, class)} {
					@include lui_label_coloring($scheme);
				}
			}
		}
	}
}
