@opencx/widget-core with React primitives.
Installation
WidgetProvider
The root provider that initializes the widget context. All hooks must be used within this provider.Props
| Prop | Type | Required | Description |
|---|---|---|---|
options | WidgetConfig | Yes | Widget configuration object |
children | ReactNode | Yes | Child components |
components | WidgetComponentType[] | No | Custom component overrides |
storage | ExternalStorage | No | Custom storage implementation |
loadingComponent | ReactNode | No | Component shown while initializing |
Hooks
useWidget
Access the raw widget context for advanced use cases.| Property | Type | Description |
|---|---|---|
widgetCtx | WidgetCtx | Core widget context |
config | WidgetConfig | Provider configuration |
version | string | Package version |
useConfig
Access the widget configuration.useMessages
Manage chat messages for the current session.| Property | Type | Description |
|---|---|---|
messagesState.messages | WidgetMessageU[] | Array of messages |
messagesState.isSendingMessage | boolean | Message send in progress |
messagesState.isSendingMessageToAI | boolean | Waiting for AI response |
sendMessage | (input: { content: string; attachments?; customData? }) => Promise<void> | Send a message |
useSessions
Manage chat sessions.| Property | Type | Description |
|---|---|---|
sessionState.session | SessionDto | null | Active session |
sessionState.isCreatingSession | boolean | Session creation in progress |
sessionsState.data | SessionDto[] | All sessions |
openSessions | SessionDto[] | Filtered open sessions |
closedSessions | SessionDto[] | Filtered closed sessions |
canCreateNewSession | boolean | Can create new session |
loadMoreSessions | () => Promise<void> | Load next page of sessions |
resolveSession | () => Promise<{ success: boolean }> | Resolve current session |
createStateCheckpoint | (payload: unknown) => Promise<{ success: boolean }> | Create checkpoint |
See
SessionCtx for state details.useCsat
Handle CSAT prompts and submissions.| Property | Type | Description |
|---|---|---|
isCsatRequested | boolean | CSAT prompt active |
isCsatSubmitted | boolean | CSAT already submitted |
csatRequestedMessage | WidgetSystemMessage__CsatRequested | Request message |
csatSubmittedMessage | WidgetSystemMessage__CsatSubmitted | Submission message |
submittedScore | number | undefined | Submitted score |
submittedFeedback | string | undefined | Submitted feedback |
submitCsat | (opts: { score: number; feedback?: string }) => void | Submit rating |
useIsAwaitingBotReply
Determine if waiting for a bot response.| Property | Type | Description |
|---|---|---|
isAwaitingBotReply | boolean | Waiting for bot response |
useUploadFiles
Handle file uploads with progress tracking.| Property | Type | Description |
|---|---|---|
allFiles | FileWithProgress[] | All tracked files |
appendFiles | (files: File[]) => void | Add files to queue |
handleCancelUpload | (fileId: string) => void | Cancel upload |
successFiles | FileWithProgress[] | Completed uploads |
emptyTheFiles | () => void | Clear all files |
isUploading | boolean | Upload in progress |
hasErrors | boolean | Any upload failed |
useWidgetRouter
Navigate between widget screens.| Property | Type | Description |
|---|---|---|
routerState | RouterState | Current router state |
toSessionsScreen | () => void | Navigate to sessions |
toChatScreen | (sessionId?: string) => void | Navigate to chat |
useWidgetTrigger
Control widget open/close state. RequiresWidgetTriggerProvider.
| Property | Type | Description |
|---|---|---|
isOpen | boolean | Widget open state |
setIsOpen | Dispatch<SetStateAction<boolean>> | Toggle state |
useModes
Access widget conversation modes.| Property | Type | Description |
|---|---|---|
modes | Mode[] | Available modes |
activeModeId | string | undefined | Active mode ID |
activeMode | Mode | undefined | Active mode object |
Component | ComponentType | undefined | Mode component |
useContact
Access current contact information.Additional Resources
- Source code
- npm package
- Default React widget - Reference implementation