Elizabeth Mitchell e8b5b29d1e feat(iconbutton): update tokens to v0.192
BREAKING CHANGE: Replace `container-size` tokens with `container-width` and `container-height`.

PiperOrigin-RevId: 566801178
2023-09-19 17:52:12 -07:00

117 lines
2.6 KiB
SCSS

//
// Copyright 2022 Google LLC
// SPDX-License-Identifier: Apache-2.0
//
// This file contains common static styles that are shared across icon button
// variants.
// go/keep-sorted start
@use 'sass:map';
// go/keep-sorted end
// go/keep-sorted start
@use '../../focus/focus-ring';
@use '../../icon/icon';
@use '../../tokens';
// go/keep-sorted end
@mixin styles() {
:host {
display: inline-flex;
outline: none;
-webkit-tap-highlight-color: transparent;
height: var(--_container-height);
width: var(--_container-width);
justify-content: center;
}
:host([touch-target='wrapper']) {
margin: max(0px, (48px - var(--_container-height)) / 2)
max(0px, (48px - var(--_container-width)) / 2);
}
md-focus-ring {
@include focus-ring.theme(
(
'shape-start-start': var(--_container-shape-start-start),
'shape-start-end': var(--_container-shape-start-end),
'shape-end-end': var(--_container-shape-end-end),
'shape-end-start': var(--_container-shape-end-start),
)
);
}
:host([disabled]) {
pointer-events: none;
}
.icon-button {
place-items: center;
background: none;
border: none;
box-sizing: border-box;
cursor: pointer;
display: flex;
place-content: center;
outline: none;
padding: 0;
position: relative;
text-decoration: none;
user-select: none;
z-index: 0;
flex: 1;
border-start-start-radius: var(--_container-shape-start-start);
border-start-end-radius: var(--_container-shape-start-end);
border-end-start-radius: var(--_container-shape-end-start);
border-end-end-radius: var(--_container-shape-end-end);
}
.icon {
::slotted(*) {
font-size: var(--_icon-size);
height: var(--_icon-size);
width: var(--_icon-size);
font-weight: inherit;
}
}
md-ripple {
z-index: -1; // Place behind content
border-start-start-radius: var(--_container-shape-start-start);
border-start-end-radius: var(--_container-shape-start-end);
border-end-start-radius: var(--_container-shape-end-start);
border-end-end-radius: var(--_container-shape-end-end);
}
.flip-icon .icon {
transform: scaleX(-1);
}
.icon {
display: inline-flex;
}
.link {
height: 100%;
outline: none;
position: absolute;
width: 100%;
}
.touch {
position: absolute;
height: max(48px, 100%);
width: max(48px, 100%);
}
:host([touch-target='none']) .touch {
display: none;
}
@media (forced-colors: active) {
:host([disabled]) {
--_disabled-icon-opacity: 1;
}
}
}