@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
439 lines (438 loc) • 17.4 kB
CSS
/*
* Button theme
*
*/
/*
* Utilities
*/
/*
* Utilities
*/
/*
* Button mixins
*
*/
/*
* Utilities
*/
/*
* Utilities
*/
/*
* Button mixins
*
*/
.dnb-button--tertiary {
--button-tertiary-focus-left: -0.5rem;
--button-tertiary-focus-right: -0.5rem;
--button-tertiary-focus-overflow--icon-top: -0.5rem;
--button-tertiary-underline-left: var(
--button-tertiary-underline-overflow
);
--button-tertiary-underline-right: var(
--button-tertiary-underline-overflow
);
--button-tertiary-underline-overflow: 0;
--button-tertiary-underline-overflow--icon: calc(
(var(--button-icon-gutter) + var(--button-icon-size)) * -1
);
}
.dnb-button--tertiary .dnb-button__text {
position: relative;
}
.dnb-button--tertiary .dnb-button__text::after {
content: "";
position: absolute;
z-index: 1;
left: 0;
right: 0;
bottom: 0;
width: auto;
height: 0.095rem;
border-radius: 0.0475rem;
color: var(--color-sea-green);
background-color: currentcolor;
bottom: -0.0625rem;
color: transparent;
transition: color 250ms ease-in-out;
}
[data-visual-test-wrapper] .dnb-button--tertiary .dnb-button__text::after {
transition: none;
}
.dnb-button--tertiary .dnb-button__text::after {
left: var(--button-tertiary-underline-left);
right: var(--button-tertiary-underline-right);
}
.dnb-skeleton .dnb-button--tertiary .dnb-button__text::after {
content: none;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled]) {
outline: none;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled])::before {
content: "";
position: absolute;
z-index: 1;
top: 0;
left: var(--button-tertiary-focus-left);
bottom: 0;
right: var(--button-tertiary-focus-right);
height: inherit;
border-radius: inherit;
outline: none;
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: 0 0 0 var(--border-width) var(--border-color);
border-color: transparent;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled]) .dnb-button__text::after {
visibility: hidden;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]) .dnb-button__text::after {
visibility: visible;
}
.dnb-button--tertiary:active[disabled], html:not([data-whatintent=touch]) .dnb-button--tertiary:active[disabled] {
cursor: not-allowed;
}
.dnb-button--tertiary:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-button--tertiary:active:not([disabled]) {
outline: initial;
}
html[data-whatinput=keyboard] .dnb-button--tertiary:active:not([disabled]), html[data-whatinput=keyboard] html:not([data-whatintent=touch]) .dnb-button--tertiary:active:not([disabled]) {
box-shadow: none;
}
html[data-whatintent=touch] .dnb-button--tertiary:active:not([disabled]) .dnb-button__text::after, html[data-whatintent=touch] html:not([data-whatintent=touch]) .dnb-button--tertiary:active:not([disabled]) .dnb-button__text::after {
transition: none;
visibility: visible;
opacity: 1;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:active:not([disabled]) .dnb-button__text::after, html:not([data-whatintent=touch]) html:not([data-whatintent=touch]) .dnb-button--tertiary:active:not([disabled]) .dnb-button__text::after {
visibility: hidden;
}
.dnb-button--tertiary.dnb-button--has-text {
--button-padding-left: 0;
--button-padding-right: 0;
--button-icon-margin-top: calc(
(var(--button-height) - var(--button-icon-size)) / 2
);
}
.dnb-button--tertiary.dnb-button--has-text .dnb-button__icon {
align-self: flex-start;
}
.dnb-button--tertiary.dnb-button--icon-position-top {
--button-tertiary-focus-left: var(
--button-tertiary-focus-overflow--icon-top
);
--button-tertiary-focus-right: var(
--button-tertiary-focus-overflow--icon-top
);
flex-direction: column;
border-radius: 0.5rem;
vertical-align: middle;
}
.dnb-button--tertiary.dnb-button--icon-position-top.dnb-button--has-text {
--button-icon-margin-top: 0.5rem;
}
.dnb-button--tertiary.dnb-button--icon-position-top.dnb-button--has-text .dnb-button__icon {
align-self: center;
}
.dnb-button--tertiary.dnb-button--icon-position-top .dnb-button__text {
margin-top: 0;
margin-bottom: 0.25rem;
font-size: var(--font-size-x-small);
}
.dnb-button--tertiary.dnb-button--icon-position-top.dnb-button--size-large .dnb-button__text {
font-size: var(--font-size-small);
}
.dnb-button--tertiary.dnb-button--icon-position-top .dnb-button__alignment {
order: 3;
height: 0;
}
.dnb-button--tertiary.dnb-button--has-icon.dnb-button--has-text.dnb-button--icon-size-medium, .dnb-button--tertiary.dnb-button--has-icon.dnb-button--has-text.dnb-button--icon-size-large {
--button-tertiary-underline-overflow--icon: var(
--button-tertiary-underline-overflow
);
}
.dnb-button--tertiary.dnb-button--has-icon.dnb-button--has-text.dnb-button--icon-position-left {
--button-tertiary-focus-right: -1rem;
--button-tertiary-underline-left: var(
--button-tertiary-underline-overflow--icon
);
}
.dnb-button--tertiary.dnb-button--has-icon.dnb-button--has-text.dnb-button--icon-position-right {
--button-tertiary-focus-left: -1rem;
--button-tertiary-underline-right: var(
--button-tertiary-underline-overflow--icon
);
}
.dnb-button--tertiary.dnb-button--has-icon:not(.dnb-button--has-text) {
--button-tertiary-focus-left: 0;
--button-tertiary-focus-right: 0;
}
html[data-whatinput=keyboard] .dnb-button--tertiary:hover:focus .dnb-button__text::after {
visibility: hidden;
}
.dnb-button {
--button-background--focus: var(--sb-color-blue-light-3);
--button-border-radius--control-button: 3rem;
--button-padding--large: 1.5rem;
--button-primary-shadow: var(--sb-shadow-medium);
--button-primary-shadow--hover: var(--sb-shadow-medium);
--button-primary-color: var(--sb-color-white);
--button-primary-color--hover: var(--sb-color-purple-alternative);
--button-primary-color--active: var(--sb-color-white);
--button-primary-color--disabled: var(--sb-color-gray-dark-2);
--button-primary-background: var(--sb-color-purple-alternative);
--button-primary-background--hover: var(--sb-color-green);
--button-primary-background--active: var(--sb-color-purple-alternative);
--button-primary-background--disabled: var(--sb-color-gray-light);
--button-primary-border--hover: transparent;
--button-secondary-color: var(--sb-color-purple-alternative);
--button-secondary-color--hover: var(--sb-color-purple-alternative);
--button-secondary-color--active: var(--sb-color-purple-alternative);
--button-secondary-color--disabled: var(--sb-color-gray-dark);
--button-secondary-background: var(--sb-color-white);
--button-secondary-background--hover: var(--sb-color-green);
--button-secondary-background--active: var(--sb-color-white);
--button-secondary-border: var(--button-secondary-border--default);
--button-secondary-border--default: var(--sb-color-purple-alternative);
--button-secondary-border--hover: var(
--button-secondary-border--default
);
--button-secondary-border--active: var(
--button-secondary-border--default
);
--button-secondary-border--disabled: var(--sb-color-gray-light);
--button-tertiary-color: var(--sb-color-violet);
--button-tertiary-border: var(--sb-color-violet);
border: none;
}
.dnb-button--has-text.dnb-button--size-large {
--button-padding-icon: 1rem;
}
.dnb-button--primary {
color: var(--button-primary-color);
background-color: var(--button-primary-background);
box-shadow: var(--button-primary-shadow);
}
html:not([data-whatintent=touch]) .dnb-button--primary:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--primary:hover:not([disabled]) {
color: var(--button-primary-color--hover);
background-color: var(--button-primary-background--hover);
--border-color: var(--button-primary-border--hover);
--border-width: 0.0625rem;
box-shadow: inset 0 0 0 var(--border-width) var(--border-color), var(--button-primary-shadow--hover);
border-color: transparent;
}
.dnb-button--primary:active[disabled], html:not([data-whatintent=touch]) .dnb-button--primary:active[disabled] {
cursor: not-allowed;
}
.dnb-button--primary:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-button--primary:active:not([disabled]) {
color: var(--button-primary-color--active);
background-color: var(--button-primary-background--active);
}
.dnb-button--secondary {
color: var(--button-secondary-color);
background-color: var(--button-secondary-background);
--border-color: var(--button-secondary-border);
--border-width: 0.0625rem;
box-shadow: inset 0 0 0 var(--border-width) var(--border-color);
border-color: transparent;
}
html:not([data-whatintent=touch]) .dnb-button--secondary:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--secondary:hover:not([disabled]) {
--button-secondary-border: var(--button-secondary-border--hover);
color: var(--button-secondary-color--hover);
background-color: var(--button-secondary-background--hover);
}
.dnb-button--secondary:active[disabled], html:not([data-whatintent=touch]) .dnb-button--secondary:active[disabled] {
cursor: not-allowed;
}
.dnb-button--secondary:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-button--secondary:active:not([disabled]) {
--button-secondary-border: var(--button-secondary-border--active);
color: var(--button-secondary-color--active);
background-color: var(--button-secondary-background--active);
}
.dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-before, .dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-after {
box-shadow: none;
border: none;
}
html:not([data-whatintent=touch]) .dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-before:hover[disabled], html:not([data-whatintent=touch]) .dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-after:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-before:hover:not([disabled]), html:not([data-whatintent=touch]) .dnb-button--secondary:not(.dnb-button--has-text).dnb-button--control-after:hover:not([disabled]) {
box-shadow: none;
border: none;
}
html:not([data-whatintent=touch]) .dnb-button--primary:focus-visible[disabled], html:not([data-whatintent=touch]) .dnb-button--secondary:focus-visible[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--primary:focus-visible:not([disabled]), html:not([data-whatintent=touch]) .dnb-button--secondary:focus-visible:not([disabled]) {
color: var(--sb-color-blue-dark);
background-color: var(--button-background--focus);
outline: none;
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: inset 0 0 0 var(--border-width) var(--border-color), var(--sb-shadow-medium);
border-color: transparent;
}
.dnb-button[disabled] {
--button-primary-shadow: 0 0 transparent;
--button-primary-color: var(--button-primary-color--disabled);
--button-primary-background: var(
--button-primary-background--disabled
);
--button-secondary-color: var(--button-secondary-color--disabled);
--button-secondary-border--default: var(
--button-secondary-border--disabled
);
}
.dnb-button:not([disabled]).dnb-button__status--error {
--button-primary-shadow--hover: 0 0 transparent;
--button-primary-color: var(--sb-color-white);
--button-primary-color--hover: var(--sb-color-red);
--button-primary-color--active: var(--sb-color-white);
--button-primary-background: var(--sb-color-red);
--button-primary-background--hover: var(--sb-color-magenta-light-3);
--button-primary-background--active: var(--sb-color-red);
--button-primary-border--hover: var(--sb-color-red);
--button-secondary-color: var(--sb-color-red);
--button-secondary-color--hover: var(--sb-color-red);
--button-secondary-color--active: var(--sb-color-red);
--button-secondary-background--hover: var(--sb-color-magenta-light-3);
--button-secondary-border--default: var(--sb-color-red);
--button-tertiary-color: var(--sb-color-red);
--button-tertiary-border: var(--sb-color-red);
}
.dnb-button--tertiary {
--button-tertiary-focus-overflow--icon-top: 0;
--button-tertiary-underline-overflow: -0.5rem;
--button-tertiary-underline-overflow--icon: calc(
(
var(--button-icon-gutter) + var(--button-icon-size) - var(
--button-tertiary-underline-overflow
)
) * -1
);
--button-tertiary-underline-bottom: -0.5rem;
--button-tertiary-text-bottom--icon: 0.5rem;
--button-tertiary-text-top--icon: 0;
color: var(--button-tertiary-color);
background-color: transparent;
}
.dnb-button--tertiary .dnb-button__text::after {
height: 0.0625rem;
bottom: var(--button-tertiary-underline-bottom);
}
.dnb-button--tertiary.dnb-button--has-text.dnb-button--icon-position-top {
--button-padding-left: calc(
var(--button-tertiary-underline-overflow) * -1
);
--button-padding-right: calc(
var(--button-tertiary-underline-overflow) * -1
);
}
.dnb-button--tertiary.dnb-button--has-text.dnb-button--icon-position-top .dnb-button__text {
margin-top: var(--button-tertiary-text-top--icon);
margin-bottom: var(--button-tertiary-text-bottom--icon);
font-size: var(--button-font-size);
}
.dnb-button--tertiary.dnb-button--size-large {
--button-tertiary-underline-bottom: -0.75rem;
--button-tertiary-underline-overflow: -1.5rem;
--button-tertiary-text-bottom--icon: 0.75rem;
--button-tertiary-text-top--icon: 0.25rem;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]):not(:focus-visible) .dnb-button__text::after {
color: var(--button-tertiary-border);
transition: none;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]):not(.dnb-button--has-text) {
--focus-ring-width: 0.0625rem;
--sb-shadow-medium: 0 0 transparent;
color: var(--sb-color-blue-dark);
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]):not(.dnb-button--has-text)::before {
content: "";
position: absolute;
z-index: 1;
top: 0;
left: var(--button-tertiary-focus-left);
bottom: 0;
right: var(--button-tertiary-focus-right);
height: inherit;
border-radius: inherit;
outline: none;
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: inset 0 0 0 var(--border-width) var(--border-color), var(--sb-shadow-medium);
border-color: transparent;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]):not(.dnb-button--has-text)::before {
background-color: var(--button-background--focus);
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:hover:not([disabled]):not(.dnb-button--has-text) > * {
z-index: 2;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled]) {
color: var(--sb-color-blue-dark);
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled])::before {
content: "";
position: absolute;
z-index: 1;
top: 0;
left: var(--button-tertiary-focus-left);
bottom: 0;
right: var(--button-tertiary-focus-right);
height: inherit;
border-radius: inherit;
outline: none;
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: inset 0 0 0 var(--border-width) var(--border-color), var(--sb-shadow-medium);
border-color: transparent;
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled])::before {
background-color: var(--button-background--focus);
}
html:not([data-whatintent=touch]) .dnb-button--tertiary:focus-visible:not([disabled]) > * {
z-index: 2;
}
.dnb-button--tertiary[disabled] {
color: var(--sb-color-gray-dark);
}
.dnb-button--on-dark-background {
--button-primary-color: var(--sb-color-text);
--button-primary-color--hover: var(--sb-color-purple-alternative);
--button-primary-color--active: var(--sb-color-purple-alternative);
--button-primary-background: var(--sb-color-green);
--button-primary-background--hover: var(--sb-color-violet-light-2);
--button-primary-background--active: var(--sb-color-violet-light-3);
--button-secondary-color: var(--sb-color-white);
--button-secondary-color--hover: var(--sb-color-purple-alternative);
--button-secondary-color--active: var(--sb-color-purple-alternative);
--button-secondary-background: transparent;
--button-secondary-background--hover: var(--sb-color-violet-light-2);
--button-secondary-background--active: var(--sb-color-violet-light-3);
--button-secondary-border--default: var(--sb-color-green);
--button-secondary-border--hover: var(--sb-color-violet-light);
--button-secondary-border--active: var(--sb-color-violet-light);
--button-tertiary-color: var(--sb-color-white);
--button-tertiary-border: var(--sb-color-green);
}