components / 19

marked avatar

identity stays photographic. the hand belongs around it, behind the fallback, and wherever presence needs saying.

shadcnnpx shadcn@latest add berkantay/cheez/marked-avatar
live

playground

image idle
online
Berkant Aydesigning Cheez in publicsuccess: online
shape
size
character
presence
presence corner
frame
frame ink
<MarkedAvatar
  name="Berkant Ay"
  src="/images/jpeg/me.jpg"
  shape="circle"
  size="xlarge"
  character="rushed"
  frameMark="loose-circle"
  frameColor="#f4f0e6"
  status="online"
  statusPosition="bottom-right"
/>
source

image or fallback

Base UI owns the loading state
loaded image
generated initials
failed image
custom fallback
scale

four deliberate sizes

32 to 84 pixels
smallonline
mediumaway
largebusy
xlargeoffline
perimeter

shape changes the hand

clip and frame move together
circleonline
roundedaway
squarebusy
presence

no generic status dots

shape, color, and spoken label
online
Berkant Ayavailable now
success: online
away
Maya Chenback soon
warning: away
busy
Noah Williamsdo not disturb
error: busy
offline
Ari Okafornot connected
offline
composition

teams and overflow

one accessible group
onlineawaybusyoffline
Cheez maintainers4 shown · 8 more
reference

api

avatar and group
proptypedefaultpurpose
namestringrequiredfallback identity and default image alt
srcstringimage source
altstringnameimage alternative text
fallbackReactNodeinitialscustom fallback content
fallbackDelaynumber0delay before fallback appears
initialsLengthnumber2generated fallback length
fallbackMarkCheezType"spotlight"fallback marker wash
fallbackColorstring"#8f74ff"fallback marker ink
shape"circle" | "rounded" | "square""circle"image clipping and default frame
size"small" | "medium" | "large" | "xlarge""medium"avatar dimensions
frameMarkCheezTypeshape-awareperimeter override
frameColorstring"#f4f0e6"perimeter ink
characterCheezCharacter"rushed"drawing personality
thicknessnumber1pen weight
statusMarkedAvatarStatuspresence glyph
statusPositionfour corners"bottom-right"presence placement
statusMarkCheezTypestatus-awarepresence glyph override
statusColorstringstatus-awarepresence ink override
statusLabelstringstatus nameaccessible presence text
announceStatusbooleantrueinclude hidden presence label
imagePropsAvatarImagePropsresponsive image and loading props
onLoadingStatusChangefunctionidle/loading/loaded/error callback
Group.overflownumber0additional people count
Group.overflowLabelstringN more peopleaccessible overflow name
Group.countMarkCheezType"loose-circle"overflow boundary
Group.labelstring"people"group accessible name

behavior notes

  • Base UI swaps the image and fallback according to real loading status
  • fallback initials are decorative; the full name remains available to assistive technology
  • presence uses a drawn symbol plus hidden text instead of relying on color
  • the avatar itself is not interactive; wrap it in an appropriately labelled button when it opens a menu
  • imageProps supports srcSet, sizes, crossOrigin, referrerPolicy, and native image attributes
  • group overflow is announced as a count while the visible form stays compact