@telekom/scale-components
Version:
Scale is the digital design system for Telekom products and experiences.
236 lines (202 loc) • 7.43 kB
CSS
/**
* @license
* Scale https://github.com/telekom/scale
*
* Copyright (c) 2021 Egor Kirpichev and contributors, Deutsche Telekom AG
*
* 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 https://mozilla.org/MPL/2.0/.
*/
:host {
--width: auto;
--spacing-x: var(--telekom-spacing-composition-space-08);
--spacing-x-icon-only: var(--telekom-spacing-composition-space-04);
--min-height: var(--telekom-spacing-composition-space-08);
--height-xs: var(--telekom-spacing-composition-space-08);
--height-small: var(--telekom-spacing-composition-space-10);
--height-regular: var(--telekom-spacing-composition-space-12);
--height-large: var(--telekom-spacing-composition-space-14);
--radius: var(--telekom-radius-small);
--transition: all var(--telekom-motion-duration-transition)
var(--telekom-motion-easing-standard),
border-radius var(--telekom-motion-duration-instant);
--box-shadow-focus: inset 0 0 0 var(--telekom-line-weight-highlight)
var(--telekom-color-functional-focus-standard);
--font-weight: var(--telekom-typography-font-weight-bold);
--font-size-large: var(--telekom-typography-font-size-body);
--font-size-small: var(--telekom-typography-font-size-caption);
--font-size-xs: var(--telekom-typography-font-size-small);
--line-height: var(--telekom-spacing-composition-space-04);
--spacing-icon-x: var(--telekom-spacing-composition-space-04);
--vertical-align: middle;
--border-color: var(--telekom-color-ui-border-standard);
--border-color-disabled: var(--telekom-color-ui-border-disabled);
--color-disabled: var(--telekom-color-text-and-icon-disabled);
/* size: small */
--font-size-small: var(--telekom-typography-font-size-small);
--line-height-small: var(--telekom-typography-line-spacing-standard);
--min-height-small: var(--telekom-spacing-composition-space-10);
/* variant: primary */
--radius-primary: var(--radius);
--background-primary: var(--telekom-color-ui-subtle);
--background-primary-disabled: var(--telekom-color-ui-disabled);
--color-primary: var(--telekom-color-ui-extra-strong);
--color-primary-hover: var(--telekom-color-primary-hovered);
--color-primary-active: var(--telekom-color-primary-pressed);
/* variant: secondary */
--background-secondary: transparent;
--color-secondary: var(--telekom-color-text-and-icon-standard);
--background-secondary-hover: var(--telekom-color-ui-state-fill-hovered);
--background-secondary-active: var(--telekom-color-ui-state-fill-pressed);
--background-secondary-disabled: none;
--border-secondary: var(--telekom-color-ui-border-standard);
--border-secondary-hover: var(--telekom-color-ui-border-hovered);
--border-secondary-active: var(--telekom-color-ui-border-pressed);
--border-secondary-focus: var(--telekom-color-functional-focus-standard);
/* selected */
--color-selected: var(--telekom-color-text-and-icon-white-standard);
--background-selected-light: var(--telekom-color-primary-standard);
--background-selected-hover-light: var(--telekom-color-primary-hovered);
--background-selected-active-light: var(--telekom-color-primary-pressed);
--background-selected-dark: var(--telekom-color-ui-extra-strong);
--background-selected-hover-dark: var(--telekom-color-ui-strong);
--background-selected-active-dark: var(--telekom-color-ui-strong);
/* high contrast */
--color-high-contrast: var(--telekom-color-text-and-icon-white-standard);
}
.toggle-button {
box-sizing: border-box;
display: inline-flex;
align-items: center;
position: relative;
border: 0;
outline: none;
cursor: pointer;
user-select: none;
font-family: inherit;
word-spacing: inherit;
letter-spacing: inherit;
justify-content: center;
text-decoration: none;
font-weight: var(--font-weight);
font-size: var(--font-size);
line-height: var(--line-height);
min-height: var(--min-height);
width: var(--width);
padding-left: var(--spacing-x);
padding-right: var(--spacing-x);
vertical-align: var(--vertical-align);
transition: var(--transition);
margin: 0;
color: var(--color-primary);
}
.toggle-button--primary {
background: var(--background-primary);
}
.toggle-button--secondary {
color: var(--color-secondary);
background: var(--background-secondary);
}
.toggle-button--icon-before ::slotted(*) {
margin-right: var(--spacing-icon-x);
pointer-events: none;
}
.toggle-button--icon-after ::slotted(*) {
margin-left: var(--spacing-icon-x);
pointer-events: none;
}
.toggle-button--icon-only ::slotted(*) {
pointer-events: none;
}
.toggle-button--xs {
height: var(--height-xs);
font-size: var(--font-size-xs);
}
.toggle-button--small {
height: var(--height-small);
font-size: var(--font-size-small);
}
.toggle-button--regular {
height: var(--height-regular);
font-size: var(--font-size-large);
}
.toggle-button--large {
height: var(--height-large);
font-size: var(--font-size-large);
}
.toggle-button:not(.button--disabled):focus {
box-shadow: var(--box-shadow-focus);
}
.toggle-button:not(.button--disabled):hover {
color: var(--color-secondary-hover);
background-color: var(--background-secondary-hover);
}
.toggle-button:not(.button--disabled):active {
color: var(--color-secondary-active);
background-color: var(--background-secondary-active);
}
.toggle-button:disabled {
color: var(--color-disabled);
pointer-events: none;
border: 1px solid var(--border-color-disabled);
}
.toggle-button:disabled.toggle-button--primary {
background: var(--background-primary-disabled);
}
.toggle-button--selected.toggle-button--color {
color: var(--color-selected);
background: var(--background-selected-light);
}
.toggle-button--selected:not(.button--disabled).toggle-button--color:hover {
color: var(--color-selected);
background: var(--background-selected-hover-light);
}
.toggle-button--selected:not(.button--disabled).toggle-button--color:active {
color: var(--color-selected);
background: var(--background-selected-active-light);
}
.toggle-button--selected.toggle-button--monochrome {
color: var(--telekom-color-text-and-icon-inverted-standard);
background: var(--background-selected-dark);
}
.toggle-button--selected:not(.button--disabled).toggle-button--monochrome:hover {
color: var(--color-selected);
background: var(--background-selected-hover-dark);
}
.toggle-button--selected:not(.button--disabled).toggle-button--monochrome:active {
color: var(--color-selected);
background: var(--background-selected-active-dark);
}
.toggle-button--border {
border: 1px solid var(--border-color);
}
.toggle-button--left,
.toggle-button--left:disabled {
border-right: 0;
border-radius: var(--radius-primary) 0 0 var(--radius-primary);
}
.toggle-button--right,
.toggle-button--right:disabled {
border-left: 0;
border-radius: 0 var(--radius-primary) var(--radius-primary) 0;
}
.toggle-button--both,
.toggle-button--both:disabled {
border-radius: var(--radius-primary);
}
.toggle-button--all,
.toggle-button--all:disabled {
border-radius: var(--radius-primary);
}
.toggle-button--neither,
.toggle-button--neither:disabled {
border-right: 0;
border-left: 0;
border-radius: 0;
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
.toggle-button {
color: var(--color-high-contrast);
}
}