// Mediawiki.ui button mixins for MediaWiki (deprecated)
//
// Helper mixins used to create button styles. This file is importable
// by all LESS files via `@import 'mediawiki.ui/mixins.buttons.less';`.

/* stylelint-disable selector-class-pattern */

// Default button mixin.
.mw-ui-button() {
	// Container layout
	display: inline-block;
	box-sizing: border-box;
	margin: 0;
	border: @border-base;
	border-radius: @border-radius-base;
	cursor: pointer;
	// Ensure that buttons and inputs are nicely aligned when they have differing heights
	vertical-align: middle;
	// Inherit the font rather than apply user agent stylesheet (T72072)
	font-family: inherit;
	font-size: 1em;
	font-weight: bold;
	line-height: 1.28571429em;
	text-align: center;
	// Disable weird iOS styling
	/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
	-webkit-appearance: none;

	&:not( .mw-ui-icon-element ) {
		min-height: 32px;
		min-width: 4em;
		max-width: 28.75em; // equivalent to 460px, @see T95367
		padding: 5px 12px;
	}
}

// Mixin for button interaction states.
.mw-ui-button-states() {
	&:not( :disabled ) {
		// Add `transition`s exclusively on enabled buttons.
		transition-property: background-color, color, border-color, box-shadow;
		transition-duration: 100ms;

		// Make sure that `color` isn't inheriting from user-agent styles
		&:visited {
			color: @color-base;
		}

		&:hover {
			background-color: @background-color-base;
			color: @color-base--hover;
			border-color: @colorGray10;
		}

		&:focus {
			// Make sure that `color` isn't inheriting from user-agent styles
			color: @color-base;
			border-color: @border-color-base--focus;
			box-shadow: @box-shadow-primary--focus;
			outline-width: 0;

			// Remove the inner border and padding in Firefox.
			&::-moz-focus-inner {
				border-color: transparent;
				padding: 0;
			}
		}

		&:active,
		&.is-on {
			background-color: @colorGray12;
			color: @color-base--active;
			border-color: @colorGray7;
			box-shadow: none;
		}
	}

	&:disabled {
		background-color: @colorGray12;
		color: @color-base--inverted;
		border-color: @colorGray12;
		cursor: default;
	}
}

// Primary buttons mixin.
.mw-ui-button-colors-primary( @bgColor, @highlightColor, @activeColor ) {
	&:not( :disabled ) {
		background-color: @bgColor;
		color: #fff;
		// border of the same color as background so that light background and
		// dark background buttons are the same height and width
		border-color: @bgColor;

		&:hover {
			background-color: @highlightColor;
			border-color: @highlightColor;
		}

		&:focus {
			box-shadow: inset 0 0 0 1px @bgColor, inset 0 0 0 2px #fff;
		}

		&:active,
		&.is-on {
			background-color: @activeColor;
			border-color: @activeColor;
			box-shadow: none;
		}
	}

	&:disabled {
		background-color: @colorGray12;
		color: #fff;
		border-color: @colorGray12;
	}
}
