UNPKG

@telekom/scale-components

Version:

Scale is the digital design system for Telekom products and experiences.

277 lines (249 loc) 9.8 kB
/** * @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-right: var(--telekom-spacing-composition-space-07); --spacing-x-left: var(--telekom-spacing-composition-space-07); --spacing-x-icon-only: var(--telekom-spacing-composition-space-05); --min-height: var(--telekom-spacing-composition-space-13); --min-width: var(--telekom-spacing-composition-space-13); --radius: var(--telekom-radius-standard); --transition: all var(--telekom-motion-duration-transition) var(--telekom-motion-easing-standard); --color-focus: var(--telekom-color-functional-focus-standard); --font-weight: var(--telekom-typography-font-weight-bold); --font-size: var(--telekom-typography-font-size-body); --line-height: var(--telekom-typography-line-spacing-tight); --spacing-icon-x: var(--telekom-spacing-composition-space-04); --vertical-align: middle; /* size: small */ --font-size-small: var(--telekom-typography-font-size-caption); --line-height-small: 1.125rem; --min-height-small: var(--telekom-spacing-composition-space-10); --spacing-x-right-small: var(--telekom-spacing-composition-space-06); --spacing-x-left-small: var(--telekom-spacing-composition-space-06); --spacing-x-icon-only-small: var(--telekom-spacing-composition-space-00); --spacing-icon-x-small: var(--telekom-spacing-composition-space-03); /* variant: primary */ --radius-primary: var(--radius); --background-primary: var(--telekom-color-primary-standard); --background-primary-hover: var(--telekom-color-primary-hovered); --background-primary-active: var(--telekom-color-primary-pressed); --background-primary-disabled: var(--telekom-color-ui-disabled); --color-primary: var(--telekom-color-text-and-icon-white-standard); --color-primary-disabled: var(--telekom-color-text-and-icon-disabled); /* variant: secondary */ --radius-secondary: var(--radius); --border-width-secondary: var(--telekom-spacing-composition-space-01); --background-secondary: transparent; --color-secondary: var(--telekom-color-text-and-icon-standard); --color-secondary-hover: var(--telekom-color-text-and-icon-standard); --color-secondary-active: var(--telekom-color-text-and-icon-standard); --color-secondary-disabled: var(--telekom-color-text-and-icon-disabled); --background-secondary: var(--telekom-color-ui-state-fill-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); /* variant: secondary white */ --border-secondary-white: var(--telekom-color-ui-white); --color-secondary-white: var(--telekom-color-ui-white); --background-secondary-white-hover: var( --telekom-color-ui-state-fill-hovered-inverted ); --background-secondary-white-active: var( --telekom-color-ui-state-fill-pressed-inverted ); --secondary-white-opacity: 0.5; /* variant: ghost */ --radius-ghost: var(--radius); --border-width-ghost: var(--telekom-spacing-composition-space-01); --spacing-x-ghost: var(--telekom-spacing-composition-space-04); --color-ghost: var(--telekom-color-text-and-icon-primary-standard); --color-ghost-hover: var(--telekom-color-text-and-icon-primary-hovered); --color-ghost-active: var(--telekom-color-text-and-icon-primary-pressed); --color-ghost-disabled: var(--telekom-color-text-and-icon-disabled); --background-ghost-hover: var(--telekom-color-ui-state-fill-hovered); --background-ghost-active: var(--telekom-color-ui-state-fill-pressed); display: inline-block; } .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); min-width: var(--min-width); width: var(--width); padding-left: var(--spacing-x-left); padding-right: var(--spacing-x-right); vertical-align: var(--vertical-align); transition: var(--transition); } .button.button--size-small { font-size: var(--font-size-small); line-height: var(--line-height-small); min-height: var(--min-height-small); padding-left: var(--spacing-x-left-small); padding-right: var(--spacing-x-right-small); } .button:not(.button--disabled):focus { outline: var(--telekom-line-weight-highlight) solid var(--color-focus); outline-offset: var(--telekom-spacing-composition-space-01); } .button.button--icon-before:not(.button--icon-only) ::slotted(*) { margin-right: var(--spacing-icon-x); margin-left: calc(var(--spacing-icon-x-small) * -1); margin-top: var(--spacing-icon-x); margin-bottom: var(--spacing-icon-x); } .button.button--icon-before:not(.button--icon-only).button--size-small ::slotted(*) { margin-right: var(--spacing-icon-x-small); margin-left: calc(var(--spacing-icon-x) * -0.5); } .button.button--icon-after:not(.button--icon-only) ::slotted(*) { margin-left: var(--spacing-icon-x); margin-right: calc(var(--spacing-icon-x-small) * -1); margin-top: var(--spacing-icon-x); margin-bottom: var(--spacing-icon-x); } .button.button--icon-after:not(.button--icon-only).button--size-small ::slotted(*) { margin-left: var(--spacing-icon-x-small); margin-right: calc(var(--spacing-icon-x) * -0.5); } .button:after { top: 0; left: 0; width: 100%; border: var(--telekom-spacing-composition-space-01) solid transparent; height: 100%; content: ''; display: block; position: absolute; box-sizing: border-box; pointer-events: none; border-radius: var(--radius); } .button--icon-only { padding-left: var(--spacing-x-icon-only); padding-right: var(--spacing-x-icon-only); } .button--icon-only.button--variant-secondary { padding-left: calc(var(--spacing-x-icon-only) - 1px); padding-right: calc(var(--spacing-x-icon-only) - 1px); } .button--icon-only.button--size-small { padding-left: var(--spacing-x-icon-only-small); padding-right: var(--spacing-x-icon-only-small); min-width: 32px; } .button--icon-only.button--size-small.button--variant-secondary { padding-left: calc(var(--spacing-x-icon-only-small) - 1px); padding-right: calc(var(--spacing-x-icon-only-small) - 1px); } .button--disabled { cursor: not-allowed; } /* Variants */ .button--variant-primary { text-align: center; border-radius: var(--radius); background: var(--background-primary); color: var(--color-primary); } .button--variant-primary:not(.button--disabled):hover { background: var(--background-primary-hover); } .button--variant-primary:not(.button--disabled):active { background: var(--background-primary-active); } .button--disabled.button--variant-primary { background: var(--background-primary-disabled); color: var(--color-primary-disabled); } .button--variant-secondary { background: var(--background-secondary); text-align: center; border-radius: var(--radius-secondary); border: var(--border-width-secondary) solid currentColor; color: var(--color-secondary); background-color: var(--background-secondary); border-color: var(--border-secondary); } .button--variant-secondary:not(.button--disabled):hover { color: var(--color-secondary-hover); background-color: var(--background-secondary-hover); border-color: var(--border-secondary-hover); } .button--variant-secondary:not(.button--disabled):active { color: var(--color-secondary-active); background-color: var(--background-secondary-active); border-color: var(--border-secondary-active); } .button--disabled.button--variant-secondary { color: var(--color-secondary-disabled); background-color: var(--background-secondary-disabled); } .button--variant-ghost { background: transparent; text-align: center; border-radius: var(--radius-ghost); border: var(--border-width-ghost) solid transparent; color: var(--color-ghost); padding-left: var(--spacing-x-ghost); padding-right: var(--spacing-x-ghost); } .button--variant-ghost:not(.button--disabled):hover { color: var(--color-ghost-hover); background-color: var(--background-ghost-hover); } .button--variant-ghost:not(.button--disabled):active { color: var(--color-ghost-active); background-color: var(--background-ghost-active); } .button--disabled.button--variant-ghost { color: var(--color-ghost-disabled); } .button--variant-secondary-white { background: var(--background-secondary); text-align: center; border-radius: var(--radius-secondary); border: var(--border-width-secondary) solid currentColor; color: var(--color-secondary-white); background-color: var(--background-secondary); border-color: var(--border-secondary-white); } .button--variant-secondary-white:not(.button--disabled):hover { background-color: var(--background-secondary-white-hover); } .button--variant-secondary-white:not(.button--disabled):active { background-color: var(--background-secondary-white-active); } .button--disabled.button--variant-secondary-white { opacity: var(--secondary-white-opacity); }