@import "./variables.less";
@import (reference) "../../button/style/variables.less";
@import (reference) "../../icon/style/variables.less";

.@{input-prefix} {
	.appearance();
	.touch-action();

	.input();

	&::placeholder {
		font: inherit;
		font-size: @font-size-medium;
		color: var(--text-placeholder);
		opacity: 1;
	}

	&::-ms-reveal {
		color: inherit;
		background-color: currentColor;
	}

	//noinspection CssInvalidPseudoSelector
	&::-webkit-credentials-auto-fill-button {
		color: inherit;
		background-color: currentColor;
	}

	//noinspection CssInvalidPseudoSelector
	&::-webkit-search-cancel-button,
	&::-webkit-contacts-auto-fill-button,
	&::-webkit-inner-spin-button,
	&::-webkit-credentials-auto-fill-button,
	&::-webkit-caps-lock-indicator {
		background-color: var(--text-secondary);
		cursor: pointer;
	}

	&-wrapper {
		position: relative;
		display: inline-flex;
		flex-flow: row nowrap;
		align-items: center;
		width: 100%;
		white-space: nowrap;
		z-index: 1;

		&-prefix .@{input-prefix} {
			border-start-start-radius: 0;
			border-end-start-radius: 0;
		}

		&-suffix .@{input-prefix} {
			border-start-end-radius: 0;
			border-end-end-radius: 0;
		}
	}

	&-clearable {
		padding-inline-end: @input-padding-icon;
	}

	&-inner {
		position: relative;
		width: 100%;
		z-index: 2;

		& > .@{icon-prefix} {
			position: absolute;
			inset-block-start: @input-icon-top;
			inset-inline-start: (@input-padding-inline * 0.5);
			transform: translateZ(0) scale(unit(@font-size-large));
			pointer-events: none;
			z-index: 3;
		}

		& .@{input-prefix}-clear {
			position: absolute;
			inset-block-start: @input-icon-top;
			inset-inline-end: (@input-padding-inline * 0.5);
			opacity: 1;
			z-index: 3;

			&::before {
				@pad: 0.25em;

				content: "";
				position: absolute;
				inset-block-start: -@pad;
				inset-block-end: 0;
				inset-inline-start: -@pad;
				inset-inline-end: 0;
				width: 100%;
				height: 100%;
				padding: @pad;
				box-sizing: content-box;
			}
		}
	}

	@media (hover: hover) {
		&:not(:hover, :focus) + &-clear:not(:hover):not([hidden]) {
			opacity: 0;
		}
	}

	&-prefix,
	&-suffix {
		position: relative;
		display: inline-block;
		padding: 0;
		height: @input-height;
		background-color: var(--input-bg-fix);
		border: @border-width-medium @border-style var(--input-border);
		border-radius: @input-border-radius-fix;
		font-size: @font-size-medium;
		transition: @transition-speed-fast @transition-easing;
		transition-property: background-color, border;
		z-index: 1;

		&:hover,
		&:focus,
		&:focus-within {
			z-index: 5;
		}

		&-text {
			padding-block: calc(@input-padding-block - @border-width-medium);
			padding-inline: @input-padding-inline;
		}

		& .@{btn-prefix} {
			margin: calc(@border-width-medium * -1);
			border-radius: inherit;
		}
	}

	&-prefix {
		margin-inline-end: calc(@border-width-medium * -1);
		border-start-end-radius: 0;
		border-end-end-radius: 0;
	}

	&-suffix {
		margin-inline-start: calc(@border-width-medium * -1);
		border-start-start-radius: 0;
		border-end-start-radius: 0;
	}

	&-icon {
		padding-inline-start: @input-padding-icon;
	}

	&-borderless {
		border-color: transparent !important;
	}
}
