28 lines
453 B
Vue
28 lines
453 B
Vue
|
<script setup lang="ts">
|
||
|
|
||
|
import { useImage } from '@vueuse/core'
|
||
|
|
||
|
|
||
|
const props = defineProps<{
|
||
|
src?: string
|
||
|
}>()
|
||
|
|
||
|
|
||
|
const { isLoading } = useImage({ src: props.src })
|
||
|
</script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<template>
|
||
|
<AspectRatio :ratio="16 / 9">
|
||
|
<UIcon v-if="isLoading" name="i-mdi-loading " class="text-4xl animate-spin" />
|
||
|
<img
|
||
|
v-else
|
||
|
:src="src"
|
||
|
alt="Image"
|
||
|
class="rounded-md object-cover h-full w-full"
|
||
|
>
|
||
|
</AspectRatio>
|
||
|
</template>
|