supabase
blockcurrent-user-avatar-vuesource: ok · hit
Current User Avatar
Component which renders the current user's avatar.
npx shadcn add "https://supabase.com/ui/r/current-user-avatar-vue.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · light@supabase/supabase-js@latest
Registry dependencies
avatar
Files3 · source cached 10/14/2026, 3:36:56 PM
registry/default/current-user-avatar/vue/components/current-user-avatar.vue
<script setup lang="ts">
import { computed } from 'vue'
// @ts-ignore
import { useCurrentUserImage } from '@/composables/useCurrentUserImage'
// @ts-ignore
import { useCurrentUserName } from '@/composables/useCurrentUserName'
import Avatar from '@/components/ui/avatar/Avatar.vue'
import AvatarFallback from '@/components/ui/avatar/AvatarFallback.vue'
import AvatarImage from '@/components/ui/avatar/AvatarImage.vue'
const { image: profileImage } = useCurrentUserImage()
const { name } = useCurrentUserName()
const initials = computed(() => {
if (!name.value) return ''
return name.value
.split(' ')
.map(word => word[0])
.join('')
.toUpperCase()
})
</script>
<template>
<Avatar>
<AvatarImage
v-if="profileImage"
:src="profileImage"
:alt="initials"
/>
<AvatarFallback>
{{ initials }}
</AvatarFallback>
</Avatar>
</template>
registry/default/current-user-avatar/vue/composables/useCurrentUserName.ts
import { ref, onMounted } from 'vue'
// @ts-ignore
import { createClient } from '@/lib/supabase/client'
export function useCurrentUserName() {
const name = ref<string | null>(null)
const fetchProfileName = async () => {
const { data, error } = await createClient().auth.getSession()
if (error) {
console.error(error)
return
}
name.value = data.session?.user.user_metadata.full_name ?? '?'
}
onMounted(() => {
fetchProfileName()
})
return {
name,
}
}
registry/default/current-user-avatar/vue/composables/useCurrentUserImage.ts
import { ref, onMounted } from 'vue'
// @ts-ignore
import { createClient } from '@/lib/supabase/client'
export function useCurrentUserImage() {
const image = ref<string | null>(null)
const fetchUserImage = async () => {
const { data, error } = await createClient().auth.getSession()
if (error) {
console.error(error)
return
}
image.value = data.session?.user.user_metadata.avatar_url ?? null
}
onMounted(() => {
fetchUserImage()
})
return {
image,
}
}