← All components
Interaction / component

Plush Companion

An original fabric character with lit fibres, a soft seed silhouette and a restrained greeting.

PLAYGROUND
Live preview
Preparing preview…

Take it with you.

SOURCE ACCESS

Preview freely. Unlock the files.

Enter the shared password to copy the complete source, download every file, and install components in your app.

Access lasts 24 hours. Your preview settings stay with you.

Component notes

  • Original Three.js geometry and deterministic fibre placement; no branded mascot or remote artwork. The default character uses 24,000 short fibres and maximum DPR 1.5.
  • Native click, Enter and Space greet the companion. Caller-owned state selects idle, listening, thinking, celebrating, sleeping, curious, speaking or concerned; visible text retains meaning.
  • Pause, hidden, offscreen and reduced motion stop continuous frames. Replay resets decorative phase and greeting without remounting content. WebGL failure retains a labelled character.
React 19.2Modern browsersWebGL

Chungus UI · Project-authored source; distribution terms remain a release decision.

Props

PropTypeDefaultDescription
speakingIntensitynumber0Local speaking expression intensity, 0–1; no microphone or service access.
action'greet' | 'nod' | 'celebrate'"greet"Action selected for the next actionToken change; changing action alone does not perform it.
actionTokennumber0Caller-owned event token. Each changed value requests one action; mounting never requests an action or invokes onActivate.
state'idle' | 'listening' | 'thinking' | 'celebrating' | 'sleeping' | 'curious' | 'speaking' | 'concerned'"idle"State; accepted ranges and choices are shown in the controls.
colorstring"#e5c8aa"Fur color; accepted ranges and choices are shown in the controls.
sizenumber360Size; accepted ranges and choices are shown in the controls.
speednumber1Speed; accepted ranges and choices are shown in the controls.
seednumber7Seed; accepted ranges and choices are shown in the controls.
interactivebooleantrueInteractive; accepted ranges and choices are shown in the controls.
labelstring"Plush companion"Accessible name; accepted ranges and choices are shown in the controls.
onActivate() => voidundefinedReceives a real greeting activation; no service or audio request is made.
pausedbooleanfalseStops decorative motion while preserving useful content and interaction.
replayTokennumber0Change to restart decorative phase without remounting content; static prints and agent activity retain their state.
classNamestring''Additional scoped host class.