Feedback and status

Callout
v0.2.3
Ready 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.

Preview

This is the Default Callout

This is an Outline Default callout

Installation

npm install @pmi/catalyst-callout
import { 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

Preview

This is the Default Callout

This is an Outline Default callout

Danger

Preview

This is a Danger Callout

This is an Outline Danger callout

Info

Preview

This is an Info Callout

This is an Outline Info callout

Neutral

Preview

This is a Neutral Callout

This is an Outline Neutral callout

Accent

Preview

This is the Accent Callout

This is an Outline Accent callout

As Child

Preview

Syncing your data — this may take a moment.

Warning

Preview

This is a Warning callout

This is an Outline Warning callout

Success

Preview

This is a Success callout

This is an Outline Success callout

Custom

Preview

New: Dark mode is now available. Visit your account settings to enable it.

API Reference

CalloutRoot

Prop

Type

Extends React.HTMLAttributes<HTMLDivElement> — supports role, aria-live, aria-label, and all standard div attributes.

CalloutIcon

Prop

Type

Extends React.HTMLAttributes<HTMLDivElement>. Add aria-hidden="true" when the adjacent CalloutText already 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" on CalloutRoot for 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" on CalloutIcon when the adjacent CalloutText fully conveys the meaning; only provide aria-label when 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 closeAlert
A temporary message that auto-dismisses after a timeoutToast
A persistent site-wide announcement barBanner
A small inline status label next to text or in a tableBadge
Contextual help triggered on demand (hover/focus)Tooltip

On this page