mediawiki-skins-MinervaNeue/resources/skins.minerva.base.styles/ui.less
Jan Drewniak 59fd0cd5dc Convert all color related Less variables to CSS custom properties
All colors used in Minerva are converted from Less variables
into CSS custom properties. A new file called CSSCustomProperties.less
is created in the skins.minerva.base.styles module to store
these custom properties and an ADR is provided on the rationale for
dropping support for browsers that don't support custom properties.

The new CSS custom properties follow Codex design token conventions
where possible (and noted when not).

Link colors are unique because their styles are defined in core,
so in that case the Less variables values are set to custom properties.
Those values are then fed back into MediaWiki core for core link
styling.

Also adds a temporary night-mode color palette under the
.skin-nightmode-1 class on the <html> element.

Bug: T356074
Change-Id: Ida1f14138f12bd3c600c264bde7b5100f9dbf4ff
2024-02-02 17:57:27 +00:00

251 lines
6.4 KiB
Plaintext

@import '../../minerva.less/minerva.variables.less';
@import '../../minerva.less/minerva.mixins.less';
@import 'mediawiki.mixins.less';
@import 'icons.less';
/* stylelint-disable no-descending-specificity */
html,
body {
// Ensure overlays take up full screen
height: 100%;
}
html {
font-size: @font-size-root;
// Support Safari: Prevent font scaling in landscape
// stylelint-disable-next-line plugin/no-unsupported-browser-features
-webkit-text-size-adjust: none;
}
body {
background-color: var( --background-color-base );
color: var( --color-base );
// Support All Browsers: Remove `margin` (normalized)
margin: 0;
}
main {
// Support IE 9-11: Apply correct `display` (normalized), see T207618.
display: block;
}
.mw-body {
// avoid margin collapsing (see T147956)
border-top: @border-width-base @border-style-base var( --border-color-transparent );
padding-bottom: 32px;
}
.overlay-enabled,
.mw-body {
background-color: var( --background-color-base );
}
// If footer has last modified list item (Desktop MinervaNeue ?useformat=desktop&useskin=minerva),
// hide it (T173545).
// stylelint-disable-next-line selector-max-id
.navigation-drawer--loading,
#footer-info-lastmod {
display: none;
}
// Override rule in MobileFrontend (
// (ul.footer-info li in resources/mobile.init.styles.less)
// to show copyright.
// stylelint-disable-next-line selector-max-id
#footer-info-copyright {
display: block;
}
// JavaScript overlay and server side rendered header
.overlay-header,
.minerva-header {
display: flex;
align-items: center;
width: 100%;
border-spacing: 0;
border-collapse: collapse;
height: @height-site-header;
white-space: nowrap;
// When banners are present we want to easily distinguish between them and the header so add border
border-top: @border-subtle;
// Hide the header border top when a banner is not present.
margin-top: -@border-width-base;
}
//
// Search
//
.minerva-search-form {
display: flex;
width: 100%;
flex-grow: 1;
align-items: center;
> button {
margin-left: auto;
}
}
// Search input
// Used in minerva header and search overlay header
.search-box .search {
@size-icon-search: unit( 18 / @font-size-browser, em );
@size-icon-search-gutter: unit( 8 / @font-size-browser, em );
@size-modifier-border: unit( 1 / @font-size-browser, em );
@padding-vertical-search: 8px - @border-width-base;
@padding-start-search-icon: @size-icon-search + ( 2 * @size-icon-search-gutter ) - @size-modifier-border;
background-color: var( --background-color-base ); // Support Fennec, Opera Mini: Remove default background, see T38490.
background-position: left @size-icon-search-gutter center;
background-repeat: no-repeat;
background-size: @size-icon-search;
// Support Safari: Get rid of rounded corners.
-webkit-appearance: none;
width: 100%;
margin-top: 0;
height: 2.25em;
border: @border-width-base @border-style-base var( --border-color-inverted );
border-radius: @border-radius-base;
padding: @padding-vertical-search 0 @padding-vertical-search @padding-start-search-icon;
box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.05 );
// Keyboard focus is taken care of below at `.search:focus`.
outline: 0;
transition-property: border-color, box-shadow;
transition-duration: @transition-duration-medium;
// [T139928] Hide all pseudo-elements added to search inputs in WebKit.
&::-webkit-search-decoration,
&::-webkit-search-cancel-button,
&::-webkit-search-results-button,
&::-webkit-search-results-decoration {
display: none;
}
}
// Provide focus styles only in non-JS and overlay to prevent double transition.
.client-nojs .search-box .search:focus,
.search-overlay .search-box .search:focus {
border-color: var( --border-color-progressive--focus );
box-shadow: @box-shadow-inset-small var( --box-shadow-color-progressive--focus ), 0 1px 1px rgba( 0, 0, 0, 0.05 );
}
.content {
.mw-heading2,
h2 {
// Clear table of contents and any other floated elements in desktop Minerva.
clear: left;
}
// Only reveal section edit links in expanded section headings.
// The .section-heading class is only present on mobile.
.section-heading {
.mw-editsection {
visibility: hidden;
}
&.open-block .mw-editsection,
.client-nojs & .mw-editsection {
visibility: visible;
}
}
.mw-parser-output > .mw-heading2,
.mw-parser-output > h2,
.section-heading {
border-bottom: @border-width-base @border-style-base #eaecf0;
margin-bottom: @margin-heading;
}
.mw-parser-output {
.mw-heading,
h1, h2, h3, h4, h5, h6 {
display: flex;
}
h1, h2, h3, h4, h5, h6,
.mw-headline {
flex-grow: 1;
flex-basis: 0;
margin-left: 0;
}
.mw-editsection {
align-self: center;
// Negative margins to prevent the edit icon from affecting the height of the heading
margin-top: -1em;
margin-bottom: -1em;
.cdx-mixin-button-layout-flush( 'end', true, 'large' );
.cdx-button {
font-size: 1rem;
}
}
}
}
// stylelint-disable selector-max-id
#page-secondary-actions {
a {
margin: 10px 2px 2px 0;
}
}
// It may be better to express these in a single class
// or think about using extend or a mixin to stay with semantic selectors
// https://css-tricks.com/the-extend-concept/
#bodyContent .panel .content,
.overlay .content-header,
.overlay .panel,
.mw-mf-page-list.side-list .list-thumb,
.mw-mf-page-list li,
.topic-title-list li,
.site-link-list li,
.drawer,
/*Specificity needed to override content styles in core. */
.content h2.list-header,
.list-header,
.mw-revision {
padding-left: @padding-content;
padding-right: @padding-content;
}
.image-list,
.minerva-anon-talk-message,
.pre-content,
/* Form only pages e.g Special:MobileOptions */
#mw-content-text > form > .oo-ui-fieldLayout > .oo-ui-fieldLayout-body,
/* Save button on Special:MobileOptions */
#mw-content-text > form > .oo-ui-widget,
.content,
.post-content {
margin: 0 @margin-content;
}
// T217197
#mw-content-subtitle {
margin-top: 10px;
margin-bottom: 10px;
&:empty {
margin: 0;
}
}
// stylelint-enable selector-max-id
@media all and ( min-width: @width-breakpoint-tablet ) {
/* FIXME: this should be one generic class name */
/* SpecialMobileEditWatchlist */
.page-summary-list,
/* Talk overlay */
.topic-title-list,
/* structured languages, mobile pagelists */
.site-link-list,
/* overlays */
.overlay .panel,
/* language overlay / MobileSpecialPageFeed */
.list-header {
padding-left: @padding-content-tablet;
padding-right: @padding-content-tablet;
}
}
/* stylelint-enable no-descending-specificity */