blob: 3a73cdd18d672bb4bd2dda5e20b5cd4bc9503506 [file] [edit]
// Copyright (C) 2024 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
@use "sass:math";
@import "../theme";
.pf-track {
--indent-size: 8px;
--sticky-top: 0;
--depth: 0;
font-family: var(--pf-font-compact);
font-weight: 300;
font-size: var(--pf-font-size-m);
user-select: none;
scroll-margin-top: calc(var(--sticky-top) * 1px);
&__header {
height: calc(var(--height) * 1px);
display: grid;
grid-template-columns:
calc(var(--depth) * var(--indent-size)) calc(
var(--track-shell-width) - (var(--depth) * var(--indent-size))
)
1fr;
grid-template-areas: "indent shell canvas";
&::before {
content: "";
grid-area: indent;
background: var(--pf-color-track-summary-expanded);
}
&--summary {
background-color: var(--pf-color-track-summary-collapsed);
}
&--expanded--summary {
position: sticky;
top: calc(var(--sticky-top) * 1px);
z-index: calc(16 - var(--depth));
background-color: var(--pf-color-track-summary-expanded);
color: var(--pf-color-track-summary-expanded-text);
border-color: var(--pf-color-track-summary-expanded);
.pf-track__shell {
border-color: var(--pf-color-track-summary-expanded);
&--highlight {
border-color: var(--pf-color-highlight);
}
}
.pf-track__canvas {
border-color: var(--pf-color-track-summary-expanded);
}
}
}
&__shell--lite {
// Just hide the title entirely when in lite mode. This title is never meant
// to be seen - it needs to exist in the DOM for native browser searching to
// work. However it can be momentarily visible when scrolling quickly or
// when DOM updates are slow, which can be jarring.
color: transparent;
}
&__shell {
grid-area: shell;
border-width: 0 0 1px 0; // Borders on bottom and right
border-style: solid;
border-color: var(--pf-color-border-secondary);
&--highlight {
background-color: var(--pf-color-highlight);
color: var(--pf-color-text);
}
&--drag-after {
box-shadow: inset 0 -6px 3px -3px var(--pf-color-primary);
}
&--drag-inside {
box-shadow: inset -6px 0 3px -3px var(--pf-color-primary);
}
&--drag-before {
box-shadow: inset 0 6px 3px -3px var(--pf-color-primary);
}
&--clickable {
cursor: pointer;
}
.pf-visible-on-hover {
display: none;
&.pf-active {
display: unset;
}
}
&:hover,
&:has(.pf-active) {
.pf-visible-on-hover {
display: unset;
}
}
}
&__buttons {
// Make the track buttons a little larger so they're easier to see & click
font-size: var(--pf-font-size-l);
margin-left: 2px;
}
&__canvas {
grid-area: canvas;
overflow: hidden; // Keeps subtitle width contained
border-bottom: solid 1px var(--pf-color-border-secondary);
&--error {
// Necessary trig because we have 45deg stripes
$pattern-density: 1px * math.sqrt(2);
$pattern-col: var(--pf-color-border);
$background-col: var(--pf-color-background);
background: repeating-linear-gradient(
-45deg,
$pattern-col,
$pattern-col $pattern-density,
$background-col $pattern-density,
$background-col $pattern-density * 4
);
}
}
&__menubar {
display: grid;
grid-template-columns: auto 1fr auto auto;
grid-template-rows: auto auto;
grid-template-areas:
"icon title chips buttons"
"none subtitle subtitle subtitle";
padding-inline: 1px;
padding-top: 1px;
position: sticky;
top: calc(var(--sticky-top) * 1px);
}
&__title-spacer {
grid-area: icon;
width: 2px;
}
&__collapse-button {
grid-area: icon;
}
&__title {
grid-area: title;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&-popup {
position: absolute;
border-radius: 2px;
background: transparent;
color: transparent;
text-overflow: unset;
pointer-events: none;
white-space: nowrap;
user-select: none;
width: max-content;
z-index: 10; /* Ensures it appears above other elements */
}
&:hover &-popup--visible {
box-shadow: 1px 1px 2px 2px var(--pf-color-box-shadow);
background: var(--pf-color-background);
color: var(--pf-color-text);
}
}
&__chips {
grid-area: chips;
margin-left: 2px;
}
&__subtitle {
grid-area: subtitle;
font-size: 11px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
&__buttons {
grid-area: buttons;
}
&__crash-popup {
max-width: 300px;
display: flex;
flex-direction: column;
row-gap: 6px;
}
}