added loading for avatar

This commit is contained in:
Mamalizz
2025-02-11 23:25:49 +03:30
parent fccbaefc88
commit 1fd12e4b9e
+30 -14
View File
@@ -1,4 +1,8 @@
<script setup lang="ts">
// imports
import { useImage } from "@vueuse/core";
// types
type Props = {
@@ -8,25 +12,37 @@ type Props = {
// props
defineProps<Props>();
const props = defineProps<Props>();
const { src } = toRefs(props);
// state
const { isLoading } = useImage({ src: src.value });
</script>
<template>
<AvatarRoot
class="inline-flex size-[45px] select-none items-center justify-center rounded-full align-middle"
class="flex-center size-full select-none rounded-full align-middle overflow-hidden"
>
<AvatarImage
class="h-full w-full rounded-full object-cover"
:src="src"
:alt="alt"
<Skeleton
v-if="isLoading"
class="w-full !h-[110%] !rounded-full aspect-square"
/>
<AvatarFallback
class="flex-center size-full text-sm font-medium rounded-full"
:delay-ms="600"
>
<div class="size-full rounded-full flex-center">
<Icon name="ci:profile" size="16" class="**:stroke-black" />
</div>
</AvatarFallback>
<template v-else>
<AvatarImage
class="!size-full rounded-full object-cover"
:src="src"
:alt="alt"
/>
<AvatarFallback
class="flex-center size-full text-sm font-medium rounded-full"
:delay-ms="600"
>
<div class="size-full rounded-full flex-center">
<Icon name="ci:profile" size="16" class="**:stroke-black" />
</div>
</AvatarFallback>
</template>
</AvatarRoot>
</template>