← All components
Interaction / component

Bot Avatar

Eighteen expressive companions with full plush fibres, five materials, real pose and accessories across solo, roster and conversation scenes.

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

  • All eighteen source shapes and five materials retain the full shape, simulation, face, fibre and accessory renderers. Omitted primitive shading stays plastic; the Plush signature scene chooses fabric explicitly.
  • Solo, Roster and Conversation are portable complete scenes. Roster contains three active canvases at most, with independent seeds and a native Rest/Wake action. Selector previews are static.
  • Primitive, Complete, Controlled and Advanced source include full materials, helpers, MIT notice, scoped CSS and OFL Geist fonts. Legacy Demo.tsx and primitive imports remain available.
  • Live controls and exported primitive/Complete usage agree, including conditional body color, face ink, tone, fur and held pose. Material switching keeps your current lighting; Plastic night shift applies the original non-fabric lighting defaults.
  • Paused state changes settle to the actual new pose. Reduced motion preserves held pose and native controls. Material jobs are shared through active consumer leases and cancelled after the last requester leaves; frames, idle callbacks, listeners, observers and custom-outline cache retention are bounded.
  • Controlled source owns state and orientation; Advanced source uses an original pillow outline and tuned jump. Conversation computes word counts and Unicode initials locally; no agent service, recording, reference images or paid Studio recipes are bundled.
React 19.2Modern browsers

Libraries.dev — Jakub Antalik · MIT. See bundled notice.

Geist and Geist Mono — Vercel, Inc. · SIL Open Font License 1.1; bundled assets and full notice.

Props

PropTypeDefaultDescription
type"clover" | "flower" | "triangle" | "square" | "blob" | "ghost" | "circle" | "drop" | "star" | "droid" | "mech" | "alien" | "hexagon" | "cat" | "cloud" | "pill" | "pebble" | "puddle""clover"Shape. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
face"eyes" | "mouth""eyes"Face. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
state"default" | "working" | "sleeping""default"State. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
sizenumber64Size. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
colorstringundefined (shape palette)Body color. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
inkstringundefined (automatic contrast)Face ink. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
brightnessnumber1 (fabric uses shape tuning)Brightness. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
saturationnumber1.5 (fabric uses shape tuning)Saturation. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
shading"plastic" | "crisp" | "smooth" | "flat" | "fabric""plastic"Material. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
depthnumber0.65Depth. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
roundnessnumber1Roundness. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
shadownumber0.35 (fabric: 1.15)Shadow. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
highlightnumber1.3 (fabric: 1.45)Highlight. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
lightnumber265 (fabric: 295)Key light. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
rimnumber0.5 (fabric: 0.6)Rim. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
spreadnumber1.55 (fabric: 1.6)Spread. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furLengthnumber1Fur length. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furDensitynumber1.6Fur density. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furFuzznumber0.9Fur fuzz. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furClumpsnumber0.4Fur clumps. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furCurlnumber0.7Fur curl. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
furGravitynumber0.9Fur gravity. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
backLightnumberundefined (opposite studio key)Back light. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
lightFrontnumber32Light front. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
shinenumber0Fibre shine. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
sheennumber0Satin sheen. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
backSoftnessnumber1Back light softness. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
hat"none" | "beret" | "beanie" | "party" | "crown""none"Hat. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
glasses"none" | "round" | "square" | "shades""none"Glasses. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
headphonesbooleanfalseHeadphones. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
bowTiebooleanfalseBow tie. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
accessoryColorstring"#27272b"Accessory color. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
speednumber1Speed. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
turnnumber1Idle turn. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
whirlnumber0Whirl. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
whirlSizenumber1Whirl size. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
whirlWidthnumber1Whirl width. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
whirlLengthnumber1Whirl length. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
whirlTiltnumber1Whirl tilt. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpHeightnumber26Jump height. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpTimenumber0.68Jump time. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpStretchnumber1Jump stretch. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpSpinnumber1Jump turns. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpLeannumber6Jump lean. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpEverynumber8Idle jump interval. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpLandnumber0Landing offset. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpSquashnumber1.15Landing squash. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpSquashTimenumber0.37Squash time. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpSquashEase"sharp" | "pulse" | "soft" | "bouncy""pulse"Squash easing. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpGroundTimenumber0.11Ground time. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpGroundEase"sharp" | "pulse" | "soft" | "bouncy""pulse"Ground easing. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpRiseTimenumber0.33Rise time. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpRiseEase"sharp" | "pulse" | "soft" | "bouncy""pulse"Rise easing. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
jumpClickSquashTimenumber0.24Click squash time. Primitive input. Complete scenes supply live values; full contracts are documented in types.ts.
interactivebooleantrueEnable pointer gaze and keyboard/click reactions.
theme'auto' | 'dark' | 'light''auto'Background-aware material lighting.
seednumberundefined (instance-derived)Optional stable seed in 0–1 for repeatable character movement.
pausedbooleanfalseFreeze decorative motion; content remains usable.
replayTokennumber0Change to restart the effect.
pose{ yaw?: number; pitch?: number; roll?: number }undefinedCaller-owned finite held orientation in radians; preserved under reduced motion.
pathstringundefinedCaller-owned valid SVG outline in the original 100×100 body space; replaces shape and its parts.
classNamestringundefinedAdditional host class.
styleCSSPropertiesundefinedCaller-owned host styling; retain overscan for full motion.