UNPKG

@cbpds/web-components

Version:
273 lines (266 loc) 13.3 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-form-field-color: var(--cbp-color-text-darkest); * @prop --cbp-form-field-color-bg: var(--cbp-color-white); * @prop --cbp-form-field-color-border: var(--cbp-color-interactive-secondary-base); * @prop --cbp-form-field-color-border-hover: var(--cbp-color-interactive-secondary-darker); * @prop --cbp-form-field-color-border-focus: var(--cbp-color-interactive-focus-dark); * @prop --cbp-form-field-color-label: var(--cbp-color-text-darkest); * @prop --cbp-form-field-color-description: var(--cbp-color-text-darkest); * @prop --cbp-form-field-color-placeholder: var(--cbp-color-text-dark); * @prop --cbp-form-field-color-dark: var(--cbp-color-text-lightest); * @prop --cbp-form-field-color-bg-dark: var(--cbp-color-gray-cool-70); * @prop --cbp-form-field-color-border-dark: var(--cbp-color-interactive-secondary-light); * @prop --cbp-form-field-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); * @prop --cbp-form-field-color-border-focus-dark: var(--cbp-color-interactive-focus-light); * @prop --cbp-form-field-color-label-dark: var(--cbp-color-text-lightest); * @prop --cbp-form-field-color-description-dark: var(--cbp-color-text-lightest); * @prop --cbp-form-field-color-placeholder-dark: var(--cbp-color-text-light); * @prop --cbp-form-field-padding-inline: var(--cbp-space-2x); * @prop --cbp-form-field-margin-bottom: var(--cbp-space-4x); * @prop --cbp-form-field-border-radius: var(--cbp-border-radius-soft); */ :root { --cbp-form-field-color: var(--cbp-color-text-darkest); --cbp-form-field-color-bg: var(--cbp-color-white); --cbp-form-field-color-border: var(--cbp-color-interactive-secondary-base); --cbp-form-field-color-border-hover: var(--cbp-color-interactive-secondary-darker); --cbp-form-field-color-border-focus: var(--cbp-color-interactive-focus-dark); --cbp-form-field-color-label: var(--cbp-color-text-darkest); --cbp-form-field-color-description: var(--cbp-color-text-darkest); --cbp-form-field-color-placeholder: var(--cbp-color-text-dark); --cbp-form-field-color-dark: var(--cbp-color-text-lightest); --cbp-form-field-color-bg-dark: var(--cbp-color-gray-cool-70); --cbp-form-field-color-border-dark: var(--cbp-color-interactive-secondary-light); --cbp-form-field-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); --cbp-form-field-color-border-focus-dark: var(--cbp-color-interactive-focus-light); --cbp-form-field-color-label-dark: var(--cbp-color-text-lightest); --cbp-form-field-color-description-dark: var(--cbp-color-text-lightest); --cbp-form-field-color-placeholder-dark: var(--cbp-color-text-light); --cbp-form-field-padding-inline: var(--cbp-space-2x); --cbp-form-field-margin-bottom: var(--cbp-space-4x); --cbp-form-field-border-radius: var(--cbp-border-radius-soft); --cbp-form-field-select-chevron: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512" fill="%23fcfcfc"><path d="M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"/></svg>'); --cbp-form-field-select-chevron-dark: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512" fill="%231b1b1b"><path d="M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"/></svg>'); } [data-cbp-theme=light] cbp-form-field[context*=dark], [data-cbp-theme=dark] cbp-form-field:not([context=dark-inverts]):not([context=light-always]) { --cbp-form-field-color-label: var(--cbp-form-field-color-label-dark); --cbp-form-field-color-description: var(--cbp-form-field-color-description-dark); --cbp-form-field-color: var(--cbp-form-field-color-dark); --cbp-form-field-color-bg: var(--cbp-form-field-color-bg-dark); --cbp-form-field-color-border: var(--cbp-form-field-color-border-dark); --cbp-form-field-color-border-hover: var(--cbp-form-field-color-border-hover-dark); --cbp-form-field-color-border-focus: var(--cbp-form-field-color-border-focus-dark); --cbp-form-field-color-placeholder: var(--cbp-form-field-color-placeholder-dark); --cbp-form-field-select-chevron: var(--cbp-form-field-select-chevron-dark); } cbp-form-field { display: block; margin-bottom: var(--cbp-form-field-margin-bottom); } cbp-form-field fieldset, cbp-form-field legend { all: unset; } cbp-form-field fieldset { display: block; } cbp-form-field .cbp-form-field-label { display: block; color: var(--cbp-form-field-color-label); font-size: var(--cbp-font-size-body); font-weight: var(--cbp-font-weight-bold); font-style: italic; line-height: var(--cbp-line-height-xs); } cbp-form-field .cbp-form-field-description { display: block; color: var(--cbp-form-field-color-description); font-size: var(--cbp-font-size-subhead); font-weight: var(--cbp-font-weight-medium); font-style: italic; line-height: var(--cbp-line-height-xs); margin-bottom: var(--cbp-space-1x); } cbp-form-field .cbp-form-field-container { position: relative; } cbp-form-field input, cbp-form-field textarea, cbp-form-field select, cbp-form-field .cbp-custom-form-control { width: 100%; max-width: 100%; min-height: var(--cbp-space-9x); padding-inline: var(--cbp-form-field-padding-inline); font-family: inherit; font-size: var(--cbp-font-size-body); line-height: var(--cbp-line-height-xs); text-align: start; vertical-align: middle; color: var(--cbp-form-field-color); background-color: var(--cbp-form-field-color-bg); border-style: solid; border-width: var(--cbp-border-size-md); border-color: var(--cbp-form-field-color-border); border-radius: var(--cbp-form-field-border-radius); outline-style: solid; outline-width: 0; outline-color: var(--cbp-form-field-color-border-focus); outline-offset: -1px; scrollbar-width: thin; scrollbar-color: var(--cbp-form-field-color-border) var(--cbp-form-field-color-bg); } cbp-form-field input::-webkit-scrollbar, cbp-form-field textarea::-webkit-scrollbar, cbp-form-field select::-webkit-scrollbar, cbp-form-field .cbp-custom-form-control::-webkit-scrollbar { width: var(--cbp-space-1x); } cbp-form-field input::-webkit-scrollbar-track, cbp-form-field textarea::-webkit-scrollbar-track, cbp-form-field select::-webkit-scrollbar-track, cbp-form-field .cbp-custom-form-control::-webkit-scrollbar-track { background-color: var(--cbp-form-field-color-bg); } cbp-form-field input::-webkit-scrollbar-thumb, cbp-form-field textarea::-webkit-scrollbar-thumb, cbp-form-field select::-webkit-scrollbar-thumb, cbp-form-field .cbp-custom-form-control::-webkit-scrollbar-thumb { background-color: var(--cbp-form-field-color-border); } cbp-form-field input:hover, cbp-form-field textarea:hover, cbp-form-field select:hover, cbp-form-field .cbp-custom-form-control:hover { --cbp-form-field-color-border: var(--cbp-form-field-color-border-hover); } cbp-form-field input:focus, cbp-form-field input:focus-visible, cbp-form-field textarea:focus, cbp-form-field textarea:focus-visible, cbp-form-field select:focus, cbp-form-field select:focus-visible, cbp-form-field .cbp-custom-form-control:focus, cbp-form-field .cbp-custom-form-control:focus-visible { --cbp-form-field-color-border: var(--cbp-form-field-color-border-focus); outline-width: var(--cbp-border-size-lg); } cbp-form-field input[readonly], cbp-form-field input:disabled, cbp-form-field textarea[readonly], cbp-form-field textarea:disabled, cbp-form-field select[readonly], cbp-form-field select:disabled, cbp-form-field .cbp-custom-form-control[readonly], cbp-form-field .cbp-custom-form-control:disabled { font-style: italic; cursor: not-allowed; } cbp-form-field[disabled], cbp-form-field:has(:not(button):disabled) { --cbp-form-field-color: var(--cbp-color-interactive-disabled-dark); --cbp-form-field-color-bg: var(--cbp-color-interactive-disabled-light); --cbp-form-field-color-border: var(--cbp-color-interactive-disabled-dark); --cbp-form-field-color-border-hover: var(--cbp-color-interactive-disabled-dark); --cbp-form-field-color-dark: var(--cbp-color-interactive-disabled-light); --cbp-form-field-color-bg-dark: var(--cbp-color-interactive-disabled-dark); --cbp-form-field-color-border-dark: var(--cbp-color-interactive-disabled-light); --cbp-form-field-color-border-hover-dark: var(--cbp-color-interactive-disabled-light); --cbp-form-field-color-placeholder: transparent; } cbp-form-field[readonly], cbp-form-field:has(*[readonly]) { --cbp-form-field-color-bg: var(--cbp-color-gray-cool-10); --cbp-form-field-color-border: var(--cbp-color-interactive-secondary-light); --cbp-form-field-color-border-hover: var(--cbp-color-interactive-secondary-light); --cbp-form-field-color-border-focus: var(--cbp-color-interactive-secondary-light); --cbp-form-field-color-bg-dark: var(--cbp-color-gray-cool-80); --cbp-form-field-color-border-dark: var(--cbp-color-interactive-secondary-dark); --cbp-form-field-color-border-hover-dark: var(--cbp-color-interactive-secondary-dark); --cbp-form-field-color-border-focus: var(--cbp-color-interactive-secondary-dark); --cbp-form-field-color-placeholder: transparent; } cbp-form-field[readonly] cbp-button[fill=solid]:has(button:disabled), cbp-form-field:has(*[readonly]) cbp-button[fill=solid]:has(button:disabled) { --cbp-button-color: var(--cbp-color-text-lightest); --cbp-button-color-bg: var(--cbp-color-white); --cbp-button-color-border: var(--cbp-form-field-color-border); --cbp-button-color-dark: var(--cbp-color-text-base); --cbp-button-color-bg-dark: var(--cbp-form-field-color-border-dark); --cbp-button-color-border-dark: var(--cbp-form-field-color-border-dark); } cbp-form-field[readonly] cbp-button[fill=outline]:has(button:disabled), cbp-form-field:has(*[readonly]) cbp-button[fill=outline]:has(button:disabled) { --cbp-button-color: var(--cbp-color-interactive-secondary-base); --cbp-button-color-bg: var(--cbp-color-interactive-secondary-light); --cbp-button-color-border: var(--cbp-color-interactive-secondary-base); --cbp-button-color-dark: var(--cbp-color-interactive-secondary-base); --cbp-button-color-bg-dark: var(--cbp-form-field-color-bg-dark); --cbp-button-color-border-dark: var(--cbp-color-interactive-secondary-base); } cbp-form-field ::placeholder { color: var(--cbp-form-field-color-placeholder); font-style: italic; } cbp-form-field input[type=file] { line-height: var(--cbp-space-8x); } cbp-form-field ::file-selector-button { display: none; } cbp-form-field textarea { min-height: 6.75rem; max-height: 80vh; padding-block: var(--cbp-space-2x); resize: vertical; } cbp-form-field select, cbp-form-field cbp-dropdown .cbp-custom-form-control { appearance: none; text-overflow: ellipsis; padding-block: calc(var(--cbp-space-2x) - 2px); } cbp-form-field select option, cbp-form-field cbp-dropdown .cbp-custom-form-control option { color: var(--cbp-form-field-color); background-color: var(--cbp-form-field-color-bg); } cbp-form-field select optgroup, cbp-form-field cbp-dropdown .cbp-custom-form-control optgroup { color: var(--cbp-form-field-color); background-color: var(--cbp-form-field-color-bg); font-weight: var(--cbp-font-weight-bold); } cbp-form-field select:not([multiple]):not([size]) { --cbp-form-field-dropdown-faux-button-width: calc(var(--cbp-space-9x) - var(--cbp-border-size-md)); background: right calc(var(--cbp-form-field-dropdown-faux-button-width) / 2 - 8px) top calc(1rem - 8px) no-repeat var(--cbp-form-field-select-chevron), right -0.4px top 0px repeat-y linear-gradient(90deg, var(--cbp-form-field-color-bg) calc(100% - var(--cbp-form-field-dropdown-faux-button-width)), var(--cbp-form-field-color-border) var(--cbp-space-9x)); padding-inline-end: var(--cbp-space-9x); } cbp-form-field[error] { --cbp-form-field-color-bg: var(--cbp-color-danger-lighter); --cbp-form-field-color-border: var(--cbp-color-danger-dark); --cbp-form-field-color-border-hover: var(--cbp-color-danger-darker); --cbp-form-field-color-description: var(--cbp-color-danger-dark); --cbp-form-field-color-bg-dark: var(--cbp-color-danger-darker); --cbp-form-field-color-border-dark: var(--cbp-color-danger-light); --cbp-form-field-color-border-hover-dark: var(--cbp-color-danger-lighter); --cbp-form-field-color-description-dark: var(--cbp-color-danger-light); } cbp-form-field input:is(:-webkit-autofill, :autofill), cbp-form-field input:is(:-webkit-autofill, :autofill):focus { box-shadow: 0 0 0 1000px var(--cbp-form-field-color-bg) inset; -webkit-text-fill-color: var(--cbp-form-field-color); } cbp-form-field ::-ms-reveal { display: none; } /* // This removes the default increment arrows in the number input field &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; // Margins still appear even if hidden } input[type=number] { -moz-appearance: textfield; // Removes the default increment arrows in Firefox } */