Skip to content

MazAvatar

MazAvatar is a standalone component that displays an image or an icon with a caption. It can be used to display a user's profile picture, a placeholder image, or an icon.

INFO

Before you have to import the global css files in your project, follow instructions in Getting Started

TIP

This component uses vLazyImg directive

Basic usage

avatar image
vue
<template>
  <MazAvatar src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80" />
</template>

<script lang="ts" setup>
  import MazAvatar from 'maz-ui/components/MazAvatar'
</script>

Options

TIP

See all the options props here

LM
avatar image
avatar image
avatar image
vue
<template>
  <MazAvatar
    caption="Louis Mazel"
    size="1.5rem"
  />
  <MazAvatar
    src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=maz-ui"
    size="2rem"
    href="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=maz-ui"
    target="_blank"
    rounded-size="none"
    clickable
    no-size
  >
    <template #icon>
      <MazIcon name="eye" />
    </template>
  </MazAvatar>
  <MazAvatar
    src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=200"
    size="2.5rem"
    clickable
    rounded-size="xl"
    @click="clicked"
  />
  <MazAvatar
    src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=600"
    size="3rem"
    bordered
  />
</template>

<script lang="ts" setup>
  import MazAvatar from 'maz-ui/components/MazAvatar'
  const clicked = () => { console.log('clicked') }
</script>

On Error

avatar image
html
<MazAvatar @error="error" />

Fallback image loaded on error

avatar image
html
<MazAvatar
  src="https://broken-link-image-src.com"
  fallback-src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=100"
/>

Loading

The props loading has 3 possible values: intersecting, lazy, or eager.

By default, the value is intersecting which means the image will be loaded when it's intersecting with the IntersectionObserver browser API. This mode uses the MazLazyImg component with vLazyImg directive to handle the lazy loading.

Native modes:

  • lazy: The image will be loaded only when it's in the viewport
  • eager: The image will be loaded immediately

These modes are native use an HTMLImageElement with the loading attribute. (see MDN). Useful for SSR (Server Side Rendering) or when you want to load the image immediately.

avatar image
avatar image
avatar image
html
<MazAvatar
  loading="intersecting"
  src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=123"
/>
<MazAvatar
  loading="lazy"
  src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=123"
/>
<MazAvatar
  loading="eager"
  src="https://api.dicebear.com/7.x/big-smile/svg?backgroundColor=1d90ff&scale=80&seed=123"
/>

Props, Event & Slots

Props

Prop nameDescriptionTypeValuesDefault
styleThe style of the componentTSIndexedAccessType-
classThe class of the componentTSIndexedAccessType-
srcThe source of the imageunion-undefined
captionThe caption of the avatarunion-undefined
hrefThe link of the avatarstring-undefined
toThe link (router-link) of the avatarunion-undefined
altThe alt of the imagestring-'avatar image'
targetThe target of the linkstring-'_self'
sizeThe size of the avatarstring-undefined
borderedAdd a border to the avatarboolean-
clickableMake the avatar clickableboolean-
squareMake the avatar squareboolean-
noElevationRemove the shadowboolean-
showCaptionShow the captionboolean-
imageHeightFullMake the image height fullboolean-
noLoaderRemove the loaderboolean-
buttonColorThe color of the clickable buttonColor-'info'
noClickableIconRemove the icon on hover when component is clickableboolean-
letterCountNumber of letters to display in the round textnumber-undefined
roundedSizeSize of the rounded
@values 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'
union-'full'
fallbackSrcThe fallback src to replace the src on loading errorstring-undefined
noPhotoLoad the fallback image by defaultboolean-
loadingThe loading strategy of the image - lazy, eager or intersecting
@default 'intersecting'
@values 'lazy' | 'eager' | 'intersecting'
union-'intersecting'

Events

Event namePropertiesDescription
clickEmitted when the avatar is clicked
errorEmitted when the image is in error
loadedEmitted when the image is loaded
loadingEmitted when the image is loading
intersectingEmitted when the image is intersecting

Slots

NameDescriptionBindings
round-text
icon
caption