UI pattern
Build an animated
AI status row.
Pair a built-in mark or your own logo with clear status copy so people can see whether an agent is sending, thinking, researching, or writing.
No artwork is required: circle, square, spark, and cursor are included. For complete typed recipes and defaults, read the agent implementation guide.
The compact status-row pattern
Use a 20–24 pixel animated mark with short live copy: “Sending…”, “Thinking…”, “Searching the docs…”, or “Writing response…”.
"use client";
import { AgentEmblemThinking, type AgentEmblemState } from "agent-emblem";
export function AgentStatus({ logoSvg, state, text }: {
logoSvg?: string;
state: AgentEmblemState;
text: string;
}) {
return (
<AgentEmblemThinking
preset="circle"
source={logoSvg}
state={state}
text={text}
size={20}
gap={8}
animateVisibility
animateMotion
animateText
label={`Assistant status: ${text}`}
/>
);
}
Model the complete request sequence
1. Sending
Show loading immediately after submission so the interface acknowledges the action.
2. Thinking
Use thinking during reasoning or planning without displaying private reasoning text.
3. Researching
Use researching while tools, retrieval, or external sources are active.
4. Composing
Switch to composing when user-visible answer text begins streaming.
Keep motion accessible
AgentEmblem follows prefers-reduced-motion and pauses automatically. Keep the text visible so the status never depends on motion alone. Give the canvas a short accessible label and use a polite live region for changing copy.
Tune the mark for your interface
Set light and dark colors for contrast in both themes. At small sizes, use a simplified mark and test each particle shape. Secondary ink separates the moving region while keeping the full logo visible.
Where this pattern works
- Chat assistant response rows
- Search and research side panels
- Voice-agent listening and talking states
- Background workflow or task progress