What it is
A label that appears when a reader hovers, focuses, or taps the element it describes, and disappears on its own when they move away — no click required to open or close it. Itstitle
accepts plain text or arbitrary React content, which published stories demonstrate up to and
including a full Alert rendered inside one.
Live example
Exports
Hand-confirmed from source — no prop emitter has run for this component yet. The component itself is a typed passthrough with no prop interface of its own beyond the underlying primitive’s.Choose Tooltip when
- The content is a short label or clarification for a specific element, and disappearing the instant the reader moves away is the correct behavior.
- No click or dismissal action should be needed — the reader is looking, not interacting.
Choose something else when
Anatomy
Variants, sizes, and states
No size prop exists — a Tooltip sizes to its content, with nomaxWidth on the base component
(see IconWithTooltip for a sibling composition that does add one). Twelve
placement options, confirmed against source’s own argTypes. Published stories demonstrate
three real content patterns: plain text, rich React content (a bold warning-colored heading plus
body text), and the same rich content inside a wider container to show text-wrapping behavior at
larger widths.
Edge and failure states
- A falsy
title— empty string,undefined,null, orfalse— never renders anything. Stated directly in the component’s ownargTypesdescription, not inferred. - Rich content inside a Tooltip includes styling for a nested
<h4>and a nested Alert, confirmed from the theme override — meaning composing structured content into a Tooltip is an anticipated, styled pattern here, not an unsupported edge case.
Tokens
Hand-confirmed fromTooltip.overrides.ts — no per-component token emitter exists yet for this
concept, so this table is hand-confirmed rather than generated.
A nested
<h4> inside tooltip content is restyled to the canonical caption-bold type scale, and
a nested Alert is forced to full width — both confirmed directly from the override.
Composition
IconWithTooltip is a separate, related export — an icon button pre-wired with a tooltip,
adding its own iconName, iconSize, and tooltipMaxWidth props (default max width: 300px, via
the icon-with-tooltip-max-width token). It is not documented in depth on this page. Notably,
its source imports the underlying tooltip primitive directly rather than this package’s own
Tooltip export — confirmed by reading both files — though since this page’s Tooltip is
itself an unmodified passthrough of that same primitive, the two render identically today.
Content
No copy rules are recorded in source, beyond the falsy-title suppression behavior noted above.Accessibility
- No test in source asserts a specific ARIA role or attribute for Tooltip itself — unconfirmed
at the Titan layer, beyond what the underlying primitive provides by default (typically an
aria-describedbyrelationship to the anchor element). - Nothing in source marks the arrow decoration
aria-hiddenor otherwise excludes it from the accessibility tree — unconfirmed whether it is announced.
Constraints
No falsifiable, source-backed constraint beyond the documented edge cases is recorded for this component.Known issues
Tooltip: open issues
Divergences, open decisions, and undocumented gaps for Tooltip.
Why it works this way
Tooltip carries real, bespoke type tokens instead of reusing a canonical Typography variant. The override’s own comment records that the 0.85rem/1rem ramp is preserved byte-for-byte from a legacy value with no canonical variant matching it exactly — a deliberate compatibility choice, not an oversight.Status
No lifecycle metadata exists. There is no
status, since, deprecated, or
replacedBy field on a Titan component, so this table cannot report when an export arrived or
whether it is on the way out.Related
Hand-confirmed fromutilization.md — no utilization emitter has run for this component yet.
54 usages across 14 applications, the heaviest being interaction-details (11),
ai-model-management (7), and call-review-flow (6) — the highest adoption of any
component in this category.