Inline Message
import { InlineMessage } from '@absoluteui/components/inline-message';import '@absoluteui/components/inline-message/style.css';Using Angular? See Inline Message for Angular.
What it does
Section titled “What it does”A compact, one-line status shown next to the content it describes, such as “Saved 2 minutes ago” or “Offline”. InlineMessage renders a tone icon, a visually hidden localized tone prefix (“Warning:”), and the text. Tone is never conveyed by color alone. It is static by default; set live for status that changes while the user works.
When to use
Section titled “When to use”- Short status beside a heading, toolbar, card, or value: save state, connection state, sync state.
- Status that changes while the user works, with live set to ‘polite’.
When not to use
Section titled “When not to use”- Messages that need a title, actions, or dismissal: use Alert.
- Transient confirmations: use Toast.
- Field validation errors: use the field’s own error message or Validation Message.
Examples
Section titled “Examples”Save state next to a document title
Section titled “Save state next to a document title”import { InlineMessage } from '@absoluteui/components/inline-message';
const host = document.createElement('span');document.body.append(host);const status = InlineMessage.create(host, { tone: 'info', message: 'Saving', live: 'polite' });status.update({ tone: 'success', message: 'Saved just now' });Connection state
Section titled “Connection state”import { InlineMessage } from '@absoluteui/components/inline-message';
const host = document.createElement('span');document.body.append(host);const connection = InlineMessage.create(host, { tone: 'success', message: 'Online', live: 'polite' });window.addEventListener('offline', () => { connection.update({ tone: 'warning', message: 'Offline' });});window.addEventListener('online', () => { connection.update({ tone: 'success', message: 'Online' });});import { InlineMessage } from '@absoluteui/components/inline-message';import '@absoluteui/components/inline-message/style.css';
const host = document.querySelector<HTMLElement>('#connection');if (host) { const connection = InlineMessage.create(host, { tone: 'success', message: 'Online', live: 'polite' }); window.addEventListener('offline', () => { connection.update({ tone: 'warning', message: 'Offline' }); });}More usage
Section titled “More usage”import { InlineMessage } from '@absoluteui/components/inline-message';
const host = document.querySelector<HTMLElement>('#save-state');if (host) { const state = InlineMessage.create(host, { tone: 'info', message: 'Saving', live: 'polite' }); state.update({ tone: 'success', message: 'Saved just now' });}Anatomy
Section titled “Anatomy”<span class="aui-inline-message aui-inline-message--{tone}" [role=status|alert]> <span class="aui-inline-message__icon">icon (aria-hidden)</span> <span class="aui-inline-message__tone">Warning: (visually hidden)</span> <span class="aui-inline-message__text">message</span></span>API reference
Section titled “API reference”Factory
Section titled “Factory”InlineMessage.create(host: HTMLElement, options: InlineMessageOptions): InlineMessageGlobal configuration key: inlineMessage (see Configuration).
Options
Section titled “Options”| Option | Type | Default | Description |
|---|---|---|---|
message |
string |
Message text. Required. | |
tone |
'info' | 'success' | 'warning' | 'error' |
"info" |
Tone: icon, colors, and hidden tone prefix. |
live |
'off' | 'polite' | 'assertive' |
"off" |
off: static; polite: role=status; assertive: role=alert. |
icons |
Partial<InlineMessageIcons> |
Icon slot overrides. | |
locale |
string |
"en-US" |
Locale of the tone prefix. Globally configurable. Inherited from common configuration. |
Properties
Section titled “Properties”| Property | Type | Description |
|---|---|---|
host |
HTMLElement |
The host element (receives role and classes). |
message |
string |
Current message. |
options |
Readonly<InlineMessageOptions> |
Current options. |
Methods
Section titled “Methods”| Method | Description |
|---|---|
update(options: Partial<InlineMessageOptions>): void |
Merge and apply options; text changes in place (announced when live). |
destroy(): void |
Remove rendering, role, classes, and subscriptions. |
CSS classes
Section titled “CSS classes”All rules live in the aui.components cascade layer, so application styles override them without specificity battles.
| Class | Purpose |
|---|---|
aui-inline-message |
Host. |
aui-inline-message--info | --success | --warning | --error |
Tone modifiers. |
aui-inline-message__icon |
Tone icon (decorative). |
aui-inline-message__tone |
Visually hidden tone prefix. |
aui-inline-message__text |
Message text. |
Icon slots
Section titled “Icon slots”| Slot | Default icon |
|---|---|
info |
info |
success |
check-circle |
warning |
alert-triangle |
error |
alert-circle |
Design tokens
Section titled “Design tokens”Tokens this stylesheet reads (verified in CI). Override them in a theme or with the Theme Designer.
--aui-border-width | --aui-color-error-fg | --aui-color-error-subtle | --aui-color-info-fg | --aui-color-info-subtle | --aui-color-success-fg | --aui-color-success-subtle | --aui-color-text | --aui-color-warning-fg | --aui-color-warning-subtle | --aui-font-family-sans | --aui-font-size-sm | --aui-icon-size-sm | --aui-line-height-normal | --aui-radius-pill | --aui-space-1 | --aui-space-2
TypeScript definitions
Section titled “TypeScript definitions”type InlineMessageTone = 'info' | 'success' | 'warning' | 'error';type InlineMessageLive = 'off' | 'polite' | 'assertive';interface InlineMessageIcons { info: IconRef; success: IconRef; warning: IconRef; error: IconRef }interface InlineMessageOptions { message: string; tone?: InlineMessageTone; live?: InlineMessageLive; locale?: string; icons?: Partial<InlineMessageIcons>;}Accessibility
Section titled “Accessibility”Pattern: Status message (WCAG 4.1.3): role=status for polite updates, role=alert for urgent ones, plain text when static.
Keyboard
Section titled “Keyboard”| Key | Context | Action |
|---|---|---|
| None | Any | Not focusable; read in document order by assistive technology. |
| Element | Role |
|---|---|
| host | none (live ‘off’), status (live ‘polite’), or alert (live ‘assertive’) |
| icon | none (aria-hidden=true) |
ARIA attributes
Section titled “ARIA attributes”| Attribute | Element | Value |
|---|---|---|
role |
host | status or alert when live is enabled; absent otherwise |
Never receives or moves focus.
WCAG 2.2 success criteria addressed
Section titled “WCAG 2.2 success criteria addressed”| Criterion | Level | Note |
|---|---|---|
| 1.3.1 Info and Relationships | A | |
| 1.4.1 Use of Color | A | |
| 1.4.3 Contrast (Minimum) | AA | |
| 1.4.11 Non-text Contrast | AA | |
| 4.1.3 Status Messages | AA |
Automated test results: Accessibility and compliance.
Notes and known caveats
Section titled “Notes and known caveats”- Tone is conveyed by an icon and a visually hidden, localized prefix such as ‘Error:’, never by color alone.
- Live roles announce only changes made after the region exists; create it with live set, then call update().
- Manual screen-reader verification (NVDA, JAWS, VoiceOver) is pending.
Behavior
Section titled “Behavior”States
Section titled “States”info, success, warning, error; live polite; live assertive.
State transitions
Section titled “State transitions”| From | Trigger | To |
|---|---|---|
| any | update({ tone, message }) |
new tone and text (announced when live) |
| any | destroy() |
host restored to empty |
Accessibility notes
Section titled “Accessibility notes”- Live roles only announce changes made after the live region exists. Create the message with
liveset, then change it withupdate(). - Do not update a live message on every keystroke or timer tick. For example, refresh “Saved 2 minutes ago” without
live, and useliveonly for state changes such as Saving -> Saved. - The e2e axe run (WCAG 2.2 AA, 3 themes) and manual screen-reader verification are pending.
Responsive behavior
Section titled “Responsive behavior”An inline-flex pill, limited to the container width; long text wraps.
Right-to-left
Section titled “Right-to-left”Logical properties: the icon sits at the inline start.
Theming
Section titled “Theming”color-{tone}-subtle background, color-{tone}-fg icon, and color-text text; these pairs are in the contrast gate. Forced-colors mode adds a CanvasText border and icon.
Global configuration
Section titled “Global configuration”Only the inherited locale is configurable:
configureAbsoluteUI({ components: { inlineMessage: { locale: 'de-DE' } } });Component configuration
Section titled “Component configuration”The instance locale overrides global and theme configuration. Configuration changes re-render existing messages.
Timezones
Section titled “Timezones”Not applicable. Relative times such as “Saved 2 minutes ago” are formatted by the consumer.
icons.info (default info), icons.success (check-circle), icons.warning (alert-triangle), icons.error (alert-circle).
Security
Section titled “Security”The message uses textContent; it is never parsed as HTML. CSP-safe.
Data handling
Section titled “Data handling”No persistence, network access, or telemetry.
Performance
Section titled “Performance”Constant work per render: one icon and two text updates.
Supported data scale
Section titled “Supported data scale”Not data-driven.
Edge cases
Section titled “Edge cases”- Changing only
tonere-announces a live message, because the tone prefix is part of the content. - Setting
liveon a message that is already displayed does not announce the existing text.
Errors
Section titled “Errors”| Code | Category | Cause |
|---|---|---|
INLINE_MESSAGE_OPTIONS |
configuration | Missing or blank message, or unknown tone or live value. |
ICON_UNKNOWN |
configuration | Unknown icon override. |
CFG_INVALID_VALUE / CFG_UNKNOWN_OPTION |
configuration | Invalid or unknown configuration. |
Invalid options throw before the host is modified; an invalid update() leaves the previous state intact.
Known limitations
Section titled “Known limitations”- Text only.
- Manual screen-reader verification is pending.
Unsupported scenarios
Section titled “Unsupported scenarios”- HTML or
Nodecontent. - Actions or dismissal: use Alert.