@zooly/glow-client is a React client package that provides the chat UI and tool rendering for the Glow system. It is framework-agnostic for core logic but integrates with Next.js and uses Tailwind for styling.
@zooly/glow-clientpackages/glow-client| Export | Purpose |
|---|---|
GlowChatClient | Main chat container; renders message queue, input form, avatar |
AvatarChatTop | Avatar and chat name header |
GlowChatInputForm | Input area with send and attachments |
ChatHeader | Header with logo, reset, menu |
GlowChatMessageQueue | Message list with user/assistant parts |
SlideOutComponent | Slide-out panel for tools |
FilePicker | File upload picker |
AudioPlayer | Audio playback |
RecordButton | Audio recording button |
PreCacheImportDialog | Dialog for pre-cache import |
PublicDataDisplay | Renders public message data |
| Export | Purpose |
|---|---|
useGlowChat | Chat hook wrapping useChat; handles API, glowChatId, persistence |
useGlowAI | Access to GlowAIProvider context (sendMsgOnBehalfOfUser, resetToMessage, etc.) |
useGlowChatMsgPart | Current message/part for tool components |
useGlowCommunication | Cross-component communication |
usezoolyStore | Zustand store (currentGlowChatId, etc.) |
| Export | Purpose |
|---|---|
handleClientUpload | Client-side file upload handling |
createClientMsgStateStore | Store for client message state |
applyChatBrandingSettings | Apply branding to chat UI |
fetchzooly, fetchChatBrandingSettings, fetchChatSettings | Fetch chat config |
| Export | Purpose |
|---|---|
GetUserImages | Image picker widget |
GetUserCameraCapture | Camera capture widget |
GetUserVideos | Video picker widget |
GetUserVideoCapture | Video capture widget |
GetUserAudio | Audio picker widget |
GetUserFile | File picker widget |
RateTool | Rating widget |
login-options, LoginFormProvider, enter-email-form, enter-otp-form | Login widgets |
TOOL_REGISTRY maps tool names to React components. Tools include:
@ai-sdk/react - useChatai - AI SDK types@zooly/client - Shared client utilities@zooly/util - Shared utilitiesreact (peer)next (peer)next-intl (peer)zustand (peer)react-h5-audio-player - Audio playbacksonner - Toastsimport { GlowChatClient } from "@zooly/glow-client";
import type { GlowChat } from "@zooly/types";
<GlowChatClient glowChat={glowChat} chatBrandingSettings={branding} />
See App Integration for full integration steps.