202 lines
3.3 KiB
Vue
202 lines
3.3 KiB
Vue
<template>
|
|
<div class="five-squares-loader">
|
|
<div id="sq1"></div>
|
|
<div id="sq2"></div>
|
|
<div id="sq3"></div>
|
|
<div id="sq4"></div>
|
|
<div id="sq5"></div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
// From Uiverse.io by Nawsome (modified)
|
|
</script>
|
|
|
|
<style scoped>
|
|
.five-squares-loader {
|
|
--square: 3px;
|
|
--offset: 7.5px;
|
|
width: calc(3 * var(--offset) + var(--square));
|
|
height: calc(2 * var(--offset) + var(--square));
|
|
position: relative;
|
|
}
|
|
|
|
.five-squares-loader div {
|
|
display: inline-block;
|
|
background: var(--claude-text-tertiary);
|
|
width: var(--square);
|
|
height: var(--square);
|
|
position: absolute;
|
|
}
|
|
|
|
.five-squares-loader #sq1 {
|
|
left: 0;
|
|
top: 0;
|
|
animation: square1 2.4s 0.2s ease-in-out infinite;
|
|
}
|
|
|
|
.five-squares-loader #sq2 {
|
|
left: 0;
|
|
top: var(--offset);
|
|
animation: square2 2.4s 0.2s ease-in-out infinite;
|
|
}
|
|
|
|
.five-squares-loader #sq3 {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
animation: square3 2.4s 0.2s ease-in-out infinite;
|
|
}
|
|
|
|
.five-squares-loader #sq4 {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
animation: square4 2.4s 0.2s ease-in-out infinite;
|
|
}
|
|
|
|
.five-squares-loader #sq5 {
|
|
left: calc(3 * var(--offset));
|
|
top: var(--offset);
|
|
animation: square5 2.4s 0.2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes square1 {
|
|
0% {
|
|
left: 0;
|
|
top: 0;
|
|
}
|
|
8.33% {
|
|
left: 0;
|
|
top: var(--offset);
|
|
}
|
|
100% {
|
|
left: 0;
|
|
top: var(--offset);
|
|
}
|
|
}
|
|
|
|
@keyframes square2 {
|
|
0% {
|
|
left: 0;
|
|
top: var(--offset);
|
|
}
|
|
8.33% {
|
|
left: 0;
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
16.67% {
|
|
left: var(--offset);
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
25% {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
}
|
|
83.33% {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
}
|
|
91.67% {
|
|
left: var(--offset);
|
|
top: 0;
|
|
}
|
|
100% {
|
|
left: 0;
|
|
top: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes square3 {
|
|
0%,
|
|
100% {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
}
|
|
16.67% {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
}
|
|
25% {
|
|
left: var(--offset);
|
|
top: 0;
|
|
}
|
|
33.33% {
|
|
left: calc(2 * var(--offset));
|
|
top: 0;
|
|
}
|
|
41.67% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
66.67% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
75% {
|
|
left: calc(2 * var(--offset));
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
83.33% {
|
|
left: var(--offset);
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
91.67% {
|
|
left: var(--offset);
|
|
top: var(--offset);
|
|
}
|
|
}
|
|
|
|
@keyframes square4 {
|
|
0% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
33.33% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
41.67% {
|
|
left: calc(2 * var(--offset));
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
50% {
|
|
left: calc(3 * var(--offset));
|
|
top: calc(2 * var(--offset));
|
|
}
|
|
58.33% {
|
|
left: calc(3 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
100% {
|
|
left: calc(3 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
}
|
|
|
|
@keyframes square5 {
|
|
0% {
|
|
left: calc(3 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
50% {
|
|
left: calc(3 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
58.33% {
|
|
left: calc(3 * var(--offset));
|
|
top: 0;
|
|
}
|
|
66.67% {
|
|
left: calc(2 * var(--offset));
|
|
top: 0;
|
|
}
|
|
75% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
100% {
|
|
left: calc(2 * var(--offset));
|
|
top: var(--offset);
|
|
}
|
|
}
|
|
</style>
|