@use 'mixins/mixins';
@use './common/var';

@include mixins.b(switch) {
	display: inline-flex;
	align-items: center;
	position: relative;
	font-size: var.$switch-font-size;
	line-height: var.$switch-height;
	height: var.$switch-height;
	vertical-align: middle;
	@include mixins.when(disabled) {
		& .el-switch__core,
		& .el-switch__label {
			cursor: not-allowed;
		}
	}

	@include mixins.e(label) {
		transition: 0.2s;
		height: var.$switch-height;
		display: inline-block;
		font-size: var.$switch-font-size;
		font-weight: 500;
		cursor: pointer;
		vertical-align: middle;
		color: var(--color-text-dark);

		@include mixins.when(active) {
			color: var(--color-primary);
		}

		@include mixins.m(left) {
			margin-right: 10px;
		}
		@include mixins.m(right) {
			margin-left: 10px;
		}
		& * {
			line-height: 1;
			font-size: var.$switch-font-size;
			display: inline-block;
		}
	}

	@include mixins.e(input) {
		position: absolute;
		width: 0;
		height: 0;
		opacity: 0;
		margin: 0;
	}

	@include mixins.e(core) {
		margin: 0;
		display: inline-block;
		position: relative;
		width: var.$switch-width;
		height: var.$switch-height;
		border: 1px solid var.$switch-off-color;
		outline: none;
		border-radius: var.$switch-core-border-radius;
		box-sizing: border-box;
		background: var.$switch-off-color;
		cursor: pointer;
		transition: border-color 0.1s, background-color 0.1s;
		vertical-align: middle;

		&:after {
			content: '';
			position: absolute;
			top: 1px;
			left: 1px;
			border-radius: var.$border-radius-circle;
			transition: all 0.1s;
			width: var.$switch-button-size;
			height: var.$switch-button-size;
			background-color: var.$color-white;
		}
	}

	@include mixins.when(checked) {
		.el-switch__core {
			border-color: var.$switch-on-color;
			background-color: var.$switch-on-color;
			&::after {
				left: 100%;
				margin-left: -(var.$switch-button-size) - 1px;
			}
		}
	}

	@include mixins.when(disabled) {
		opacity: 0.6;
	}

	@include mixins.m(wide) {
		.el-switch__label {
			&.el-switch__label--left {
				span {
					left: 10px;
				}
			}
			&.el-switch__label--right {
				span {
					right: 10px;
				}
			}
		}
	}

	& .label-fade-enter,
	& .label-fade-leave-active {
		opacity: 0;
	}
}
