diff options
Diffstat (limited to 'browser/themes/shared/urlbarView.css')
-rw-r--r-- | browser/themes/shared/urlbarView.css | 943 |
1 files changed, 943 insertions, 0 deletions
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css new file mode 100644 index 0000000000..a97c20444e --- /dev/null +++ b/browser/themes/shared/urlbarView.css @@ -0,0 +1,943 @@ +/* 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://browser/skin/urlbar-dynamic-results.css"); + +@namespace html url("http://www.w3.org/1999/xhtml"); + +:root { + --autocomplete-popup-highlight-background: SelectedItem; + --autocomplete-popup-highlight-color: SelectedItemText; + + --urlbar-popup-action-color: hsl(178, 100%, 28%); + + --urlbarView-action-slide-in-distance: 200px; + + --urlbarView-row-gutter: 2px; + + --urlbarView-item-inline-padding: var(--urlbar-icon-padding); + --urlbarView-favicon-width: 16px; + --urlbarView-icon-margin-end: calc(var(--urlbar-icon-padding) + var(--identity-box-margin-inline)); + + --urlbarView-result-button-size: 24px; + --urlbarView-result-button-background-opacity: 60%; + --urlbarView-result-button-selected-color: var(--toolbar-field-focus-color); + --urlbarView-result-button-selected-background-color: color-mix(in srgb, var(--toolbar-field-focus-background-color) var(--urlbarView-result-button-background-opacity), transparent); + --urlbarView-result-button-hover-color: var(--toolbar-field-focus-background-color); + --urlbarView-result-button-hover-background-color: color-mix(in srgb, var(--toolbar-field-focus-color) var(--urlbarView-result-button-background-opacity), transparent); +} + +:root:-moz-lwtheme { + --urlbar-popup-action-color: rgb(91,91,102); + --urlbar-popup-url-color: rgb(0,97,224); + /* Fallback colours for when theme authors don't define lwtheme variables. */ + --autocomplete-popup-highlight-background: rgb(0, 99, 255); + --autocomplete-popup-highlight-color: white; +} + +:root[lwt-toolbar-field-focus-brighttext] { + --urlbar-popup-url-color: var(--lwt-brighttext-url-color); + --urlbar-popup-action-color: #30e60b; +} + +:root[lwt-toolbar-field-brighttext] { + --autocomplete-popup-highlight-background: rgb(0, 99, 225); +} + +:root[lwt-toolbar-field-focus-brighttext] { + --urlbar-popup-action-color: rgb(191,191,201); +} + +@media (prefers-contrast) { + :root { + --urlbarView-result-button-background-opacity: 100%; + } +} + +:root:-moz-locale-dir(rtl) { + --urlbarView-action-slide-in-distance: -200px; +} + +.urlbarView { + /* Don't handle window drag events in case we are overlapping a toolbar */ + -moz-window-dragging: no-drag; + + display: block; + text-shadow: none; + overflow: clip; + margin-inline: calc(5px + var(--urlbar-container-padding)); + width: calc(100% - 2 * (5px + var(--urlbar-container-padding))); + /* Match urlbar-background's border. */ + border-inline: 1px solid transparent; +} + +.urlbarView-body-inner { + width: calc(100% + 2 * var(--urlbarView-row-gutter)); + margin-inline: calc(-1 * var(--urlbarView-row-gutter)); +} + +#urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner { + border-top: 1px solid var(--autocomplete-popup-separator-color); +} + +.urlbarView-results { + padding-block: 4px; + white-space: nowrap; +} + +/* Vertically center the one-offs when no results are present. */ +.urlbarView[noresults] > .urlbarView-body-outer > .urlbarView-body-inner > .urlbarView-results { + padding-block: 0; +} + +.urlbarView-row { + display: flex; + align-items: center; + fill: currentColor; + fill-opacity: var(--urlbar-icon-fill-opacity); + + /* Use a transparent border rather than margin such that the view's entire + hover area is contiguous and a row is always hovered as the user moves the + mouse across rows, even though each row's highlighted area is smaller. */ + border: var(--urlbarView-row-gutter) solid transparent; + border-radius: calc(var(--urlbarView-row-gutter) + var(--toolbarbutton-border-radius)); + background-clip: padding-box; +} + +.urlbarView-row[row-selectable]:not([selected]):hover { + background-color: var(--autocomplete-popup-hover-background); +} + +.urlbarView-row[selected] { + background-color: var(--autocomplete-popup-highlight-background); + color: var(--autocomplete-popup-highlight-color); +} + +:root:not([uidensity=compact]) .urlbarView-row:not([type=tip], [type=dynamic]) { + min-height: 32px; +} + +:root[uidensity=touch] .urlbarView-row:not([type=tip], [type=dynamic]) { + padding-block: 11px; +} + +.urlbarView-row-inner { + display: inline-flex; + flex: 1 1; + flex-wrap: nowrap; + overflow: hidden; + padding-inline: var(--urlbarView-item-inline-padding); + padding-block: 6px; +} + +:root:not([uidensity=compact]) .urlbarView-row-inner { + min-height: 20px; /* row min-height 32px - (2 * padding-block 6px) */ +} + +.urlbarView-row-inner, +.urlbarView-no-wrap { + flex-wrap: nowrap; + align-items: center; + justify-content: start; +} + +.urlbarView-no-wrap { + display: inline-flex; + max-width: 100%; + flex-grow: 0; + flex-shrink: 0; +} + +.urlbarView-url { + flex-grow: 1; + flex-shrink: 1; +} + +.urlbarView[actionoverride] .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-no-wrap, +.urlbarView-row[has-url]:not([type$=tab]) > .urlbarView-row-inner > .urlbarView-no-wrap, +.urlbarView-row[has-url]:is([type=remotetab], [sponsored]):is(:hover, [selected]) > .urlbarView-row-inner > .urlbarView-no-wrap { + /* We prioritize icons + title + action over the url, so they can grow freely, + but the url should never disappear when it's visible */ + flex-shrink: 0; + max-width: calc(70% - 2 * (var(--urlbarView-favicon-width) + (6px + 2px))); +} + +/* Wrap the url to a second line when the window is narrow. Do not wrap when the + window is also short, because fewer results will be shown. */ +@media screen and (min-height: 600px) { + .urlbarView-results[wrap] > .urlbarView-row:where(:not([rich-suggestion=with-icon])) > .urlbarView-row-inner { + flex-wrap: wrap; + } + .urlbarView-results[wrap] > .urlbarView-row > .urlbarView-row-inner > .urlbarView-no-wrap { + max-width: 100% !important; + flex-basis: 100%; + } + .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-url, + .urlbarView-results[wrap] > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top > .urlbarView-url { + margin-top: 2px; + } + /* urlbarView-url is forced to be LTR for RTL locales, so set the padding based on the browser's directionality. */ + .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-url:-moz-locale-dir(ltr) { + padding-left: calc(var(--urlbarView-item-inline-padding) + var(--identity-box-margin-inline) + var(--urlbarView-favicon-width)); + } + .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-url:-moz-locale-dir(rtl) { + padding-right: calc(var(--urlbarView-item-inline-padding) + var(--identity-box-margin-inline) + var(--urlbarView-favicon-width)); + } + /* When rich suggestions are enabled the space for the icon increases to allow for larger icons */ + .urlbarView-results[wrap]>.urlbarView-row[rich-suggestion=no-icon][has-url]>.urlbarView-row-inner>.urlbarView-url { + margin-inline-start: var(--urlbarView-icon-margin-end); + } + /* Note: switchtab entries show the url only in override mode, + remotetab and sponsored ones only when selected or :hover. */ + .urlbarView[actionoverride] .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, + .urlbarView-results[wrap] > .urlbarView-row[has-url]:not([type$=tab], [sponsored]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, + .urlbarView-results[wrap] > .urlbarView-row[has-url]:is([type=remotetab], [sponsored]):is(:hover, [selected]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, + .urlbarView-results[wrap] > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top > .urlbarView-row-body-top-no-wrap > .urlbarView-title-separator, + .urlbarView-results[wrap] > .urlbarView-row[type=tabtosearch] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator { + display: none; + } + .urlbarView-results[wrap] > .urlbarView-row[type=tabtosearch] > .urlbarView-row-inner > .urlbarView-no-wrap { + flex-wrap: wrap; + } + .urlbarView-results[wrap] > .urlbarView-row[type=tabtosearch] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + flex-basis: 100%; + margin-inline-start: calc(var(--urlbarView-item-inline-padding) + var(--identity-box-margin-inline) + var(--urlbarView-favicon-width)); + } + + .urlbarView-results[wrap] > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top { + flex-wrap: wrap; + } + .urlbarView-results[wrap] > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top > .urlbarView-row-body-top-no-wrap { + flex-basis: 100%; + } +} + +.urlbarView-overflowable, +.urlbarView-url { + overflow: hidden; +} + +.urlbarView-overflowable[overflow], +.urlbarView-url[overflow] { + mask-image: linear-gradient(to left, transparent, black 2em); +} + +.urlbarView-overflowable[overflow]:not(.urlbarView-title[isurl]):-moz-locale-dir(rtl) { + mask-image: linear-gradient(to right, transparent, black 2em); +} + +.urlbarView-title[isurl]:-moz-locale-dir(rtl), +.urlbarView-url:-moz-locale-dir(rtl) { + direction: ltr !important; +} + +.urlbarView-url:-moz-locale-dir(rtl) { + /* .urlbarView-url can grow due to `flex-grow: 1`, so without `text-align: + right`, the URL text would be left-aligned within .urlbarView-url for RTL + due to the `direction: ltr` rule. .urlbarView-title does not have this + problem since it does not have flex. */ + text-align: right; +} + +/* Rich Suggestions */ + +.urlbarView-row[rich-suggestion=with-icon] > .urlbarView-row-inner > .urlbarView-favicon { + width: 28px; + height: 28px; + margin-inline-end: 8px; +} + +.urlbarView-row[rich-suggestion=with-icon] > .urlbarView-row-inner { + padding-block: 4px; + flex-wrap: nowrap; +} + +.urlbarView-row[rich-suggestion=no-icon]:not([firefox-suggest-sponsored]) .urlbarView-favicon { + margin-inline: 4px 16px; +} + +.urlbarView-row[rich-suggestion=with-icon] > .urlbarView-row-inner > .urlbarView-no-wrap { + display: grid; + grid-template-columns: repeat(3, min-content); + align-items: center; + flex-shrink: 1; +} + +.urlbarView-row[rich-suggestion=with-icon]:not(:hover) .urlbarView-action { + visibility: collapse; +} + +.urlbarView-description { + /* We want the description to be last visually but to be after the title + in the screenreader */ + order: 2; + grid-area: 2 / 1 / 3 / 4; +} + +/* Favicon */ + +.urlbarView-favicon { + width: var(--urlbarView-favicon-width); + height: var(--urlbarView-favicon-width); + margin-inline-end: var(--urlbarView-icon-margin-end); + background-repeat: no-repeat; + background-size: contain; + object-fit: contain; + flex-shrink: 0; + -moz-context-properties: fill, fill-opacity; +} + +.urlbarView-row[tail-suggestion] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon { + visibility: hidden; +} + +.urlbarView-row[type=tabtosearch] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon { + /* We use the URL color for this icon to inherit its accessibility + properties, like adapting to high contrast modes. We also want to ensure + contrast from the result highlight. */ + color: var(--urlbar-popup-url-color); + -moz-context-properties: fill; +} + +/* Type icon */ + +.urlbarView-type-icon { + position: absolute; + width: 12px; + height: 12px; + margin-top: var(--urlbarView-favicon-width); + margin-inline-start: 8px; + background-repeat: no-repeat; + background-size: contain; + -moz-context-properties: fill, stroke; + stroke: var(--toolbar-field-focus-background-color); +} + +/* Favicon badges have this priority: pinned > bookmark. */ + +.urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon { + background-image: url(chrome://browser/skin/bookmark-12.svg); + fill: var(--toolbarbutton-icon-fill-attention); +} + +.urlbarView-row[pinned] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon { + background-image: url(chrome://browser/skin/pin-12.svg); + fill: rgb(91,91,102); +} + +:root[lwt-toolbar-field-focus-brighttext] .urlbarView-row[pinned] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon { + fill: rgb(251,251,254); +} + +/* Buttons */ + +.urlbarView-button { + display: inline-block; + min-width: var(--urlbarView-result-button-size); + min-height: var(--urlbarView-result-button-size); + background-size: 16px; + background-position: center; + background-repeat: no-repeat; + margin-inline: 4px; + -moz-context-properties: fill, fill-opacity; + border-radius: 100%; +} + +.urlbarView-button[selected] { + outline: var(--focus-outline); + outline-color: var(--autocomplete-popup-highlight-color); + outline-offset: 1px; +} + +.urlbarView-row:is([row-selectable]:hover, [selected]) > .urlbarView-button:not(:hover, [open]) { + color: var(--urlbarView-result-button-selected-color); + background-color: var(--urlbarView-result-button-selected-background-color); +} + +.urlbarView-button:is(:hover, [open]) { + color: var(--urlbarView-result-button-hover-color); + background-color: var(--urlbarView-result-button-hover-background-color); +} + +.urlbarView-button + .urlbarView-button { + margin-inline-start: 0; +} + +.urlbarView-button-block { + background-image: url("chrome://browser/skin/thumb-down.svg"); +} + +.urlbarView-button-help { + background-image: url("chrome://global/skin/icons/help.svg"); +} + +/* Result menu button */ + +.urlbarView-button-menu { + background-image: url("chrome://global/skin/icons/more.svg"); + background-color: var(--button-bgcolor); +} + +.urlbarView-results:not([disable-resultmenu-autohide]) > .urlbarView-row:not(:hover, [selected]) > .urlbarView-row-inner + .urlbarView-button-menu:not([open]):empty { + display: none; +} + +/* Labeled result menu button */ + +.urlbarView-results:not([wrap]) > .urlbarView-row > .urlbarView-button-menu:not(:empty) { + display: inline-flex; + align-items: center; + border-radius: var(--urlbarView-result-button-size); + padding-inline: 8px 26px; + background-position-x: right 4px; + font-size: 0.85em; +} + +.urlbarView-results:not([wrap]) > .urlbarView-row > .urlbarView-button-menu:not(:empty):-moz-locale-dir(rtl) { + background-position-x: left 4px; +} + +.urlbarView-results[wrap] > .urlbarView-row > .urlbarView-button-menu:not(:empty) { + /* Hide the label in narrow windows. */ + font-size: 0; +} + +/* Button with label, e.g. tip button */ + +.urlbarView-button:not(:empty, .urlbarView-button-menu) { + border-radius: var(--toolbarbutton-border-radius); + padding: 7px; + font-size: 0.93em; + font-weight: 600; + background-clip: padding-box; + min-height: 16px; + min-width: 8.75em; + text-align: center; + flex-basis: initial; + flex-shrink: 0; +} + +.urlbarView-button:not(:empty, :hover, .urlbarView-button-menu) { + background-color: var(--button-bgcolor); +} + +.urlbarView-button:not(:empty, .urlbarView-button-menu)[selected] { + color: var(--button-primary-color); + background-color: var(--button-primary-bgcolor); + outline-offset: var(--focus-outline-offset); +} + +.urlbarView-button:not(:empty, .urlbarView-button-menu)[selected]:hover { + background-color: var(--button-primary-hover-bgcolor); +} + +.urlbarView-button:not(:empty, .urlbarView-button-menu)[selected]:hover:active { + background-color: var(--button-primary-active-bgcolor); +} + +.urlbarView-button:not(:empty) + .urlbarView-button:empty { + /* Add space between a labeled button followed by an unlabeled button. */ + margin-inline-start: 1.8em; +} + +.urlbarView-button:not(:empty, .urlbarView-button-menu):last-child { + /* Add space between a labeled button and the trailing edge of the panel. */ + margin-inline-end: 1.8em; +} + +/* Tip rows */ + +.urlbarView-row[type=tip] { + padding-block: 18px; + border-radius: 0; +} + +.urlbarView-row[type=tip]:not(:last-child) { + border-bottom: 1px solid var(--autocomplete-popup-separator-color); + margin-bottom: 4px; +} + +.urlbarView-row[type=tip]:not(:first-child) { + border-top: 1px solid var(--autocomplete-popup-separator-color); + margin-top: 4px; +} + +.urlbarView-row[type=tip] > .urlbarView-row-inner { + min-height: 32px; + + /* Add space between the tip title (and the rest of row-inner) and its + button. */ + margin-inline-end: 1.8em; +} + +.urlbarView-row[type=tip]:not([tip-type=dismissalAcknowledgment]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon { + width: 24px; + height: 24px; + margin-inline-end: 12px; + flex-basis: 24px; + flex-grow: 0; +} + +.urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, +.urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-url { + display: none; +} + +.urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title { + white-space: normal; +} + +.urlbarView-row[type=tip][tip-type=dismissalAcknowledgment] { + padding-block: 6px; +} + +/* Row label (a.k.a. group label) */ + +.urlbarView-row[label]::before { + content: attr(label); + display: block; + /* Remove the label from the document flow so it doesn't affect the row + selection and hover states. */ + position: absolute; + /* `top` controls how far the label is from the main part of the row. */ + top: calc(-1.27em - 2px); + margin-inline-start: var(--urlbarView-item-inline-padding); + font-size: 0.8em; + /* The color and opacity of labels is the same as the "This time, search with" + text in the search shortcuts. See `.search-panel-header > label` in + searchbar.css. */ + color: var(--toolbar-field-focus-color); + opacity: 0.6; + pointer-events: none; +} +:root[lwt-toolbar-field-focus-brighttext] .urlbarView-row[label]::before { + /* Same as `.search-panel-header > label` in searchbar.css */ + opacity: 1; +} + +.urlbarView-row[label] { + position: relative; + /* `margin-block-start` controls how far the main part of the row is from the + main part of the previous row. */ + margin-block-start: calc(1.46em + 4px); +} + +/* Feedback acknowledgment */ + +.urlbarView-row[feedback-acknowledgment]::after { + content: attr(feedback-acknowledgment); + display: flex; + align-items: center; + position: absolute; + bottom: 0.72em; + font-size: 0.85em; + margin-inline-start: var(--urlbarView-item-inline-padding); + padding-inline-start: calc(var(--urlbarView-favicon-width) + 6px); + background-image: url("chrome://branding/content/icon32.png"); + background-repeat: no-repeat; + background-position: 0 center; + background-size: var(--urlbarView-favicon-width); + min-height: var(--urlbarView-favicon-width); +} + +.urlbarView-row[feedback-acknowledgment] { + position: relative; + padding-bottom: 1.94em; +} + +/* Title */ + +.urlbarView-title { + white-space: nowrap; + /* Explicitly set line-height to avoid excessively tall rows if the title triggers use of + fallback fonts with extreme metrics. */ + line-height: 1.4; +} + +/* Tail suggestions */ +.urlbarView-tail-prefix { + display: none; + justify-content: flex-end; + white-space: pre; +} + +.urlbarView-row[tail-suggestion] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-tail-prefix { + display: inline-flex; +} + +.urlbarView-tail-prefix > .urlbarView-tail-prefix-string { + visibility: hidden; +} + +.urlbarView-tail-prefix > .urlbarView-tail-prefix-char { + position: absolute; +} + +/* Title separator */ + +.urlbarView-title-separator::before { + content: "\2014"; + margin: 0 .4em; + opacity: 0.6; +} + +.urlbarView-title:empty + .urlbarView-tags:empty + .urlbarView-title-separator { + display: none; +} + +/* URLs, action labels, tags */ + +.urlbarView-tags, +.urlbarView-url, +.urlbarView-title:not(:empty) ~ .urlbarView-action { + font-size: .85em; +} + +.urlbarView-title:not(:empty) ~ .urlbarView-action { + color: var(--urlbar-popup-action-color); +} + +.urlbarView-row[sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + color: unset; + opacity: .6; +} + +.urlbarView-row[sponsored][selected] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action, +.urlbarView-row[sponsored] > .urlbarView-row-inner[selected] > .urlbarView-no-wrap > .urlbarView-action { + opacity: 1; +} + +/* Firefox Suggest sponsored results */ + +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner { + /* 0px of top padding because the space between the favicon/title and the top + edge of the row is determined by the favicon margin-top and we don't want + any extra padding to complicate that. 1px of bottom padding so the bottom + edge of the action isn't touching the bottom edge of the row. The space + between the bottom edge of the favicon and the bottom edge of the row is + determined by this + the action margin-top. */ + padding-block: 0 1px; +} + +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap { + /* Wrap the action span onto a new row. */ + flex-wrap: wrap; +} + +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon { + /* The favicon should be vertically centered in the row. The action span wraps + below the favicon and title, leaving the favicon centered with the title, + not the row, so we add margin-top. Normally there is 8x between the top + edge of the favicon and the top edge of the row. Here 1em = 13.75px, so + that's 8 / 13.75 =~ 0.58em. */ + margin-top: 0.58em; +} + +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title { + /* The width of favicon + this title element + help icon is over than total + displayed width, favicon and title will collapse as different row, the style + will be broken. To avoid it, we specify the max displayable width for title + explicitly. */ + flex-basis: calc(100% - var(--urlbarView-favicon-width) - var(--urlbarView-icon-margin-end)); + /* Move the title away from the action a little. This does not affect the + height of the row. */ + margin-top: -0.3em; +} + +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + flex-basis: 100%; + margin-inline-start: calc(var(--urlbarView-favicon-width) + var(--urlbarView-icon-margin-end)); + font-size: 0.73em; + /* This value + the bottom padding control the space between the bottom edge + of the favicon and the bottom edge of the row. The bottom padding is 1px, + leaving 8px - 1px = 7px we need to make up here. Here 1em = 0.73 * 13.75 =~ + 10px, so that's 7 / 10 = 0.7em. However, the action itself takes up some of + that space, so it's not that simple. The value used here was arrived at by + trial and error and is approximately 5px. */ + margin-top: -0.5em; +} + +@media (prefers-reduced-motion: no-preference) { + /* The slide-in effect is delayed ~100ms to reduce motion during result + composition. We set opacity: 0 at the 0% keyframe to ensure the text is not + seen by the user until after the delay. */ + @keyframes urlbarView-action-slide-in { + 0%, 28.6% { + translate: var(--urlbarView-action-slide-in-distance); + opacity: 0; + } + 100% { + translate: 0; + opacity: 1; + } + } + + .urlbarView-results > .urlbarView-row > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title:not(:empty) ~ .urlbarView-action[slide-in] { + animation-name: urlbarView-action-slide-in; + animation-duration: 350ms; + animation-timing-function: var(--animation-easing-function); + } +} + +.urlbarView-url { + color: var(--urlbar-popup-url-color); + /* Increase line-height to avoid cutting overhanging glyphs due to masking on + the element */ + line-height: 1.4; +} + +.urlbarView-row:is(:hover, [selected]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action, +.urlbarView-row[selected] > .urlbarView-row-inner > .urlbarView-url, +.urlbarView-row[type=tabtosearch][selected] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon { + color: inherit; +} + +.urlbarView-row:is([type=remotetab], [sponsored]):not([selected], :hover) > .urlbarView-row-inner > .urlbarView-url, +.urlbarView-row:is([type=search], [restyled-search]):not([selected], [show-action-text], :hover) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, +.urlbarView-row:not([has-action], [has-url], [restyled-search]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, +.urlbarView:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-url { + /* Use visibility:collapse instead of display:none since the latter can + confuse the overflow state of title and url elements when their content + changes while they're hidden. */ + visibility: collapse; +} + +.urlbarView-row[has-url]:is([type=remotetab], [sponsored]):is([selected], :hover) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action, +.urlbarView-row:is([type=search], [restyled-search]):not([selected], [rich-selection], [show-action-text], :hover) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action, +.urlbarView-row:not([has-action], [has-url], [restyled-search]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action, +.urlbarView-row[firefox-suggest-sponsored] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator, +.urlbarView[actionoverride] .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + display: none; +} + +/* Switch-to-tab action text is styled as a chiclet. */ +.urlbarView-row:is([type=switchtab], [type=remotetab]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + color: var(--urlbar-box-text-color); + background-color: var(--urlbar-box-focus-bgcolor); + border-radius: var(--toolbarbutton-border-radius); + padding: 6px 8px; + margin-block: -6px; + margin-inline-start: 8px; +} + +:root[uidensity=compact] .urlbarView-row:is([type=switchtab], [type=remotetab]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + padding: 3px 6px; + margin-block: -3px; +} + +.urlbarView-row:is([type=switchtab], [type=remotetab]):is([selected], :hover) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-action { + color: var(--urlbarView-result-button-selected-color); + background-color: var(--urlbarView-result-button-selected-background-color); +} + +.urlbarView-row[type=remotetab]:not([selected], :hover) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator::before, +.urlbarView:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator::before { + /* We make the title separator transparent so it stays in the accessibility + tree. We want screen readers to pause between the result title and the + switch-to-tab action text. */ + opacity: 0; + /* -1em for the width of the \2014 character. -.4em to offset the + margin-inline-start already set on this element. */ + margin-inline-end: -1.4em; +} + +/* Tags */ + +.urlbarView-tags { + display: flex; + /* Increase line-height to avoid cutting overhanging glyphs due to masking on + the element */ + line-height: 1.4; +} + +.urlbarView-tag { + border: 1px solid color-mix(in srgb, currentColor 30%, transparent); + padding: 0 4px; + margin-inline-start: .4em; + border-radius: 4px; +} + +/* Best match */ + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner { + align-items: center; + justify-content: start; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner, +.urlbarView-results[wrap] > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner { + flex-wrap: nowrap; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-favicon { + width: 52px; + height: 52px; + flex-basis: 52px; + flex-shrink: 0; + flex-grow: 0; + border-radius: 2px; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body { + flex-grow: 1; + flex-shrink: 1; + min-width: 0; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-items: center; + justify-content: start; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top > .urlbarView-row-body-top-no-wrap { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-items: center; + justify-content: start; + flex-shrink: 0; + min-width: 0; +} + +.urlbarView-results:not([wrap]) > .urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-top > .urlbarView-row-body-top-no-wrap { + /* Limit the title (which is inside .urlbarView-row-body-top-no-wrap) to 70% + of the width so the URL is never completely hidden. */ + max-width: 70%; +} + +.urlbarView-row[type=bestmatch] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-bottom { + font-size: 0.73em; + opacity: 0.6; +} + +.urlbarView-row[type=bestmatch][selected] > .urlbarView-row-inner > .urlbarView-row-body > .urlbarView-row-body-bottom { + opacity: 1; +} + +/* Search one-offs */ + +#urlbar .search-one-offs:not([hidden]) { + display: flex; + align-items: start; + padding-block: 10px; + flex-wrap: wrap; +} + +.urlbarView:not([noresults]) > .search-one-offs:not([hidden]) { + border-top: 1px solid var(--autocomplete-popup-separator-color); +} + +:root[uidensity=touch] #urlbar .search-one-offs:not([hidden]) { + padding-block: 15px; +} + +#urlbar .search-panel-one-offs-container { + /* Make sure horizontally we can fit four buttons, empty space, settings. */ + min-width: calc(4 * /* one-off with end margin */ 40px + /* settings with start margin */ 56px); +} + +#urlbar .search-panel-header { + padding: 0; + min-height: 28px; + display: flex; + flex-direction: column; + justify-content: center; +} + +#urlbar .search-panel-one-offs-header-label { + white-space: nowrap; + margin: 0; + padding-inline: var(--urlbarView-item-inline-padding) 18px; +} + +#urlbar .searchbar-engine-one-off-item { + min-width: 28px; + height: 28px; + margin-inline: 0 12px; + border-radius: var(--toolbarbutton-border-radius); +} + +#urlbar .searchbar-engine-one-off-item:last-child { + /* This applies to both the last one-off and the compact settings button */ + margin-inline-end: 0; +} + +#urlbar .search-setting-button { + /* Force empty space before the button */ + margin-inline-start: calc(32px - /* settings start padding */ 8px ); +} + +.urlbarView-row[source="bookmarks"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon, +#urlbar-engine-one-off-item-bookmarks { + list-style-image: url("chrome://browser/skin/bookmark.svg"); + fill: var(--toolbarbutton-icon-fill-attention); + fill-opacity: 1; + -moz-context-properties: fill, fill-opacity; +} + +.urlbarView-row[source="tabs"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon, +#urlbar-engine-one-off-item-tabs { + list-style-image: url("chrome://browser/skin/tab.svg"); + -moz-context-properties: fill, fill-opacity; + fill: currentColor; + fill-opacity: var(--urlbar-icon-fill-opacity); +} + +.urlbarView-row[source="history"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon, +#urlbar-engine-one-off-item-history { + list-style-image: url("chrome://browser/skin/history.svg"); + -moz-context-properties: fill, fill-opacity; + fill: currentColor; + fill-opacity: var(--urlbar-icon-fill-opacity); +} + +.urlbarView-row[source="actions"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon, +#urlbar-engine-one-off-item-actions { + list-style-image: url("chrome://browser/skin/quickactions.svg"); + -moz-context-properties: fill, fill-opacity; + fill: currentColor; + fill-opacity: var(--urlbar-icon-fill-opacity); +} + +/** + * We remove the blue fill from the bookmark icon when it is selected. We use + * a blue color as the selection background-color in some instances (Linux with + * blue system color; fallback for third-party themes) and we want to ensure + * contrast. + */ +.urlbarView-row[source="bookmarks"][selected] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon, +#urlbar-engine-one-off-item-bookmarks[selected] { + fill: currentColor; + fill-opacity: var(--urlbar-icon-fill-opacity); +} + +/* search bar popup */ + +#PopupSearchAutoComplete { + --panel-color: var(--toolbar-field-focus-color); + --panel-background: var(--toolbar-field-focus-background-color); + --panel-border-color: var(--arrowpanel-border-color); +} + +#PopupSearchAutoComplete::part(content) { + --panel-padding: var(--panel-subview-body-padding); + /* NOTE(emilio): Once bug 1551637 is fixed we don't need to use block layout + * for this (though it doesn't really hurt) */ + display: block; +} + +@media not (prefers-contrast) { + #PopupSearchAutoComplete::part(content) { + /* Remove the top border since the panel is flush with the input. */ + border-top-width: 0; + } +} + +#PopupSearchAutoComplete .autocomplete-richlistitem[selected] { + background: var(--autocomplete-popup-highlight-background); + color: var(--autocomplete-popup-highlight-color); +} |