2023-10-02 18:15:06 +00:00
|
|
|
/**
|
2024-01-09 14:46:11 +00:00
|
|
|
* Less mixins.
|
2023-10-02 18:15:06 +00:00
|
|
|
*/
|
|
|
|
@import 'mediawiki.mixins.less';
|
|
|
|
|
2024-01-09 14:46:11 +00:00
|
|
|
.mixin-vector-page-container-sizing() {
|
|
|
|
// Set a min-width to make explicit we do not support anything below this threshold.
|
|
|
|
// For devices too small, they should be more useable with horizontal scrolling.
|
|
|
|
// e.g. Portrait on an iPad
|
|
|
|
min-width: @min-width-supported;
|
|
|
|
max-width: @max-width-page-container;
|
|
|
|
padding-left: @padding-horizontal-page-container;
|
|
|
|
padding-right: @padding-horizontal-page-container;
|
|
|
|
box-sizing: border-box;
|
2023-10-02 18:15:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
.mixin-vector-arrowed-dropdown-toggle() {
|
|
|
|
display: inline-flex;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
content: '';
|
2024-01-09 14:46:11 +00:00
|
|
|
background: url( ../skins.vector.styles/images/arrow-down.svg ) 100% 50% no-repeat;
|
2023-10-18 15:58:49 +00:00
|
|
|
width: unit( 12 / @font-size-browser, rem );
|
|
|
|
height: unit( 12 / @font-size-browser, rem );
|
2023-10-02 18:15:06 +00:00
|
|
|
// https://phabricator.wikimedia.org/T319070#8284272
|
2023-10-18 15:58:49 +00:00
|
|
|
margin-left: 7px;
|
2024-05-23 22:30:51 +00:00
|
|
|
|
2024-08-08 20:06:33 +00:00
|
|
|
@media screen {
|
|
|
|
html.skin-theme-clientpref-night & {
|
|
|
|
// For night-mode, invert icons so they go from black to white.
|
|
|
|
// Since invert( 1 ) changes the hue (e.g. from blue to orange)
|
|
|
|
// hue-rotate( 180deg ) changes the hue back to that of the original color.
|
|
|
|
// This slightly corrects progressive/destructive colored icons
|
|
|
|
// (although their lightness & saturation are still different, e.g. language button).
|
|
|
|
filter: invert( 1 ) hue-rotate( 180deg );
|
|
|
|
}
|
2024-05-23 22:30:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Auto night mode.
|
|
|
|
*
|
|
|
|
* Applies the night mode color palette only in response to system settings.
|
|
|
|
*/
|
2024-08-08 20:06:33 +00:00
|
|
|
@media screen and ( prefers-color-scheme: dark ) {
|
2024-05-23 22:30:51 +00:00
|
|
|
html.skin-theme-clientpref-os & {
|
2024-06-06 00:30:33 +00:00
|
|
|
filter: invert( 1 ) hue-rotate( 180deg );
|
2024-05-23 22:30:51 +00:00
|
|
|
}
|
|
|
|
}
|
2023-10-02 18:15:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-01-09 14:46:11 +00:00
|
|
|
.mixin-vector-content-box() {
|
|
|
|
background-color: @background-color-base;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mixin-vector-dropdown-menu() {
|
|
|
|
.mixin-vector-content-box();
|
|
|
|
padding: @padding-horizontal-dropdown-menu @padding-vertical-dropdown-menu;
|
|
|
|
font-size: @font-size-dropdown;
|
|
|
|
box-shadow: 0 2px 6px -1px rgba( 0, 0, 0, 0.2 );
|
|
|
|
transition-property: opacity;
|
|
|
|
transition-duration: @transition-duration-base;
|
|
|
|
// TODO Add consistent min/max values for dropdowns in T316055
|
|
|
|
width: max-content;
|
|
|
|
max-width: 200px;
|
|
|
|
}
|
|
|
|
|
2024-06-06 15:33:01 +00:00
|
|
|
// Base links without a visited state
|
|
|
|
.mixin-vector-unvisited-link-base() {
|
|
|
|
&:visited {
|
|
|
|
color: @color-progressive;
|
|
|
|
}
|
|
|
|
|
|
|
|
&:visited:hover {
|
|
|
|
color: @color-progressive--hover;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Red links without a visited state
|
|
|
|
.mixin-vector-unvisited-link-red() {
|
|
|
|
&:visited {
|
|
|
|
color: @color-link-red;
|
|
|
|
}
|
|
|
|
|
|
|
|
&:visited:hover {
|
|
|
|
color: @color-link-red--hover;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Used for "selected" links inside tabs and dropdowns
|
|
|
|
.mixin-vector-selected-link() {
|
|
|
|
// Override all link states to style it as text
|
|
|
|
color: @color-base !important; /* stylelint-disable-line declaration-no-important */
|
|
|
|
}
|
|
|
|
|
2023-10-02 18:15:06 +00:00
|
|
|
.mixin-vector-dropdown-menu-item() {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2024-01-09 14:46:11 +00:00
|
|
|
padding: @padding-vertical-dropdown-menu-item 0;
|
2023-10-02 18:15:06 +00:00
|
|
|
|
|
|
|
.vector-icon {
|
|
|
|
margin-right: @spacing-35;
|
|
|
|
}
|
|
|
|
|
2024-06-06 15:33:01 +00:00
|
|
|
&:not( .mw-selflink ) {
|
|
|
|
.mixin-vector-unvisited-link-base();
|
|
|
|
}
|
|
|
|
|
|
|
|
&.selected a {
|
|
|
|
.mixin-vector-selected-link();
|
2023-10-02 18:15:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-12-01 16:46:56 +00:00
|
|
|
.mixin-vector-scrollable-with-fade() {
|
2024-06-08 08:12:46 +00:00
|
|
|
overflow: hidden auto;
|
2023-10-02 18:15:06 +00:00
|
|
|
|
|
|
|
&::after {
|
|
|
|
content: '';
|
|
|
|
display: block;
|
2023-12-01 16:46:56 +00:00
|
|
|
position: sticky;
|
2023-10-02 18:15:06 +00:00
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
2024-01-09 14:46:11 +00:00
|
|
|
height: @padding-vertical-dropdown-menu;
|
2023-10-02 18:15:06 +00:00
|
|
|
background: linear-gradient( rgba( 255, 255, 255, 0 ), @background-color-page-container );
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
pointer-events: none; // Make the link below the fade clickable
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.mixin-vector-dropdown-content-flip() {
|
2024-01-09 18:21:20 +00:00
|
|
|
left: auto;
|
2023-10-02 18:15:06 +00:00
|
|
|
right: 0;
|
|
|
|
}
|