@import '../../style/themes/index';
@import '../../style/mixins/index';
@import './status';

@menu-prefix-cls: ~'@{ant-prefix}-menu';
@menu-animation-duration-normal: 0.15s;

.accessibility-focus() {
	box-shadow: 0 0 0 2px @primary-2;
}

// TODO: Should remove icon style compatible in v5

// default theme
.@{menu-prefix-cls} {
	.reset-component();

	margin-bottom: 0;
	padding-left: 0; // Override default ul/ol
	color: @menu-item-color;
	font-size: @menu-item-font-size;
	line-height: 0; // Fix display inline-block gap
	text-align: left;
	list-style: none;
	background: @menu-bg;
	outline: none;
	box-shadow: @box-shadow-base;
	transition: background @animation-duration-slow, width @animation-duration-slow cubic-bezier(0.2, 0, 0, 1) 0s;
	.clearfix();

	&&-root:focus-visible {
		.accessibility-focus();
	}

	ul,
	ol {
		margin: 0;
		padding: 0;
		list-style: none;
	}

	// Overflow ellipsis
	&-overflow {
		display: flex;

		&-item {
			flex: none;
		}
	}

	&-hidden,
	&-submenu-hidden {
		display: none;
	}

	&-item-group-title {
		height: @menu-item-group-height;
		padding: 8px 16px;
		color: @menu-item-group-title-color;
		font-size: @menu-item-group-title-font-size;
		line-height: @menu-item-group-height;
		transition: all @animation-duration-slow;
	}

	&-horizontal &-submenu {
		transition: border-color @animation-duration-slow @ease-in-out, background @animation-duration-slow @ease-in-out;
	}

	&-submenu,
	&-submenu-inline {
		transition: border-color @animation-duration-slow @ease-in-out, background @animation-duration-slow @ease-in-out,
			padding @menu-animation-duration-normal @ease-in-out;
	}

	&-submenu-selected {
		color: currentColor;
	}

	&-item:active,
	&-submenu-title:active {
		background: @menu-item-active-bg;
	}

	&-submenu &-sub {
		cursor: initial;
		transition: background @animation-duration-slow @ease-in-out, padding @animation-duration-slow @ease-in-out;
	}

	&-title-content {
		transition: color @animation-duration-slow;
	}

	&-item a {
		color: @menu-item-color;

		&:hover {
			color: @menu-highlight-color;
		}

		&::before {
			position: absolute;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;
			background-color: transparent;
			content: '';
		}
	}

	// https://github.com/ant-design/ant-design/issues/19809
	&-item > .@{ant-prefix}-badge a {
		color: @menu-item-color;

		&:hover {
			color: @menu-highlight-color;
		}
	}

	&-item-divider {
		overflow: hidden;
		line-height: 0;
		border-color: @border-color-split;
		border-style: solid;
		border-width: 1px 0 0;
	}

	&-item-divider-dashed {
		border-style: dashed;
	}

	&-horizontal &-item,
	&-horizontal &-submenu {
		margin-top: -1px;
	}

	&-horizontal > &-item:hover,
	&-horizontal > &-item-active,
	&-horizontal > &-submenu &-submenu-title:hover {
		background-color: transparent; /* fixme */
	}

	&-item-selected {
		color: @menu-highlight-color;

		a,
		a:hover {
			color: @menu-highlight-color;
		}
	}

	&:not(&-horizontal) &-item-selected {
		background-color: @white; // rgba(@menu-highlight-color, 0.15);
	}

	/* &-inline,
	&-vertical,
	&-vertical-left {
		border-right: @border-width-base @border-style-base @border-color-split;
	} */

	/* &-vertical-right {
		border-left: @border-width-base @border-style-base @border-color-split;
	} */

	&-vertical&-sub,
	&-vertical-left&-sub,
	&-vertical-right&-sub {
		min-width: 160px;
		max-height: calc(100vh - 100px);
		padding: 0;
		overflow: hidden;
		border-right: 0;

		// https://github.com/ant-design/ant-design/issues/22244
		// https://github.com/ant-design/ant-design/issues/26812
		&:not([class*='-active']) {
			overflow-x: hidden;
			overflow-y: auto;
		}

		.@{menu-prefix-cls}-item {
			left: 0;
			margin-left: 0;
			border-right: 0;

			&::after {
				border-right: 0;
			}
		}
		> .@{menu-prefix-cls}-item,
		> .@{menu-prefix-cls}-submenu {
			transform-origin: 0 0;
		}
	}

	&-horizontal&-sub {
		min-width: 114px; // in case of submenu width is too big: https://codesandbox.io/s/qvpwm6mk66
	}

	&-horizontal &-item,
	&-horizontal &-submenu-title {
		transition: border-color @animation-duration-slow, background @animation-duration-slow;
	}

	&-item,
	&-submenu-title {
		position: relative;
		display: block;
		margin: 0;
		padding: @menu-item-padding;
		white-space: nowrap;
		cursor: pointer;
		transition: border-color @animation-duration-slow, background @animation-duration-slow,
			padding @animation-duration-slow @ease-in-out;

		.@{menu-prefix-cls}-item-icon,
		.@{iconfont-css-prefix} {
			min-width: 14px;
			font-size: @menu-icon-size;
			transition: font-size @menu-animation-duration-normal @ease-out, margin @animation-duration-slow @ease-in-out,
				color @animation-duration-slow;

			+ span {
				margin-left: @menu-icon-margin-right;
				opacity: 1;
				transition: opacity @animation-duration-slow @ease-in-out, margin @animation-duration-slow, color @animation-duration-slow;
			}
		}

		.@{menu-prefix-cls}-item-icon.svg {
			vertical-align: -0.125em;
		}

		&.@{menu-prefix-cls}-item-only-child {
			> .@{iconfont-css-prefix},
			> .@{menu-prefix-cls}-item-icon {
				margin-right: 0;
			}
		}

		&:focus-visible {
			.accessibility-focus();
		}
	}

	& > &-item-divider {
		margin: 1px 0;
		padding: 0;
	}

	&-submenu {
		&-popup {
			position: absolute;
			z-index: @zindex-dropdown;
			background: transparent;
			border-radius: @border-radius-base;
			box-shadow: none;
			transform-origin: 0 0;

			// https://github.com/ant-design/ant-design/issues/13955
			&::before {
				position: absolute;
				top: -7px;
				right: 0;
				bottom: 0;
				left: 0;
				z-index: -1;
				width: 100%;
				height: 100%;
				opacity: 0.0001;
				content: ' ';
			}
		}

		.@{menu-prefix-cls}-item-group-title {
			font-weight: 700;
		}

		// https://github.com/ant-design/ant-design/issues/13955
		&-placement-rightTop::before {
			top: 0;
			left: -7px;
		}

		> .@{menu-prefix-cls} {
			background-color: @menu-bg;
			border-radius: @border-radius-base;

			&-submenu-title::after {
				transition: transform @animation-duration-slow @ease-in-out;
			}
		}

		&-popup > .@{menu-prefix-cls} {
			background-color: @menu-popup-bg;
		}

		&-expand-icon,
		&-arrow {
			position: absolute;
			top: 50%;
			right: 16px;
			width: 10px;
			color: @menu-item-color;
			transform: translateY(-50%);
			transition: transform @animation-duration-slow @ease-in-out;
		}

		&-arrow {
			// →
			&::before,
			&::after {
				position: absolute;
				width: 6px;
				height: 1.5px;
				background-color: currentcolor;
				border-radius: 2px;
				transition: background @animation-duration-slow @ease-in-out, transform @animation-duration-slow @ease-in-out,
					top @animation-duration-slow @ease-in-out, color @animation-duration-slow @ease-in-out;
				content: '';
			}

			&::before {
				transform: rotate(45deg) translateY(-2.5px);
			}

			&::after {
				transform: rotate(-45deg) translateY(2.5px);
			}
		}

		// &:hover > &-title > &-expand-icon,
		// &:hover > &-title > &-arrow {
		// 	color: @menu-highlight-color;
		// }

		&:hover > &-title,
		&:hover > &-title {
			color: currentColor;
			background-color: rgba(@menu-highlight-color, 0.15);
		}

		.@{menu-prefix-cls}-inline-collapsed &-arrow,
		&-inline &-arrow {
			// ↓
			&::before {
				transform: rotate(-45deg) translateX(2.5px);
			}

			&::after {
				transform: rotate(45deg) translateX(-2.5px);
			}
		}

		&-horizontal &-arrow {
			display: none;
		}

		&-inline > .@{menu-prefix-cls}-submenu-title,
		&-vertical > .@{menu-prefix-cls}-submenu-title,
		&-vertical.@{menu-prefix-cls}-submenu {
			border-radius: @border-radius-base;
		}

		&-open&-inline > .@{menu-prefix-cls}-submenu-title,
		&-selected&-inline > .@{menu-prefix-cls}-submenu-title,
		&-open&-vertical > .@{menu-prefix-cls}-submenu-title,
		&-selected&-vertical > .@{menu-prefix-cls}-submenu-title {
			background-color: @white;
			color: @dbk-primary;
		}

		&-open&-inline > &-title > &-arrow {
			// ↑
			transform: translateY(-2px);

			&::after {
				transform: rotate(-45deg) translateX(-2.5px);
			}

			&::before {
				transform: rotate(45deg) translateX(2.5px);
			}
		}
	}

	&-vertical &-submenu-selected,
	&-vertical-left &-submenu-selected,
	&-vertical-right &-submenu-selected {
		color: @menu-highlight-color;
		background-color: @white;
	}

	&-horizontal {
		line-height: @menu-horizontal-line-height;
		border: 0;
		// border-bottom: @border-width-base @border-style-base @border-color-split;
		box-shadow: none;

		&:not(.@{menu-prefix-cls}-dark) {
			> .@{menu-prefix-cls}-item,
			> .@{menu-prefix-cls}-submenu {
				margin-top: -1px;
				margin-bottom: 0;

				&:hover,
				&-active,
				&-open,
				&-selected {
					> .@{menu-prefix-cls}-submenu-title {
						color: @menu-highlight-color;
						background-color: @white;
					}
				}
			}

			> .@{menu-prefix-cls}-item,
			> .@{menu-prefix-cls}-submenu > .@{menu-prefix-cls}-submenu-title {
				position: relative;
				margin-top: -1px;
				margin-bottom: 0;
				padding: @menu-item-padding;
				border-radius: @border-radius-base;
				margin: 0 10px;

				&:not(:nth-last-child(2))::after {
					position: absolute;
					top: (@menu-item-padding-horizontal / 2);
					right: -10px;
					left: 100%;
					bottom: (@menu-item-padding-horizontal / 2);
					border-right: 1px solid rgba(@white, 0.5);
					transition: border-color @animation-duration-slow @ease-in-out;
					content: '';
				}

				&:hover,
				&-active,
				&-open,
				&-selected {
					color: @menu-highlight-color;
					background-color: @white;

					// &::after {
					// 	border-bottom: 2px solid @menu-highlight-color;
					// }
				}
			}
		}

		> .@{menu-prefix-cls}-item,
		> .@{menu-prefix-cls}-submenu {
			position: relative;
			top: 1px;
			display: inline-block;
			vertical-align: bottom;

			/* &::after {
				position: absolute;
				right: @menu-item-padding-horizontal;
				bottom: 0;
				left: @menu-item-padding-horizontal;
				border-bottom: 2px solid transparent;
				transition: border-color @animation-duration-slow @ease-in-out;
				content: '';
			} */
		}

		> .@{menu-prefix-cls}-submenu > .@{menu-prefix-cls}-submenu-title {
			padding: 0;
		}

		> .@{menu-prefix-cls}-item {
			a {
				color: @menu-item-color;

				&:hover {
					color: @menu-highlight-color;
				}

				&::before {
					bottom: -2px;
				}
			}

			&-selected a {
				color: @menu-highlight-color;
			}
		}

		&::after {
			display: block;
			clear: both;
			height: 0;
			content: '\20';
		}
	}

	&-vertical,
	&-vertical-left,
	&-vertical-right,
	&-inline {
		.@{menu-prefix-cls}-item {
			position: relative;
			border-radius: @border-radius-base;
			margin-top: 10px;
			margin-bottom: 10px;

			&:hover {
				color: currentColor;
				background-color: rgba(@menu-highlight-color, 0.15);

				// &::after {
				// 	border-bottom: 2px solid @menu-highlight-color;
				// }
			}

			&-active,
			&-open,
			&-selected {
				color: @menu-highlight-color;
				background-color: @white;

				> .@{menu-prefix-cls}.@{menu-prefix-cls}-sub {
					background-color: red !important;
				}
			}

			/* &::after {
				position: absolute;
				top: 0;
				right: 0;
				bottom: 0;
				// border-right: @menu-item-active-border-width solid @menu-highlight-color;
				transform: scaleY(0.0001);
				opacity: 0;
				transition: transform @menu-animation-duration-normal @ease-out, opacity @menu-animation-duration-normal @ease-out;
				content: '';
			} */
		}

		.@{menu-prefix-cls}-item,
		.@{menu-prefix-cls}-submenu-title {
			height: @menu-item-height;
			// margin-top: @menu-item-vertical-margin;
			// margin-bottom: @menu-item-vertical-margin;
			padding: 0 16px;
			overflow: hidden;
			line-height: @menu-item-height;
			text-overflow: ellipsis;
		}

		// disable margin collapsed
		.@{menu-prefix-cls}-submenu {
			padding-bottom: 0.02px;
		}

		/* .@{menu-prefix-cls}-item:not(:last-child) {
			margin-bottom: @menu-item-boundary-margin;
		} */

		> .@{menu-prefix-cls}-item,
		> .@{menu-prefix-cls}-submenu > .@{menu-prefix-cls}-submenu-title {
			height: @menu-inline-toplevel-item-height;
			line-height: @menu-inline-toplevel-item-height;
		}
	}

	&-vertical {
		.@{menu-prefix-cls}-item-group-list .@{menu-prefix-cls}-submenu-title,
		.@{menu-prefix-cls}-submenu-title {
			padding-right: 34px;
		}
	}

	&-inline {
		width: 100%;
		.@{menu-prefix-cls}-selected,
		.@{menu-prefix-cls}-item-selected {
			&::after {
				transform: scaleY(1);
				opacity: 1;
				transition: transform @menu-animation-duration-normal @ease-in-out, opacity @menu-animation-duration-normal @ease-in-out;
			}
		}

		.@{menu-prefix-cls}-item,
		.@{menu-prefix-cls}-submenu-title {
			width: ~'calc(100% + 1px)';
		}

		.@{menu-prefix-cls}-item-group-list .@{menu-prefix-cls}-submenu-title,
		.@{menu-prefix-cls}-submenu-title {
			padding-right: 34px;
		}

		// Motion enhance for first level
		&.@{menu-prefix-cls}-root {
			.@{menu-prefix-cls}-item,
			.@{menu-prefix-cls}-submenu-title {
				display: flex;
				align-items: center;
				transition: background @animation-duration-slow, padding 0.1s @ease-out;
				position: relative;
				margin-top: 10px;
				margin-bottom: 10px;

				&:not(:last-child)::after {
					position: absolute;
					top: 100%;
					bottom: -10px;
					left: (@menu-item-padding-horizontal / 2);
					right: (@menu-item-padding-horizontal / 2);
					border-bottom: 1px solid rgba(@white, 0.5);
					transition: border-color @animation-duration-slow @ease-in-out;
					content: '';
				}

				> .@{menu-prefix-cls}-title-content {
					flex: auto;
					min-width: 0;
					overflow: hidden;
					text-overflow: ellipsis;
				}

				> * {
					flex: none;
				}
			}
		}
	}

	&&-inline-collapsed {
		width: @menu-collapsed-width;

		> .@{menu-prefix-cls}-item,
		> .@{menu-prefix-cls}-item-group > .@{menu-prefix-cls}-item-group-list > .@{menu-prefix-cls}-item,
		> .@{menu-prefix-cls}-item-group
			> .@{menu-prefix-cls}-item-group-list
			> .@{menu-prefix-cls}-submenu
			> .@{menu-prefix-cls}-submenu-title,
		> .@{menu-prefix-cls}-submenu > .@{menu-prefix-cls}-submenu-title {
			left: 0;
			padding: 0 ~'calc(50% - @{menu-icon-size-lg} / 2)';
			text-overflow: clip;

			.@{menu-prefix-cls}-submenu-arrow {
				opacity: 0;
			}

			.@{menu-prefix-cls}-item-icon,
			.@{iconfont-css-prefix} {
				margin: 0;
				font-size: @menu-icon-size-lg;
				line-height: @menu-item-height;

				+ span {
					display: inline-block;
					opacity: 0;
				}
			}
		}

		.@{menu-prefix-cls}-item-icon,
		.@{iconfont-css-prefix} {
			display: inline-block;
		}

		&-tooltip {
			pointer-events: none;

			.@{menu-prefix-cls}-item-icon,
			.@{iconfont-css-prefix} {
				display: none;
			}

			a {
				color: @text-color-dark;
			}
		}

		.@{menu-prefix-cls}-item-group-title {
			padding-right: 4px;
			padding-left: 4px;
			overflow: hidden;
			white-space: nowrap;
			text-overflow: ellipsis;
		}
	}

	&-item-group-list {
		margin: 0;
		padding: 0;
		.@{menu-prefix-cls}-item,
		.@{menu-prefix-cls}-submenu-title {
			padding: 0 16px 0 28px;
		}
	}

	&-root&-vertical,
	&-root&-vertical-left,
	&-root&-vertical-right,
	&-root&-inline {
		box-shadow: none;
	}

	&-root&-inline-collapsed {
		.@{menu-prefix-cls}-item,
		.@{menu-prefix-cls}-submenu .@{menu-prefix-cls}-submenu-title {
			> .@{menu-prefix-cls}-inline-collapsed-noicon {
				font-size: @menu-icon-size-lg;
				text-align: center;
			}
		}
	}

	&-sub&-inline {
		padding: 0;
		background: transparent;
		border: 0;
		border-radius: 0;
		box-shadow: none;
		& > .@{menu-prefix-cls}-item,
		& > .@{menu-prefix-cls}-submenu > .@{menu-prefix-cls}-submenu-title {
			height: @menu-item-height;
			line-height: @menu-item-height;
			list-style-position: inside;
			list-style-type: disc;
		}

		& .@{menu-prefix-cls}-item-group-title {
			padding-left: 32px;
			color: currentcolor;
		}
	}

	// Disabled state sets text to gray and nukes hover/tab effects
	&-item-disabled,
	&-submenu-disabled {
		color: @disabled-color !important;
		background: none;
		cursor: not-allowed;

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

		a {
			color: @disabled-color !important;
			pointer-events: none;
		}
		> .@{menu-prefix-cls}-submenu-title {
			color: @disabled-color !important;
			cursor: not-allowed;
			> .@{menu-prefix-cls}-submenu-arrow {
				&::before,
				&::after {
					background: @disabled-color !important;
				}
			}
		}
	}
}

// Integration with header element so menu items have the same height
.@{ant-prefix}-layout-header {
	.@{menu-prefix-cls} {
		line-height: inherit;
	}
}

// https://github.com/ant-design/ant-design/issues/32950
.@{ant-prefix}-menu-inline-collapsed-tooltip {
	a,
	a:hover {
		color: @white;
	}
}

@import './light';
@import './dark';
@import './rtl';
