UNPKG

@cbpds/web-components

Version:
201 lines (197 loc) 11.6 kB
/* * 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-checkbox-color: var(--cbp-color-text-lightest); * @prop --cbp-checkbox-color-bg: var(--cbp-color-white); * @prop --cbp-checkbox-color-border: var(--cbp-color-interactive-secondary-dark); * @prop --cbp-checkbox-color-border-hover: var(--cbp-color-interactive-secondary-darker); * @prop --cbp-checkbox-color-border-focus: var(--cbp-color-interactive-focus-dark); * @prop --cbp-checkbox-color-halo: transparent; * @prop --cbp-checkbox-color-halo-hover: var(--cbp-color-interactive-secondary-lighter); * @prop --cbp-checkbox-color-halo-focus: var(--cbp-color-interactive-focus-light); * @prop --cbp-checkbox-color-bg-checked: var(--cbp-color-interactive-selected-dark); * @prop --cbp-checkbox-color-bg-checked-focus: var(--cbp-color-interactive-focus-dark); * @prop --cbp-checkbox-color-border-checked: var(--cbp-color-interactive-selected-dark); * @prop --cbp-checkbox-color-border-checked-hover: var(--cbp-color-interactive-selected-dark); * @prop --cbp-checkbox-color-border-checked-focus: var(--cbp-color-white); * @prop --cbp-checkbox-color-halo-checked-hover: var(--cbp-color-interactive-selected-light); * @prop --cbp-checkbox-color-halo-checked-focus: var(--cbp-color-interactive-focus-light); * @prop --cbp-checkbox-color-label: var(--cbp-color-text-darkest); * @prop --cbp-checkbox-color-dark: var(--cbp-color-text-darkest); * @prop --cbp-checkbox-color-bg-dark: var(--cbp-color-gray-cool-70); * @prop --cbp-checkbox-color-border-dark: var(--cbp-color-interactive-secondary-light); * @prop --cbp-checkbox-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); * @prop --cbp-checkbox-color-border-focus-dark: var(--cbp-color-interactive-focus-light); * @prop --cbp-checkbox-color-halo-dark: transparent; * @prop --cbp-checkbox-color-halo-hover-dark: var(--cbp-color-text-darker); * @prop --cbp-checkbox-color-halo-focus-dark: var(--cbp-color-interactive-focus-dark); * @prop --cbp-checkbox-color-bg-checked-dark: var(--cbp-color-interactive-selected-light); * @prop --cbp-checkbox-color-bg-checked-focus-dark: var(--cbp-color-interactive-focus-light); * @prop --cbp-checkbox-color-border-checked-dark: var(--cbp-color-interactive-selected-light); * @prop --cbp-checkbox-color-border-checked-hover-dark: var(--cbp-color-interactive-selected-light); * @prop --cbp-checkbox-color-border-checked-focus-dark: var(--cbp-color-black); * @prop --cbp-checkbox-color-halo-checked-hover-dark: var(--cbp-color-interactive-selected-dark); * @prop --cbp-checkbox-color-halo-checked-focus-dark: var(--cbp-color-interactive-focus-dark); * @prop --cbp-checkbox-color-label-dark: var(--cbp-color-text-lightest); * @prop --cbp-checkbox-min-height: var(--cbp-space-11x); * @prop --cbp-checkbox-margin: 0 0 var(--cbp-space-1x) 0; * @prop --cbp-checkbox-font-weight-label: var(--cbp-font-weight-bold); */ :root { --cbp-checkbox-color: var(--cbp-color-text-lightest); --cbp-checkbox-color-bg: var(--cbp-color-white); --cbp-checkbox-color-border: var(--cbp-color-interactive-secondary-dark); --cbp-checkbox-color-border-hover: var(--cbp-color-interactive-secondary-darker); --cbp-checkbox-color-border-focus: var(--cbp-color-interactive-focus-dark); --cbp-checkbox-color-halo: transparent; --cbp-checkbox-color-halo-hover: var(--cbp-color-interactive-secondary-lighter); --cbp-checkbox-color-halo-focus: var(--cbp-color-interactive-focus-light); --cbp-checkbox-color-bg-checked: var(--cbp-color-interactive-selected-dark); --cbp-checkbox-color-bg-checked-focus: var(--cbp-color-interactive-focus-dark); --cbp-checkbox-color-border-checked: var(--cbp-color-interactive-selected-dark); --cbp-checkbox-color-border-checked-hover: var(--cbp-color-interactive-selected-dark); --cbp-checkbox-color-border-checked-focus: var(--cbp-color-white); --cbp-checkbox-color-halo-checked-hover: var(--cbp-color-interactive-selected-light); --cbp-checkbox-color-halo-checked-focus: var(--cbp-color-interactive-focus-light); --cbp-checkbox-color-label: var(--cbp-color-text-darkest); --cbp-checkbox-color-dark: var(--cbp-color-text-darkest); --cbp-checkbox-color-bg-dark: var(--cbp-color-gray-cool-70); --cbp-checkbox-color-border-dark: var(--cbp-color-interactive-secondary-light); --cbp-checkbox-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); --cbp-checkbox-color-border-focus-dark: var(--cbp-color-interactive-focus-light); --cbp-checkbox-color-halo-dark: transparent; --cbp-checkbox-color-halo-hover-dark: var(--cbp-color-text-darker); --cbp-checkbox-color-halo-focus-dark: var(--cbp-color-interactive-focus-dark); --cbp-checkbox-color-bg-checked-dark: var(--cbp-color-interactive-selected-light); --cbp-checkbox-color-bg-checked-focus-dark: var(--cbp-color-interactive-focus-light); --cbp-checkbox-color-border-checked-dark: var(--cbp-color-interactive-selected-light); --cbp-checkbox-color-border-checked-hover-dark: var(--cbp-color-interactive-selected-light); --cbp-checkbox-color-border-checked-focus-dark: var(--cbp-color-black); --cbp-checkbox-color-halo-checked-hover-dark: var(--cbp-color-interactive-selected-dark); --cbp-checkbox-color-halo-checked-focus-dark: var(--cbp-color-interactive-focus-dark); --cbp-checkbox-color-label-dark: var(--cbp-color-text-lightest); --cbp-checkbox-min-height: var(--cbp-space-11x); --cbp-checkbox-margin: 0 0 var(--cbp-space-1x) 0; --cbp-checkbox-font-weight-label: var(--cbp-font-weight-bold); } [data-cbp-theme=light] cbp-checkbox[context*=dark], [data-cbp-theme=dark] cbp-checkbox:not([context=dark-inverts]):not([context=light-always]) { --cbp-checkbox-color: var(--cbp-checkbox-color-dark); --cbp-checkbox-color-bg: var(--cbp-checkbox-color-bg-dark); --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-dark); --cbp-checkbox-color-border-hover: var(--cbp-checkbox-color-border-hover-dark); --cbp-checkbox-color-border-focus: var(--cbp-checkbox-color-border-focus-dark); --cbp-checkbox-color-halo: var(--cbp-checkbox-color-halo-dark); --cbp-checkbox-color-halo-hover: var(--cbp-checkbox-color-halo-hover-dark); --cbp-checkbox-color-halo-focus: var(--cbp-checkbox-color-halo-focus-dark); --cbp-checkbox-color-bg-checked: var(--cbp-checkbox-color-bg-checked-dark); --cbp-checkbox-color-bg-checked-focus: var(--cbp-checkbox-color-bg-checked-focus-dark); --cbp-checkbox-color-border-checked: var(--cbp-checkbox-color-border-checked-dark); --cbp-checkbox-color-border-checked-hover: var(--cbp-checkbox-color-border-checked-hover-dark); --cbp-checkbox-color-border-checked-focus: var(--cbp-checkbox-color-border-checked-focus-dark); --cbp-checkbox-color-halo-checked-hover: var(--cbp-checkbox-color-halo-checked-hover-dark); --cbp-checkbox-color-halo-checked-focus: var(--cbp-checkbox-color-halo-checked-focus-dark); --cbp-checkbox-color-label: var(--cbp-checkbox-color-label-dark); } cbp-checkbox { display: block; margin: var(--cbp-checkbox-margin); position: relative; } cbp-checkbox label { display: grid; grid-template-columns: var(--cbp-space-6x) 1fr; align-items: center; gap: var(--cbp-space-2x); min-height: var(--cbp-checkbox-min-height); font-weight: var(--cbp-checkbox-font-weight-label); color: var(--cbp-checkbox-color-label); } cbp-checkbox input[type=checkbox] { appearance: none; display: grid; place-content: center; flex-grow: 0; color: var(--cbp-checkbox-color); background-color: var(--cbp-checkbox-color-bg); min-height: unset; height: var(--cbp-space-6x); width: var(--cbp-space-6x); margin: 0; border-color: var(--cbp-checkbox-color-border); border-style: solid; border-width: var(--cbp-border-size-md); border-radius: var(--cbp-border-radius-soft); outline: 0; box-shadow: 0 0 0 calc(var(--cbp-space-5x) / 2) var(--cbp-checkbox-color-halo); clip-path: circle(86%); } cbp-checkbox input[type=checkbox]::before { content: ""; overflow: hidden; } cbp-checkbox input[type=checkbox]:hover { --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-hover); --cbp-checkbox-color-halo: var(--cbp-checkbox-color-halo-hover); } cbp-checkbox input[type=checkbox]:focus { --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-focus); --cbp-checkbox-color-halo: var(--cbp-checkbox-color-halo-focus); } cbp-checkbox input[type=checkbox]:checked, cbp-checkbox input[type=checkbox]:indeterminate { --cbp-checkbox-color-bg: var(--cbp-checkbox-color-bg-checked); --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-checked); } cbp-checkbox input[type=checkbox]:checked:hover, cbp-checkbox input[type=checkbox]:indeterminate:hover { --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-checked-hover); --cbp-checkbox-color-halo: var(--cbp-checkbox-color-halo-checked-hover); } cbp-checkbox input[type=checkbox]:checked:focus, cbp-checkbox input[type=checkbox]:indeterminate:focus { --cbp-checkbox-color-bg: var(--cbp-checkbox-color-bg-checked-focus); --cbp-checkbox-color-border: var(--cbp-checkbox-color-border-checked-focus); --cbp-checkbox-color-halo: var(--cbp-checkbox-color-halo-checked-focus); } cbp-checkbox input[type=checkbox]:checked::before { height: var(--cbp-space-4x); width: var(--cbp-space-2x); border-right: solid var(--cbp-border-size-xl) var(--cbp-checkbox-color); border-bottom: solid var(--cbp-border-size-xl) var(--cbp-checkbox-color); transform: rotate(45deg) translateY(-10%) translateX(-10%); } cbp-checkbox input[type=checkbox]:indeterminate::before { height: 0; width: var(--cbp-space-4x); border: solid var(--cbp-border-size-md) var(--cbp-checkbox-color); border-radius: var(--cbp-border-radius-soft); } cbp-checkbox[disabled], cbp-checkbox:has(*:disabled) { cursor: not-allowed; } cbp-checkbox[disabled] label, cbp-checkbox:has(*:disabled) label { font-style: italic; cursor: not-allowed; } cbp-checkbox[disabled], cbp-checkbox:has(*:disabled) { --cbp-checkbox-color: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-bg: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-border: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-border-hover: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-bg-checked: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-border-checked: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-border-checked-hover: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-halo-hover: transparent; --cbp-checkbox-color-halo-checked-hover: transparent; --cbp-checkbox-color-label: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-dark: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-bg-dark: var(--cbp-color-interactive-disabled-dark); --cbp-checkbox-color-border-dark: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-border-hover-dark: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-bg-checked-dark: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-border-checked-dark: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-border-checked-hover-dark: var(--cbp-color-interactive-disabled-light); --cbp-checkbox-color-halo-hover-dark: transparent; --cbp-checkbox-color-halo-checked-hover-dark: transparent; --cbp-checkbox-color-label-dark: var(--cbp-color-interactive-disabled-light); }