@charset "UTF-8"; /* 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; } @media (prefers-reduced-motion: reduce) { :root { --calcite-internal-duration-factor: 0.01; } } /** * Currently only used in Checkbox. */ :root { --calcite-floating-ui-transition: var(--calcite-animation-timing); } :host([hidden]) { display: none; } /** * CSS Custom Properties * * These properties can be overridden using the component's tag as selector. * * @prop --calcite-loader-font-size: Specifies the font size of the loading percentage when type is `"determinate"`. * @prop --calcite-loader-size: The width and height of a non-inline loader. * @prop --calcite-loader-size-inline: The width and height of an inline loader. */ :host{ position: relative; margin-inline: auto; display: none; align-items: center; justify-content: center; opacity: 1; min-block-size: var(--calcite-loader-size); font-size: var(--calcite-loader-font-size); stroke: var(--calcite-ui-brand); stroke-width: 3; fill: none; transform: scale(1, 1); animation: loader-color-shift calc(var(--calcite-internal-animation-timing-slow) * 2) alternate-reverse infinite linear; padding-block: var(--calcite-loader-padding, 4rem); } :host([scale=s]) { --calcite-loader-font-size: var(--calcite-font-size--2); --calcite-loader-size: 2rem; --calcite-loader-size-inline: 0.75rem; } :host([scale=m]) { --calcite-loader-font-size: var(--calcite-font-size-0); --calcite-loader-size: 4rem; --calcite-loader-size-inline: 1rem; } :host([scale=l]) { --calcite-loader-font-size: var(--calcite-font-size-2); --calcite-loader-size: 6rem; --calcite-loader-size-inline: 1.5rem; } :host([no-padding]){ padding-block: 0px; } :host{ display: none; } :host([active]){ display: flex; } .loader__text{ display: block; text-align: center; font-size: var(--calcite-font-size--2); line-height: 1rem; color: var(--calcite-ui-text-1); margin-block-start: calc(var(--calcite-loader-size) + 1.5rem); } .loader__percentage{ position: absolute; display: block; text-align: center; color: var(--calcite-ui-text-1); font-size: var(--calcite-loader-font-size); inline-size: var(--calcite-loader-size); inset-inline-start: 50%; margin-inline-start: calc(var(--calcite-loader-size) / 2 * -1); line-height: 0.25; transform: scale(1, 1); } .loader__svgs{ position: absolute; overflow: visible; opacity: 1; inline-size: var(--calcite-loader-size); block-size: var(--calcite-loader-size); inset-inline-start: 50%; margin-inline-start: calc(var(--calcite-loader-size) / 2 * -1); transform: scale(1, 1); } .loader__svg{ position: absolute; inset-block-start: 0px; transform-origin: center; overflow: visible; inset-inline-start: 0; inline-size: var(--calcite-loader-size); block-size: var(--calcite-loader-size); animation-iteration-count: infinite; animation-timing-function: linear; animation-name: loader-clockwise; } @supports (display: grid) { .loader__svg--1 { animation-name: loader-offset-1; } .loader__svg--2 { animation-name: loader-offset-2; } .loader__svg--3 { animation-name: loader-offset-3; } } :host([type=determinate]){ animation: none; stroke: var(--calcite-ui-border-3); } :host([type=determinate]) .loader__svg--3{ animation: none; stroke: var(--calcite-ui-brand); stroke-dasharray: 150.79632; transform: rotate(-90deg); transition: all var(--calcite-internal-animation-timing-fast) linear; } :host([inline]){ position: relative; margin: 0px; animation: none; stroke: currentColor; stroke-width: 2; padding-block: 0px; block-size: var(--calcite-loader-size-inline); min-block-size: var(--calcite-loader-size-inline); inline-size: var(--calcite-loader-size-inline); margin-inline-end: calc(var(--calcite-loader-size-inline) * 0.5); vertical-align: calc(var(--calcite-loader-size-inline) * -1 * 0.2); } :host([active][inline]){ display: inline-block; } :host([inline]) .loader__svgs{ inset-block-start: 0px; margin: 0px; inset-inline-start: 0; inline-size: var(--calcite-loader-size-inline); block-size: var(--calcite-loader-size-inline); } :host([inline]) .loader__svg { inline-size: var(--calcite-loader-size-inline); block-size: var(--calcite-loader-size-inline); } :host([complete]){ opacity: 0; transform: scale(0.75, 0.75); transform-origin: center; transition: opacity var(--calcite-internal-animation-timing-medium) linear 1000ms, transform var(--calcite-internal-animation-timing-medium) linear 1000ms; } :host([complete]) .loader__svgs{ opacity: 0; transform: scale(0.75, 0.75); transform-origin: center; transition: opacity calc(180ms * var(--calcite-internal-duration-factor)) linear 800ms, transform calc(180ms * var(--calcite-internal-duration-factor)) linear 800ms; } :host([complete]) .loader__percentage { color: var(--calcite-ui-brand); transform: scale(1.05, 1.05); transform-origin: center; transition: color var(--calcite-internal-animation-timing-medium) linear, transform var(--calcite-internal-animation-timing-medium) linear; } /** Segment variables - i index (1-3) - size length of the segment (0 - 100) - growth how much the segment grows during the animation (size + growth should not exceed 100) - duration how long the segment takes to rotate 360° (seconds) */ .loader__svg--1 { stroke-dasharray: 27.9252444444% 139.6262222222%; animation-duration: calc(var(--calcite-internal-animation-timing-slow) * 2.4); } @keyframes loader-offset-1 { 0% { stroke-dasharray: 27.9252444444% 251.3272%; stroke-dashoffset: 0; } 50% { stroke-dasharray: 139.6262222222% 139.6262222222%; stroke-dashoffset: -83.7757333333%; } 100% { stroke-dasharray: 27.9252444444% 251.3272%; stroke-dashoffset: -279.2524444444%; } } .loader__svg--2 { stroke-dasharray: 55.8504888889% 139.6262222222%; animation-duration: calc(var(--calcite-internal-animation-timing-slow) * 3.2); } @keyframes loader-offset-2 { 0% { stroke-dasharray: 55.8504888889% 223.4019555556%; stroke-dashoffset: 0; } 50% { stroke-dasharray: 139.6262222222% 139.6262222222%; stroke-dashoffset: -97.7383555556%; } 100% { stroke-dasharray: 55.8504888889% 223.4019555556%; stroke-dashoffset: -279.2524444444%; } } .loader__svg--3 { stroke-dasharray: 13.9626222222% 139.6262222222%; animation-duration: calc(var(--calcite-internal-animation-timing-slow) * 3.867); } @keyframes loader-offset-3 { 0% { stroke-dasharray: 13.9626222222% 265.2898222222%; stroke-dashoffset: 0; } 50% { stroke-dasharray: 139.6262222222% 139.6262222222%; stroke-dashoffset: -76.7944222222%; } 100% { stroke-dasharray: 13.9626222222% 265.2898222222%; stroke-dashoffset: -279.2524444444%; } } @keyframes loader-color-shift { 0% { stroke: var(--calcite-ui-brand); } 33% { stroke: var(--calcite-ui-brand-press); } 66% { stroke: var(--calcite-ui-brand-hover); } 100% { stroke: var(--calcite-ui-brand); } } @keyframes loader-clockwise { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }