Calloutv0.2.3Ready for Production
Contextual highlight block for alerts, tips, and status messages — two variants, seven semantic colors.
Use Callout to surface important messages inline with content — system feedback, warnings, or guidance — without requiring user action. Built on Radix Slot with cva variants so color and emphasis adapt to semantic context out of the box.
This is the Default Callout
This is an Outline Default callout
Installation
npm install @pmi/catalyst-calloutimport { CalloutRoot, CalloutIcon, CalloutText } from '@pmi/catalyst-callout';Variants
Callout comes in two variants: solid uses a high-contrast filled background with inverted text for critical or high-priority messages, while outline uses a subtle bordered container with semantic text color for lower-priority contextual information.
Default
This is the Default Callout
This is an Outline Default callout
Danger
This is a Danger Callout
This is an Outline Danger callout
Info
This is an Info Callout
This is an Outline Info callout
Neutral
This is a Neutral Callout
This is an Outline Neutral callout
Accent
This is the Accent Callout
This is an Outline Accent callout
As Child
Syncing your data — this may take a moment.
Warning
This is a Warning callout
This is an Outline Warning callout
Success
This is a Success callout
This is an Outline Success callout
Custom
New: Dark mode is now available. Visit your account settings to enable it.
API Reference
CalloutRoot
Prop
Type
Extends
React.HTMLAttributes<HTMLDivElement>— supportsrole,aria-live,aria-label, and all standard div attributes.
CalloutIcon
Prop
Type
Extends
React.HTMLAttributes<HTMLDivElement>. Addaria-hidden="true"when the adjacentCalloutTextalready conveys the meaning.
CalloutText
Prop
Type
Extends
React.HTMLAttributes<HTMLParagraphElement>.
Accessibility
Keyboard Interactions
Callout is a static, non-interactive component by default — it has no keyboard interactions of its own. If you place focusable elements (links, buttons) inside CalloutText, standard browser focus behaviour applies.
ARIA
- Color is never the sole indicator — always pair color with an icon, descriptive text, or both.
- Add
role="alert"onCalloutRootfor urgent messages that must be announced immediately by screen readers. - Add
role="status"+aria-live="polite"for non-urgent status updates (e.g. "Changes saved"). - Use
aria-hidden="true"onCalloutIconwhen the adjacentCalloutTextfully conveys the meaning; only providearia-labelwhen the icon carries unique meaning not covered by text. - All color combinations meet WCAG 2.2 AA 4.5:1 contrast ratio for normal text.
See the WCAG 2.2 — Status Messages (4.1.3) and the APG Alert Pattern for inherited behaviour and the Catalyst Accessibility Testing Guide for testing recommendations.
Choosing the Right Component
Use Callout when you need to surface a contextual, inline message that is always visible — no user action required. Reach for a different primitive when:
| If you need… | Use instead |
|---|---|
| A dismissible notification the user can close | Alert |
| A temporary message that auto-dismisses after a timeout | Toast |
| A persistent site-wide announcement bar | Banner |
| A small inline status label next to text or in a table | Badge |
| Contextual help triggered on demand (hover/focus) | Tooltip |
Related
Banner
A non-interactive component for displaying static status information to users. Similar to Alert, but without user actions.
CoachMark
An interactive guided tour component for product onboarding with full custom styling support. Built on react-joyride with customizable tooltips, 13 placement options, and CVA theming capabilities.