@telekom/scale-components
Version:
Scale is the digital design system for Telekom products and experiences.
173 lines (151 loc) • 4.67 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/.
*/
/* notes for the `:visited` state
*
* Due to privacy restrictions this state is not styled differently than the initial state
* https://developer.mozilla.org/en-US/docs/Web/CSS/:visited#privacy_restrictions
*/
:host {
--font-weight: ;
--spacing-x-icon: var(--telekom-spacing-composition-space-03);
--line-offset: 0.0625em;
/* initial */
--color: var(--telekom-color-text-and-icon-link-standard);
--color-line-initial: var(--telekom-color-functional-interaction-subtle);
--line-thickness-initial: var(--telekom-line-weight-standard);
/* visited */
--color-visited: var(--telekom-color-text-and-icon-link-visited);
--color-line-visited: currentColor;
--line-thickness-visited: var(--line-thickness-initial);
/* hover */
--color-hover: var(--telekom-color-text-and-icon-link-hovered);
--color-line-hover: currentColor;
--line-thickness-hover: var(--telekom-line-weight-highlight);
/* focus */
--color-focus-outline: var(--telekom-color-functional-focus-standard);
--color-focus: var(--telekom-color-text-and-icon-link-standard);
--color-line-focus: transparent;
--line-thickness-focus: 0;
/* active */
--color-active: var(--telekom-color-text-and-icon-link-active);
--color-line-active: currentColor;
--line-thickness-active: var(--telekom-line-weight-highlight);
/* disabled */
--color-disabled: var(--telekom-color-text-and-icon-disabled);
--color-line-disabled: transparent;
--line-thickness-disabled: var(--line-thickness-initial);
}
:host {
display: inline;
margin-bottom: calc(var(--line-offset) + var(--line-thickness-initial));
}
[part='anchor'] {
cursor: pointer;
outline: none;
font-weight: var(--font-weight);
color: var(--color);
position: relative;
display: inline-flex;
text-decoration: underline;
text-underline-offset: 0.1875em;
text-underline-position: from-font;
text-decoration-thickness: var(
--line-thickness,
var(--line-thickness-initial)
);
/*FIXME:TOKEN color decoration should have 0.75 opacity*/
text-decoration-color: var(--line-color);
}
[part='anchor'] {
display: inline-flex;
align-items: center;
}
[part='content'] {
position: relative;
}
slot[name='icon']::slotted(*) {
position: relative;
margin-left: var(--spacing-x-icon);
}
/* states */
:host(.reverse) [part='anchor'] {
flex-direction: row-reverse;
}
:host(.reverse) slot[name='icon']::slotted(*) {
margin-left: auto;
margin-right: var(--spacing-x-icon);
}
:host(.no-underline) {
--color-line-initial: transparent;
--color-line-visited: transparent;
--line-color: transparent;
}
:host(.no-underline) [part='anchor'] {
text-decoration: none;
}
[part='anchor']:hover,
[part='anchor']:focus,
[part='anchor']:active,
:host(.no-underline) [part='anchor']:hover,
:host(.no-underline) [part='anchor']:active {
text-decoration: underline;
}
[part='anchor']:hover,
:host(.no-underline) [part='anchor']:hover {
color: var(--color-hover);
text-decoration-color: var(--color-line-hover);
text-decoration-thickness: var(
--line-thickness-hover,
var(--line-thickness-initial)
);
}
[part='anchor']:focus,
[part='anchor']:focus-visible {
color: var(--color-focus);
text-decoration-color: var(--color-line-focus);
text-decoration-thickness: var(
--line-thickness-focus,
var(--line-thickness-initial)
);
outline: var(--telekom-line-weight-highlight) solid var(--color-focus-outline);
outline-offset: var(--telekom-spacing-composition-space-01);
border-radius: var(--telekom-radius-small);
}
[part='anchor']:active,
:host(.no-underline) [part='anchor']:active {
color: var(--color-active);
text-decoration-color: var(--color-line-active);
text-decoration-thickness: var(
--line-thickness-active,
var(--line-thickness-initial)
);
}
[part='anchor']:visited {
color: var(--color-visited);
text-decoration-color: var(--color-line-visited);
text-decoration-thickness: var(
--line-thickness-visited,
var(--line-thickness-initial)
);
}
/* disabled */
:host(.disabled) {
cursor: not-allowed;
}
:host(.disabled) [part='anchor'],
:host(.disabled) [part='anchor']:visited,
:host(.disabled) [part='anchor']:hover,
:host(.disabled) [part='anchor']:active {
color: var(--color-disabled);
text-decoration: none;
cursor: not-allowed;
pointer-events: none;
}