Files
dredgegram/resources/js/components/dredge/Avatar.vue
T
dredgy d8d4ecbe8a
linter / quality (push) Canceled after 0s
tests / ci (8.3) (push) Canceled after 0s
tests / ci (8.4) (push) Canceled after 0s
tests / ci (8.5) (push) Canceled after 0s
Initial Commit
2026-08-28 21:50:26 +10:00

60 lines
1.1 KiB
Vue

<!-- Avatar.vue -->
<script setup lang="ts">
import { proxyImage } from '@/lib/proxyImage';
withDefaults(
defineProps<{
size?: 'sm' | 'md' | 'lg';
src?: string | null;
alt?: string;
}>(),
{
size: 'md',
src: null,
alt: '',
},
);
</script>
<template>
<span class="avatar" :class="`avatar--${size}`">
<img
v-if="src"
:src="proxyImage(src)"
:alt="alt"
class="avatar__img"
referrerpolicy="no-referrer"
loading="lazy"
/>
</span>
</template>
<style scoped>
.avatar {
display: block;
border-radius: 999px;
background: radial-gradient(circle at 35% 30%, #24485a, var(--midwater));
flex-shrink: 0;
overflow: hidden;
position: relative;
}
.avatar__img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.avatar--sm {
width: 1.75rem;
height: 1.75rem;
}
.avatar--md {
width: 2.1rem;
height: 2.1rem;
}
.avatar--lg {
width: 2.75rem;
height: 2.75rem;
}
</style>