@use 'sass:map';
@use '../context' as *;

@include layer(utilities, $use-css-layers, $layer-prefix) {
// border-radius
@include spread-map-into-utilities(
	$map: $border-radius,
	$class: rounded,
	$attribute: border-radius,
	$prop: rounded,
	$zero-specificity: $zero-specificity-for-utilities
);

@each $x-key, $x-value in (t: top, b: bottom) {
	@include spread-map-into-utilities(
		$map: $border-radius,
		$class: rounded- + $x-key,
		$attribute: (
			border- + $x-value + -left-radius,
			border- + $x-value + -right-radius,
		),
		$prop: rounded,
		$zero-specificity: $zero-specificity-for-utilities
	);

	@each $y-key, $y-value in (r: right, l: left) {
		@include spread-map-into-utilities(
			$map: $border-radius,
			$class: rounded- + $x-key + $y-key,
			$attribute: (
				border- + $x-value + '-' + $y-value + -radius,
			),
			$prop: rounded,
			$zero-specificity: $zero-specificity-for-utilities
		);
	}
}

// border-width
@include spread-map-into-utilities(
	$map: $border-width,
	$class: border,
	$attribute: border-width,
	$prop: border,
	$bps: $breakpoints,
	$zero-specificity: $zero-specificity-for-utilities
);
@include spread-map-into-utilities(
	$map: $border-width,
	$class: border-x,
	$attribute: (
		border-right-width,
		border-left-width,
	),
	$bps: $breakpoints,
	$prop: border,
	$zero-specificity: $zero-specificity-for-utilities
);
@include spread-map-into-utilities(
	$map: $border-width,
	$class: border-y,
	$attribute: (
		border-top-width,
		border-bottom-width,
	),
	$bps: $breakpoints,
	$prop: border,
	$zero-specificity: $zero-specificity-for-utilities
);

@each $key, $value in (t: top, r: right, b: bottom, l: left) {
	@include spread-map-into-utilities(
		$map: $border-width,
		$class: border- + $key,
		$attribute: (
			border- + $value + -width,
		),
		$bps: $breakpoints,
		$prop: border,
		$zero-specificity: $zero-specificity-for-utilities
	);
}

// border-style
@include spread-map-into-utilities(
	$map: $border-style,
	$class: border,
	$attribute: border-style,
	$bps: $breakpoints,
	$zero-specificity: $zero-specificity-for-utilities
);

}
