@telekom/scale-components
Version:
Scale is the digital design system for Telekom products and experiences.
234 lines (194 loc) • 5.92 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 {
/* not selected */
--background-color-selected: var(--telekom-color-ui-base);
--button-radius: 6px;
--padding-top-bottom: var(--telekom-spacing-composition-space-03);
--height: 28px;
--font: var(--telekom-text-style-caption-bold);
--label-disabled: var(--telekom-color-text-and-icon-disabled);
--transition: all var(--telekom-motion-duration-transition)
var(--telekom-motion-easing-standard);
--color: var(--telekom-color-text-and-icon-standard);
--color-selected: var(--telekom-color-text-and-icon-primary-standard);
/* medium styles */
--font-medium: var(--telekom-text-style-ui-bold);
--height-medium: 36px;
/* large styles */
--font-large: var(--telekom-text-style-ui-bold);
--height-large: 40px;
/* hover styles */
--background-color-hover: var(--telekom-color-ui-state-fill-hovered);
/* active styles */
--background-color-active: var(--telekom-color-ui-state-fill-pressed);
display: flex;
align-items: center;
justify-content: center;
flex: 1;
}
.segment {
box-sizing: border-box;
position: relative;
border: 0;
height: 100%;
width: 100%;
border-radius: var(--button-radius);
padding-top: var(--padding-top-bottom);
padding-bottom: var(--padding-top-bottom);
transition: var(--transition);
background-color: transparent;
padding: 0;
}
.segment--mask {
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
position: relative;
height: 100%;
width: 100%;
border-radius: var(--button-radius);
background-color: transparent;
font: var(--font);
transition: var(--transition);
white-space: nowrap;
color: var(--color);
line-height: 1;
}
button.segment--small.segment--selected .segment--mask {
padding-left: var(--telekom-spacing-composition-space-04);
padding-right: var(--telekom-spacing-composition-space-05);
}
button.segment--icon-only.segment--small .segment--mask {
padding-left: var(--telekom-spacing-composition-space-06);
padding-right: var(--telekom-spacing-composition-space-06);
}
button.segment--small .segment--mask {
padding-left: 0.625rem;
padding-right: 0.625rem;
}
.segment--small {
height: var(--height);
}
.segment--medium {
height: var(--height-medium);
}
button.segment--medium.segment--selected .segment--mask {
padding-left: var(--telekom-spacing-composition-space-05);
padding-right: var(--telekom-spacing-composition-space-06);
}
button.segment--medium .segment--mask {
font: var(--font-medium);
padding-left: 0.875rem;
padding-right: 0.875rem;
}
.segment--large {
height: var(--height-large);
}
button.segment--large.segment--selected .segment--mask {
padding-left: var(--telekom-spacing-composition-space-06);
padding-right: var(--telekom-spacing-composition-space-07);
}
button.segment--large .segment--mask {
font: var(--font-large);
padding-left: var(--telekom-spacing-composition-space-06);
padding-right: var(--telekom-spacing-composition-space-07);
}
.segment--selected {
background-color: var(--background-color-selected);
box-shadow: var(--telekom-shadow-raised-standard);
}
.segment--selected .segment--mask {
color: var(--color-selected);
}
.segment--disabled.segment--selected .segment--mask {
color: var(--label-disabled);
}
.segment--disabled:not(.segment--selected) .segment--mask {
color: var(--label-disabled);
background-color: transparent;
}
.segment--left-sibling-selected {
border-radius: 0 var(--button-radius) var(--button-radius) 0;
margin-left: 0;
clip-path: inset(-2.75rem -2.75rem -2.75rem 0);
backface-visibility: hidden;
overflow: hidden;
}
.segment--right-sibling-selected {
border-radius: var(--button-radius) 0 0 var(--button-radius);
clip-path: inset(-2.75rem 0 -2.75rem -2.75rem);
margin-right: 0;
backface-visibility: hidden;
overflow: hidden;
position: relative;
}
.segment--left-right-sibling-selected {
clip-path: inset(-2.75rem 0 -2.75rem 0);
border-radius: 0;
margin-left: 0;
margin-right: 0;
backface-visibility: hidden;
}
.segment:not(.segment--disabled):hover .segment--mask {
background-color: var(--background-color-hover);
}
.segment:not(.segment--disabled):active .segment--mask {
background-color: var(--background-color-active);
}
.segment:focus {
box-shadow: var(--telekom-shadow-raised-standard);
outline: var(--telekom-spacing-composition-space-02) solid
var(--telekom-color-functional-focus-standard);
outline-offset: var(--telekom-spacing-composition-space-01);
z-index: 40;
position: relative;
}
.segment:not(.segment--selected):focus {
outline-offset: 0;
}
.segment--left-right-sibling-selected:focus,
.segment--right-sibling-selected:focus,
.segment--left-sibling-selected:focus {
clip-path: none;
}
/* FIXME remove the hard-coded icon names */
.segment:not(.segment--icon-only) scale-icon-action-checkmark,
.segment scale-icon-action-close {
margin-right: var(--telekom-spacing-composition-space-03);
}
.segment:not(.segment--selected) scale-icon-action-checkmark {
visibility: hidden ;
}
.segment scale-icon-action-checkmark {
vertical-align: middle;
}
.segment--selected:not(.segment--icon-only) .icon-container {
display: none ;
}
.segment .success-icon-container {
display: none;
}
.segment--selected .success-icon-container {
display: flex;
justify-content: center;
align-items: center;
}
.icon-container {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.segment--selected .icon-container {
color: var(--color-selected);
}