forked from mirrors/gecko-dev
By making prefers-color-scheme return the ColorSchemeForChrome(), which accounts for the Firefox theme. Differential Revision: https://phabricator.services.mozilla.com/D128611
285 lines
6.5 KiB
CSS
285 lines
6.5 KiB
CSS
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
:host {
|
|
--info-icon-url: url("chrome://global/skin/icons/info-filled.svg");
|
|
--warn-icon-url: url("chrome://global/skin/icons/warning.svg");
|
|
--success-icon-url: url("chrome://global/skin/icons/check.svg");
|
|
--error-icon-url: url("chrome://global/skin/icons/error.svg");
|
|
--close-icon-url: url("chrome://global/skin/icons/close.svg");
|
|
--icon-size: 16px;
|
|
--close-icon-size: 32px;
|
|
}
|
|
|
|
:host([message-bar-type=infobar]) {
|
|
--close-icon-size: 24px;
|
|
}
|
|
|
|
/* MessageBar colors by message type */
|
|
/* Colors from: https://design.firefox.com/photon/components/message-bars.html#type-specific-style */
|
|
|
|
:host {
|
|
--message-bar-background-color: var(--in-content-box-info-background);
|
|
--message-bar-text-color: var(--in-content-text-color);
|
|
--message-bar-icon-url: var(--info-icon-url);
|
|
/* The default values of --in-content-button* are sufficient, even for dark themes */
|
|
}
|
|
|
|
:host([type=warning]:not([message-bar-type=infobar])) {
|
|
--message-bar-background-color: var(--yellow-50);
|
|
--message-bar-text-color: var(--yellow-90);
|
|
|
|
--in-content-button-background: var(--yellow-60);
|
|
--in-content-button-background-hover: var(--yellow-70);
|
|
--in-content-button-background-active: var(--yellow-80);
|
|
}
|
|
:host([type=warning]) {
|
|
--message-bar-icon-url: var(--warn-icon-url);
|
|
}
|
|
|
|
:host([type=success]:not([message-bar-type=infobar])) {
|
|
--message-bar-background-color: var(--green-50);
|
|
--message-bar-text-color: var(--green-90);
|
|
|
|
--message-bar-icon-url: var(--success-icon-url);
|
|
--in-content-button-background: var(--green-60);
|
|
--in-content-button-background-hover: var(--green-70);
|
|
--in-content-button-background-active: var(--green-80);
|
|
}
|
|
|
|
:host([type=error]:not([message-bar-type=infobar])) {
|
|
--message-bar-background-color: var(--red-60);
|
|
--message-bar-text-color: #ffffff;
|
|
|
|
--in-content-button-background: var(--red-70);
|
|
--in-content-button-background-hover: var(--red-80);
|
|
--in-content-button-background-active: var(--red-90);
|
|
}
|
|
:host([type=error]),
|
|
:host([type=critical]) {
|
|
--message-bar-icon-url: var(--error-icon-url);
|
|
}
|
|
|
|
:host {
|
|
border-radius: 4px;
|
|
}
|
|
|
|
/* Make the host to behave as a block by default, but allow hidden to hide it. */
|
|
:host(:not([hidden])) {
|
|
display: block;
|
|
}
|
|
|
|
::slotted(button) {
|
|
/* Enforce micro-button width. */
|
|
min-width: -moz-fit-content !important;
|
|
}
|
|
|
|
/* MessageBar Grid Layout */
|
|
|
|
.container {
|
|
background: var(--message-bar-background-color);
|
|
color: var(--message-bar-text-color);
|
|
|
|
padding: 4px 8px;
|
|
position: relative;
|
|
|
|
border-radius: 4px;
|
|
|
|
display: flex;
|
|
/* Ensure that the message bar shadow dom elements are vertically aligned. */
|
|
align-items: center;
|
|
}
|
|
|
|
:host([align="center"]) .container {
|
|
justify-content: center;
|
|
}
|
|
|
|
.content {
|
|
margin: 0 4px;
|
|
display: inline-block;
|
|
/* Ensure that the message bar content is vertically aligned. */
|
|
align-items: center;
|
|
/* Ensure that the message bar content is wrapped. */
|
|
word-break: break-word;
|
|
}
|
|
|
|
/* MessageBar icon style */
|
|
|
|
.icon {
|
|
padding: 4px;
|
|
width: var(--icon-size);
|
|
height: var(--icon-size);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.icon::after {
|
|
appearance: none;
|
|
-moz-context-properties: fill, stroke;
|
|
fill: currentColor;
|
|
stroke: currentColor;
|
|
content: var(--message-bar-icon-url);
|
|
}
|
|
|
|
/* Use a spacer to position the close button at the end, but also support
|
|
* centering if required. */
|
|
.spacer {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
/* Close icon styles */
|
|
|
|
:host(:not([dismissable])) .close {
|
|
display: none;
|
|
}
|
|
|
|
.close {
|
|
background-image: var(--close-icon-url);
|
|
background-repeat: no-repeat;
|
|
background-position: center center;
|
|
-moz-context-properties: fill;
|
|
fill: currentColor;
|
|
min-width: auto;
|
|
min-height: auto;
|
|
width: var(--close-icon-size);
|
|
height: var(--close-icon-size);
|
|
margin: 0;
|
|
padding: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
@media not (prefers-contrast) {
|
|
.container.infobar {
|
|
box-shadow: 0 1px 2px rgba(58, 57, 68, 0.1);
|
|
background: var(--in-content-page-background);
|
|
}
|
|
|
|
.close {
|
|
fill: var(--in-content-icon-color);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
/* Don't set the background in prefers-contrast mode or macOS can end up
|
|
* with black on black text. */
|
|
.container.infobar {
|
|
background: rgb(66,65,77);
|
|
}
|
|
}
|
|
}
|
|
|
|
:host([message-bar-type=infobar]:first-of-type) {
|
|
margin-top: 4px;
|
|
}
|
|
|
|
:host([message-bar-type=infobar]) {
|
|
margin: 0 4px 4px;
|
|
}
|
|
|
|
.container.infobar {
|
|
/* Don't let lwthemes set a text-shadow. */
|
|
text-shadow: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.container.infobar::before {
|
|
content: "";
|
|
display: block;
|
|
width: 2px;
|
|
position: absolute;
|
|
background-image: linear-gradient(0, #9059ff 0%, #ff4aa2 52.08%, #ffbd4f 100%);
|
|
top: 0;
|
|
inset-inline-start: 0;
|
|
height: 100%;
|
|
border-start-start-radius: 4px;
|
|
border-end-start-radius: 4px;
|
|
}
|
|
|
|
.container.infobar {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
/* Infobars styling. */
|
|
.notification-content {
|
|
margin: 0;
|
|
margin-inline-start: 8px;
|
|
}
|
|
|
|
.notification-message {
|
|
min-height: 16px; /* min-height: 32px with block padding */
|
|
padding-block: 8px;
|
|
margin-inline-end: 20px;
|
|
}
|
|
|
|
.notification-button-container,
|
|
.notification-message {
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.container.infobar > .notification-content > .notification-message img.inline-icon {
|
|
/* Align inline icon images in the message content */
|
|
vertical-align: bottom;
|
|
/* Ensure they get the right fill color. */
|
|
-moz-context-properties: fill;
|
|
fill: currentColor;
|
|
}
|
|
|
|
.close {
|
|
margin: 4px 8px;
|
|
background-size: 16px;
|
|
}
|
|
|
|
.notification-button {
|
|
margin: 4px;
|
|
/* This is supposed to be 6px but then the buttons are 26px tall by default
|
|
* on Windows. Drop it down to 4px (with the 1px border) */
|
|
padding-block: 3px;
|
|
}
|
|
|
|
.notification-button:first-of-type {
|
|
/* When the buttons wrap to their own line we want to match the 8px on the message. */
|
|
margin-inline-start: 0;
|
|
}
|
|
|
|
strong {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.text-link:hover {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.infobar > .icon {
|
|
padding: 0;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.infobar > .icon,
|
|
:host([type=system]) .notification-content {
|
|
margin-inline-start: 16px;
|
|
}
|
|
|
|
:host([type=system]) .icon {
|
|
display: none;
|
|
}
|
|
:host([type=info]) .icon {
|
|
color: rgb(0,144,237);
|
|
}
|
|
:host([type=warning]) .icon {
|
|
color: rgb(255,164,54);
|
|
}
|
|
:host([type=critical]) .icon {
|
|
color: rgb(226,40,80);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:host([type=info]) .icon {
|
|
color: rgb(128,235,255);
|
|
}
|
|
:host([type=warning]) .icon {
|
|
color: rgb(255,189,79);
|
|
}
|
|
:host([type=critical]) .icon {
|
|
color: rgb(255,154,162);
|
|
}
|
|
}
|