blob: c5796359a37f5a8433069b41532f27de3a9b4fc3 [file] [log] [blame]
/*
* Copyright 2021 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* TODO(crbug.com/1442257): remove stylelint-disable. */
/* stylelint-disable plugin/use_theme_colors */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/**
* Reset default UA styles for focused elements.
* The button styles below explicitly implement custom focus styles.
*/
*:focus,
*:focus-visible,
:host(:focus),
:host(:focus-visible) {
outline: none;
}
:host {
display: inline-flex;
flex-direction: row;
}
button {
/*
--override-button-no-right-border-radius decides
whether button has border radius on the right or not.
It works as a boolean variable:
* If it is 1, `--button-has-right-border-radius` becomes a 0 multiplier
for the border-radius-top-right and border-radius-bottom-right properties.
* If it is not set or 0, it becomes a 1 multiplier
for the same properties which means they'll continue to have the given
border radius.
*/
--button-has-right-border-radius: calc(1 - var(--override-button-no-right-border-radius, 0));
--button-border-size: 1px;
--button-height: 24px;
--button-width: 100%;
align-items: center;
border-radius: 12px calc(var(--button-has-right-border-radius) * 12px) calc(var(--button-has-right-border-radius) * 12px) 12px;
display: inline-flex;
font-family: inherit;
font-size: 12px;
font-weight: 500;
height: var(--button-height);
line-height: 14px;
padding: 5px 12px;
justify-content: center;
width: var(--button-width);
white-space: nowrap;
devtools-icon {
width: calc(var(--button-width) - 4px);
height: calc(var(--button-height) - 4px);
}
&.small {
--button-height: 20px;
border-radius: 2px calc(var(--button-has-right-border-radius) * 2px) calc(var(--button-has-right-border-radius) * 2px) 2px;
}
&.toolbar,
&.round {
--button-height: 24px;
--button-width: 24px;
background: transparent;
border: none;
overflow: hidden;
padding: 0;
white-space: nowrap;
&.small {
--button-height: 20px;
--button-width: 20px;
}
}
&.toolbar {
border-radius: 2px calc(var(--button-has-right-border-radius) * 2px) calc(var(--button-has-right-border-radius) * 2px) 2px;
}
&.round {
border-radius: 100%;
&.tiny {
--button-height: 18px;
--button-width: 18px;
}
}
&.primary {
border: var(--button-border-size) solid var(--sys-color-primary);
background: var(--sys-color-primary);
color: var(--sys-color-on-primary);
devtools-icon {
color: var(--sys-color-cdt-base-container);
}
}
&.tonal {
border: var(--button-border-size) solid transparent;
background: var(--sys-color-tonal-container);
color: var(--sys-color-on-tonal-container);
devtools-icon {
color: var(--sys-color-on-tonal-container);
}
}
&.secondary {
border: var(--button-border-size) solid var(--sys-color-tonal-outline);
background: var(--sys-color-cdt-base-container);
color: var(--sys-color-primary);
devtools-icon {
color: var(--icon-primary);
}
}
&.primary-toolbar {
devtools-icon {
color: var(--icon-primary);
}
}
&.text-with-icon {
padding: 0 calc(12px - var(--button-border-size)) 0 calc(8px - var(--button-border-size));
devtools-icon {
width: 20px;
height: 20px;
margin-right: 4px;
}
}
&.only-icon {
padding: 0;
}
&:focus-visible {
outline: 2px solid var(--sys-color-state-focus-ring);
outline-offset: 2px;
&.toolbar,
&.round {
background-color: var(--sys-color-tonal-container);
outline: none;
}
}
&:disabled {
pointer-events: none;
&.primary {
border: var(--button-border-size) solid var(--sys-color-state-disabled-container);
background: var(--sys-color-state-disabled-container);
color: var(--sys-color-state-disabled);
}
&.tonal {
border: var(--button-border-size) solid var(--sys-color-state-disabled-container);
background: var(--sys-color-state-disabled-container);
color: var(--sys-color-state-disabled);
}
&.secondary {
border: var(--button-border-size) solid var(--sys-color-state-disabled-container);
color: var(--sys-color-state-disabled);
}
&.toolbar,
&.round {
background: var(--sys-color-cdt-base-container);
color: var(--sys-color-state-disabled);
}
devtools-icon {
color: var(--icon-disabled);
}
}
&:hover {
&.primary {
background: color-mix(in sRGB, var(--sys-color-primary), var(--sys-color-state-hover-on-prominent) 6%);
border: var(--button-border-size) solid color-mix(in sRGB, var(--sys-color-primary), var(--sys-color-state-hover-on-prominent) 6%);
}
&.tonal {
background: color-mix(in sRGB, var(--sys-color-tonal-container), var(--sys-color-state-hover-on-subtle));
}
&.secondary {
background: var(--sys-color-state-hover-on-subtle);
}
&.toolbar,
&.round {
background-color: var(--sys-color-state-hover-on-subtle);
}
&.toobar {
devtools-icon {
color: var(--icon-default-hover);
}
}
}
&:active,
&.active {
&.primary {
background: color-mix(in sRGB, var(--sys-color-primary), var(--sys-color-state-ripple-primary) 32%);
border: var(--button-border-size) solid color-mix(in sRGB, var(--sys-color-primary), var(--sys-color-state-ripple-primary) 32%);
}
&.tonal {
background: color-mix(in sRGB, var(--sys-color-tonal-container), var(--sys-color-state-ripple-primary));
}
&.secondary {
background-color: var(--sys-color-surface-variant);
}
&.toolbar,
&.round {
background-color: var(--sys-color-state-ripple-neutral-on-subtle);
}
&.toolbar {
devtools-icon {
color: var(--icon-toggled);
}
}
}
&.text-with-icon.small {
padding: 0 calc(9px - var(--button-border-size)) 0 calc(3px - var(--button-border-size));
devtools-icon {
width: 16px;
height: 16px;
margin-right: 4px;
}
}
}
.spinner {
display: block;
width: 12px;
height: 12px;
border-radius: 6px;
border: 2px solid var(--sys-color-cdt-base-container);
animation: spinner-animation 1s linear infinite;
border-right-color: transparent;
margin-right: 4px;
&.secondary {
border: 2px solid var(--sys-color-primary);
border-right-color: transparent;
}
&.disabled {
border: 2px solid var(--sys-color-state-disabled);
border-right-color: transparent;
}
}
@keyframes spinner-animation {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}