1
0
elk/components/account/AccountAvatar.vue

30 lines
771 B
Vue
Raw Normal View History

<script setup lang="ts">
2023-01-08 15:21:09 +09:00
import type { mastodon } from 'masto'
defineProps<{
2023-01-08 15:21:09 +09:00
account: mastodon.v1.Account
square?: boolean
}>()
const loaded = $ref(false)
const error = $ref(false)
</script>
<template>
2022-11-27 11:35:26 +09:00
<img
2022-11-27 22:12:25 +09:00
:key="account.avatar"
2022-12-31 07:41:07 +09:00
width="400"
height="400"
select-none
:src="(error || !loaded) ? 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' : account.avatar"
2022-12-02 11:18:36 +09:00
:alt="$t('account.avatar_description', [account.username])"
2022-11-27 11:35:26 +09:00
loading="lazy"
class="account-avatar"
:class="(loaded ? 'bg-base' : 'bg-gray:10') + (square ? ' ' : ' rounded-full')"
:style="{ 'clip-path': square ? `url(#avatar-mask)` : 'none' }"
2022-11-27 11:35:26 +09:00
v-bind="$attrs"
@load="loaded = true"
@error="error = true"
2022-11-27 11:35:26 +09:00
>
</template>