Indeterminate
Spinner
Keep the spinner decorative. Apply role="status" to the changing text in a real asynchronous flow.
Design · Feedback
Feedback explains a state and, when useful, the next step. Reserve announcements for changes that happen after page load; static guidance should not interrupt assistive technology.
Notices
A notice pairs a plain-language title with enough context to act. Tone supports the message but never supplies its only meaning. These page-load specimens are deliberately passive and have no live-region role.
Host boundary
Tokenization and checkpoint persistence remain host responsibilities for StoryLM-0.
Validation complete
The compiler tests and MLIR golden checks passed.
Expected rejection
This example is intentionally invalid. A passing check confirms that the compiler rejects the unsupported shape.
Validation failed
The emitted MLIR differs from its source-controlled golden. Review the diff.
toneinfo, success, warning, or error from the state being described—not from visual preference.livepolite only when content updates after an action, or assertive for a time-sensitive failure that requires immediate attention.Empty state
An empty state is not an error by default. Name what is missing and include an action only when there is a useful next step.
Compiler examples
Clear the active phase and operator filters to restore the complete collection.
Progress
Use the native determinate element when total work is measurable. Its visible label states the task, while nearby text exposes the current value without relying on the bar alone.
161 of 237 pages
Loading
A spinner needs adjacent text that names the work. A skeleton previews stable layout, stays hidden from assistive technology, and pairs with an off-screen status message in the live implementation.
Indeterminate
Keep the spinner decorative. Apply role="status" to the changing text in a real asynchronous flow.
Placeholder
Loading compiler examples…
Mirror the expected content geometry without exposing meaningless placeholder lines.
Toast
A toast confirms a non-blocking result. It enters a polite live region after activation, remains dismissible, and returns focus to its trigger when closed. Never use it as the only record of an error or required decision.