summaryrefslogtreecommitdiffstats
path: root/devtools/client/themes/common.css
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /devtools/client/themes/common.css
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/themes/common.css')
-rw-r--r--devtools/client/themes/common.css757
1 files changed, 757 insertions, 0 deletions
diff --git a/devtools/client/themes/common.css b/devtools/client/themes/common.css
new file mode 100644
index 0000000000..f4bee0fb8c
--- /dev/null
+++ b/devtools/client/themes/common.css
@@ -0,0 +1,757 @@
+/* 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/. */
+
+@import url("chrome://devtools/skin/splitters.css");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+:root {
+ /* Bug 1458224: the initial `font-size` is different on Mac/Windows
+ * (appears fixed to 11px) and Linux (bigger, depends on user settings).
+ * Workaround: specify font-size on root, on form inputs, and whenever
+ * we're using the `font` shorthand. */
+ font: message-box;
+ font-size: var(--theme-body-font-size);
+
+ /* TODO(bug 1022557): Perhaps we want to allow forced colors in devtools */
+ forced-color-adjust: none;
+
+ --tab-line-hover-color: rgba(0,0,0,.2);
+ --tab-line-selected-color: var(--blue-50);
+ --toggle-thumb-color: white;
+ --toggle-track-color: var(--grey-50);
+
+ --searchbox-no-match-background-color: #ffe5e5;
+ --searchbox-no-match-stroke-color: var(--red-60);
+}
+
+:root.theme-light {
+ color-scheme: light;
+}
+
+:root.theme-dark {
+ color-scheme: dark;
+
+ --tab-line-hover-color: rgba(255,255,255,.2);
+ --toggle-thumb-color: var(--grey-40);
+
+ --searchbox-no-match-background-color: #402325;
+ --searchbox-no-match-stroke-color: var(--red-50);
+}
+
+:root[platform="mac"] {
+ --monospace-font-family: Menlo, monospace;
+}
+
+:root[platform="win"] {
+ --monospace-font-family: Consolas, monospace;
+}
+
+:root[platform="linux"] {
+ --monospace-font-family: monospace;
+}
+
+/**
+ * Customize the dark theme's scrollbar colors to avoid excessive contrast.
+ */
+:root.theme-dark {
+ scrollbar-color: var(--grey-50) var(--theme-splitter-color);
+}
+
+/**
+ * Customize scrollbar colors on Linux + light theme, to avoid visual conflicts
+ * between the light theme and the selected GTK theme (see bug 1471163).
+ * This removes GTK scrollbars and uses a fallback design (see bug 1464723).
+ */
+:root[platform="linux"].theme-light {
+ scrollbar-color: var(--grey-40) var(--grey-20);
+}
+
+::selection {
+ background-color: var(--theme-selection-background);
+ color: var(--theme-selection-color);
+}
+
+.devtools-monospace {
+ font-family: var(--monospace-font-family);
+ font-size: var(--theme-code-font-size);
+}
+
+/**
+ * For text that needs to be cut with an ellipsis …
+ */
+.devtools-ellipsis-text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/**
+ * Override global.css input styles
+ */
+html|input {
+ margin: revert;
+}
+
+/**
+ * Override wrong system font from forms.css
+ * Bug 1458224: buttons use a wrong default font-size on Linux
+ */
+html|button, html|select, html|input {
+ font: message-box;
+ font-size: var(--theme-body-font-size);
+}
+
+/* Devtools rely on the old Gecko/HTML4 button hit testing */
+html|button > * {
+ pointer-events: none;
+}
+
+/* Prevent buttons from having a text selection highlight. Bug 1546366 */
+button::selection {
+ all: unset;
+}
+
+iframe {
+ border: 0;
+ min-width: 0;
+ min-height: 0;
+}
+
+/* Autocomplete Popup */
+.devtools-autocomplete-popup {
+ overflow: hidden;
+
+ /* Devtools autocompletes display technical english keywords and should be displayed
+ using LTR direction. */
+ direction: ltr !important;
+}
+
+/* Reset list styles. */
+.devtools-autocomplete-popup ul {
+ list-style: none;
+}
+
+.devtools-autocomplete-popup ul,
+.devtools-autocomplete-popup li {
+ margin: 0;
+}
+
+.devtools-autocomplete-listbox {
+ --autocomplete-item-padding-inline: 8px;
+ --autocomplete-item-color-swatch-size: 1em;
+ --autocomplete-item-color-swatch-margin-inline: 5px;
+ appearance: none !important;
+ background-color: transparent;
+ border-width: 0px !important;
+ margin: 0;
+ padding: 0;
+ overflow-x: hidden;
+ max-height: 20rem;
+ box-sizing: border-box;
+}
+
+.devtools-autocomplete-listbox .autocomplete-item {
+ width: 100%;
+ box-sizing: border-box;
+ background-color: transparent;
+ color: var(--theme-popup-color);
+ padding: 1px var(--autocomplete-item-padding-inline);
+ cursor: default;
+ text-overflow: ellipsis;
+ white-space: pre;
+ overflow: hidden;
+}
+
+.devtools-autocomplete-listbox .autocomplete-item > .initial-value,
+.devtools-autocomplete-listbox .autocomplete-item > .autocomplete-value {
+ margin: 0;
+ padding: 0;
+ float: inline-start;
+}
+
+.devtools-autocomplete-listbox .autocomplete-item > .autocomplete-postlabel {
+ font-style: italic;
+ float: inline-end;
+ padding-inline-end: 3px;
+}
+
+.devtools-autocomplete-listbox .autocomplete-item > .autocomplete-count {
+ text-align: end;
+}
+
+.devtools-autocomplete-listbox .autocomplete-swatch {
+ cursor: pointer;
+ border-radius: 50%;
+ box-shadow: 0 0 0 1px #c4c4c4;
+ width: var(--autocomplete-item-color-swatch-size);
+ height: var(--autocomplete-item-color-swatch-size);
+ vertical-align: middle;
+ /* align the swatch with its value */
+ margin-top: -1px;
+ margin-inline: var(--autocomplete-item-color-swatch-margin-inline);
+ display: inline-block;
+ position: relative;
+}
+
+/* Rest of the dark and light theme */
+.devtools-autocomplete-popup,
+.tooltip-panel.devtools-autocomplete-popup,
+.CodeMirror-hints,
+.CodeMirror-Tern-tooltip {
+ border: 1px solid var(--theme-popup-border-color);
+ background-color: var(--theme-popup-background);
+ color: var(--theme-popup-color);
+}
+
+.devtools-autocomplete-listbox .autocomplete-item:hover {
+ background-color: var(--theme-popup-dimmed);
+}
+
+.devtools-autocomplete-listbox .autocomplete-selected,
+.devtools-autocomplete-listbox .autocomplete-selected:hover {
+ background-color: var(--theme-selection-background);
+ color: var(--theme-selection-color);
+}
+
+.devtools-autocomplete-listbox .autocomplete-selected > .initial-value {
+ font-weight: bold;
+}
+
+/* Autocomplete list clone used for accessibility. */
+
+.devtools-autocomplete-list-aria-clone {
+ /* Cannot use display:none or visibility:hidden : screen readers ignore the element. */
+ position: fixed;
+ overflow: hidden;
+ margin: 0;
+ width: 0;
+ height: 0;
+}
+
+.devtools-autocomplete-list-aria-clone li {
+ /* Prevent screen readers from prefacing every item with 'bullet'. */
+ list-style-type: none;
+}
+
+/* Keyboard focus highlight styles */
+
+:focus-visible {
+ outline: var(--theme-focus-outline);
+ outline-offset: var(--theme-outline-offset);
+ box-shadow: var(--theme-outline-box-shadow);
+
+ /* override properties set in global-shared.css for links */
+ a& {
+ outline-color: var(--theme-focus-outline-color) !important;
+ outline-width: var(--theme-focus-outline-size) !important;
+ }
+
+ /* offset the outline for checkbox and radio buttons so it doesn't conflict with existing border */
+ :is(input[type="radio"], input[type="checkbox"], checkbox)& {
+ outline-offset: 2px;
+ }
+}
+
+/* Toolbar buttons */
+.devtools-togglebutton,
+.devtools-button {
+ appearance: none;
+ background: transparent;
+ border: none;
+ border-radius: 2px;
+ color: var(--theme-body-color);
+ transition: background-color 0.05s ease-in-out;
+ align-items: center;
+ text-shadow: none;
+ padding: 2px;
+ margin: 1px;
+
+ /* Button text should not wrap on multiple lines */
+ white-space: nowrap;
+}
+
+.devtools-togglebutton {
+ padding: 1px 6px;
+ /* Separate the outline from the button as it might have a similar background color (after Bug 1590432) */
+ outline-offset: 2px;
+}
+
+/* Remove system form border from devtools-button. */
+.devtools-button::-moz-focus-inner {
+ border: 0;
+}
+
+/* Button with text */
+.devtools-button:not(:empty) {
+ padding-inline: 5px;
+ background: var(--toolbarbutton-background);
+}
+
+/* Button icon */
+.devtools-button::before {
+ content: none;
+ display: inline-block;
+ vertical-align: middle;
+ width: 16px;
+ height: 16px;
+ margin: 0 3px;
+ transition: opacity 0.05s ease-in-out;
+ color: var(--theme-icon-color);
+ font-size: 11px;
+ -moz-context-properties: fill;
+ fill: currentColor;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+/* Reveal the icon */
+.devtools-button:empty::before {
+ content: "";
+}
+
+.devtools-button:is(.checked, [aria-pressed="true"])::before {
+ color: var(--theme-icon-checked-color);
+}
+
+/* Icon-only buttons */
+.devtools-button:hover::before,
+.devtools-button:is(.checked, [aria-pressed="true"])::before {
+ opacity: 1;
+}
+
+/* Button states */
+.devtools-button:disabled {
+ pointer-events: none;
+ opacity: 0.5 !important;
+}
+
+.devtools-button:empty:not([aria-expanded="true"]):hover {
+ background: var(--toolbarbutton-hover-background);
+}
+
+/* Standalone buttons */
+.devtools-button[data-standalone] {
+ min-height: 28px;
+ padding: 4px 6px;
+ border: 1px solid transparent;
+ background: var(--toolbarbutton-background);
+}
+
+.theme-light .devtools-button[data-standalone] {
+ border-color: rgba(138,161,180,0.2);
+}
+
+/* Selectable button which is unchecked. */
+
+.devtools-button:not(:empty, .checked, [aria-pressed="true"]):hover,
+.devtools-button:empty:is(:hover:active,.checked, [aria-pressed="true"]),
+.devtools-button[aria-haspopup="menu"][aria-expanded="true"] {
+ background-color: var(--toolbarbutton-hover-background);
+}
+
+.devtools-button:not(:empty, .checked, [aria-pressed="true"]):hover:active {
+ background-color: var(--theme-selection-background-hover);
+}
+
+.devtools-button:not(:empty, .checked, [aria-pressed="true"]):focus {
+ background-color: var(--toolbarbutton-focus-background);
+ color: var(--toolbarbutton-focus-color);
+}
+
+.devtools-togglebutton:not([aria-pressed="true"]) {
+ background: var(--theme-toolbarbutton-background);
+ color: var(--theme-toolbarbutton-color);
+}
+
+.devtools-togglebutton:hover:not([aria-pressed="true"], :active) {
+ background-color: var(--theme-toolbarbutton-hover-background);
+}
+
+/* Selectable button which is checked. */
+
+.devtools-button:not(:empty):is(.checked, [aria-pressed="true"]) {
+ background: var(--toolbarbutton-checked-background);
+ color: var(--toolbarbutton-checked-color);
+
+ &:focus {
+ background-color: var(--toolbarbutton-checked-focus-background);
+ }
+}
+
+.devtools-togglebutton[aria-pressed="true"] {
+ background-color: var(--theme-toolbarbutton-checked-background);
+ color: var(--theme-toolbarbutton-checked-color);
+}
+
+.devtools-togglebutton[aria-pressed="true"]:hover:not(:active) {
+ background: var(--theme-toolbarbutton-checked-hover-background);
+ color: var(--theme-toolbarbutton-checked-hover-color);
+}
+
+.devtools-togglebutton:active {
+ background: var(--theme-toolbarbutton-active-background);
+ color: var(--theme-toolbarbutton-active-color);
+}
+
+.devtools-togglebutton::-moz-focus-inner {
+ border-color: transparent;
+}
+
+/* Icons */
+
+.devtools-button.devtools-clear-icon::before {
+ background-image: url("chrome://devtools/skin/images/clear.svg");
+}
+
+.devtools-option-toolbarbutton {
+ list-style-image: url("chrome://devtools/skin/images/settings.svg");
+}
+
+.devtools-button.devtools-feature-callout::after {
+ content: url("chrome://global/skin/icons/badge-blue.svg");
+ width: 14px;
+ height: 14px;
+ display: block;
+ position: absolute;
+ top: -2px;
+ right: 0;
+}
+
+/* Text input */
+
+.devtools-textinput,
+.devtools-searchinput,
+.devtools-filterinput {
+ appearance: none;
+ margin: 0;
+ padding: 0 4px;
+ font: inherit;
+ border: 1px solid transparent;
+ background-color: var(--theme-body-background);
+ color: var(--theme-body-color);
+ flex-grow: 1;
+
+ &::placeholder {
+ /* override UA style */
+ opacity: 1;
+ /* Set a dimmed color that still gives us enough contrast */
+ color: var(--theme-text-color-alt);
+ }
+}
+
+.devtools-searchinput,
+.devtools-filterinput {
+ padding-inline-start: 22px;
+ background-position: 7px center;
+ background-size: 12px;
+ background-repeat: no-repeat;
+ -moz-context-properties: fill;
+ fill: var(--theme-icon-dimmed-color);
+}
+
+.devtools-searchinput {
+ background-image: url(chrome://devtools/skin/images/search.svg);
+}
+
+.devtools-filterinput {
+ background-image: url(chrome://devtools/skin/images/filter-small.svg);
+}
+
+.devtools-searchinput:-moz-locale-dir(rtl),
+.devtools-searchinput:dir(rtl),
+.devtools-filterinput:-moz-locale-dir(rtl),
+.devtools-filterinput:dir(rtl) {
+ background-position-x: right 7px;
+}
+
+.devtools-searchinput .textbox-input::placeholder,
+.devtools-filterinput .textbox-input::placeholder {
+ font-style: normal;
+}
+
+/* Searchbox with extra button(s) (MDN help or clear button) */
+.devtools-searchbox {
+ display: inline-flex;
+ flex-grow: 1;
+ position: relative;
+ border: 1px solid transparent;
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.devtools-searchbox > .devtools-searchinput,
+.devtools-searchbox > .devtools-filterinput {
+ /* Those classes can be applied on <input>, which have a default styling.
+ We want .devtools-searchbox to handle the background, border and outline, so we
+ need to reset them here */
+ background-color: transparent;
+ border: none;
+ outline: none;
+ box-shadow: none;
+ flex-grow: 1;
+ min-width: 0;
+ width: 100%;
+}
+
+/* Display an outline on the container when the child input is focused. If another element
+ is focused (e.g. a button), we only want the outline on that element */
+.devtools-searchbox:focus-within:has(input:focus-visible) {
+ outline: var(--theme-focus-outline);
+ outline-offset: -2px;
+
+ &.devtools-searchbox-no-match {
+ outline-color: var(--searchbox-no-match-stroke-color);
+ }
+}
+
+.devtools-searchbox-no-match {
+ background-color: var(--searchbox-no-match-background-color);
+ border-color: var(--searchbox-no-match-stroke-color);
+}
+
+/* Clear icon within the searchbox */
+.devtools-searchinput-clear {
+ flex: 0 0 auto;
+ align-self: center;
+ margin: 0 4px;
+ padding: 0;
+ border: 0;
+ width: 16px;
+ height: 16px;
+ background-color: transparent;
+ background-image: url("chrome://devtools/skin/images/search-clear.svg");
+ -moz-context-properties: fill, fill-opacity;
+ fill: var(--theme-icon-color);
+ fill-opacity: 0.8;
+}
+
+.devtools-searchbox-no-match > .devtools-searchinput-clear {
+ fill: var(--searchbox-no-match-stroke-color);
+}
+
+.devtools-searchinput-clear:hover {
+ fill-opacity: 1;
+}
+
+/* MDN link within the searchbox */
+.devtools-searchbox .learn-more-link::before {
+ opacity: 0.6;
+}
+
+.devtools-searchbox:not(:hover) .learn-more-link {
+ visibility: hidden;
+}
+
+.devtools-searchbox .devtools-searchinput-summary {
+ flex-basis: auto;
+ flex-grow: 0;
+ flex-shrink: 0;
+ color: var(--theme-comment);
+ align-self: center;
+}
+
+/* Autocomplete popup within the searchbox */
+.devtools-searchbox .devtools-autocomplete-popup {
+ position: absolute;
+ left: 0;
+ top: 100%;
+ width: 100%;
+ line-height: initial !important;
+ /* See bug - 1414609. z-index is greater than 1000 so that searchbox's z-index
+ is more than z-index of requests-list-headers-wrapper in netmonitor */
+ z-index: 1001;
+}
+
+/* Twisty and checkbox controls */
+
+.theme-twisty {
+ width: 14px;
+ height: 14px;
+ cursor: pointer;
+ background-image: url("chrome://devtools/skin/images/arrow.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: 10px;
+ -moz-context-properties: fill;
+ fill: var(--theme-icon-dimmed-color);
+ transform: rotate(-90deg);
+}
+
+/* Mirror the twisty for rtl direction */
+.theme-twisty:dir(rtl),
+.theme-twisty:-moz-locale-dir(rtl) {
+ transform: rotate(90deg);
+}
+
+.theme-selected ~ .theme-twisty {
+ fill: var(--theme-selection-color);
+}
+
+.theme-twisty:is(
+ .open,
+ [open],
+ [aria-expanded="true"]
+) {
+ transform: none;
+}
+
+.theme-twisty[invisible] {
+ visibility: hidden;
+}
+
+/* Throbbers */
+.devtools-throbber::before {
+ content: "";
+ display: inline-block;
+ vertical-align: bottom;
+ margin-inline-end: 0.5em;
+ width: 1em;
+ height: 1em;
+ border: 2px solid currentColor;
+ border-right-color: transparent;
+ border-radius: 50%;
+ animation: 1.1s linear throbber-spin infinite;
+}
+
+@keyframes throbber-spin {
+ from {
+ transform: none;
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+/* Common tabs styles */
+
+.all-tabs-menu {
+ position: absolute;
+
+ top: 0;
+ inset-inline-end: 0;
+ width: 15px;
+ height: 100%;
+
+ padding: 0;
+ border: none;
+ border-inline-start: 1px solid var(--theme-splitter-color);
+
+ background: var(--theme-tab-toolbar-background);
+ background-image: url("chrome://devtools/skin/images/dropmarker.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ -moz-context-properties: fill;
+ fill: var(--theme-icon-color);
+ /* The button is often displayed next to the window edge, so adjust the layout to make the offset visible */
+ outline-offset: -2px;
+}
+
+.all-tabs-menu:hover {
+ background-color: var(--theme-toolbar-hover);
+}
+
+.all-tabs-menu:hover:active {
+ background-color: var(--theme-toolbar-hover-active);
+}
+
+.devtools-tab-line {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+ background: transparent;
+ transition: transform 250ms var(--animation-curve), opacity 250ms var(--animation-curve);
+ opacity: 0;
+ transform: scaleX(0);
+}
+
+.devtools-tab:hover .devtools-tab-line,
+.tabs-menu-item:hover .devtools-tab-line {
+ background: var(--tab-line-hover-color);
+ opacity: 1;
+ transform: scaleX(1);
+}
+
+.devtools-tab.selected .devtools-tab-line,
+.tabs-menu-item.is-active .devtools-tab-line {
+ background: var(--tab-line-selected-color);
+ opacity: 1;
+ transform: scaleX(1);
+}
+
+@media (prefers-reduced-motion) {
+ .devtools-tab-line {
+ transition: none;
+ }
+}
+
+.devtools-tab:not(.selected):focus .devtools-tab-line {
+ background: var(--tab-line-hover-color);
+ opacity: 1;
+ transform: scaleX(1);
+}
+
+/* No result message styles */
+
+.devtools-sidepanel-no-result {
+ font-style: italic;
+ padding: 0.5em 20px;
+ user-select: none;
+ font-size: 12px;
+ line-height: calc(16 / 12);
+}
+
+/* Checkbox Toggle */
+
+.devtools-checkbox-toggle {
+ --x-pos: .15em;
+ /* Reset native checkbox styling. */
+ appearance: none;
+ background-color: var(--toggle-track-color);
+ cursor: pointer;
+ /* Change font-size to scale. */
+ font-size: 16px;
+ width: 2em;
+ height: 1em;
+ border-radius: 1em;
+ border: 1px solid transparent;
+ box-sizing: content-box;
+ /* Animate the thumb position between states of the checkbox. */
+ transition: background-color .1s ease-out;
+}
+
+.devtools-checkbox-toggle[disabled]{
+ opacity: 0.5;
+}
+
+/* For right-to-left layout, the toggle thumb goes in the opposite direction. */
+html[dir="rtl"] .devtools-checkbox-toggle {
+ --x-pos: -.15em;
+}
+
+.devtools-checkbox-toggle:checked {
+ --x-pos: 1.15em;
+ background-color: var(--blue-55);
+}
+
+html[dir="rtl"] .devtools-checkbox-toggle:checked {
+ --x-pos: -1.15em;
+}
+
+.devtools-checkbox-toggle::before {
+ position: relative;
+ width: calc(1em - .3em);
+ height: calc(1em - .3em);
+ transform: translateY(.15em) translateX(var(--x-pos));
+ border-radius: 100%;
+ display: block;
+ content: "";
+ background-color: var(--toggle-thumb-color);
+ transition: transform .1s ease-out;
+}
+
+.devtools-checkbox-toggle:checked::before {
+ background-color: white;
+}