StatusIndicator

Animated status label with pulsing text and spinning icon — the heartbeat of your AI interface. Shows what the model is doing right now.

StatusIndicator — All States
Thinking...
Thinking...
StatusIndicator — Lifecycle Simulation
Ready

Cycles: idle → thinking → tool-calling → streaming → idle

StatusIndicator — Custom Labels & Colors
Mulling...Reasoning...Generating...Searching...Rate limited

Import

tsx
import { StatusIndicator } from "@arc-lo/ui";

Basic usage

tsx
<StatusIndicator state="thinking" />
<StatusIndicator state="streaming" />
<StatusIndicator state="tool-calling" />
<StatusIndicator state="idle" />
<StatusIndicator state="error" />

Custom labels and colors

tsx
<StatusIndicator
  state="thinking"
  label="Mulling..."
  color="amber"
/>

<StatusIndicator
  state="thinking"
  label="Searching..."
  color="blue"
  icon={<SearchIcon />}
/>

With response lifecycle

tsx
function ChatStatus({ responseState }) {
  const statusMap = {
    waiting: "idle",
    thinking: "thinking",
    calling_tools: "tool-calling",
    generating: "streaming",
    done: "idle",
    failed: "error",
  };

  return (
    <StatusIndicator state={statusMap[responseState]} />
  );
}

Props

PropTypeDefaultDescription
state"idle" | "thinking" | "streaming" | "tool-calling" | "error""idle"Current AI state
labelstringOverride default label
iconReactNodeCustom icon element
color"purple" | "amber" | "blue" | "red" | "gray"Override color scheme

States

StateDefault labelColorAnimation
idleReadyGrayNone
thinkingThinking...AmberPulse + spin
streamingWriting...PurplePulse + spin
tool-callingUsing tools...BluePulse + spin
errorErrorRedNone