UNPKG

@cbpds/web-components

Version:
231 lines (226 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-file-input-color: var(--cbp-color-text-darkest); * @prop --cbp-file-input-color-bg: var(--cbp-color-white); * @prop --cbp-file-input-color-border: var(--cbp-color-interactive-secondary-base); * @prop --cbp-file-input-color-border-hover: var(--cbp-color-interactive-secondary-darker); * @prop --cbp-file-input-color-border-focus: var(--cbp-color-interactive-focus-dark); * @prop --cbp-file-input-color-outline: transparent; * @prop --cbp-file-input-color-outline-hover: var(--cbp-color-interactive-secondary-light); * @prop --cbp-file-input-color-outline-focus: var(--cbp-color-interactive-focus-light); * @prop --cbp-file-input-color-dark: var(--cbp-color-text-lightest); * @prop --cbp-file-input-color-bg-dark: var(--cbp-color-gray-cool-70); * @prop --cbp-file-input-color-border-dark: var(--cbp-color-interactive-secondary-light); * @prop --cbp-file-input-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); * @prop --cbp-file-input-color-border-focus-dark:var(--cbp-color-interactive-focus-light); * @prop --cbp-file-input-color-outline-dark: transparent; * @prop --cbp-file-input-color-outline-hover-dark: var(--cbp-color-interactive-secondary-dark); * @prop --cbp-file-input-color-outline-focus-dark: var(--cbp-color-white); * @prop --cbp-file-input-icon-color: var(--cbp-color-text-base); * @prop --cbp-file-input-file-color-bg: var(--cbp-color-gray-cool-10); * @prop --cbp-file-input-file-color-bg-dark: var(--cbp-color-gray-cool-60); */ :root { --cbp-file-input-color: var(--cbp-color-text-darkest); --cbp-file-input-color-bg: var(--cbp-color-white); --cbp-file-input-color-bg-dragged: var(--cbp-color-interactive-primary-lighter); --cbp-file-input-color-border: var(--cbp-color-interactive-secondary-base); --cbp-file-input-color-border-hover: var(--cbp-color-interactive-secondary-darker); --cbp-file-input-color-border-focus: var(--cbp-color-interactive-focus-dark); --cbp-file-input-color-outline: transparent; --cbp-file-input-color-outline-hover: var(--cbp-color-interactive-secondary-light); --cbp-file-input-color-outline-focus: var(--cbp-color-interactive-focus-light); --cbp-file-input-color-dark: var(--cbp-color-text-lightest); --cbp-file-input-color-bg-dark: var(--cbp-color-gray-cool-70); --cbp-file-input-color-bg-dragged-dark: var(--cbp-color-interactive-primary-darker); --cbp-file-input-color-border-dark: var(--cbp-color-interactive-secondary-light); --cbp-file-input-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); --cbp-file-input-color-border-focus-dark:var(--cbp-color-interactive-focus-light); --cbp-file-input-color-outline-dark: transparent; --cbp-file-input-color-outline-hover-dark: var(--cbp-color-interactive-secondary-dark); --cbp-file-input-color-outline-focus-dark: var(--cbp-color-white); --cbp-file-input-icon-color: var(--cbp-color-text-base); --cbp-file-input-file-color-bg: var(--cbp-color-gray-cool-10); --cbp-file-input-file-color-bg-dark: var(--cbp-color-gray-cool-60); --cbp-file-input-file-color-bg-error: var(--cbp-color-danger-lighter); --cbp-file-input-file-color-bg-error-dark: var(--cbp-color-danger-darker); } [data-cbp-theme=light] cbp-file-input[context*=dark], [data-cbp-theme=dark] cbp-file-input:not([context=dark-inverts]):not([context=light-always]) { --cbp-file-input-color-label: var(--cbp-file-input-color-label-dark); --cbp-file-input-color: var(--cbp-file-input-color-dark); --cbp-file-input-color-bg: var(--cbp-file-input-color-bg-dark); --cbp-file-input-color-bg-dragged: var(--cbp-file-input-color-bg-dragged-dark); --cbp-file-input-color-border: var(--cbp-file-input-color-border-dark); --cbp-file-input-color-border-hover: var(--cbp-file-input-color-border-hover-dark); --cbp-file-input-color-border-focus: var(--cbp-file-input-color-border-focus-dark); --cbp-file-input-color-outline: var(--cbp-file-input-color-outline-dark); --cbp-file-input-color-outline-hover: var(--cbp-file-input-color-outline-hover-dark); --cbp-file-input-color-outline-focus: var(--cbp-file-input-color-outline-focus-dark); --cbp-file-input-file-color-bg: var(--cbp-file-input-file-color-bg-dark); --cbp-file-input-file-color-bg-error: var(--cbp-file-input-file-color-bg-error-dark); } cbp-file-input { display: block; margin-block-start: var(--cbp-space-2x); container-type: inline-size; } cbp-file-input[error] { --cbp-file-input-color-border: var(--cbp-color-danger-dark); --cbp-file-input-color-border-hover: var(--cbp-color-danger-dark); --cbp-file-input-color-outline-hover: var(--cbp-color-danger-light); --cbp-file-input-color-border-dark: var(--cbp-color-danger-light); --cbp-file-input-color-border-hover-dark: var(--cbp-color-danger-lighter); --cbp-file-input-color-outline-hover-dark: var(--cbp-color-danger-light); } cbp-file-input[error] .cbp-file-input-visuals cbp-button { --cbp-button-color-bg: var(--cbp-color-danger-dark); --cbp-button-color-bg-hover: var(--cbp-color-danger-darker); --cbp-button-color-border: var(--cbp-color-danger-dark); --cbp-button-color-border-hover: var(--cbp-color-danger-darker); --cbp-button-color-bg-dark: var(--cbp-color-danger-light); --cbp-button-color-bg-hover-dark: var(--cbp-color-danger-lighter); --cbp-button-color-border-dark: var(--cbp-color-danger-light); --cbp-button-color-border-hover-dark: var(--cbp-color-danger-lighter); } cbp-file-input:has(input.cbp-file-input-dragged) { --cbp-file-input-color-bg: var(--cbp-file-input-color-bg-dragged); --cbp-file-input-color-bg-dark: var(--cbp-file-input-color-bg-dragged-dark); } cbp-file-input:has(input:disabled) { --cbp-file-input-color: var(--cbp-color-interactive-disabled-dark); --cbp-file-input-color-dark: var(--cbp-color-interactive-disabled-light); --cbp-file-input-color-bg: transparent; --cbp-file-input-color-bg-dark: transparent; --cbp-file-input-color-border: var(--cbp-color-interactive-disabled-dark); --cbp-file-input-color-border-dark: var(--cbp-color-interactive-disabled-light); --cbp-file-input-icon-color: currentColor; --cbp-file-input-file-color-bg: var(--cbp-color-interactive-disabled-light); --cbp-file-input-file-color-bg-dark: var(--cbp-color-interactive-disabled-dark); } cbp-file-input .cbp-file-input-wrapper { display: flex; align-items: center; position: relative; width: 100%; max-width: 100%; min-height: 4.5rem; margin-block-end: var(--cbp-space-4x); color: var(--cbp-file-input-color); background-color: var(--cbp-file-input-color-bg); border-width: var(--cbp-border-size-md); border-color: var(--cbp-file-input-color-border); border-radius: var(--cbp-file-input-border-radius); outline-style: solid; outline-width: 0; outline-color: var(--cbp-file-input-color-outline); outline-offset: calc((var(--cbp-border-size-md) + var(--cbp-border-size-xl)) * -1); border-style: dashed; } cbp-file-input .cbp-file-input-wrapper:hover:not(:has(input:disabled)) { --cbp-file-input-color-border: var(--cbp-file-input-color-border-hover); --cbp-file-input-color-outline: var(--cbp-file-input-color-outline-hover); outline-width: var(--cbp-border-size-xl); } cbp-file-input .cbp-file-input-wrapper:hover:not(:has(input:disabled)) cbp-button[fill=solid][color=secondary] { --cbp-button-color: var(--cbp-button-color-hover); --cbp-button-color-bg: var(--cbp-button-color-bg-hover); --cbp-button-color-border: var(--cbp-button-color-border-hover); --cbp-button-color-dark: var(--cbp-button-color-hover-dark); --cbp-button-color-bg-dark: var(--cbp-button-color-bg-hover-dark); --cbp-button-color-border-dark: var(--cbp-button-color-border-hover-dark); } cbp-file-input .cbp-file-input-wrapper:focus:not(:has(input:disabled)), cbp-file-input .cbp-file-input-wrapper:focus-within:not(:has(input:disabled)) { --cbp-file-input-color-border: var(--cbp-file-input-color-border-focus); --cbp-file-input-color-outline: var(--cbp-file-input-color-outline-focus); outline-width: var(--cbp-border-size-xl); } cbp-file-input .cbp-file-input-wrapper:focus:not(:has(input:disabled)) cbp-button[fill=solid][color=secondary], cbp-file-input .cbp-file-input-wrapper:focus-within:not(:has(input:disabled)) cbp-button[fill=solid][color=secondary] { --cbp-button-color: var(--cbp-button-color-focus); --cbp-button-color-bg: var(--cbp-button-color-bg-focus); --cbp-button-color-border: var(--cbp-button-color-border-focus); --cbp-button-color-dark: var(--cbp-button-color-focus-dark); --cbp-button-color-bg-dark: var(--cbp-button-color-bg-focus-dark); --cbp-button-color-border-dark: var(--cbp-button-color-border-focus-dark); } cbp-file-input .cbp-file-input-wrapper:focus:not(:has(input:disabled)) cbp-button[fill=solid][color=secondary] button, cbp-file-input .cbp-file-input-wrapper:focus-within:not(:has(input:disabled)) cbp-button[fill=solid][color=secondary] button { outline-width: var(--cbp-border-size-md); } cbp-file-input .cbp-file-input-wrapper[readonly], cbp-file-input .cbp-file-input-wrapper:disabled { font-style: italic; cursor: not-allowed; } cbp-file-input .cbp-file-input-wrapper .cbp-file-input-visuals { display: flex; align-items: center; gap: var(--cbp-space-3x); width: 100%; height: 100%; padding-inline-start: var(--cbp-space-4x); padding-inline-end: var(--cbp-space-3x); } cbp-file-input .cbp-file-input-wrapper .cbp-file-input-visuals .cbp-file-input-text { flex-grow: 1; display: flex; align-items: center; font-style: italic; text-wrap: pretty; } cbp-file-input .cbp-file-input-wrapper .cbp-file-input-visuals > cbp-icon { --cbp-icon-color: var(--cbp-file-input-icon-color); } cbp-file-input .cbp-file-input-wrapper input[type=file]:not(#fakeId) { appearance: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; opacity: 0; z-index: 2; } cbp-file-input .cbp-file-input-filelist { display: flex; flex-direction: column; gap: var(--cbp-space-4x); } cbp-file-input .cbp-file-input-filelist .cbp-file-input-file-error { --cbp-file-input-file-color-bg: var(--cbp-file-input-file-color-bg-error); } cbp-file-input .cbp-file-input-filelist > div { display: flex; align-items: center; gap: var(--cbp-space-2x); padding: var(--cbp-space-2x); background-color: var(--cbp-file-input-file-color-bg); font-style: italic; line-height: var(--cbp-line-height-xs); overflow: hidden; text-overflow: ellipsis; } cbp-file-input .cbp-file-input-filelist > div :first-child { flex-grow: 9; } cbp-file-input .cbp-file-input-filelist > div cbp-button:not(#fakeId) { --cbp-icon-size: var(--cbp-space-3x); --cbp-button-padding: 0; --cbp-button-min-width: var(--cbp-space-7x); --cbp-button-min-height: var(--cbp-space-7x); --cbp-button-width: var(--cbp-space-7x); --cbp-button-height: var(--cbp-space-7x); --cbp-button-border-radius: var(--cbp-border-radius-circle); --cbp-button-color-hover: var(--cbp-color-text-lightest); --cbp-button-color-hover-dark: var(--cbp-color-text-darkest); --cbp-button-color-bg-hover: var(--cbp-color-interactive-secondary-darker); --cbp-button-color-bg-hover-dark: var(--cbp-color-interactive-secondary-lighter); --cbp-button-color-border-hover: var(--cbp-color-interactive-secondary-darker); --cbp-button-color-border-hover-dark: var(--cbp-color-interactive-secondary-lighter); } @container (width <= 19rem) { .cbp-file-input-visuals cbp-icon { display: none; } }