/* mixins & extensions */ @keyframes in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes in-down { 0% { opacity: 0; transform: translate3D(0, -5px, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-up { 0% { opacity: 0; transform: translate3D(0, 5px, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-scale { 0% { opacity: 0; transform: scale3D(0.95, 0.95, 1); } 100% { opacity: 1; transform: scale3D(1, 1, 1); } } :root { --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor)); --calcite-internal-duration-factor: var(--calcite-duration-factor, 1); --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor)); --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor)); --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor)); } .calcite-animate { opacity: 0; animation-fill-mode: both; animation-duration: var(--calcite-animation-timing); } .calcite-animate__in { animation-name: in; } .calcite-animate__in-down { animation-name: in-down; } .calcite-animate__in-up { animation-name: in-up; } .calcite-animate__in-scale { animation-name: in-scale; } /** * Currently only used in Checkbox. */ :host { /* Base ":host" styles for the component */ box-sizing: border-box; background-color: var(--calcite-ui-foreground-1); color: var(--calcite-ui-text-2); font-size: var(--calcite-font-size--1); } :host * { box-sizing: border-box; } :root { --calcite-popper-transition: var(--calcite-animation-timing); } :host([hidden]) { display: none; } :host { display: flex; background-color: transparent; } :host([disabled]) { pointer-events: none; cursor: default; -webkit-user-select: none; user-select: none; opacity: var(--calcite-ui-opacity-disabled); } :host([disabled]) ::slotted([calcite-hydrated][disabled]), :host([disabled]) [calcite-hydrated][disabled] { /* prevent opacity stacking */ opacity: 1; } .button { position: relative; margin: 0px; display: flex; width: auto; cursor: pointer; align-items: center; justify-content: flex-start; border-style: none; background-color: var(--calcite-ui-foreground-1); fill: var(--calcite-ui-text-3); font-family: var(--calcite-sans-family); font-size: var(--calcite-font-size--2); line-height: 1rem; font-weight: var(--calcite-font-weight-medium); color: var(--calcite-ui-text-3); outline-offset: 0; outline-color: transparent; transition: outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out; text-align: unset; flex: 1 0 auto; } .button:hover { background-color: var(--calcite-ui-foreground-2); fill: var(--calcite-ui-text-1); color: var(--calcite-ui-text-1); } .button:focus { background-color: var(--calcite-ui-foreground-2); fill: var(--calcite-ui-text-1); color: var(--calcite-ui-text-1); outline: 2px solid var(--calcite-ui-brand); outline-offset: -2px; } .button:active { background-color: var(--calcite-ui-foreground-3); } .button .icon-container { pointer-events: none; margin: 0px; display: flex; align-items: center; justify-content: center; min-width: 1rem; min-height: 1rem; } .button .text-container { margin: 0px; width: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1rem; opacity: 0; transition-property: opacity; transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-property: margin; transition-property: width; } .button .text-container--visible { width: auto; flex: 1 1 auto; opacity: 1; } :host([scale=s]) .button { padding: 0.5rem; font-size: var(--calcite-font-size--2); line-height: 1rem; font-weight: var(--calcite-font-weight-normal); } :host([scale=s]) .button--text-visible .icon-container { margin-inline-end: 0.5rem; } :host([scale=m]) .button { padding: 1rem; font-size: var(--calcite-font-size--1); line-height: 1rem; font-weight: var(--calcite-font-weight-normal); } :host([scale=m]) .button--text-visible .icon-container { margin-inline-end: 0.75rem; } :host([scale=l]) .button { padding: 1.25rem; font-size: var(--calcite-font-size-0); line-height: 1.25rem; font-weight: var(--calcite-font-weight-normal); } :host([scale=l]) .button--text-visible .icon-container { margin-inline-end: 1rem; } :host([alignment=center]) .button { justify-content: center; } :host([alignment=end]) .button { justify-content: flex-end; } :host([alignment=center]) .button .text-container--visible, :host([alignment=end]) .button .text-container--visible { flex: 0 1 auto; } :host([scale=s][compact]) .button, :host([scale=m][compact]) .button, :host([scale=l][compact]) .button { padding-left: 0px; padding-right: 0px; } .slot-container { display: flex; } .slot-container--hidden { display: none; } .button--text-visible { width: 100%; } :host([active]) .button, :host([active]) .button:hover, :host([active]) .button:focus, :host([active][loading]) .button { background-color: var(--calcite-ui-foreground-3); fill: var(--calcite-ui-text-1); color: var(--calcite-ui-text-1); } :host([active]) .button:active { background-color: var(--calcite-ui-foreground-1); } :host([appearance=clear]) .button { background-color: transparent; transition-property: box-shadow; transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } :host([appearance=clear]) .button:hover, :host([appearance=clear]) .button:focus { background-color: transparent; box-shadow: 0 0 0 2px var(--calcite-ui-border-1) inset; } :host([active][appearance=clear]) .button, :host([active][appearance=clear]) .button:hover, :host([active][appearance=clear]) .button:focus { background-color: var(--calcite-ui-foreground-3); fill: var(--calcite-ui-text-1); color: var(--calcite-ui-text-1); } :host([appearance=clear][loading]) .button, :host([appearance=clear][disabled]) .button { background-color: transparent; } :host([loading]) .button, :host([loading]) .button:hover, :host([loading]) .button:focus { background-color: var(--calcite-ui-foreground-1); } :host([loading]) .button .text-container, :host([loading]) .button:hover .text-container, :host([loading]) .button:focus .text-container { opacity: var(--calcite-ui-opacity-disabled); } :host([loading]) calcite-loader[inline] { margin-right: 0px; color: var(--calcite-ui-text-3); } :host([disabled]) .button, :host([disabled]) .button:hover, :host([disabled]) .button:focus { cursor: default; background-color: var(--calcite-ui-foreground-1); opacity: var(--calcite-ui-opacity-disabled); } :host([disabled][active]) .button, :host([disabled][active]) .button:hover, :host([disabled][active]) .button:focus { background-color: var(--calcite-ui-foreground-3); opacity: var(--calcite-ui-opacity-disabled); } :host([indicator]) .button::after { content: ""; position: absolute; z-index: 10; height: 0.5rem; width: 0.5rem; border-radius: 9999px; border-width: 2px; background-color: var(--calcite-ui-brand); border-color: var(--calcite-ui-foreground-1); inset-block-end: 0.75rem; inset-inline-end: 0.75rem; } :host([indicator]) .button--text-visible::after { inset-block-end: auto; } :host([indicator]) .button--text-visible .text-container--visible { margin-inline-end: 1rem; } :host([indicator]) .button:hover::after, :host([indicator]) .button:focus::after { border-color: var(--calcite-ui-foreground-1); } :host([indicator][scale=s]) .button::after { inset-block-end: 0.25rem; inset-inline-end: 0.25rem; } :host([indicator][scale=s]) .button--text-visible::after { inset-block-end: auto; inset-inline-end: 0.5rem; } :host([indicator][active]) .button::after { border-color: var(--calcite-ui-foreground-3); }