@telekom/scale-components
Version:
Scale is the digital design system for Telekom products and experiences.
219 lines (187 loc) • 5.29 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: 368px;
--height-track: 6px;
--background-track: var(--telekom-color-ui-faint);
--radius-track: var(--telekom-radius-pill);
--spacing-track: var(--telekom-spacing-composition-space-07) 0
var(--telekom-spacing-composition-space-06);
--spacing-x-inner-track: 10px;
--background-bar: var(--telekom-color-primary-standard);
--radius-thumb: var(--telekom-radius-circle);
--size-thumb: 24px;
--border-color-thumb: rgba(0, 0, 0, 0.05);
--background-thumb: var(--telekom-color-ui-white);
--shadow-thumb: 0 0 2px 0 rgba(0, 0, 0, 0.24), 0 2px 4px 0 rgba(0, 0, 0, 0.24),
0 4px 12px 0 rgba(0, 0, 0, 0.26);
--color-focus: var(--telekom-color-functional-focus-standard);
--spacing-x-step-marks: 8px;
--color-step-mark: var(--telekom-color-text-and-icon-additional);
--radius-step-mark: var(--telekom-radius-circle);
--size-step-mark: 4px;
--font-label: var(--telekom-text-style-ui);
--font-helper-text: var(--telekom-text-style-small-bold);
--color-helper-text: var(--telekom-color-text-and-icon-additional);
}
[part~='base'] {
width: var(--width);
}
[part='label-wrapper'] {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
[part='label'] {
font: var(--font-label);
}
[part='value-text'] {
font: var(--font-label);
font-variant-numeric: tabular-nums;
}
[part='track-wrapper'] {
display: flex;
position: relative;
align-items: center;
}
[part='track'] {
position: relative;
box-sizing: border-box;
display: flex;
align-items: center;
margin: var(--spacing-track);
width: 100%;
height: var(--height-track);
background: var(--background-track);
border-radius: var(--radius-track);
border: 1px solid transparent;
}
/* Really holds the thumb, adding some spacing on the sides */
[part='inner-track'] {
position: absolute;
display: flex;
align-items: center;
left: var(--spacing-x-inner-track);
width: calc(100% - var(--spacing-x-inner-track) * 2);
height: 100%;
}
[part='bar'] {
height: 100%;
position: absolute;
z-index: 1;
border-radius: var(--radius-track);
background-color: var(--background-bar);
/* to cover the transparent border in the track */
border: 1px solid transparent;
}
[part~='thumb-wrapper'] {
position: absolute;
z-index: 3;
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
margin-left: -16px;
background-color: transparent;
}
[part~='thumb'] {
--_border: 0 0 0 var(--telekom-spacing-composition-space-01)
var(--border-color-thumb);
width: var(--size-thumb);
height: var(--size-thumb);
box-sizing: border-box;
border-radius: var(--radius-thumb);
background-color: var(--background-thumb);
box-shadow: var(--_border), var(--shadow-thumb);
border: 1px solid transparent;
}
[part~='thumb']:focus {
outline: var(--telekom-line-weight-highlight) solid var(--color-focus);
outline-offset: 1px;
}
[part='step-marks'] {
width: 100%;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
padding: 0 var(--spacing-x-step-marks);
}
[part='step-mark'] {
width: var(--size-step-mark);
height: var(--size-step-mark);
background: var(--color-step-mark);
border-radius: var(--telekom-radius-circle);
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
[part='step-mark'] {
border: 2px solid;
}
}
[part='meta'] {
display: flex;
justify-content: space-between;
}
[part='helper-text'] {
font: var(--font-helper-text);
color: var(--color-helper-text);
}
/* disabled */
/* TODO can this be overwritten? it should... */
[part~='disabled'] [part='label-wrapper'],
[part~='disabled'] [part='helper-text'] {
color: var(--telekom-color-text-and-icon-disabled);
}
[part~='disabled'] [part='bar'] {
background-color: var(--telekom-color-ui-border-disabled);
}
[part~='disabled'] [part~='thumb-wrapper'] {
display: none;
}
/* cursor */
[part~='thumb-wrapper']:hover {
cursor: grab;
}
[part~='thumb-wrapper']:active {
cursor: grabbing;
}
[part~='disabled'] [part='track-wrapper'] {
cursor: not-allowed;
}
/*
:host-context() is not widely supported yet
that's why the rules for the platform are duplicated
*/
/* PLATFORM iOS */
:host-context([data-platform='ios']) {
--height-track: 4px;
--size-thumb: 26px;
--size-step-mark: 2px;
}
:host([platform='ios']) {
--height-track: 4px;
--size-thumb: 26px;
--size-step-mark: 2px;
}
/* PLATFORM Android */
:host-context([data-platform='android']) {
--background-thumb: var(--telekom-color-primary-standard);
}
:host([platform='android']) {
--background-thumb: var(--telekom-color-primary-standard);
}
:host-context([data-platform='android']) [part~='thumb'] {
box-shadow: var(--_border), var(--telekom-shadow-raised-standard);
}
:host([platform='android']) [part~='thumb'] {
box-shadow: var(--_border), var(--telekom-shadow-raised-standard);
}