@cbpds/web-components
Version:
Web components for the CBP Design System.
237 lines (233 loc) • 13.4 kB
CSS
/*
* Caution: "global styles" get injected into every component and can cause file size bloat.
* These should only include SASS variables and mixins that are not written out to CSS directly
*/
/**
* @prop --cbp-accordion-item-color: var(--cbp-color-text-darker);
* @prop --cbp-accordion-item-color-background: var(--cbp-color-gray-cool-10);
* @prop --cbp-accordion-item-border-width: var(--cbp-border-width-xs);
* @prop --cbp-accordion-item-border-style: solid;
* @prop --cbp-accordion-item-color-hover: var(--cbp-color-text-darker);
* @prop --cbp-accordion-item-color-background-hover: var(--cbp-color-interactive-secondary-light);
* @prop --cbp-accordion-item-color-open-hover: var(--cbp-color-text-lightest);
* @prop --cbp-accordion-item-color-background-open-hover: var(--cbp-color-interactive-secondary-darker);
* @prop --cbp-accordion-item-color-focus: var(--cbp-color-text-lightest);
* @prop --cbp-accordion-item-color-background-focus: var(--cbp-color-interactive-focus-dark);
* @prop --cbp-accordion-item-color-outline-focus: var(--cbp-color-white);
* @prop --cbp-accordion-item-color-active: var(--cbp-color-text-lightest);
* @prop --cbp-accordion-item-color-background-active: var(--cbp-color-interactive-active-dark);
* @prop --cbp-accordion-item-border-radius: var(--cbp-border-radius-sharp, 0);
* @prop --cbp-accordion-item-control-font-size: var(--cbp-font-size-heading-sm);
* @prop --cbp-accordion-item-control-font-weight: var(--cbp-font-weight-semibold);
* @prop --cbp-accordion-item-control-gap: var(--cbp-space-3x);
* @prop --cbp-accordion-item-control-padding: var(--cbp-space-3x);
* @prop --cbp-accordion-item-control-direction: row;
* @prop --cbp-accordion-item-color-content: var(--cbp-color-text-darkest);
* @prop --cbp-accordion-item-color-background-content: var(--cbp-color-white);
* @prop --cbp-accordion-item-content-font-size: var(--cbp-font-size-md);
* @prop --cbp-accordion-item-content-font-family: inherit;
* @prop --cbp-accordion-item-content-font-weight: var(--cbp-font-weight-regular);
* @prop --cbp-accordion-item-content-padding: var(--cbp-space-3x);
* @prop --cbp-accordion-item-danger-color: var(--cbp-color-white);
* @prop --cbp-accordion-item-danger-color-dark: var(--cbp-color-text-darkest);
* @prop --cbp-accordion-item-danger-color-background: var(--cbp-color-danger-base);
* @prop --cbp-accordion-item-danger-color-background-dark: var(--cbp-color-danger-light);
* @prop --cbp-accordion-item-danger-color-background-hover: var(--cbp-color-danger-dark);
* @prop --cbp-accordion-item-danger-color-background-hover-dark: var(--cbp-color-danger-lighter);
*/
:root {
--cbp-accordion-item-color: var(--cbp-color-text-darker);
--cbp-accordion-item-color-background: var(--cbp-color-gray-cool-10);
--cbp-accordion-item-color-open: var(--cbp-color-text-lighter);
--cbp-accordion-item-color-background-open: var(--cbp-color-gray-cool-60);
--cbp-accordion-item-color-hover: var(--cbp-color-text-darker);
--cbp-accordion-item-color-background-hover: var(--cbp-color-interactive-secondary-light);
--cbp-accordion-item-color-open-hover: var(--cbp-color-text-lightest);
--cbp-accordion-item-color-background-open-hover: var(--cbp-color-interactive-secondary-darker);
--cbp-accordion-item-color-focus: var(--cbp-color-text-lightest);
--cbp-accordion-item-color-background-focus: var(--cbp-color-interactive-focus-dark);
--cbp-accordion-item-color-outline-focus: var(--cbp-color-white);
--cbp-accordion-item-color-active: var(--cbp-color-text-lightest);
--cbp-accordion-item-color-background-active: var(--cbp-color-interactive-active-dark);
--cbp-accordion-item-border-width: var(--cbp-border-width-xs);
--cbp-accordion-item-border-style: solid;
--cbp-accordion-item-border-radius: var(--cbp-border-radius-sharp, 0);
--cbp-accordion-item-control-font-size: var(--cbp-font-size-heading-sm);
--cbp-accordion-item-control-font-weight: var(--cbp-font-weight-semibold);
--cbp-accordion-item-control-gap: var(--cbp-space-3x);
--cbp-accordion-item-control-padding: var(--cbp-space-3x);
--cbp-accordion-item-control-direction: row;
--cbp-accordion-item-color-content: var(--cbp-color-text-darkest);
--cbp-accordion-item-color-background-content: var(--cbp-color-white);
--cbp-accordion-item-content-font-size: var(--cbp-font-size-md);
--cbp-accordion-item-content-font-family: inherit;
--cbp-accordion-item-content-font-weight: var(--cbp-font-weight-regular);
--cbp-accordion-item-content-padding: var(--cbp-space-3x);
--cbp-accordion-item-heading-gap: var(--cbp-space-2x);
--cbp-accordion-item-danger-color: var(--cbp-color-white);
--cbp-accordion-item-danger-color-dark: var(--cbp-color-text-darkest);
--cbp-accordion-item-danger-color-background: var(--cbp-color-danger-base);
--cbp-accordion-item-danger-color-background-dark: var(--cbp-color-danger-light);
--cbp-accordion-item-danger-color-background-hover: var(--cbp-color-danger-dark);
--cbp-accordion-item-danger-color-background-hover-dark: var(--cbp-color-danger-lighter);
}
[data-cbp-theme=light] cbp-accordion[context*=dark],
[data-cbp-theme=dark] cbp-accordion:not([context=dark-inverts]):not([context=light-always]) {
--cbp-accordion-item-color: var(--cbp-color-white);
--cbp-accordion-item-color-background: var(--cbp-color-gray-cool-50);
--cbp-accordion-item-color-open: var(--cbp-color-white);
--cbp-accordion-item-color-background-open: var(--cbp-color-gray-cool-60);
--cbp-accordion-item-color-hover: var(--cbp-color-text-darkest);
--cbp-accordion-item-color-background-hover: var(--cbp-color-interactive-secondary-lighter);
--cbp-accordion-item-color-open-hover: var(--cbp-color-text-darkest);
--cbp-accordion-item-color-background-open-hover: var(--cbp-color-interactive-secondary-light);
--cbp-accordion-item-color-focus: var(--cbp-color-text-darkest);
--cbp-accordion-item-color-background-focus: var(--cbp-color-interactive-focus-light);
--cbp-accordion-item-color-outline-focus: var(--cbp-color-black);
--cbp-accordion-item-color-active: var(--cbp-color-text-darkest);
--cbp-accordion-item-color-background-active: var(--cbp-color-interactive-active-light);
--cbp-accordion-item-color-content: var(--cbp-color-text-lightest);
--cbp-accordion-item-color-background-content: var(--cbp-color-gray-cool-90);
--cbp-accordion-item-danger-color: var(--cbp-accordion-item-danger-color-dark);
--cbp-accordion-item-danger-color-background: var(--cbp-accordion-item-danger-color-background-dark);
--cbp-accordion-item-danger-color-background-hover: var(--cbp-accordion-item-danger-color-background-hover-dark);
}
cbp-accordion-item {
display: flex;
flex-direction: column;
}
cbp-accordion-item[open] {
--cbp-accordion-item-color: var(--cbp-accordion-item-color-open);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-open);
}
cbp-accordion-item[open] .cbp-accordion-item--control {
--cbp-accordion-rotate-icon: rotate(270deg);
--cbp-accordion-toggle: expandTo 500ms;
}
cbp-accordion-item[open] .cbp-accordion-item--control:hover:not(:focus-within):not(:active) {
--cbp-accordion-item-color: var(--cbp-accordion-item-color-open-hover);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-open-hover);
}
cbp-accordion-item[open] .cbp-accordion-item--control:hover:not(:focus-within):not(:active) + .cbp-accordion-item--content {
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-open-hover);
}
cbp-accordion-item .cbp-accordion-item--control {
display: flex;
flex-direction: var(--cbp-accordion-item-control-direction, row);
align-items: center;
gap: var(--cbp-accordion-item-control-gap);
min-height: var(--cbp-space-13x);
color: var(--cbp-accordion-item-color);
--cbp-button-color: var(--cbp-accordion-item-color);
background-color: var(--cbp-accordion-item-color-background);
font-size: var(--cbp-accordion-item-control-font-size);
font-weight: var(--cbp-accordion-item-control-font-weight);
padding: var(--cbp-accordion-item-control-padding);
outline-style: solid;
outline-color: var(--cbp-accordion-item-color-outline-focus);
outline-width: 0;
outline-offset: calc(-1 * var(--cbp-space-1x));
cursor: pointer;
}
cbp-accordion-item .cbp-accordion-item--control .cbp-accordion-item--heading {
display: flex;
flex-grow: 1;
justify-content: space-between;
}
cbp-accordion-item .cbp-accordion-item--control .cbp-accordion-item--heading :first-child {
flex-grow: 1;
}
cbp-accordion-item .cbp-accordion-item--control .cbp-accordion-item--heading [slot=cbp-accordion-item-label] {
display: flex;
align-items: center;
gap: var(--cbp-accordion-item-heading-gap);
}
cbp-accordion-item .cbp-accordion-item--control cbp-typography,
cbp-accordion-item .cbp-accordion-item--control cbp-typography > * {
color: var(--cbp-accordion-item-color);
}
cbp-accordion-item .cbp-accordion-item--control:hover {
--cbp-accordion-item-color: var(--cbp-accordion-item-color-hover);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-hover);
}
cbp-accordion-item .cbp-accordion-item--control:focus-within {
--cbp-accordion-item-color: var(--cbp-accordion-item-color-focus);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-focus);
outline-width: var(--cbp-border-size-md);
}
cbp-accordion-item .cbp-accordion-item--control:focus-within .cbp-accordion-item--toggle {
--cbp-button-color: var(--cbp-accordion-item-color-focus) ;
}
cbp-accordion-item .cbp-accordion-item--control:focus-within + .cbp-accordion-item--content {
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-focus);
}
cbp-accordion-item .cbp-accordion-item--control:active {
--cbp-accordion-item-color: var(--cbp-accordion-item-color-active);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-active);
}
cbp-accordion-item .cbp-accordion-item--control:active .cbp-accordion-item--toggle {
--cbp-button-color: var(--cbp-accordion-item-color-active) ;
}
cbp-accordion-item .cbp-accordion-item--control:active + .cbp-accordion-item--content {
--cbp-accordion-item-color-background: var(--cbp-accordion-item-color-background-active);
}
cbp-accordion-item .cbp-accordion-item--control .cbp-accordion-item--toggle {
--cbp-button-padding: 0;
--cbp-button-border-width: 0;
--cbp-button-focus-outline-width: 0;
--cbp-button-color: var(--cbp-accordion-item-color) ;
--cbp-button-color-hover: var(--cbp-accordion-item-color) ;
--cbp-button-color-focus: var(--cbp-accordion-item-color) ;
--cbp-button-color-active: var(--cbp-accordion-item-color) ;
--cbp-button-color-bg: transparent ;
--cbp-button-color-bg-hover: transparent ;
--cbp-button-color-bg-focus: transparent ;
--cbp-button-color-bg-active: transparent ;
}
cbp-accordion-item .cbp-accordion-item--control .cbp-accordion-item--toggle cbp-icon svg {
transition: transform 150ms;
transform: var(--cbp-accordion-rotate-icon);
}
cbp-accordion-item .cbp-accordion-item--content {
color: var(--cbp-accordion-item-color-content);
background-color: var(--cbp-accordion-item-color-background-content);
padding: var(--cbp-space-4x) var(--cbp-space-3x);
border-width: var(--cbp-border-size-xl);
border-style: var(--cbp-accordion-item-border-style);
border-color: var(--cbp-accordion-item-color-background);
border-top: 0;
animation: var(--cbp-accordion-toggle);
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 10);
animation-iteration-count: revert;
animation-fill-mode: forwards;
}
cbp-accordion-item:not([open]) {
--cbp-accordion-rotate-icon: rotate(90deg);
}
cbp-accordion-item:not([open]) .cbp-accordion-item--content {
display: none;
}
cbp-accordion-item[color=danger], cbp-accordion-item[color=danger][open] {
--cbp-accordion-item-color: var(--cbp-accordion-item-danger-color);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-danger-color-background);
}
cbp-accordion-item[color=danger] .cbp-accordion-item--control:hover:not(:focus-within):not(:active), cbp-accordion-item[color=danger][open] .cbp-accordion-item--control:hover:not(:focus-within):not(:active) {
--cbp-accordion-item-color: var(--cbp-accordion-item-danger-color);
--cbp-accordion-item-color-background: var(--cbp-accordion-item-danger-color-background-hover);
}
cbp-accordion-item[color=danger] .cbp-accordion-item--control:hover:not(:focus-within):not(:active) + .cbp-accordion-item--content, cbp-accordion-item[color=danger][open] .cbp-accordion-item--control:hover:not(:focus-within):not(:active) + .cbp-accordion-item--content {
--cbp-accordion-item-color-background: var(--cbp-accordion-item-danger-color-background-hover);
}
cbp-accordion-item[color=danger] .cbp-accordion-item--control cbp-typography,
cbp-accordion-item[color=danger] .cbp-accordion-item--control cbp-typography > *, cbp-accordion-item[color=danger][open] .cbp-accordion-item--control cbp-typography,
cbp-accordion-item[color=danger][open] .cbp-accordion-item--control cbp-typography > * {
--cbp-accordion-item-color: var(--cbp-accordion-item-danger-color);
}
@keyframes expandTo {
from {
max-height: 0px;
}
to {
max-height: 5000px;
}
}