@conectate/ct-spinner
Version:
Spinner web component
50 lines (47 loc) • 1.2 kB
text/typescript
import { CtLit, customElement, property } from "@conectate/ct-lit";
import { css, html } from "lit";
/**
* ## `ct-spinner`
* Spinner web Component
* @group ct-elements
* @element ct-spinner
* @cssProp --ct-spinner-1 - Spinner Color 1
* @cssProp --ct-spinner-2 - Spinner Color 2
*/
("ct-spinner")
export class CtSpinner extends CtLit {
({ type: Boolean, reflect: true }) active: boolean = true;
static styles = css`
:host([active]) {
display: inline-flex;
border: 4px solid #7e7e7e1c;
width: 36px;
height: 36px;
border-radius: 50%;
border-left-color: var(--ct-spinner-1, var(--color-primary, #2cb5e8));
animation: spin 1s ease infinite;
}
@keyframes spin {
0% {
transform: rotate(0);
border-left-color: var(--ct-spinner-1, var(--color-primary, #2cb5e8));
}
50% {
transform: rotate(180deg);
border-left-color: var(--ct-spinner-2, var(--color-secondary, #0fb8ad));
}
100% {
transform: rotate(360deg);
border-left-color: var(--ct-spinner-1, var(--color-primary, #2cb5e8));
}
}
`;
render() {
return html``;
}
}
declare global {
interface HTMLElementTagNameMap {
"ct-spinner": CtSpinner;
}
}