Files
hossein-por-shop/frontend/components/global/LoadingIndicator.vue
marzban-dev 809c5cb613 Updated
2025-02-21 21:39:47 +03:30

49 lines
869 B
Vue

<script lang="ts" setup>
// state
const nuxtApp = useNuxtApp();
const isLoading = ref(false);
// hook
nuxtApp.hook("page:start", () => {
isLoading.value = true;
});
nuxtApp.hook("page:finish", () => {
isLoading.value = false;
});
</script>
<template>
<Transition name="fade">
<div
v-if="isLoading"
class="h-[20px] flex items-center justify-center bg-black w-full left-0 top-0 fixed z-9999"
>
<div class="absolute progress-indicator w-1/3 bg-white h-1 rounded-full"></div>
</div>
</Transition>
</template>
<style>
.progress-indicator {
animation-name: progress;
animation-duration: 0.65s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes progress {
0% {
left: -50%;
}
100% {
left: 110%;
}
}
</style>