| /* |
| * Copyright (C) 2015-2018 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| * THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| .tab-bar { |
| position: absolute; |
| top: var(--toolbar-height); |
| left: 0; |
| right: 0; |
| height: var(--tab-bar-height); |
| |
| display: flex; |
| justify-content: space-between; |
| flex-wrap: wrap; |
| |
| border-bottom: var(--tab-item-medium-border-style); |
| |
| background-image: linear-gradient(to bottom, hsl(0, 0%, 78%), hsl(0, 0%, 72%)); |
| background-size: 100% 200%; |
| |
| white-space: nowrap; |
| overflow: hidden; |
| |
| outline: none; |
| |
| --tab-item-dark-border-color: hsl(0, 0%, 59%); |
| --tab-item-medium-border-color: hsl(0, 0%, 65%); |
| --tab-item-light-border-color: hsl(0, 0%, 85%); |
| --tab-item-extra-light-border-color: hsl(0, 0%, 92%); |
| |
| --tab-item-medium-border-style: 1px solid var(--tab-item-medium-border-color); |
| --tab-item-light-border-style: 1px solid var(--tab-item-light-border-color); |
| } |
| |
| body.window-inactive .tab-bar { |
| border-bottom-color: var(--tab-item-light-border-color); |
| |
| background-image: none !important; |
| background-color: var(--tab-item-extra-light-border-color) !important; |
| } |
| |
| .tab-bar > .top-border { |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| height: 1px; |
| |
| background-color: var(--tab-item-medium-border-color); |
| |
| z-index: 0; |
| } |
| |
| body.window-inactive .tab-bar > .top-border { |
| background-color: var(--tab-item-light-border-color); |
| } |
| |
| .tab-bar > .item { |
| display: flex; |
| flex-grow: 1; |
| |
| position: relative; |
| |
| z-index: 1; |
| |
| align-items: center; |
| |
| padding: 0 6px; |
| |
| min-width: 24px; |
| overflow: hidden; |
| |
| background-image: linear-gradient(to bottom, hsl(0, 0%, 78%), hsl(0, 0%, 72%)); |
| background-size: 100% 200%; |
| |
| border-top: var(--tab-item-medium-border-style); |
| |
| height: 100%; |
| line-height: 15px; |
| outline: none; |
| |
| /* FIXME: These cause noticeable transitions when focusing the window. Fix that with JavaScript? */ |
| /* transition-property: background-position, border-color; */ |
| /* transition-duration: 250ms; */ |
| /* transition-delay: 50ms; */ |
| } |
| |
| .tab-bar.calculate-width > .item { |
| flex: initial; |
| } |
| |
| body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item), |
| body[dir=ltr] .tab-bar.dragging-tab > .item.selected { |
| border-left: var(--tab-item-medium-border-style); |
| } |
| |
| body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item), |
| body[dir=rtl] .tab-bar.dragging-tab > .item.selected { |
| border-right: var(--tab-item-medium-border-style); |
| } |
| |
| .tab-bar > .item.pinned { |
| width: 24px; |
| flex: none; |
| justify-content: center; |
| } |
| |
| .tab-bar > .item.pinned.tab-picker { |
| width: 18px; |
| min-width: initial; |
| } |
| |
| .tab-bar > .item:not(.disabled).selected { |
| border-top-color: hsl(0, 0%, 74%); |
| background-image: linear-gradient(to bottom, hsl(0, 0%, 87%), hsl(0, 0%, 82%)); |
| background-size: 100% 100%; |
| } |
| |
| .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover { |
| background-position: 0 100%; |
| border-top-color: var(--tab-item-dark-border-color); |
| } |
| |
| body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover, |
| body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover + .item { |
| border-left-color: var(--tab-item-dark-border-color); |
| } |
| |
| body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover, |
| body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover + .item { |
| border-right-color: var(--tab-item-dark-border-color); |
| } |
| |
| body.window-inactive .tab-bar > .item { |
| border-top-color: var(--tab-item-light-border-color) !important; |
| |
| background-image: none !important; |
| background-color: var(--tab-item-extra-light-border-color) !important; |
| |
| transition: none; |
| } |
| |
| body[dir=ltr].window-inactive .tab-bar > .item { |
| border-left-color: var(--tab-item-light-border-color) !important; |
| } |
| |
| body[dir=rtl].window-inactive .tab-bar > .item { |
| border-right-color: var(--tab-item-light-border-color) !important; |
| } |
| |
| body.window-inactive .tab-bar > .item.selected { |
| background-image: none !important; |
| background-color: hsl(0, 0%, 96%) !important; |
| } |
| |
| .tab-bar > .item > .close { |
| width: 16px; |
| height: 16px; |
| |
| min-width: 16px; |
| min-height: 16px; |
| |
| opacity: 0; |
| |
| border-radius: 2px; |
| |
| background-image: url(../Images/Close.svg); |
| background-repeat: no-repeat; |
| |
| transition-property: background-color, opacity; |
| transition-duration: 250ms, 500ms; |
| transition-delay: 0, 50ms; |
| |
| -webkit-margin-end: 4px; |
| } |
| |
| body:not(.window-inactive) .tab-bar > .item:hover > .close { |
| opacity: 0.6; |
| } |
| |
| body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close { |
| opacity: 0; |
| } |
| |
| .tab-bar.single-tab > .item.default-tab > .close { |
| pointer-events: none; |
| } |
| |
| .tab-bar > .item > .close:hover { |
| background-color: hsla(0, 0%, 0%, 0.2); |
| } |
| |
| .tab-bar > .item > .close:active { |
| opacity: 0.8 !important; |
| } |
| |
| .tab-bar > .item > .flex-space { |
| display: flex; |
| flex: 1; |
| } |
| |
| .tab-bar > .item.ephemeral > .flex-space:last-child { |
| -webkit-margin-end: 16px; |
| } |
| |
| .tab-bar > .item > .icon { |
| width: 16px; |
| height: 16px; |
| |
| min-width: 16px; |
| min-height: 16px; |
| |
| opacity: 0.55; /* Assumes black glyphs. */ |
| |
| -webkit-user-drag: none; |
| } |
| |
| .tab-bar > .item.pinned > .icon { |
| width: 15px; |
| height: 15px; |
| min-width: 15px; |
| min-height: 15px; |
| } |
| |
| .tab-bar > .item.selected > .icon { |
| opacity: 0.7; |
| } |
| |
| .tab-bar > .item.disabled > .icon { |
| opacity: 0.35; |
| } |
| |
| .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon { |
| opacity: 0.6; |
| } |
| |
| .tab-bar > .item > .title { |
| color: hsla(0, 0%, 0%, 0.55); |
| |
| display: flex; |
| |
| min-width: 0; |
| max-width: 400px; |
| } |
| |
| .tab-bar:not(.collapsed) > .item > .title { |
| -webkit-margin-start: 6px; |
| } |
| |
| .tab-bar > .item > .title > .content { |
| min-width: 0; |
| width: 100%; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
| |
| .tab-bar:not(.animating) > .item:not(.selected):hover > .title { |
| color: hsla(0, 0%, 0%, 0.6); |
| } |
| |
| .tab-bar > .item.selected > .title { |
| color: hsla(0, 0%, 0%, 0.7); |
| } |
| |
| .tab-bar.collapsed > .item { |
| justify-content: center; |
| } |
| |
| .tab-bar.collapsed > .item:not(.pinned) > .icon { |
| display: none; |
| } |
| |
| .tab-bar.collapsed > .item > .flex-space { |
| display: none; |
| } |
| |
| .tab-bar.collapsed > .item > .close { |
| display: none; |
| -webkit-margin-end: 0; |
| } |
| |
| .tab-bar.collapsed > .item:hover > .close { |
| display: inline-block; |
| position: absolute; |
| } |
| |
| .tab-bar.collapsed > .item.ephemeral:hover > .icon { |
| display: none; |
| } |
| |
| .tab-bar.collapsed > .item.ephemeral:hover > .title { |
| visibility: hidden; |
| } |
| |
| .tab-bar.static-layout { |
| position: relative; |
| } |
| |
| .tab-bar.static-layout > .item { |
| position: absolute !important; |
| top: 0; |
| } |
| |
| .tab-bar.animating.closing-tab > .item { |
| transition-property: left; |
| transition-duration: 250ms; |
| transition-timing-function: ease-in-out; |
| } |
| |
| .tab-bar.animating:matches(.expanding-tabs, .inserting-tab) > .item { |
| transition-property: left, width; |
| transition-duration: 250ms; |
| transition-timing-function: ease-in-out; |
| } |
| |
| .tab-bar.animating.inserting-tab > .item.being-inserted { |
| z-index: 2; |
| min-width: 0 !important; |
| padding: 0 !important; |
| } |
| |
| .tab-bar.dragging-tab > .item.selected, |
| .tab-bar.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), |
| .tab-bar.animating.closing-tab > .item.selected { |
| border-right: var(--tab-item-medium-border-style); |
| } |
| |
| body.window-inactive .tab-bar.dragging-tab > .item.selected, |
| body.window-inactive .tab-bar.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), |
| body.window-inactive .tab-bar.animating.closing-tab > .item.selected { |
| border-right-color: var(--tab-item-light-border-color) !important; |
| } |
| |
| .tab-bar.dragging-tab > .item.selected { |
| z-index: 2; |
| pointer-events: none; |
| } |
| |
| @media (prefers-color-scheme: dark) { |
| .tab-bar { |
| background-image: none; |
| background-color: hsl(0, 0%, 23%); |
| |
| --tab-item-border-color: hsl(0, 0%, 36%); |
| |
| /* FIXME: <https://webkit.org/b/189769> Dark Mode: use semantic color names */ |
| --tab-item-dark-border-color: var(--tab-item-border-color); |
| --tab-item-medium-border-color: var(--tab-item-border-color); |
| --tab-item-light-border-color: var(--tab-item-border-color); |
| --tab-item-extra-light-border-color: var(--tab-item-border-color); |
| } |
| |
| .tab-bar > .item { |
| background-image: none; |
| background-color: hsl(0, 0%, 17%); |
| } |
| |
| .tab-bar > .item > .title { |
| color: white !important; |
| } |
| |
| .tab-bar > .item:not(.disabled).selected { |
| background-image: none; |
| background-color: hsl(0, 0%, 21%); |
| border-top-color: hsl(0, 0%, 37%); |
| } |
| |
| .tab-bar:not(.animating) > .item:not(.selected):hover { |
| background-color: hsl(0, 0%, 15%); |
| } |
| |
| .tab-bar > .item > .close, |
| .tab-bar > .item > .icon { |
| filter: var(--filter-invert); |
| } |
| |
| body.window-inactive .tab-bar { |
| --tab-item-border-color: hsl(0, 0%, 34%); |
| border-bottom-color: var(--tab-item-border-color); |
| |
| background-image: none !important; |
| background-color: hsl(0, 0%, 17%) !important; |
| } |
| |
| body.window-inactive .tab-bar > .item { |
| background-image: none !important; |
| background-color: hsl(0, 0%, 17%) !important; |
| } |
| |
| body.window-inactive .tab-bar > .item.selected { |
| background-color: var(--background-color) !important; |
| } |
| |
| body.window-inactive .tab-bar > .item > .title { |
| color: hsl(0, 0%, 58%) !important; |
| } |
| } |