mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-11-15 10:27:31 +00:00
853dcf1917
Bug: T366362 Change-Id: I9e10577aa2a88e96d111cdd29f9fa7baafff87d8
117 lines
3.9 KiB
Plaintext
117 lines
3.9 KiB
Plaintext
/**
|
|
* Minerva CSS Custom properties
|
|
* ----------------------------
|
|
* Please be aware that these properties are accessible via *any* client-side code.
|
|
* These variables should mirror Codex design token names and values:
|
|
* https://doc.wikimedia.org/codex/latest/design-tokens
|
|
* Only include properties that are required for client-side modification.
|
|
*
|
|
* @private - Currently, these variables are only intended for use by Minerva,
|
|
* however, they are designed to mimic the naming convention in Codex tokens
|
|
* in order to facilitate an eventual migration to a centralized source.
|
|
* @experimental
|
|
* @since February 2024 (MediaWiki 1.43)
|
|
*/
|
|
|
|
@import 'mediawiki.skin.variables.less';
|
|
@import 'mediawiki.skin.codex-design-tokens/theme-wikimedia-ui-mixin-dark.less';
|
|
@import 'mediawiki.skin.codex-design-tokens/theme-wikimedia-ui-reset.less';
|
|
|
|
/**
|
|
* Placeholder Night mode color palette.
|
|
* NOTE: These values are temporarily hard coded.
|
|
*/
|
|
.mixin-night-mode-palette() {
|
|
.cdx-mode-dark();
|
|
}
|
|
|
|
/**
|
|
* == Night-mode helpers ==
|
|
* The following classes are provided to help third-parties deal with night mode when using the
|
|
* CSS color variables is not feasible.
|
|
*
|
|
* .skin-invert - This class implements an inverted night-mode effect on applied elements using
|
|
* a CSS filter instead of CSS custom properties. For this effect to work, the light mode palette
|
|
* has to be applied to avoid inverting night-mode colors.
|
|
*
|
|
* .notheme - This class prevents night mode from being applied to a specific element. It needs the
|
|
* the light mode color palette, and includes an opinionated color: @color-base; rule
|
|
* since the main assumption underlying the light theme is black text.
|
|
*/
|
|
|
|
/**
|
|
* Light mode
|
|
*
|
|
* Applies the light mode color palette by default
|
|
* or with the .skin-invert, or .notheme classes
|
|
*/
|
|
:root,
|
|
.skin-invert,
|
|
.notheme {
|
|
.cdx-mode-reset();
|
|
}
|
|
|
|
.skin-invert,
|
|
.notheme {
|
|
color-scheme: light;
|
|
color: @color-base;
|
|
}
|
|
|
|
/**
|
|
* == Forced night mode ==
|
|
* Applies the night mode color palette per the users explicit preference,
|
|
* regardless of system settings.
|
|
*/
|
|
@media screen {
|
|
html.skin-theme-clientpref-night {
|
|
color-scheme: dark;
|
|
.mixin-night-mode-palette();
|
|
|
|
.skin-invert,
|
|
.skin-invert-image img,
|
|
/* Special treatment of inverted OOUI icons, see T365764 */
|
|
.oo-ui-iconElement-icon:not( .oo-ui-image-progressive ):not( .oo-ui-image-destructive ):not( .oo-ui-checkboxInputWidget-checkIcon ):not( .oo-ui-image-invert ):not( .mw-no-invert ),
|
|
.oo-ui-indicatorElement-indicator {
|
|
filter: invert( 1 ) hue-rotate( 180deg );
|
|
}
|
|
|
|
/* Do not apply invert to elements that are inside a notheme or a skin-invert class to avoid inversion in light theme or
|
|
double inversion in an already inverted element */
|
|
.skin-invert,
|
|
.notheme {
|
|
.oo-ui-iconElement-icon:not( .oo-ui-image-progressive ):not( .oo-ui-image-destructive ):not( .oo-ui-checkboxInputWidget-checkIcon ):not( .oo-ui-image-invert ):not( .mw-no-invert ),
|
|
.oo-ui-indicatorElement-indicator {
|
|
filter: none !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* == Auto night mode ==
|
|
* Applies the night mode color palette only in response to system settings.
|
|
*/
|
|
@media screen and ( prefers-color-scheme: dark ) {
|
|
html.skin-theme-clientpref-os {
|
|
color-scheme: light dark;
|
|
.mixin-night-mode-palette();
|
|
|
|
.skin-invert,
|
|
.skin-invert-image img,
|
|
.oo-ui-iconElement-icon:not( .oo-ui-image-progressive ):not( .oo-ui-image-destructive ):not( .oo-ui-checkboxInputWidget-checkIcon ),
|
|
.oo-ui-indicatorElement-indicator {
|
|
filter: invert( 1 ) hue-rotate( 180deg );
|
|
}
|
|
|
|
/* Do not apply invert to elements that are inside a notheme or a skin-invert class to avoid inversion in light theme or
|
|
double inversion in an already inverted element */
|
|
.skin-invert,
|
|
.notheme {
|
|
.oo-ui-iconElement-icon:not( .oo-ui-image-progressive ):not( .oo-ui-image-destructive ):not( .oo-ui-checkboxInputWidget-checkIcon ),
|
|
.oo-ui-indicatorElement-indicator {
|
|
filter: none !important;
|
|
}
|
|
}
|
|
}
|
|
}
|