/* 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/. */ /* Style swatches as rendered by the OutputParser. This needs to be in a shared file as those classes are used in the Rules view and the CSS variable tooltip. */ .inspector-flex, .inspector-grid, .inspector-shapeswatch, .inspector-swatch { --swatch-size: 1em; width: var(--swatch-size); height: var(--swatch-size); vertical-align: middle; /* align the swatch with its value */ margin-top: -1px; margin-inline-end: 5px; display: inline-block; position: relative; /* Set pointer cursor when swatch is interactive */ &:is(button, [role="button"]) { cursor: pointer; } } /* Icon swatches not using the .inspector-swatch class (flex, grid, shape) */ .inspector-flex, .inspector-grid, .inspector-shapeswatch { background-color: transparent; border: none; -moz-context-properties: stroke; stroke: var(--theme-icon-color); /* Prevent line break when copy/pasting an entire rule */ user-select: auto; &:hover { stroke: var(--theme-icon-alternate-hover-color); } } :is(.inspector-flex, .inspector-grid, .inspector-shapeswatch)[aria-pressed="true"] { background-color: var(--theme-toolbarbutton-checked-background); stroke: var(--theme-toolbarbutton-checked-color); } .inspector-flex { background-image: url("chrome://devtools/skin/images/flexbox-swatch.svg"); background-size: 13px 11px; width: 13px; height: 11px; } .inspector-grid { background-image: url("chrome://devtools/skin/images/grid.svg"); } .inspector-grid[disabled] { cursor: default; opacity: 0.5; } .inspector-shapeswatch { background-image: url("chrome://devtools/skin/images/shape-swatch.svg"); background-size: 110%; width: 1.45em; height: 1.45em; } .inspector-shape-point.active, .inspector-shapeswatch[aria-pressed="true"] + .inspector-shape > .inspector-shape-point:hover { background-color: var(--inspector-highlight-background-color); color: var(--inspector-highlight-color); /* Add an outline so when the property is highlighted because of search, the active point still stands out */ outline: 1px solid var(--theme-contrast-border); } .inspector-variable { color: var(--theme-highlight-blue); } /* Round swatches using the .inspector-swatch class (color, bezier, filter and angle) */ .inspector-swatch { background-size: var(--swatch-size); border-radius: 50%; box-shadow: 0 0 0 1px light-dark(#c4c4c4, #818181); :root[forced-colors-active] &:not(:focus-visible) { /* The box-shadow isn't rendered in High Contrast Mode, and we do want to have a "border" for those without impacting the size of the elements */ outline: 1px solid var(--theme-icon-color); &:hover { outline-color: var(--theme-icon-hover-color); } } } /* Create a stacking context for the color swatch so its before pseudo element can be display below it (see next rule) */ .color-swatch-container { position: relative; z-index: 1; } /* We want to display a checker below the current swatch color that would be visible if the swatch color isn't opaque */ .inspector-colorswatch::before { content: ""; background-color: #eee; --checker-color: #ccc; --background-gradient: linear-gradient(45deg, var(--checker-color) 25%, transparent 25% 75%, var(--checker-color) 75%); background-image: var(--background-gradient), var(--background-gradient); background-size: var(--swatch-size) var(--swatch-size); background-position: 0 0, calc(var(--swatch-size) / 2) calc(var(--swatch-size) / 2); position: absolute; border-radius: 50%; inset: 0; z-index: -1; } .inspector-swatch.inspector-colorswatch { border: none; padding: 0; /* Adjust outline so it doesn't conflate with the color swatch, which could have a similar background color as the outline */ outline-offset: 2px; /* Make sure that the background color is properly set in High Contrast Mode */ forced-color-adjust: none; } .inspector-bezierswatch { background-image: url("chrome://devtools/skin/images/cubic-bezier-swatch.svg"); -moz-context-properties: stroke, fill; fill: #fff; stroke: #808080; } .inspector-filterswatch { background-image: url("chrome://devtools/skin/images/filter-swatch.svg"); -moz-context-properties: stroke, fill; fill: #fff; stroke: #aeb0b1; } .inspector-angleswatch { background-image: url("chrome://devtools/skin/images/angle-swatch.svg"); -moz-context-properties: stroke, fill; fill: #fff; stroke: #aeb0b1; } .inspector-lineareasingswatch { background-image: url("chrome://devtools/skin/images/linear-easing-swatch.svg"); -moz-context-properties: stroke, fill; fill: #fff; stroke: #808080; } :root[forced-colors-active] :is(.inspector-bezierswatch, .inspector-lineareasingswatch, .inspector-filterswatch, .inspector-angleswatch) { fill: ButtonFace; stroke: var(--theme-icon-color); /* For some icons, the outline can conflate with the background image in a weird way on low-dpi screens. Adjust the offset a bit so there's a clear separation between the icon and the outline for a cleaner look */ outline-offset: 1px; &:hover { stroke: var(--theme-icon-hover-color); } }