UNPKG

v4web-components

Version:
409 lines (345 loc) 13.3 kB
/* @import url('../../css/variables.css'); */ :host { display: block; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } button.max-width { width: 100%; } button { position: relative; background-color: rgba(0, 0, 0, 0); border-style: solid; cursor: pointer; outline: none; } button .label { display: flex; justify-content: center; align-items: center; gap: var(--lab-ds-semantic-selectable-space-gap-s); } .icon { font-family: Material Symbols Outlined; animation: spin 1s linear infinite; font-size: var(--lab-ds-semantic-size-icon-s); } .large .icon { font-size: var(--lab-ds-semantic-size-icon-sm); } .icon-loading { display: flex; align-items: center; justify-content: center; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } button .icon { display: none; } button.loading .label { opacity: 0; } button.loading .icon { display: flex; color: var(--lab-ds-semantic-color-bg-default); animation: spin 1s linear infinite; } .leading-icon { margin-top: -0.5rem; margin-bottom: -0.5rem; } .step-icon { margin-top: -0.5rem; margin-bottom: -0.5rem; } .button.small { padding-top: var(--lab-ds-semantic-selectable-space-padding-s); padding-bottom: var(--lab-ds-semantic-selectable-space-padding-s); padding-left: var(--lab-ds-semantic-selectable-space-padding-xl); padding-right: var(--lab-ds-semantic-selectable-space-padding-xl); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); gap: var(--lab-ds-semantic-selectable-space-gap-s); font: var(--lab-ds-component-button-typography-none-decoration-small); font-family: var(--lab-ds-component-button-font-family); font-size: var(--lab-ds-component-button-font-size-small); font-weight: var(--lab-ds-component-button-font-weight); line-height: var(--lab-ds-component-button-font-line-height-small); text-transform: var(--lab-ds-core-font-letter-case-02); } .button.medium { padding-top: var(--lab-ds-semantic-selectable-space-padding-sm); padding-bottom: var(--lab-ds-semantic-selectable-space-padding-sm); padding-left: var(--lab-ds-semantic-selectable-space-padding-xxxl); padding-right: var(--lab-ds-semantic-selectable-space-padding-xxxl); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); gap: var(--lab-ds-semantic-selectable-space-gap-s); font: var(--lab-ds-component-button-typography-none-decoration-medium); font-family: var(--lab-ds-component-button-font-family); font-size: var(--lab-ds-component-button-font-size-medium); font-weight: var(--lab-ds-component-button-font-weight); line-height: var(--lab-ds-component-button-font-line-height-medium); text-transform: var(--lab-ds-core-font-letter-case-02); } .button.large { padding-top: var(--lab-ds-semantic-selectable-space-padding-sm); padding-bottom: var(--lab-ds-semantic-selectable-space-padding-sm); padding-left: var(--lab-ds-semantic-selectable-space-padding-xxxl); padding-right: var(--lab-ds-semantic-selectable-space-padding-xxxl); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); gap: var(--lab-ds-semantic-selectable-space-gap-s); font: var(--lab-ds-component-button-typography-none-decoration-large); font-family: var(--lab-ds-component-button-font-family); font-size: var(--lab-ds-component-button-font-size-large); font-weight: var(--lab-ds-component-button-font-weight); line-height: var(--lab-ds-component-button-font-line-height-large); text-transform: var(--lab-ds-core-font-letter-case-02); } .primary { background-color: var(--lab-ds-semantic-selectable-color-primary-default); border-color: var(--lab-ds-semantic-selectable-color-primary-default); color: var(--lab-ds-semantic-color-fg-contrast-primary); } .primary:focus:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-default); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-selectable-color-primary-focus); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); } .primary:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-hover); border-color: var(--lab-ds-semantic-selectable-color-primary-hover); } .primary:active:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-press); border-color: var(--lab-ds-semantic-selectable-color-primary-press); } .primary:disabled { background-color: var(--lab-ds-semantic-color-bg-disabled); border-color: var(--lab-ds-semantic-color-bg-disabled); color: var(--lab-ds-semantic-color-fg-disabled); cursor: not-allowed; } .primary.loading { background-color: var(--lab-ds-semantic-selectable-color-primary-loading); border-color: var(--lab-ds-semantic-selectable-color-primary-loading); } /* outlined properties */ .outlined { color: var(--lab-ds-semantic-selectable-color-primary-default); border-color: var(--lab-ds-semantic-selectable-color-primary-default); border-width: var(--lab-ds-semantic-selectable-border-width-m); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); } .outlined:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-hover); color: var(--lab-ds-semantic-color-fg-default); border-color: var(--lab-ds-semantic-selectable-color-primary-hover); } .outlined:focus:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-default); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-selectable-color-primary-focus); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); color: var(--lab-ds-semantic-color-fg-default); } .outlined:active:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-press); color: var(--lab-ds-semantic-color-fg-default); } .outlined:disabled { background-color: none; color: var(--lab-ds-semantic-color-fg-disabled); border-color: var(--lab-ds-semantic-color-fg-disabled); border-width: var(--lab-ds-semantic-selectable-border-width-m); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); cursor: not-allowed; } .outlined.loading { background-color: var(--lab-ds-semantic-selectable-color-primary-loading); border: none; } /* link-button properties */ .link-button { color: var(--lab-ds-semantic-color-fg-default); border: none; } .link-button.small .label-text { font: var(--lab-ds-component-button-typography-underlined-small); text-decoration: underline; } .link-button.medium .label-text { font: var(--lab-ds-component-button-typography-underlined-medium); text-decoration: underline; } .link-button.large .label-text { font: var(--lab-ds-component-button-typography-underlined-large); text-decoration: underline; } .link-button:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-bg-hover); color: var(--lab-ds-semantic-color-fg-default); border: none; } .link-button:focus:not([disabled]) { border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-color-fg-default); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); color: var(--lab-ds-semantic-color-fg-default); } .link-button:active:not([disabled]) { background-color: var(--lab-ds-semantic-color-bg-cloudy); color: var(--lab-ds-semantic-color-fg-default); border: none; outline: none; } .link-button:disabled { color: var(--lab-ds-semantic-color-fg-disabled); border-color: var(--lab-ds-semantic-color-fg-disabled); cursor: not-allowed; } .link-button.loading { background-color: var(--lab-ds-semantic-color-bg-cloudy); } .link-button && .small { font: var(--lab-ds-component-button-typography-underlined-small); } .link-button && .medium { font: var(--lab-ds-component-button-typography-underlined-medium); } .link-button && .large { font: var(--lab-ds-component-button-typography-underlined-large); } /* CTA properties */ .cta { background-color: var(--lab-ds-semantic-selectable-color-primary-default); color: var(--lab-ds-semantic-color-fg-default); border: none; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .cta:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-hover); color: var(--lab-ds-semantic-color-fg-default); box-shadow: var(--lab-ds-semantic-selectable-shadow-s); animation: none; } .cta:focus:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-default); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-selectable-color-primary-focus); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); color: var(--lab-ds-semantic-color-fg-default); } .cta:active:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-primary-press); color: var(--lab-ds-semantic-color-fg-default); } .cta:disabled { background-color: var(--lab-ds-semantic-selectable-color-bg-disabled); color: var(--lab-ds-semantic-color-fg-disabled); animation: none; cursor: not-allowed; } .cta.loading { background-color: var(--lab-ds-semantic-selectable-color-primary-loading); animation: none; } /* danger-primary properties */ .danger-primary { background-color: var(--lab-ds-semantic-selectable-color-bg-dark-error); border-color: var(--lab-ds-semantic-selectable-color-bg-dark-error); color: var(--lab-ds-semantic-selectable-color-bg-pure); } .danger-primary:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-error-hover); border-color: var(--lab-ds-semantic-selectable-color-error-hover); color: var(--lab-ds-semantic-color-bg-default); } .danger-primary:focus:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-bg-dark-error); border-color: var(--lab-ds-semantic-selectable-color-bg-dark-error); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-selectable-color-error-focus); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); color: var(--lab-ds-semantic-color-bg-default); } .danger-primary:active:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-error-press); border-color: var(--lab-ds-semantic-selectable-color-error-press); color: var(--lab-ds-semantic-color-bg-default); } .danger-primary:disabled { background-color: var(--lab-ds-semantic-selectable-color-bg-disabled); border-color: var(--lab-ds-semantic-selectable-color-bg-disabled); color: var(--lab-ds-semantic-color-fg-disabled); cursor: not-allowed; } .danger-primary.loading { background-color: var(--lab-ds-semantic-selectable-color-error-loading); border-color: var(--lab-ds-semantic-selectable-color-error-loading); } /* danger-outlined properties */ .danger-outlined { color: var(--lab-ds-semantic-selectable-color-bg-dark-error); border-color: var(--lab-ds-semantic-selectable-color-border-dark-error); border-width: var(--lab-ds-semantic-selectable-border-width-m); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); } .danger-outlined:hover:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-error-hover); color: var(--lab-ds-semantic-selectable-color-bg-pure); border-color: rgba(0, 0, 0, 0); } .danger-outlined:focus:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-bg-dark-error); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); outline-width: var(--lab-ds-semantic-selectable-border-width-m); outline-style: solid; outline-color: var(--lab-ds-semantic-selectable-color-error-focus); outline-offset: var(--lab-ds-semantic-selectable-space-padding-xxs); color: var(--lab-ds-semantic-color-bg-default); } .danger-outlined:active:not([disabled]) { background-color: var(--lab-ds-semantic-selectable-color-error-press); color: var(--lab-ds-semantic-color-bg-default); } .danger-outlined:disabled { color: var(--lab-ds-semantic-color-fg-disabled); border-color: var(--lab-ds-semantic-color-bg-disabled); border-width: var(--lab-ds-semantic-selectable-border-width-m); border-radius: var(--lab-ds-semantic-selectable-border-radius-xs); cursor: not-allowed; } .danger-outlined.loading { background-color: var(--lab-ds-semantic-selectable-color-error-loading); color: var(--lab-ds-semantic-color-bg-default); border-color: var(--lab-ds-semantic-selectable-color-error-loading); }