embeddable-nfts
Version:
Reusable, embeddable webcomponent for OpenSea assets.
89 lines (87 loc) • 2.13 kB
text/typescript
import { css, customElement, html, LitElement } from 'lit-element'
('loader-element')
export class Loader extends LitElement {
static get styles() {
return css`
@keyframes pulse-opacity {
0% {
opacity: 1;
}
16.666% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.Loading {
transform: translate(-50%, -50%) rotate(30deg);
height: 81px;
width: 90px;
position: absolute;
left: 50%;
top: 50%;
}
.Loading .tri.upwards {
border-top: 0;
border-bottom: 27px solid #fff;
}
.Loading .tri:first-child {
left: 15px;
border-bottom-color: #00c9a4;
}
.Loading .tri:nth-child(2) {
left: 30px;
animation-delay: 0.1s;
border-top-color: #00ffd0;
}
.Loading .tri:nth-child(3) {
left: 45px;
animation-delay: 0.2s;
border-bottom-color: #00d7d1;
}
.Loading .tri:nth-child(4) {
left: 45px;
top: 27px;
animation-delay: 0.3s;
border-top-color: #0095be;
}
.Loading .tri:nth-child(5) {
top: 27px;
left: 30px;
animation-delay: 0.4s;
border-bottom-color: #007296;
}
.Loading .tri:nth-child(6) {
top: 27px;
left: 15px;
animation-delay: 0.5s;
border-top-color: #1c1f27;
}
.Loading .tri,
.Loading .tri.upwards {
border-left: 15px solid transparent;
border-right: 15px solid transparent;
}
.Loading .tri {
position: absolute;
opacity: 0;
animation: pulse-opacity 0.6s ease-in infinite;
border-top: 27px solid #fff;
border-bottom: 0;
}
`
}
public render() {
return html`
<div class="Loading">
<div class="tri upwards"></div>
<div class="tri"></div>
<div class="tri upwards"></div>
<div class="tri"></div>
<div class="tri upwards"></div>
<div class="tri"></div>
</div>
`
}
}