@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
283 lines • 9.97 kB
CSS
/*
* Accordion component
*
*/
/*
* Utilities
*/
.dnb-accordion {
--accordion-color-text: var(--accordion-color-text--default);
--accordion-color-description: var(
--accordion-color-description--default
);
--accordion-color-bg: var(--accordion-color-bg--default);
--accordion-color-border: var(--accordion-color-border--default);
--accordion-border-width: var(
--accordion-border-width--default,
0.0625rem
);
--accordion-border-radius: 0.5rem;
--accordion-easing: var(--easing-default);
--accordion-border-inset: var(--accordion-border-inset--default, inset);
--accordion-header-margin-vertical: 1.25rem;
--accordion-header-margin-vertical--description: 0.75rem;
--accordion-header-wrapper-margin: 1rem;
--accordion-header-wrapper-margin--icon-right: 1rem;
--accordion-header-icon-gutter: 1rem;
--accordion-header-icon-margin: 1rem;
--accordion-header-icon-alignment: flex-start;
--accordion-title-font-weight: var(--font-weight-basis);
--accordion-title-font-weight--expanded: var(--font-weight-medium);
--accordion-content-margin: 1rem 0 0 0;
--accordion-content-padding: 0;
position: relative;
display: flex;
flex-direction: column;
font-size: var(--font-size-small);
line-height: var(--line-height-basis);
}
.dnb-accordion__header {
display: flex;
align-items: center;
cursor: pointer;
outline: none;
color: var(--accordion-color-text, var(--accordion-color-text--default));
background-color: var(--accordion-color-bg);
box-shadow: var(--ui-accordion-box-shadow);
border: none;
border-radius: var(--accordion-border-radius);
}
html:not([data-whatintent=touch]) .dnb-accordion__header:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-accordion__header:hover:not([disabled]) {
--accordion-color-text: var(--accordion-color-text--hover);
--accordion-color-description: var(
--accordion-color-description--hover
);
--accordion-color-bg: var(--accordion-color-bg--hover);
--accordion-color-border: var(--accordion-color-border--hover);
--accordion-border-width: var(--accordion-border-width--hover);
--accordion-border-inset: var(--accordion-border-inset--hover);
}
html:not([data-whatintent=touch]) .dnb-accordion__header--after-click:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-accordion__header--after-click:hover:not([disabled]) {
--accordion-color-text: var(--accordion-color-text--after-click);
--accordion-color-description: var(
--accordion-color-description--after-click
);
--accordion-color-bg: var(--accordion-color-bg--after-click);
--accordion-color-border: var(
--accordion-color-border--after-click
);
}
.dnb-accordion__header:active[disabled], html:not([data-whatintent=touch]) .dnb-accordion__header:active[disabled] {
cursor: not-allowed;
}
.dnb-accordion__header:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-accordion__header:active:not([disabled]) {
--accordion-color-text: var(--accordion-color-text--active);
--accordion-color-description: var(
--accordion-color-description--active
);
--accordion-color-bg: var(--accordion-color-bg--active);
--accordion-color-border: var(--accordion-color-border--active);
--accordion-border-width: var(--accordion-border-width--active);
--accordion-border-inset: var(--accordion-border-inset--active);
}
html:not([data-whatinput=touch]) .dnb-accordion__header:focus-visible[disabled] {
cursor: not-allowed;
}
html:not([data-whatinput=touch]) .dnb-accordion__header:focus-visible:not([disabled]) {
--accordion-color-text: var(--accordion-color-text--focus);
--accordion-color-description: var(
--accordion-color-description--focus
);
--accordion-color-bg: var(--accordion-color-bg--focus);
--accordion-color-border: var(--accordion-color-border--focus);
--accordion-border-width: var(--accordion-border-width--focus);
--accordion-border-inset: var(--accordion-border-inset--focus);
}
.dnb-accordion__header[disabled] {
--accordion-color-text: var(--accordion-color-text--disabled);
--accordion-color-bg: var(--accordion-color-bg--disabled);
--accordion-color-border: var(--accordion-color-border--disabled);
--accordion-color-description: var(
--accordion-color-description--disabled
);
}
.dnb-accordion__header * {
pointer-events: none;
}
.dnb-accordion__header--prevent-click {
pointer-events: none;
}
.dnb-accordion__header__wrapper {
display: flex;
flex-direction: column;
width: 100%;
margin: var(--accordion-header-margin-vertical) var(--accordion-header-wrapper-margin) var(--accordion-header-margin-vertical) 0;
}
.dnb-accordion__header--description .dnb-accordion__header__wrapper {
margin-top: var(--accordion-header-margin-vertical--description);
margin-bottom: var(--accordion-header-margin-vertical--description);
}
.dnb-accordion__header__container {
margin: 0 1rem;
}
.dnb-accordion__header__icon {
align-self: var(--accordion-header-icon-alignment);
margin: var(--accordion-header-margin-vertical) var(--accordion-header-icon-gutter) var(--accordion-header-margin-vertical) var(--accordion-header-icon-margin);
font-size: var(--font-size-small);
line-height: var(--line-height-small);
transition: transform 400ms var(--accordion-easing);
}
@media (prefers-reduced-motion: reduce) {
.dnb-accordion__header__icon {
transition-duration: 0.01ms;
}
}
.dnb-accordion__header--description .dnb-accordion__header__icon {
margin-top: var(--accordion-header-margin-vertical--description);
}
.dnb-accordion__header--icon-right {
justify-content: space-between;
}
.dnb-accordion__header--icon-right .dnb-accordion__header__icon {
margin-right: var(--accordion-header-icon-margin);
margin-left: var(--accordion-header-icon-gutter);
order: 3;
}
.dnb-accordion__header--icon-right .dnb-accordion__header__container {
order: 1;
}
.dnb-accordion__header--icon-right .dnb-accordion__header__wrapper {
order: 2;
margin-right: 0;
margin-left: var(--accordion-header-wrapper-margin--icon-right);
}
.dnb-accordion__header--icon-right .dnb-accordion__header__wrapper + .dnb-accordion__header__container {
margin-right: 0;
}
.dnb-accordion__header--icon-right .dnb-accordion__header__container + .dnb-accordion__header__wrapper {
margin-left: 0;
}
html:not([data-whatintent=touch]) .dnb-accordion__header--outlined:hover[disabled] {
cursor: not-allowed;
}
html:not([data-whatintent=touch]) .dnb-accordion__header--outlined:hover:not([disabled]) {
z-index: 1;
}
.dnb-accordion__header--outlined, .dnb-accordion__header--filled {
--ui-accordion-box-shadow: var(
--accordion-border-inset,
var(--accordion-border-inset--default)
)
0 0 0
var(
--accordion-border-width,
var(--accordion-border-width--default)
)
var(
--accordion-color-border,
var(--accordion-color-border--default)
);
}
.dnb-accordion__header--expanded {
--accordion-title-font-weight: var(
--accordion-title-font-weight--expanded
);
}
.dnb-accordion__header__title {
font-size: var(--font-size-basis);
line-height: var(--line-height-basis);
font-weight: var(--accordion-title-font-weight);
}
.dnb-accordion__header__description {
color: var(--accordion-color-description, var(--accordion-color-description--default));
font-size: var(--font-size-small);
line-height: var(--line-height-small);
font-weight: var(--font-weight-basis);
}
.dnb-accordion__header__title + .dnb-accordion__header__description {
margin-top: 0.25rem;
}
.dnb-accordion__header__description + .dnb-accordion__header__title {
margin-top: 0.25rem;
}
.dnb-accordion--expanded > .dnb-accordion__header .dnb-accordion__header__icon {
transform: rotate(-180deg);
}
.dnb-accordion__content {
display: flex;
width: 100%;
will-change: height;
transition: height 400ms var(--accordion-easing), opacity 600ms var(--accordion-easing);
}
@media (prefers-reduced-motion: reduce) {
.dnb-accordion__content {
transition-duration: 0.01ms;
}
}
.dnb-accordion__content__inner {
width: 100%;
margin: var(--accordion-content-margin);
padding: var(--accordion-content-padding);
}
.dnb-accordion-group--single-container {
transition: min-height 1s var(--accordion-easing);
}
@media (prefers-reduced-motion: reduce) {
.dnb-accordion-group--single-container {
transition-duration: 0.01ms;
}
}
.dnb-accordion-group--single-container .dnb-accordion {
position: static;
max-width: 60rem;
}
@media screen and (min-width: 40.00625em) {
.dnb-accordion-group--single-container .dnb-accordion__header {
width: 40%;
}
.dnb-accordion-group--single-container .dnb-accordion__content {
margin-left: 1rem;
transition: opacity 1s var(--accordion-easing);
}
}
@media screen and (min-width: 40.00625em) and (prefers-reduced-motion: reduce) {
.dnb-accordion-group--single-container .dnb-accordion__content {
transition-duration: 0.01ms;
}
}
@media screen and (min-width: 40.00625em) {
.dnb-accordion-group--single-container .dnb-accordion__content__inner {
margin-top: 0;
}
}
@media screen and (min-width: 40.00625em) {
.dnb-accordion-group--single-container .dnb-accordion > .dnb-accordion__header .dnb-accordion__header__icon {
transform: rotate(-90deg);
}
}
.dnb-accordion-group--single-container .dnb-accordion-group__children {
max-width: 60rem;
}
@media screen and (min-width: 40.00625em) {
.dnb-accordion-group--single-container .dnb-accordion-group__children {
position: relative;
display: flex;
flex-direction: column;
}
.dnb-accordion-group--single-container .dnb-accordion-group__children .dnb-accordion__content {
position: absolute;
z-index: 10;
top: 0;
right: 0;
width: 60%;
}
}
.dnb-accordion > .dnb-accordion__header--no-animation .dnb-accordion__header__icon, html[data-visual-test] .dnb-accordion .dnb-accordion__header .dnb-accordion__header__icon {
transition: none;
}