The reveal for text that arrives in pieces
An LLM response typing itself out, extracted into a primitive. It inherits the surrounding typography, animates only through appended text, and keeps a cursor blinking while more is coming. Under reduced motion the typing is skipped and each chunk appears whole.
A simulated stream
Chunks of a few words land every 400ms; the reveal types through each one and the cursor holds between them.
Catching up
The same response delivered three times faster. The reveal widens its steps as the backlog grows, so it stays close behind the stream instead of falling seconds behind it.
Finished text
Text present on mount renders whole, and with streaming off there is no cursor: a settled message costs nothing. Announcement stays the container's job, so pair the component with an aria-live region when the surrounding UI does not already announce the message.