Skip to content

TypingIndicator

TypingIndicator

<ChatList>
{messages.map((m) => <ChatMessage key={m.id} {...m} />)}
{peerTyping ? <TypingIndicator name="Alice" /> : null}
</ChatList>

Install: @helixui/core

import { TypingIndicator } from '@helixui/core'

status: stable · since: 0.3.0

Tags: typing, dots, pill

Anatomy

( ● ● ● ) ← bouncing dots

Layout

  • displayinline-block
  • widthcontent
  • heightcontent
  • intrinsicSize~36×20px pill
  • stackablefalse
  • fullBleedfalse

Visual

A small pill containing three dots that bounce in sequence. Indicates the other participant is composing a message.

Props

NameTypeDefaultDescription
nameReactNodeOptional speaker name rendered to the left of the dots (‘Alice’).

Tokens used

color.bg.action.neutral.default, color.text.secondary, color.text.muted, radius.full, space.2, space.3, font.family.sans, font.size.sm

Accessibility

Role: status

Notes

  • Container is role="status" with aria-live="polite" and an aria-label like “Alice is typing”.
  • Animation respects prefers-reduced-motion.

Composes with

ComponentRelationNote
ChatMessagealternativeRender in place of a ChatMessage when the participant is typing.
StreamingIndicatoralternativeStreamingIndicator is for the streaming token, not “is typing”.
ChatListsibling

Prompt examples

These are the AI prompt → JSX mappings used by the helixui prompt DSL and integrations like Cursor / Claude Code.

show “is typing”

“three-dot typing indicator”

<TypingIndicator />