What it is
A small image, initials, or fallback icon that stands for a person or entity, most often at the front of a list row or beside a name. It renders with no Titan-specific decision — every visual property is whatever the underlying element defaults to. Titan has not added a wrapper, an override, or a token to it.Live example
No Storybook story demonstrates this component. The live index at Titan’s own Chromatic deployment has noavatar entry of any kind, and there is no Avatar.stories.js in source —
confirmed by listing components/core/src/components/ in the Titan checkout, where no Avatar
directory exists at all. There is nothing to embed.
Exports
Since Titan adds nothing, the real prop surface is whatever the underlying package defines,
hand-confirmed from the installed package (v7.3.6) type definitions rather than from anything
Titan wrote:
A stacking helper for overlapping avatars — with an overlap and a “+N” overflow chip — is
not exported by this package. Titan’s
index.js exports only bare Avatar. A stacked group
has to be hand-built.Vocabulary
No aliasing dispute exists here the way it does for Table
or Tag — “avatar” is the word code, the
design library, and casual conversation all use for this concept.
Choose Avatar when
- Representing a specific person or entity as a small circular image or initials, most often beside their name in a list row, a comment, or a page header.
- A photo may or may not be available, and a graceful fallback — initials via
children, or a default icon — is acceptable.
Choose something else when
Anatomy
The three fall back in that order: image, then
children, then a default icon. Confirmed by
reading the underlying element’s own source — the default icon is an internal Person SVG built
into the package, not one of Titan’s own Icons.* set. Titan has not swapped it for anything of
its own.
Variants, sizes, and states
Titan applies no theme entry, so everything below is an unthemed default with no Titan decision behind it — hand-confirmed against the installed package (v7.3.6), not emitted from any Titan source.Edge and failure states
Tokens
No Titan token, override, or theme entry exists for Avatar — confirmed by searching the entire theme directory for a theme override entry for this component and finding nothing. Every value below is an unthemed default with no Titan decision behind it, hand-confirmed from the installed package, not from any Titan file.Composition
Sits inline in a row — a list item’s leading slot, a table cell, a comment header, or beside a name in a page header. List’s ownList.overrides.ts themes the list-item-icon slot but has no override entry for a list-item
avatar slot either — so an Avatar placed in a list row’s leading slot renders at the underlying
element’s own spacing, not a value Titan chose.
Content
Avatar carries no visible label copy of its own beyondalt and children:
altshould name the person or entity the image represents — “Photo of Jordan Diaz,” not “avatar” or “user image.”childrenused as an initials fallback should be one or two characters, drawn from the same name asalt.
Accessibility
- No
roleor accessible-name handling is added by Titan — whateveralta caller supplies on the underlying<img>is what a screen reader gets. Nothing in source enforces that one exists. - Unconfirmed: whether the default Person fallback icon is marked
aria-hidden. Since Titan has not touched Avatar at all, this is entirely upstream behavior from the underlying package that this page has not independently verified against the installed version’s rendered DOM. - This component does not decide whether identifying a person by photo or initials is appropriate for the surface it appears in — that is a per-page content and privacy decision.
Constraints
Known issues
Avatar: open issues
Divergences, open decisions, and undocumented gaps for Avatar.
Why it works this way
There is no Titan decision to explain here, and this page says so rather than inventing one. Badge, Card, and List — the other three components in this category with a real Titan source file behind them — each carry a.overrides.ts translating at
least one slot of the underlying element into a theme.vars.tokens[…] value. Avatar has none.
Whether that is a considered decision — avatars are always left at the underlying package’s
defaults across Invoca products — or simply an oversight is not recorded anywhere this session
could find. See
Known issues.
Status
Package@invoca/titan-core, version 3.6.3. Export: Avatar, re-exported unmodified from
the underlying package. There is no dedicated Titan source file, so no independent version
history, deprecation marker, or since field exists for it beyond the package’s own release
notes.
Related
No utilization data exists for Avatar specifically.utilization.md is generated per Titan
component directory in the checkout, and Avatar has none to hold one. Real usage of Avatar
certainly exists across Invoca products — it is a normal export available to every consumer of
the package — but it is not tracked the way every other component in this category is.