Inline emphasis for things the reader must not miss.
| Prop / event | Type | Notes |
|---|---|---|
| variant | info·success·warning·error | Accent bar, icon and role |
| title / children | string / node | Heading and body copy |
| action | ReactNode | Buttons row under the text |
| onDismiss | () => void | Renders the × and fires on close |
| role | status · alert | alert for errors so AT announces it |
A Callout is inline and persistent. For a transient confirmation that floats and auto-dismisses, use Snackbar; for a one-word status, use Badge.
Match the variant to the meaning: green for good, red for broken.
Don't use error red for a neutral message. Colour is a promise.
Give errors a way out. Pair the message with the fix.
Don't stack callouts. Three at once is noise; consolidate or queue.
A summary error above the fields it refers to.
Guidance in a calm info callout, not an error.
A warning inline with the control it qualifies.
| Token | Value | Role |
|---|---|---|
| --co-pad | 14px 16px | Callout padding |
| --co-bar | 3px left | Accent edge |
| --co-info | #3E63DD | Info bar & icon |
| --co-success | #1FA35C | Success |
| --co-warning | #FFB020 | Warning |
| --co-error | #EB4A4F | Error (role=alert) |
<div class="o-callout o-callout--warning" role="status">
<span class="o-callout__icon"><WarnIcon /></span>
<div class="o-callout__body">
<span class="o-callout__title">Approaching your limit</span>
<span class="o-callout__text">You have used 92% of this month's builds.</span>
</div>
</div>