@use 'mixins/mixins' as *;
@use 'mixins/var' as *;
@use 'common/var' as *;

@include b(popper) {
	@include set-component-css-var('popper', $popper);
}

@include b(popper) {
	position: absolute;
	border-radius: getCssVar('popper', 'border-radius');
	padding: 5px 11px;
	z-index: 2000;
	font-size: 12px;
	line-height: 20px;
	min-width: 10px;
	overflow-wrap: break-word;
	visibility: visible;

	$arrow-selector: #{& + '__arrow'};

	@include when(dark) {
		color: getCssVar('bg-color');
		background: getCssVar('text-color', 'primary');
		border: 1px solid getCssVar('text-color', 'primary');

		#{$arrow-selector}::before {
			border: 1px solid getCssVar('text-color', 'primary');
			background: getCssVar('text-color', 'primary');
			right: 0;
		}
	}

	@include when(light) {
		background: getCssVar('bg-color', 'overlay');
		border: 1px solid getCssVar('border-color', 'light');

		#{$arrow-selector}::before {
			border: 1px solid getCssVar('border-color', 'light');
			background: getCssVar('bg-color', 'overlay');
			right: 0;
		}
	}

	@include when(pure) {
		padding: 0;
	}

	@include e(arrow) {
		position: absolute;
		width: 10px;
		height: 10px;
		z-index: -1;

		&::before {
			position: absolute;
			width: 10px;
			height: 10px;
			z-index: -1;
			content: ' ';
			transform: rotate(45deg);
			background: getCssVar('text-color', 'primary');
			box-sizing: border-box;
		}
	}

	$placements: (
		'top': 'bottom',
		'bottom': 'top',
		'left': 'right',
		'right': 'left',
	);

	@each $placement, $opposite in $placements {
		&[data-popper-placement^='#{$placement}'] > #{$arrow-selector} {
			#{$opposite}: -5px;

			&::before {
				@if $placement == top {
					border-bottom-right-radius: 2px;
				}
				@if $placement == bottom {
					border-top-left-radius: 2px;
				}
				@if $placement == left {
					border-top-right-radius: 2px;
				}
				@if $placement == right {
					border-bottom-left-radius: 2px;
				}
			}
		}
	}

	@each $placement, $adjacency in ('top': 'left', 'bottom': 'right', 'left': 'bottom', 'right': 'top') {
		&[data-popper-placement^='#{$placement}'] {
			#{$arrow-selector}::before {
				border-#{$placement}-color: transparent !important;
				border-#{$adjacency}-color: transparent !important;
			}
		}
	}
}
