AiAvatarTooltip

ai-interaction

Floating AI assistant indicator with pulsing avatar, glassmorphic chat bubble, typing indicator, message thread, and mini input. Supports idle/active/typing states, controlled/uncontrolled open state, and position anchoring.

Import

typescript
import { AiAvatarTooltip } from "packages/ui/src";

Props

AiAvatarTooltipProps

PropTypeRequired
namestringNo
greetingstringNo
statusAiStatusNo
messagesAiMessage[]No
openbooleanNo
onOpenChange(open: boolean) => void, placeholder?: string, onSend?: (message: string) => void, badge?: string, position?: 'bottom-right' | 'bottom-left'No

Examples

Kaleido-Life Ecosystem

AI Avatar Tooltip

Floating AI assistant indicator with glassmorphic chat bubble, pulsing avatar states, typing indicator, and message thread. Built from the Stitch “Kaleido Ether” design system via the full Research→Design→Tokens→Code pipeline.

Status States

The avatar ring pulses differently for each status: idle (slow, subtle), active (bright, steady), and typing (fast pulse).

Idle
Active
Typing

Chat Bubble with Messages

Pre-populated conversation thread with AI and user messages. Glassmorphic backdrop blur, teal glow, and gold premium badge.

Interactive Demo

Click the avatar to toggle the chat bubble. Try changing the status with the controls below.

Position: Bottom-Left

The component supports “bottom-left” anchoring for layouts where the assistant should appear on the opposite side.

Pipeline Journey

1Brain recommended AI Avatar Tooltip from Kaleido-Life ecosystem
2Stitch generated “Kaleido Ether” design system with glassmorphism
320 DTCG tokens extracted (avatar glow, bubble glass, input states)
4React component built with controlled/uncontrolled states and a11y
5Showcase route deployed to production at cms.chem.dev/ai-avatar

Metadata

Component Metadata
Familyai-interaction
FrameworksNext.js, Astro/EmDash
DescriptionFloating AI assistant indicator with pulsing avatar, glassmorphic chat bubble, typing indicator, message thread, and mini input. Supports idle/active/typing states, controlled/uncontrolled open state, and position anchoring.
PropsAiAvatarTooltipProps (name?: string, greeting?: string, status?: AiStatus, messages?: AiMessage[], open?: boolean, onOpenChange?: (open: boolean) => void, placeholder?: string, onSend?: (message: string) => void, badge?: string, position?: 'bottom-right' | 'bottom-left')
Statesidle-collapsed, active-collapsed, typing-collapsed, idle-expanded, active-expanded, typing-expanded, with-messages, with-badge
A11y
  • Chat bubble has role=dialog with aria-label
  • Trigger has aria-expanded
  • Input has aria-label
  • Close button has aria-label
  • Send button has aria-label
  • Typing indicator has aria-label
Responsive
  • Bubble width 320px on desktop, scales to fit mobile viewports
Motion
  • Avatar glow pulse 3s ease-in-out (idle), 1.2s (typing)
  • Bubble enter animation 250ms ease-out
  • Typing dots bounce 1.4s staggered
Token Dependencies
  • components.aiAvatarTooltip.avatarSize
  • components.aiAvatarTooltip.avatarBackground
  • components.aiAvatarTooltip.avatarGlowColor
  • components.aiAvatarTooltip.avatarGlowActiveColor
  • components.aiAvatarTooltip.avatarIconColor
  • components.aiAvatarTooltip.bubbleBackground
  • components.aiAvatarTooltip.bubbleBorder
  • components.aiAvatarTooltip.bubbleShadow
  • components.aiAvatarTooltip.bubbleBorderRadius
  • components.aiAvatarTooltip.headerTextColor
  • components.aiAvatarTooltip.bodyTextColor
  • components.aiAvatarTooltip.inputBackground
  • components.aiAvatarTooltip.inputBorderColor
  • components.aiAvatarTooltip.inputFocusBorderColor
  • components.aiAvatarTooltip.inputTextColor
  • components.aiAvatarTooltip.inputPlaceholderColor
  • components.aiAvatarTooltip.typingDotColor
  • components.aiAvatarTooltip.goldAccent
  • components.aiAvatarTooltip.closeButtonColor
  • components.aiAvatarTooltip.closeButtonHoverColor
Content Slotsmessages (AiMessage[]), greeting (string)
CMS Bindings
  • AI persona from CMS config
  • Greeting from CMS localization
Test Cases
  • Renders trigger button with aria-expanded=false
  • Opens bubble on trigger click
  • Displays name and greeting in bubble
  • Shows typing indicator when status=typing
  • Renders messages
  • Calls onSend on Enter key
  • Shows gold badge when provided
  • Passes className through