2025-10-11 11:28:42 +00:00
|
|
|
<script lang="ts">
|
2025-12-11 08:42:09 +00:00
|
|
|
export let streamingIndicatorElement: HTMLElement | undefined = undefined;
|
2025-10-11 11:28:42 +00:00
|
|
|
</script>
|
|
|
|
|
|
2026-04-19 19:39:04 +00:00
|
|
|
<div class="loader" bind:this={streamingIndicatorElement}>
|
2025-10-29 19:35:19 +00:00
|
|
|
<div class="circle">
|
|
|
|
|
<div class="dot"></div>
|
|
|
|
|
<div class="outline"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="circle">
|
|
|
|
|
<div class="dot"></div>
|
|
|
|
|
<div class="outline"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="circle">
|
|
|
|
|
<div class="dot"></div>
|
|
|
|
|
<div class="outline"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="circle">
|
|
|
|
|
<div class="dot"></div>
|
|
|
|
|
<div class="outline"></div>
|
|
|
|
|
</div>
|
2025-09-28 22:31:35 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<style>
|
2025-10-29 19:35:19 +00:00
|
|
|
/* From Uiverse.io by Li-Deheng */
|
|
|
|
|
.loader {
|
2025-09-28 22:31:35 +00:00
|
|
|
display: flex;
|
2025-11-04 18:56:28 +00:00
|
|
|
margin-top: 0.75rem;
|
2025-10-29 19:35:19 +00:00
|
|
|
justify-content: left;
|
2025-09-28 22:31:35 +00:00
|
|
|
align-items: center;
|
2025-10-29 19:35:19 +00:00
|
|
|
--color: var(--interactive-accent);
|
|
|
|
|
--animation: 2s ease-in-out infinite;
|
2025-10-13 18:25:29 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.loader .circle {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
2025-09-28 22:31:35 +00:00
|
|
|
position: relative;
|
2025-10-29 19:35:19 +00:00
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
border: solid 1px var(--color);
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
margin: 0 5px;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
animation: circle-keys var(--animation);
|
|
|
|
|
animation-fill-mode: backwards;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.loader .circle .dot {
|
2025-09-28 22:31:35 +00:00
|
|
|
position: absolute;
|
2025-10-29 19:35:19 +00:00
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
width: 8px;
|
|
|
|
|
height: 8px;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background-color: var(--color);
|
|
|
|
|
animation: dot-keys var(--animation);
|
|
|
|
|
animation-fill-mode: backwards;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.loader .circle .outline {
|
|
|
|
|
position: absolute;
|
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
animation: outline-keys var(--animation);
|
|
|
|
|
animation-fill-mode: backwards;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(2) {
|
|
|
|
|
animation-delay: 0.3s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(3) {
|
|
|
|
|
animation-delay: 0.6s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(4) {
|
|
|
|
|
animation-delay: 0.9s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(5) {
|
|
|
|
|
animation-delay: 1.2s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(2) .dot {
|
|
|
|
|
animation-delay: 0.3s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(3) .dot {
|
|
|
|
|
animation-delay: 0.6s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(4) .dot {
|
|
|
|
|
animation-delay: 0.9s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
|
|
|
|
.circle:nth-child(5) .dot {
|
|
|
|
|
animation-delay: 1.2s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.circle:nth-child(1) .outline {
|
|
|
|
|
animation-delay: 0.9s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.circle:nth-child(2) .outline {
|
|
|
|
|
animation-delay: 1.2s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.circle:nth-child(3) .outline {
|
|
|
|
|
animation-delay: 1.5s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.circle:nth-child(4) .outline {
|
|
|
|
|
animation-delay: 1.8s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
.circle:nth-child(5) .outline {
|
|
|
|
|
animation-delay: 2.1s;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
@keyframes circle-keys {
|
|
|
|
|
0% {
|
|
|
|
|
transform: scale(1);
|
|
|
|
|
opacity: 1;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
50% {
|
|
|
|
|
transform: scale(1.5);
|
|
|
|
|
opacity: 0.5;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
2025-09-28 22:31:35 +00:00
|
|
|
100% {
|
2025-10-29 19:35:19 +00:00
|
|
|
transform: scale(1);
|
|
|
|
|
opacity: 1;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
@keyframes dot-keys {
|
|
|
|
|
0% {
|
|
|
|
|
transform: scale(1);
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
2025-09-28 22:31:35 +00:00
|
|
|
50% {
|
2025-10-29 19:35:19 +00:00
|
|
|
transform: scale(0);
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
2025-10-29 19:35:19 +00:00
|
|
|
transform: scale(1);
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-29 19:35:19 +00:00
|
|
|
@keyframes outline-keys {
|
|
|
|
|
0% {
|
|
|
|
|
transform: scale(0);
|
|
|
|
|
outline: solid 10px var(--color);
|
|
|
|
|
outline-offset: 0;
|
|
|
|
|
opacity: 1;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
2025-10-29 19:35:19 +00:00
|
|
|
|
2025-09-28 22:31:35 +00:00
|
|
|
100% {
|
2025-10-29 19:35:19 +00:00
|
|
|
transform: scale(1);
|
|
|
|
|
outline: solid 0 transparent;
|
|
|
|
|
outline-offset: 10px;
|
|
|
|
|
opacity: 0;
|
2025-09-28 22:31:35 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|