@buni.ai/chatbot-react 1.0.17 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks.d.ts +5 -2
- package/dist/index.esm.js +36 -24
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +36 -24
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/hooks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, { ReactNode } from
|
|
2
|
-
import { BuniChatWidget, BuniChatOptions, CustomerData, SessionVariables } from
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { BuniChatWidget, BuniChatOptions, CustomerData, SessionVariables } from "@buni.ai/chatbot-core";
|
|
3
3
|
interface BuniChatProviderProps {
|
|
4
4
|
options: BuniChatOptions;
|
|
5
5
|
children?: ReactNode;
|
|
@@ -15,6 +15,9 @@ export declare function useBuniChat(options?: BuniChatOptions): {
|
|
|
15
15
|
setCustomerData: (data: CustomerData) => void;
|
|
16
16
|
setSessionVariables: (variables: SessionVariables) => void;
|
|
17
17
|
sendMessage: (message: string) => void;
|
|
18
|
+
setTheme: (theme: "light" | "dark" | "system") => void;
|
|
19
|
+
open: () => void;
|
|
20
|
+
close: () => void;
|
|
18
21
|
widget: BuniChatWidget;
|
|
19
22
|
isOpen: boolean;
|
|
20
23
|
isLoaded: boolean;
|
package/dist/index.esm.js
CHANGED
|
@@ -3,13 +3,13 @@ import { createContext, useState, useEffect, useContext, useCallback } from 'rea
|
|
|
3
3
|
import { BuniChatWidget as BuniChatWidget$1 } from '@buni.ai/chatbot-core';
|
|
4
4
|
|
|
5
5
|
const BuniChatContext = createContext(null);
|
|
6
|
-
const BuniChatProvider = ({ options, children }) => {
|
|
6
|
+
const BuniChatProvider = ({ options, children, }) => {
|
|
7
7
|
const [widget] = useState(() => new BuniChatWidget$1());
|
|
8
8
|
const [state, setState] = useState({
|
|
9
9
|
isOpen: false,
|
|
10
10
|
isLoaded: false,
|
|
11
11
|
isMinimized: false,
|
|
12
|
-
unreadCount: 0
|
|
12
|
+
unreadCount: 0,
|
|
13
13
|
});
|
|
14
14
|
const [isReady, setIsReady] = useState(false);
|
|
15
15
|
useEffect(() => {
|
|
@@ -19,7 +19,7 @@ const BuniChatProvider = ({ options, children }) => {
|
|
|
19
19
|
setIsReady(true);
|
|
20
20
|
}
|
|
21
21
|
catch (error) {
|
|
22
|
-
console.error(
|
|
22
|
+
console.error("Failed to initialize BuniChat widget:", error);
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
initWidget();
|
|
@@ -27,11 +27,11 @@ const BuniChatProvider = ({ options, children }) => {
|
|
|
27
27
|
const handleStateChange = () => {
|
|
28
28
|
setState(widget.getState());
|
|
29
29
|
};
|
|
30
|
-
widget.on(
|
|
31
|
-
widget.on(
|
|
32
|
-
widget.on(
|
|
33
|
-
widget.on(
|
|
34
|
-
widget.on(
|
|
30
|
+
widget.on("ready", handleStateChange);
|
|
31
|
+
widget.on("visibility_changed", handleStateChange);
|
|
32
|
+
widget.on("minimized", handleStateChange);
|
|
33
|
+
widget.on("maximized", handleStateChange);
|
|
34
|
+
widget.on("new_message", handleStateChange);
|
|
35
35
|
return () => {
|
|
36
36
|
widget.destroy();
|
|
37
37
|
};
|
|
@@ -46,7 +46,7 @@ function useBuniChat(options) {
|
|
|
46
46
|
isOpen: false,
|
|
47
47
|
isLoaded: false,
|
|
48
48
|
isMinimized: false,
|
|
49
|
-
unreadCount: 0
|
|
49
|
+
unreadCount: 0,
|
|
50
50
|
});
|
|
51
51
|
const [isReady, setIsReady] = useState(false);
|
|
52
52
|
// Use context widget if available, otherwise use standalone
|
|
@@ -62,18 +62,18 @@ function useBuniChat(options) {
|
|
|
62
62
|
setIsReady(true);
|
|
63
63
|
}
|
|
64
64
|
catch (error) {
|
|
65
|
-
console.error(
|
|
65
|
+
console.error("Failed to initialize BuniChat widget:", error);
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
initWidget();
|
|
69
69
|
const handleStateChange = () => {
|
|
70
70
|
setState(activeWidget.getState());
|
|
71
71
|
};
|
|
72
|
-
activeWidget.on(
|
|
73
|
-
activeWidget.on(
|
|
74
|
-
activeWidget.on(
|
|
75
|
-
activeWidget.on(
|
|
76
|
-
activeWidget.on(
|
|
72
|
+
activeWidget.on("ready", handleStateChange);
|
|
73
|
+
activeWidget.on("visibility_changed", handleStateChange);
|
|
74
|
+
activeWidget.on("minimized", handleStateChange);
|
|
75
|
+
activeWidget.on("maximized", handleStateChange);
|
|
76
|
+
activeWidget.on("new_message", handleStateChange);
|
|
77
77
|
return () => {
|
|
78
78
|
activeWidget.destroy();
|
|
79
79
|
};
|
|
@@ -103,6 +103,15 @@ function useBuniChat(options) {
|
|
|
103
103
|
const sendMessage = useCallback((message) => {
|
|
104
104
|
activeWidget.sendMessage(message);
|
|
105
105
|
}, [activeWidget]);
|
|
106
|
+
const setTheme = useCallback((theme) => {
|
|
107
|
+
activeWidget.setTheme(theme);
|
|
108
|
+
}, [activeWidget]);
|
|
109
|
+
const open = useCallback(() => {
|
|
110
|
+
activeWidget.open();
|
|
111
|
+
}, [activeWidget]);
|
|
112
|
+
const close = useCallback(() => {
|
|
113
|
+
activeWidget.close();
|
|
114
|
+
}, [activeWidget]);
|
|
106
115
|
return {
|
|
107
116
|
// State
|
|
108
117
|
...activeState,
|
|
@@ -116,8 +125,11 @@ function useBuniChat(options) {
|
|
|
116
125
|
setCustomerData,
|
|
117
126
|
setSessionVariables,
|
|
118
127
|
sendMessage,
|
|
128
|
+
setTheme,
|
|
129
|
+
open,
|
|
130
|
+
close,
|
|
119
131
|
// Direct widget access
|
|
120
|
-
widget: activeWidget
|
|
132
|
+
widget: activeWidget,
|
|
121
133
|
};
|
|
122
134
|
}
|
|
123
135
|
// Hook for widget events
|
|
@@ -134,10 +146,10 @@ function useWidgetEvents() {
|
|
|
134
146
|
// Hook for customer data management
|
|
135
147
|
function useCustomerData() {
|
|
136
148
|
const { widget } = useBuniChat();
|
|
137
|
-
const [customerData,
|
|
138
|
-
const
|
|
149
|
+
const [customerData, setCustomerData] = useState(null);
|
|
150
|
+
const updateCustomerData = useCallback((data) => {
|
|
139
151
|
widget === null || widget === void 0 ? void 0 : widget.setCustomerData(data);
|
|
140
|
-
|
|
152
|
+
setCustomerData(data);
|
|
141
153
|
}, [widget]);
|
|
142
154
|
const getCustomerData = useCallback(() => {
|
|
143
155
|
return (widget === null || widget === void 0 ? void 0 : widget.getCustomerData()) || null;
|
|
@@ -145,18 +157,18 @@ function useCustomerData() {
|
|
|
145
157
|
useEffect(() => {
|
|
146
158
|
if (widget) {
|
|
147
159
|
const handleCustomerDataUpdate = (event) => {
|
|
148
|
-
|
|
160
|
+
setCustomerData(event.data);
|
|
149
161
|
};
|
|
150
|
-
widget.on(
|
|
162
|
+
widget.on("customer_data_updated", handleCustomerDataUpdate);
|
|
151
163
|
return () => {
|
|
152
|
-
widget.off(
|
|
164
|
+
widget.off("customer_data_updated", handleCustomerDataUpdate);
|
|
153
165
|
};
|
|
154
166
|
}
|
|
155
167
|
}, [widget]);
|
|
156
168
|
return {
|
|
157
169
|
customerData,
|
|
158
|
-
setCustomerData,
|
|
159
|
-
getCustomerData
|
|
170
|
+
setCustomerData: updateCustomerData,
|
|
171
|
+
getCustomerData,
|
|
160
172
|
};
|
|
161
173
|
}
|
|
162
174
|
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/hooks.tsx","../src/components.tsx"],"sourcesContent":["// @buni.ai/chatbot-react - React hooks and components\n\nimport React, { \n createContext, \n useContext, \n useEffect, \n useState, \n useCallback,\n ReactNode \n} from 'react';\nimport { \n BuniChatWidget, \n BuniChatOptions, \n BuniChatState, \n CustomerData, \n SessionVariables,\n BuniChatConfig\n} from '@buni.ai/chatbot-core';\n\n// Context for providing widget instance\ninterface BuniChatContextType {\n widget: BuniChatWidget | null;\n state: BuniChatState;\n isReady: boolean;\n}\n\nconst BuniChatContext = createContext<BuniChatContextType | null>(null);\n\n// Provider component\ninterface BuniChatProviderProps {\n options: BuniChatOptions;\n children?: ReactNode;\n}\n\nexport const BuniChatProvider: React.FC<BuniChatProviderProps> = ({ \n options, \n children \n}) => {\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0\n });\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n const initWidget = async () => {\n try {\n await widget.initialize({ ...options, framework: \"react\" });\n setIsReady(true);\n } catch (error) {\n console.error('Failed to initialize BuniChat widget:', error);\n }\n };\n\n initWidget();\n\n // Set up event listeners\n const handleStateChange = () => {\n setState(widget.getState());\n };\n\n widget.on('ready', handleStateChange);\n widget.on('visibility_changed', handleStateChange);\n widget.on('minimized', handleStateChange);\n widget.on('maximized', handleStateChange);\n widget.on('new_message', handleStateChange);\n\n return () => {\n widget.destroy();\n };\n }, [widget, options]);\n\n return (\n <BuniChatContext.Provider value={{ widget, state, isReady }}>\n {children}\n </BuniChatContext.Provider>\n );\n};\n\n// Main hook for using BuniChat\nexport function useBuniChat(options?: BuniChatOptions) {\n const context = useContext(BuniChatContext);\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0\n });\n const [isReady, setIsReady] = useState(false);\n\n // Use context widget if available, otherwise use standalone\n const activeWidget = context?.widget || widget;\n const activeState = context?.state || state;\n const activeIsReady = context?.isReady || isReady;\n\n useEffect(() => {\n if (options && !context) {\n // Initialize standalone widget\n const initWidget = async () => {\n try {\n await activeWidget.initialize(options);\n setIsReady(true);\n } catch (error) {\n console.error('Failed to initialize BuniChat widget:', error);\n }\n };\n\n initWidget();\n\n const handleStateChange = () => {\n setState(activeWidget.getState());\n };\n\n activeWidget.on('ready', handleStateChange);\n activeWidget.on('visibility_changed', handleStateChange);\n activeWidget.on('minimized', handleStateChange);\n activeWidget.on('maximized', handleStateChange);\n activeWidget.on('new_message', handleStateChange);\n\n return () => {\n activeWidget.destroy();\n };\n }\n }, [options, context, activeWidget]);\n\n const show = useCallback(() => {\n activeWidget.show();\n }, [activeWidget]);\n\n const hide = useCallback(() => {\n activeWidget.hide();\n }, [activeWidget]);\n\n const toggle = useCallback(() => {\n activeWidget.toggle();\n }, [activeWidget]);\n\n const minimize = useCallback(() => {\n activeWidget.minimize();\n }, [activeWidget]);\n\n const maximize = useCallback(() => {\n activeWidget.maximize();\n }, [activeWidget]);\n\n const setCustomerData = useCallback((data: CustomerData) => {\n activeWidget.setCustomerData(data);\n }, [activeWidget]);\n\n const setSessionVariables = useCallback((variables: SessionVariables) => {\n activeWidget.setSessionVariables(variables);\n }, [activeWidget]);\n\n const sendMessage = useCallback((message: string) => {\n activeWidget.sendMessage(message);\n }, [activeWidget]);\n\n return {\n // State\n ...activeState,\n isReady: activeIsReady,\n \n // Actions\n show,\n hide,\n toggle,\n minimize,\n maximize,\n setCustomerData,\n setSessionVariables,\n sendMessage,\n \n // Direct widget access\n widget: activeWidget\n };\n}\n\n// Hook for widget events\nexport function useWidgetEvents() {\n const { widget } = useBuniChat();\n \n const on = useCallback((event: string, callback: Function) => {\n widget?.on(event, callback);\n }, [widget]);\n \n const off = useCallback((event: string, callback?: Function) => {\n widget?.off(event, callback);\n }, [widget]);\n \n return { on, off };\n}\n\n// Hook for customer data management\nexport function useCustomerData() {\n const { widget } = useBuniChat();\n const [customerData, setCustomerDataState] = useState<CustomerData | null>(null);\n \n const setCustomerData = useCallback((data: CustomerData) => {\n widget?.setCustomerData(data);\n setCustomerDataState(data);\n }, [widget]);\n \n const getCustomerData = useCallback(() => {\n return widget?.getCustomerData() || null;\n }, [widget]);\n \n useEffect(() => {\n if (widget) {\n const handleCustomerDataUpdate = (event: { data: CustomerData }) => {\n setCustomerDataState(event.data);\n };\n \n widget.on('customer_data_updated', handleCustomerDataUpdate);\n \n return () => {\n widget.off('customer_data_updated', handleCustomerDataUpdate);\n };\n }\n }, [widget]);\n \n return {\n customerData,\n setCustomerData,\n getCustomerData\n };\n}\n","// Components for @buni.ai/chatbot-react\n\nimport React, { ReactNode, useEffect } from \"react\";\nimport { useBuniChat } from \"./hooks\";\nimport { BuniChatConfig } from \"@buni.ai/chatbot-core\";\n\n// Widget component - can be used standalone or within provider\ninterface BuniChatWidgetProps {\n token?: string;\n className?: string;\n style?: React.CSSProperties;\n config?: BuniChatConfig;\n}\n\nexport const BuniChatWidget: React.FC<BuniChatWidgetProps> = ({\n token,\n config,\n}) => {\n // Use the hook - if there's a provider, it uses that; otherwise standalone\n const options = token ? { token, config } : undefined;\n useBuniChat(options);\n\n // The core widget renders directly to document.body\n return null;\n};\n\n// Chat button component\ninterface BuniChatButtonProps {\n onClick?: () => void;\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n showUnreadCount?: boolean;\n}\n\nexport const BuniChatButton: React.FC<BuniChatButtonProps> = ({\n onClick,\n children = \"Chat with us\",\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={className}\n style={style}\n >\n {children}\n {showUnreadCount && unreadCount > 0 && (\n <span className=\"buni-chat-badge\">{unreadCount}</span>\n )}\n </button>\n );\n};\n\n// Floating button component\ninterface BuniChatFloatingButtonProps\n extends Omit<BuniChatButtonProps, \"children\"> {\n position?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n size?: \"small\" | \"medium\" | \"large\";\n theme?: \"default\" | \"minimal\" | \"colorful\";\n}\n\nexport const BuniChatFloatingButton: React.FC<BuniChatFloatingButtonProps> = ({\n position = \"bottom-right\",\n size = \"medium\",\n theme = \"default\",\n onClick,\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n const positionStyles = {\n \"bottom-right\": { bottom: \"20px\", right: \"20px\" },\n \"bottom-left\": { bottom: \"20px\", left: \"20px\" },\n \"top-right\": { top: \"20px\", right: \"20px\" },\n \"top-left\": { top: \"20px\", left: \"20px\" },\n };\n\n const sizeStyles = {\n small: { width: \"48px\", height: \"48px\", fontSize: \"20px\" },\n medium: { width: \"56px\", height: \"56px\", fontSize: \"24px\" },\n large: { width: \"64px\", height: \"64px\", fontSize: \"28px\" },\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={`buni-chat-floating-button ${theme} ${className}`}\n style={{\n position: \"fixed\",\n ...positionStyles[position],\n ...sizeStyles[size],\n borderRadius: \"50%\",\n border: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n zIndex: 9999,\n ...style,\n }}\n >\n 💬\n {showUnreadCount && unreadCount > 0 && (\n <span\n className=\"buni-chat-badge\"\n style={{\n position: \"absolute\",\n top: \"-5px\",\n right: \"-5px\",\n background: \"red\",\n color: \"white\",\n borderRadius: \"50%\",\n padding: \"2px 6px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }}\n >\n {unreadCount}\n </span>\n )}\n </button>\n );\n};\n"],"names":["BuniChatWidget","_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/hooks.tsx","../src/components.tsx"],"sourcesContent":["// @buni.ai/chatbot-react - React hooks and components\n\nimport React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n ReactNode,\n} from \"react\";\nimport {\n BuniChatWidget,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n BuniChatConfig,\n} from \"@buni.ai/chatbot-core\";\n\n// Context for providing widget instance\ninterface BuniChatContextType {\n widget: BuniChatWidget | null;\n state: BuniChatState;\n isReady: boolean;\n}\n\nconst BuniChatContext = createContext<BuniChatContextType | null>(null);\n\n// Provider component\ninterface BuniChatProviderProps {\n options: BuniChatOptions;\n children?: ReactNode;\n}\n\nexport const BuniChatProvider: React.FC<BuniChatProviderProps> = ({\n options,\n children,\n}) => {\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n });\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n const initWidget = async () => {\n try {\n await widget.initialize({ ...options, framework: \"react\" });\n setIsReady(true);\n } catch (error) {\n console.error(\"Failed to initialize BuniChat widget:\", error);\n }\n };\n\n initWidget();\n\n // Set up event listeners\n const handleStateChange = () => {\n setState(widget.getState());\n };\n\n widget.on(\"ready\", handleStateChange);\n widget.on(\"visibility_changed\", handleStateChange);\n widget.on(\"minimized\", handleStateChange);\n widget.on(\"maximized\", handleStateChange);\n widget.on(\"new_message\", handleStateChange);\n\n return () => {\n widget.destroy();\n };\n }, [widget, options]);\n\n return (\n <BuniChatContext.Provider value={{ widget, state, isReady }}>\n {children}\n </BuniChatContext.Provider>\n );\n};\n\n// Main hook for using BuniChat\nexport function useBuniChat(options?: BuniChatOptions) {\n const context = useContext(BuniChatContext);\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n });\n const [isReady, setIsReady] = useState(false);\n\n // Use context widget if available, otherwise use standalone\n const activeWidget = context?.widget || widget;\n const activeState = context?.state || state;\n const activeIsReady = context?.isReady || isReady;\n\n useEffect(() => {\n if (options && !context) {\n // Initialize standalone widget\n const initWidget = async () => {\n try {\n await activeWidget.initialize(options);\n setIsReady(true);\n } catch (error) {\n console.error(\"Failed to initialize BuniChat widget:\", error);\n }\n };\n\n initWidget();\n\n const handleStateChange = () => {\n setState(activeWidget.getState());\n };\n\n activeWidget.on(\"ready\", handleStateChange);\n activeWidget.on(\"visibility_changed\", handleStateChange);\n activeWidget.on(\"minimized\", handleStateChange);\n activeWidget.on(\"maximized\", handleStateChange);\n activeWidget.on(\"new_message\", handleStateChange);\n\n return () => {\n activeWidget.destroy();\n };\n }\n }, [options, context, activeWidget]);\n\n const show = useCallback(() => {\n activeWidget.show();\n }, [activeWidget]);\n\n const hide = useCallback(() => {\n activeWidget.hide();\n }, [activeWidget]);\n\n const toggle = useCallback(() => {\n activeWidget.toggle();\n }, [activeWidget]);\n\n const minimize = useCallback(() => {\n activeWidget.minimize();\n }, [activeWidget]);\n\n const maximize = useCallback(() => {\n activeWidget.maximize();\n }, [activeWidget]);\n\n const setCustomerData = useCallback(\n (data: CustomerData) => {\n activeWidget.setCustomerData(data);\n },\n [activeWidget],\n );\n\n const setSessionVariables = useCallback(\n (variables: SessionVariables) => {\n activeWidget.setSessionVariables(variables);\n },\n [activeWidget],\n );\n\n const sendMessage = useCallback(\n (message: string) => {\n activeWidget.sendMessage(message);\n },\n [activeWidget],\n );\n\n const setTheme = useCallback(\n (theme: \"light\" | \"dark\" | \"system\") => {\n activeWidget.setTheme(theme);\n },\n [activeWidget],\n );\n\n const open = useCallback(() => {\n activeWidget.open();\n }, [activeWidget]);\n\n const close = useCallback(() => {\n activeWidget.close();\n }, [activeWidget]);\n\n return {\n // State\n ...activeState,\n isReady: activeIsReady,\n\n // Actions\n show,\n hide,\n toggle,\n minimize,\n maximize,\n setCustomerData,\n setSessionVariables,\n sendMessage,\n setTheme,\n open,\n close,\n\n // Direct widget access\n widget: activeWidget,\n };\n}\n\n// Hook for widget events\nexport function useWidgetEvents() {\n const { widget } = useBuniChat();\n\n const on = useCallback(\n (event: string, callback: Function) => {\n widget?.on(event, callback);\n },\n [widget],\n );\n\n const off = useCallback(\n (event: string, callback?: Function) => {\n widget?.off(event, callback);\n },\n [widget],\n );\n\n return { on, off };\n}\n\n// Hook for customer data management\nexport function useCustomerData() {\n const { widget } = useBuniChat();\n const [customerData, setCustomerData] = useState<CustomerData | null>(\n null,\n );\n\n const updateCustomerData = useCallback(\n (data: CustomerData) => {\n widget?.setCustomerData(data);\n setCustomerData(data);\n },\n [widget],\n );\n\n const getCustomerData = useCallback(() => {\n return widget?.getCustomerData() || null;\n }, [widget]);\n\n useEffect(() => {\n if (widget) {\n const handleCustomerDataUpdate = (event: { data: CustomerData }) => {\n setCustomerData(event.data);\n };\n\n widget.on(\"customer_data_updated\", handleCustomerDataUpdate);\n\n return () => {\n widget.off(\"customer_data_updated\", handleCustomerDataUpdate);\n };\n }\n }, [widget]);\n\n return {\n customerData,\n setCustomerData: updateCustomerData,\n getCustomerData,\n };\n}\n","// Components for @buni.ai/chatbot-react\n\nimport React, { ReactNode, useEffect } from \"react\";\nimport { useBuniChat } from \"./hooks\";\nimport { BuniChatConfig } from \"@buni.ai/chatbot-core\";\n\n// Widget component - can be used standalone or within provider\ninterface BuniChatWidgetProps {\n token?: string;\n className?: string;\n style?: React.CSSProperties;\n config?: BuniChatConfig;\n}\n\nexport const BuniChatWidget: React.FC<BuniChatWidgetProps> = ({\n token,\n config,\n}) => {\n // Use the hook - if there's a provider, it uses that; otherwise standalone\n const options = token ? { token, config } : undefined;\n useBuniChat(options);\n\n // The core widget renders directly to document.body\n return null;\n};\n\n// Chat button component\ninterface BuniChatButtonProps {\n onClick?: () => void;\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n showUnreadCount?: boolean;\n}\n\nexport const BuniChatButton: React.FC<BuniChatButtonProps> = ({\n onClick,\n children = \"Chat with us\",\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={className}\n style={style}\n >\n {children}\n {showUnreadCount && unreadCount > 0 && (\n <span className=\"buni-chat-badge\">{unreadCount}</span>\n )}\n </button>\n );\n};\n\n// Floating button component\ninterface BuniChatFloatingButtonProps\n extends Omit<BuniChatButtonProps, \"children\"> {\n position?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n size?: \"small\" | \"medium\" | \"large\";\n theme?: \"default\" | \"minimal\" | \"colorful\";\n}\n\nexport const BuniChatFloatingButton: React.FC<BuniChatFloatingButtonProps> = ({\n position = \"bottom-right\",\n size = \"medium\",\n theme = \"default\",\n onClick,\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n const positionStyles = {\n \"bottom-right\": { bottom: \"20px\", right: \"20px\" },\n \"bottom-left\": { bottom: \"20px\", left: \"20px\" },\n \"top-right\": { top: \"20px\", right: \"20px\" },\n \"top-left\": { top: \"20px\", left: \"20px\" },\n };\n\n const sizeStyles = {\n small: { width: \"48px\", height: \"48px\", fontSize: \"20px\" },\n medium: { width: \"56px\", height: \"56px\", fontSize: \"24px\" },\n large: { width: \"64px\", height: \"64px\", fontSize: \"28px\" },\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={`buni-chat-floating-button ${theme} ${className}`}\n style={{\n position: \"fixed\",\n ...positionStyles[position],\n ...sizeStyles[size],\n borderRadius: \"50%\",\n border: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n zIndex: 9999,\n ...style,\n }}\n >\n 💬\n {showUnreadCount && unreadCount > 0 && (\n <span\n className=\"buni-chat-badge\"\n style={{\n position: \"absolute\",\n top: \"-5px\",\n right: \"-5px\",\n background: \"red\",\n color: \"white\",\n borderRadius: \"50%\",\n padding: \"2px 6px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }}\n >\n {unreadCount}\n </span>\n )}\n </button>\n );\n};\n"],"names":["BuniChatWidget","_jsx","_jsxs"],"mappings":";;;;AA0BA,MAAM,eAAe,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAQ3D,MAAA,gBAAgB,GAAoC,CAAC,EAChE,OAAO,EACP,QAAQ,GACT,KAAI;AACH,IAAA,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAIA,gBAAc,EAAE,CAAC,CAAC;AACtD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB;AAChD,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,CAAC;AACf,KAAA,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,UAAU,GAAG,YAAW;AAC5B,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,CAAC;aAClB;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;aAC/D;AACH,SAAC,CAAC;AAEF,QAAA,UAAU,EAAE,CAAC;;QAGb,MAAM,iBAAiB,GAAG,MAAK;AAC7B,YAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,SAAC,CAAC;AAEF,QAAA,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACtC,QAAA,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;AACnD,QAAA,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC1C,QAAA,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC1C,QAAA,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAE5C,QAAA,OAAO,MAAK;YACV,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtB,IAAA,QACEC,GAAC,CAAA,eAAe,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YACxD,QAAQ,EAAA,CACgB,EAC3B;AACJ,EAAE;AAEF;AACM,SAAU,WAAW,CAAC,OAAyB,EAAA;AACnD,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC5C,IAAA,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAID,gBAAc,EAAE,CAAC,CAAC;AACtD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB;AAChD,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,CAAC;AACf,KAAA,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAG9C,IAAA,MAAM,YAAY,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,MAAM,KAAI,MAAM,CAAC;AAC/C,IAAA,MAAM,WAAW,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,KAAI,KAAK,CAAC;AAC5C,IAAA,MAAM,aAAa,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC;IAElD,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB,YAAA,MAAM,UAAU,GAAG,YAAW;AAC5B,gBAAA,IAAI;AACF,oBAAA,MAAM,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACvC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAClB;gBAAC,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;iBAC/D;AACH,aAAC,CAAC;AAEF,YAAA,UAAU,EAAE,CAAC;YAEb,MAAM,iBAAiB,GAAG,MAAK;AAC7B,gBAAA,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,aAAC,CAAC;AAEF,YAAA,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC5C,YAAA,YAAY,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;AACzD,YAAA,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAChD,YAAA,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAChD,YAAA,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAElD,YAAA,OAAO,MAAK;gBACV,YAAY,CAAC,OAAO,EAAE,CAAC;AACzB,aAAC,CAAC;SACH;KACF,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AAErC,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAK;QAC5B,YAAY,CAAC,IAAI,EAAE,CAAC;AACtB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAK;QAC5B,YAAY,CAAC,IAAI,EAAE,CAAC;AACtB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,MAAK;QAC9B,YAAY,CAAC,MAAM,EAAE,CAAC;AACxB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;QAChC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1B,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;QAChC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1B,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAAkB,KAAI;AACrB,QAAA,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,KAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;AAEF,IAAA,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,SAA2B,KAAI;AAC9B,QAAA,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC9C,KAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,OAAe,KAAI;AAClB,QAAA,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpC,KAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,KAAkC,KAAI;AACrC,QAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;AAEF,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAK;QAC5B,YAAY,CAAC,IAAI,EAAE,CAAC;AACtB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,MAAK;QAC7B,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO;;AAEL,QAAA,GAAG,WAAW;AACd,QAAA,OAAO,EAAE,aAAa;;QAGtB,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,mBAAmB;QACnB,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,KAAK;;AAGL,QAAA,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED;SACgB,eAAe,GAAA;AAC7B,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEjC,MAAM,EAAE,GAAG,WAAW,CACpB,CAAC,KAAa,EAAE,QAAkB,KAAI;QACpC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9B,KAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,KAAa,EAAE,QAAmB,KAAI;QACrC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/B,KAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;AAEF,IAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAED;SACgB,eAAe,GAAA;AAC7B,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACjC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,IAAI,CACL,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,IAAkB,KAAI;QACrB,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;AACxB,KAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAK;QACvC,OAAO,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,eAAe,EAAE,KAAI,IAAI,CAAC;AAC3C,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,MAAK;QACb,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,wBAAwB,GAAG,CAAC,KAA6B,KAAI;AACjE,gBAAA,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAC,CAAC;AAEF,YAAA,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;AAE7D,YAAA,OAAO,MAAK;AACV,gBAAA,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;AAChE,aAAC,CAAC;SACH;AACH,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO;QACL,YAAY;AACZ,QAAA,eAAe,EAAE,kBAAkB;QACnC,eAAe;KAChB,CAAC;AACJ;;AC7Pa,MAAA,cAAc,GAAkC,CAAC,EAC5D,KAAK,EACL,MAAM,GACP,KAAI;;AAEH,IAAA,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtD,WAAW,CAAC,OAAO,CAAC,CAAC;;AAGrB,IAAA,OAAO,IAAI,CAAC;AACd,EAAE;AAYK,MAAM,cAAc,GAAkC,CAAC,EAC5D,OAAO,EACP,QAAQ,GAAG,cAAc,EACzB,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,KAAK,EAChB,eAAe,GAAG,IAAI,GACvB,KAAI;IACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;IAE9C,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;SACX;aAAM;AACL,YAAA,MAAM,EAAE,CAAC;SACV;AACH,KAAC,CAAC;AAEF,IAAA,QACEE,IACE,CAAA,QAAA,EAAA,EAAA,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAEX,QAAQ,EACR,eAAe,IAAI,WAAW,GAAG,CAAC,KACjCD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iBAAiB,EAAE,QAAA,EAAA,WAAW,GAAQ,CACvD,CAAA,EAAA,CACM,EACT;AACJ,EAAE;AAUW,MAAA,sBAAsB,GAA0C,CAAC,EAC5E,QAAQ,GAAG,cAAc,EACzB,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,SAAS,EACjB,OAAO,EACP,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,KAAK,EAChB,eAAe,GAAG,IAAI,GACvB,KAAI;IACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;IAE9C,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;SACX;aAAM;AACL,YAAA,MAAM,EAAE,CAAC;SACV;AACH,KAAC,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG;QACrB,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QACjD,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAC/C,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC3C,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;KAC1C,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC1D,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC3D,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC3D,CAAC;AAEF,IAAA,QACEC,IACE,CAAA,QAAA,EAAA,EAAA,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,6BAA6B,KAAK,CAAA,CAAA,EAAI,SAAS,CAAE,CAAA,EAC5D,KAAK,EAAE;AACL,YAAA,QAAQ,EAAE,OAAO;YACjB,GAAG,cAAc,CAAC,QAAQ,CAAC;YAC3B,GAAG,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS;YAC5C,OAAO,EAAE,QAAQ,GAAG,GAAG,GAAG,CAAC;AAC3B,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,GAAG,KAAK;AACT,SAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAGA,eAAe,IAAI,WAAW,GAAG,CAAC,KACjCD,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAC,iBAAiB,EAC3B,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,EAAA,QAAA,EAEA,WAAW,EAAA,CACP,CACR,CAAA,EAAA,CACM,EACT;AACJ;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -5,13 +5,13 @@ var react = require('react');
|
|
|
5
5
|
var chatbotCore = require('@buni.ai/chatbot-core');
|
|
6
6
|
|
|
7
7
|
const BuniChatContext = react.createContext(null);
|
|
8
|
-
const BuniChatProvider = ({ options, children }) => {
|
|
8
|
+
const BuniChatProvider = ({ options, children, }) => {
|
|
9
9
|
const [widget] = react.useState(() => new chatbotCore.BuniChatWidget());
|
|
10
10
|
const [state, setState] = react.useState({
|
|
11
11
|
isOpen: false,
|
|
12
12
|
isLoaded: false,
|
|
13
13
|
isMinimized: false,
|
|
14
|
-
unreadCount: 0
|
|
14
|
+
unreadCount: 0,
|
|
15
15
|
});
|
|
16
16
|
const [isReady, setIsReady] = react.useState(false);
|
|
17
17
|
react.useEffect(() => {
|
|
@@ -21,7 +21,7 @@ const BuniChatProvider = ({ options, children }) => {
|
|
|
21
21
|
setIsReady(true);
|
|
22
22
|
}
|
|
23
23
|
catch (error) {
|
|
24
|
-
console.error(
|
|
24
|
+
console.error("Failed to initialize BuniChat widget:", error);
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
initWidget();
|
|
@@ -29,11 +29,11 @@ const BuniChatProvider = ({ options, children }) => {
|
|
|
29
29
|
const handleStateChange = () => {
|
|
30
30
|
setState(widget.getState());
|
|
31
31
|
};
|
|
32
|
-
widget.on(
|
|
33
|
-
widget.on(
|
|
34
|
-
widget.on(
|
|
35
|
-
widget.on(
|
|
36
|
-
widget.on(
|
|
32
|
+
widget.on("ready", handleStateChange);
|
|
33
|
+
widget.on("visibility_changed", handleStateChange);
|
|
34
|
+
widget.on("minimized", handleStateChange);
|
|
35
|
+
widget.on("maximized", handleStateChange);
|
|
36
|
+
widget.on("new_message", handleStateChange);
|
|
37
37
|
return () => {
|
|
38
38
|
widget.destroy();
|
|
39
39
|
};
|
|
@@ -48,7 +48,7 @@ function useBuniChat(options) {
|
|
|
48
48
|
isOpen: false,
|
|
49
49
|
isLoaded: false,
|
|
50
50
|
isMinimized: false,
|
|
51
|
-
unreadCount: 0
|
|
51
|
+
unreadCount: 0,
|
|
52
52
|
});
|
|
53
53
|
const [isReady, setIsReady] = react.useState(false);
|
|
54
54
|
// Use context widget if available, otherwise use standalone
|
|
@@ -64,18 +64,18 @@ function useBuniChat(options) {
|
|
|
64
64
|
setIsReady(true);
|
|
65
65
|
}
|
|
66
66
|
catch (error) {
|
|
67
|
-
console.error(
|
|
67
|
+
console.error("Failed to initialize BuniChat widget:", error);
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
initWidget();
|
|
71
71
|
const handleStateChange = () => {
|
|
72
72
|
setState(activeWidget.getState());
|
|
73
73
|
};
|
|
74
|
-
activeWidget.on(
|
|
75
|
-
activeWidget.on(
|
|
76
|
-
activeWidget.on(
|
|
77
|
-
activeWidget.on(
|
|
78
|
-
activeWidget.on(
|
|
74
|
+
activeWidget.on("ready", handleStateChange);
|
|
75
|
+
activeWidget.on("visibility_changed", handleStateChange);
|
|
76
|
+
activeWidget.on("minimized", handleStateChange);
|
|
77
|
+
activeWidget.on("maximized", handleStateChange);
|
|
78
|
+
activeWidget.on("new_message", handleStateChange);
|
|
79
79
|
return () => {
|
|
80
80
|
activeWidget.destroy();
|
|
81
81
|
};
|
|
@@ -105,6 +105,15 @@ function useBuniChat(options) {
|
|
|
105
105
|
const sendMessage = react.useCallback((message) => {
|
|
106
106
|
activeWidget.sendMessage(message);
|
|
107
107
|
}, [activeWidget]);
|
|
108
|
+
const setTheme = react.useCallback((theme) => {
|
|
109
|
+
activeWidget.setTheme(theme);
|
|
110
|
+
}, [activeWidget]);
|
|
111
|
+
const open = react.useCallback(() => {
|
|
112
|
+
activeWidget.open();
|
|
113
|
+
}, [activeWidget]);
|
|
114
|
+
const close = react.useCallback(() => {
|
|
115
|
+
activeWidget.close();
|
|
116
|
+
}, [activeWidget]);
|
|
108
117
|
return {
|
|
109
118
|
// State
|
|
110
119
|
...activeState,
|
|
@@ -118,8 +127,11 @@ function useBuniChat(options) {
|
|
|
118
127
|
setCustomerData,
|
|
119
128
|
setSessionVariables,
|
|
120
129
|
sendMessage,
|
|
130
|
+
setTheme,
|
|
131
|
+
open,
|
|
132
|
+
close,
|
|
121
133
|
// Direct widget access
|
|
122
|
-
widget: activeWidget
|
|
134
|
+
widget: activeWidget,
|
|
123
135
|
};
|
|
124
136
|
}
|
|
125
137
|
// Hook for widget events
|
|
@@ -136,10 +148,10 @@ function useWidgetEvents() {
|
|
|
136
148
|
// Hook for customer data management
|
|
137
149
|
function useCustomerData() {
|
|
138
150
|
const { widget } = useBuniChat();
|
|
139
|
-
const [customerData,
|
|
140
|
-
const
|
|
151
|
+
const [customerData, setCustomerData] = react.useState(null);
|
|
152
|
+
const updateCustomerData = react.useCallback((data) => {
|
|
141
153
|
widget === null || widget === void 0 ? void 0 : widget.setCustomerData(data);
|
|
142
|
-
|
|
154
|
+
setCustomerData(data);
|
|
143
155
|
}, [widget]);
|
|
144
156
|
const getCustomerData = react.useCallback(() => {
|
|
145
157
|
return (widget === null || widget === void 0 ? void 0 : widget.getCustomerData()) || null;
|
|
@@ -147,18 +159,18 @@ function useCustomerData() {
|
|
|
147
159
|
react.useEffect(() => {
|
|
148
160
|
if (widget) {
|
|
149
161
|
const handleCustomerDataUpdate = (event) => {
|
|
150
|
-
|
|
162
|
+
setCustomerData(event.data);
|
|
151
163
|
};
|
|
152
|
-
widget.on(
|
|
164
|
+
widget.on("customer_data_updated", handleCustomerDataUpdate);
|
|
153
165
|
return () => {
|
|
154
|
-
widget.off(
|
|
166
|
+
widget.off("customer_data_updated", handleCustomerDataUpdate);
|
|
155
167
|
};
|
|
156
168
|
}
|
|
157
169
|
}, [widget]);
|
|
158
170
|
return {
|
|
159
171
|
customerData,
|
|
160
|
-
setCustomerData,
|
|
161
|
-
getCustomerData
|
|
172
|
+
setCustomerData: updateCustomerData,
|
|
173
|
+
getCustomerData,
|
|
162
174
|
};
|
|
163
175
|
}
|
|
164
176
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/hooks.tsx","../src/components.tsx"],"sourcesContent":["// @buni.ai/chatbot-react - React hooks and components\n\nimport React, { \n createContext, \n useContext, \n useEffect, \n useState, \n useCallback,\n ReactNode \n} from 'react';\nimport { \n BuniChatWidget, \n BuniChatOptions, \n BuniChatState, \n CustomerData, \n SessionVariables,\n BuniChatConfig\n} from '@buni.ai/chatbot-core';\n\n// Context for providing widget instance\ninterface BuniChatContextType {\n widget: BuniChatWidget | null;\n state: BuniChatState;\n isReady: boolean;\n}\n\nconst BuniChatContext = createContext<BuniChatContextType | null>(null);\n\n// Provider component\ninterface BuniChatProviderProps {\n options: BuniChatOptions;\n children?: ReactNode;\n}\n\nexport const BuniChatProvider: React.FC<BuniChatProviderProps> = ({ \n options, \n children \n}) => {\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0\n });\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n const initWidget = async () => {\n try {\n await widget.initialize({ ...options, framework: \"react\" });\n setIsReady(true);\n } catch (error) {\n console.error('Failed to initialize BuniChat widget:', error);\n }\n };\n\n initWidget();\n\n // Set up event listeners\n const handleStateChange = () => {\n setState(widget.getState());\n };\n\n widget.on('ready', handleStateChange);\n widget.on('visibility_changed', handleStateChange);\n widget.on('minimized', handleStateChange);\n widget.on('maximized', handleStateChange);\n widget.on('new_message', handleStateChange);\n\n return () => {\n widget.destroy();\n };\n }, [widget, options]);\n\n return (\n <BuniChatContext.Provider value={{ widget, state, isReady }}>\n {children}\n </BuniChatContext.Provider>\n );\n};\n\n// Main hook for using BuniChat\nexport function useBuniChat(options?: BuniChatOptions) {\n const context = useContext(BuniChatContext);\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0\n });\n const [isReady, setIsReady] = useState(false);\n\n // Use context widget if available, otherwise use standalone\n const activeWidget = context?.widget || widget;\n const activeState = context?.state || state;\n const activeIsReady = context?.isReady || isReady;\n\n useEffect(() => {\n if (options && !context) {\n // Initialize standalone widget\n const initWidget = async () => {\n try {\n await activeWidget.initialize(options);\n setIsReady(true);\n } catch (error) {\n console.error('Failed to initialize BuniChat widget:', error);\n }\n };\n\n initWidget();\n\n const handleStateChange = () => {\n setState(activeWidget.getState());\n };\n\n activeWidget.on('ready', handleStateChange);\n activeWidget.on('visibility_changed', handleStateChange);\n activeWidget.on('minimized', handleStateChange);\n activeWidget.on('maximized', handleStateChange);\n activeWidget.on('new_message', handleStateChange);\n\n return () => {\n activeWidget.destroy();\n };\n }\n }, [options, context, activeWidget]);\n\n const show = useCallback(() => {\n activeWidget.show();\n }, [activeWidget]);\n\n const hide = useCallback(() => {\n activeWidget.hide();\n }, [activeWidget]);\n\n const toggle = useCallback(() => {\n activeWidget.toggle();\n }, [activeWidget]);\n\n const minimize = useCallback(() => {\n activeWidget.minimize();\n }, [activeWidget]);\n\n const maximize = useCallback(() => {\n activeWidget.maximize();\n }, [activeWidget]);\n\n const setCustomerData = useCallback((data: CustomerData) => {\n activeWidget.setCustomerData(data);\n }, [activeWidget]);\n\n const setSessionVariables = useCallback((variables: SessionVariables) => {\n activeWidget.setSessionVariables(variables);\n }, [activeWidget]);\n\n const sendMessage = useCallback((message: string) => {\n activeWidget.sendMessage(message);\n }, [activeWidget]);\n\n return {\n // State\n ...activeState,\n isReady: activeIsReady,\n \n // Actions\n show,\n hide,\n toggle,\n minimize,\n maximize,\n setCustomerData,\n setSessionVariables,\n sendMessage,\n \n // Direct widget access\n widget: activeWidget\n };\n}\n\n// Hook for widget events\nexport function useWidgetEvents() {\n const { widget } = useBuniChat();\n \n const on = useCallback((event: string, callback: Function) => {\n widget?.on(event, callback);\n }, [widget]);\n \n const off = useCallback((event: string, callback?: Function) => {\n widget?.off(event, callback);\n }, [widget]);\n \n return { on, off };\n}\n\n// Hook for customer data management\nexport function useCustomerData() {\n const { widget } = useBuniChat();\n const [customerData, setCustomerDataState] = useState<CustomerData | null>(null);\n \n const setCustomerData = useCallback((data: CustomerData) => {\n widget?.setCustomerData(data);\n setCustomerDataState(data);\n }, [widget]);\n \n const getCustomerData = useCallback(() => {\n return widget?.getCustomerData() || null;\n }, [widget]);\n \n useEffect(() => {\n if (widget) {\n const handleCustomerDataUpdate = (event: { data: CustomerData }) => {\n setCustomerDataState(event.data);\n };\n \n widget.on('customer_data_updated', handleCustomerDataUpdate);\n \n return () => {\n widget.off('customer_data_updated', handleCustomerDataUpdate);\n };\n }\n }, [widget]);\n \n return {\n customerData,\n setCustomerData,\n getCustomerData\n };\n}\n","// Components for @buni.ai/chatbot-react\n\nimport React, { ReactNode, useEffect } from \"react\";\nimport { useBuniChat } from \"./hooks\";\nimport { BuniChatConfig } from \"@buni.ai/chatbot-core\";\n\n// Widget component - can be used standalone or within provider\ninterface BuniChatWidgetProps {\n token?: string;\n className?: string;\n style?: React.CSSProperties;\n config?: BuniChatConfig;\n}\n\nexport const BuniChatWidget: React.FC<BuniChatWidgetProps> = ({\n token,\n config,\n}) => {\n // Use the hook - if there's a provider, it uses that; otherwise standalone\n const options = token ? { token, config } : undefined;\n useBuniChat(options);\n\n // The core widget renders directly to document.body\n return null;\n};\n\n// Chat button component\ninterface BuniChatButtonProps {\n onClick?: () => void;\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n showUnreadCount?: boolean;\n}\n\nexport const BuniChatButton: React.FC<BuniChatButtonProps> = ({\n onClick,\n children = \"Chat with us\",\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={className}\n style={style}\n >\n {children}\n {showUnreadCount && unreadCount > 0 && (\n <span className=\"buni-chat-badge\">{unreadCount}</span>\n )}\n </button>\n );\n};\n\n// Floating button component\ninterface BuniChatFloatingButtonProps\n extends Omit<BuniChatButtonProps, \"children\"> {\n position?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n size?: \"small\" | \"medium\" | \"large\";\n theme?: \"default\" | \"minimal\" | \"colorful\";\n}\n\nexport const BuniChatFloatingButton: React.FC<BuniChatFloatingButtonProps> = ({\n position = \"bottom-right\",\n size = \"medium\",\n theme = \"default\",\n onClick,\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n const positionStyles = {\n \"bottom-right\": { bottom: \"20px\", right: \"20px\" },\n \"bottom-left\": { bottom: \"20px\", left: \"20px\" },\n \"top-right\": { top: \"20px\", right: \"20px\" },\n \"top-left\": { top: \"20px\", left: \"20px\" },\n };\n\n const sizeStyles = {\n small: { width: \"48px\", height: \"48px\", fontSize: \"20px\" },\n medium: { width: \"56px\", height: \"56px\", fontSize: \"24px\" },\n large: { width: \"64px\", height: \"64px\", fontSize: \"28px\" },\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={`buni-chat-floating-button ${theme} ${className}`}\n style={{\n position: \"fixed\",\n ...positionStyles[position],\n ...sizeStyles[size],\n borderRadius: \"50%\",\n border: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n zIndex: 9999,\n ...style,\n }}\n >\n 💬\n {showUnreadCount && unreadCount > 0 && (\n <span\n className=\"buni-chat-badge\"\n style={{\n position: \"absolute\",\n top: \"-5px\",\n right: \"-5px\",\n background: \"red\",\n color: \"white\",\n borderRadius: \"50%\",\n padding: \"2px 6px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }}\n >\n {unreadCount}\n </span>\n )}\n </button>\n );\n};\n"],"names":["createContext","useState","BuniChatWidget","useEffect","_jsx","useContext","useCallback","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/hooks.tsx","../src/components.tsx"],"sourcesContent":["// @buni.ai/chatbot-react - React hooks and components\n\nimport React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n ReactNode,\n} from \"react\";\nimport {\n BuniChatWidget,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n BuniChatConfig,\n} from \"@buni.ai/chatbot-core\";\n\n// Context for providing widget instance\ninterface BuniChatContextType {\n widget: BuniChatWidget | null;\n state: BuniChatState;\n isReady: boolean;\n}\n\nconst BuniChatContext = createContext<BuniChatContextType | null>(null);\n\n// Provider component\ninterface BuniChatProviderProps {\n options: BuniChatOptions;\n children?: ReactNode;\n}\n\nexport const BuniChatProvider: React.FC<BuniChatProviderProps> = ({\n options,\n children,\n}) => {\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n });\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n const initWidget = async () => {\n try {\n await widget.initialize({ ...options, framework: \"react\" });\n setIsReady(true);\n } catch (error) {\n console.error(\"Failed to initialize BuniChat widget:\", error);\n }\n };\n\n initWidget();\n\n // Set up event listeners\n const handleStateChange = () => {\n setState(widget.getState());\n };\n\n widget.on(\"ready\", handleStateChange);\n widget.on(\"visibility_changed\", handleStateChange);\n widget.on(\"minimized\", handleStateChange);\n widget.on(\"maximized\", handleStateChange);\n widget.on(\"new_message\", handleStateChange);\n\n return () => {\n widget.destroy();\n };\n }, [widget, options]);\n\n return (\n <BuniChatContext.Provider value={{ widget, state, isReady }}>\n {children}\n </BuniChatContext.Provider>\n );\n};\n\n// Main hook for using BuniChat\nexport function useBuniChat(options?: BuniChatOptions) {\n const context = useContext(BuniChatContext);\n const [widget] = useState(() => new BuniChatWidget());\n const [state, setState] = useState<BuniChatState>({\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n });\n const [isReady, setIsReady] = useState(false);\n\n // Use context widget if available, otherwise use standalone\n const activeWidget = context?.widget || widget;\n const activeState = context?.state || state;\n const activeIsReady = context?.isReady || isReady;\n\n useEffect(() => {\n if (options && !context) {\n // Initialize standalone widget\n const initWidget = async () => {\n try {\n await activeWidget.initialize(options);\n setIsReady(true);\n } catch (error) {\n console.error(\"Failed to initialize BuniChat widget:\", error);\n }\n };\n\n initWidget();\n\n const handleStateChange = () => {\n setState(activeWidget.getState());\n };\n\n activeWidget.on(\"ready\", handleStateChange);\n activeWidget.on(\"visibility_changed\", handleStateChange);\n activeWidget.on(\"minimized\", handleStateChange);\n activeWidget.on(\"maximized\", handleStateChange);\n activeWidget.on(\"new_message\", handleStateChange);\n\n return () => {\n activeWidget.destroy();\n };\n }\n }, [options, context, activeWidget]);\n\n const show = useCallback(() => {\n activeWidget.show();\n }, [activeWidget]);\n\n const hide = useCallback(() => {\n activeWidget.hide();\n }, [activeWidget]);\n\n const toggle = useCallback(() => {\n activeWidget.toggle();\n }, [activeWidget]);\n\n const minimize = useCallback(() => {\n activeWidget.minimize();\n }, [activeWidget]);\n\n const maximize = useCallback(() => {\n activeWidget.maximize();\n }, [activeWidget]);\n\n const setCustomerData = useCallback(\n (data: CustomerData) => {\n activeWidget.setCustomerData(data);\n },\n [activeWidget],\n );\n\n const setSessionVariables = useCallback(\n (variables: SessionVariables) => {\n activeWidget.setSessionVariables(variables);\n },\n [activeWidget],\n );\n\n const sendMessage = useCallback(\n (message: string) => {\n activeWidget.sendMessage(message);\n },\n [activeWidget],\n );\n\n const setTheme = useCallback(\n (theme: \"light\" | \"dark\" | \"system\") => {\n activeWidget.setTheme(theme);\n },\n [activeWidget],\n );\n\n const open = useCallback(() => {\n activeWidget.open();\n }, [activeWidget]);\n\n const close = useCallback(() => {\n activeWidget.close();\n }, [activeWidget]);\n\n return {\n // State\n ...activeState,\n isReady: activeIsReady,\n\n // Actions\n show,\n hide,\n toggle,\n minimize,\n maximize,\n setCustomerData,\n setSessionVariables,\n sendMessage,\n setTheme,\n open,\n close,\n\n // Direct widget access\n widget: activeWidget,\n };\n}\n\n// Hook for widget events\nexport function useWidgetEvents() {\n const { widget } = useBuniChat();\n\n const on = useCallback(\n (event: string, callback: Function) => {\n widget?.on(event, callback);\n },\n [widget],\n );\n\n const off = useCallback(\n (event: string, callback?: Function) => {\n widget?.off(event, callback);\n },\n [widget],\n );\n\n return { on, off };\n}\n\n// Hook for customer data management\nexport function useCustomerData() {\n const { widget } = useBuniChat();\n const [customerData, setCustomerData] = useState<CustomerData | null>(\n null,\n );\n\n const updateCustomerData = useCallback(\n (data: CustomerData) => {\n widget?.setCustomerData(data);\n setCustomerData(data);\n },\n [widget],\n );\n\n const getCustomerData = useCallback(() => {\n return widget?.getCustomerData() || null;\n }, [widget]);\n\n useEffect(() => {\n if (widget) {\n const handleCustomerDataUpdate = (event: { data: CustomerData }) => {\n setCustomerData(event.data);\n };\n\n widget.on(\"customer_data_updated\", handleCustomerDataUpdate);\n\n return () => {\n widget.off(\"customer_data_updated\", handleCustomerDataUpdate);\n };\n }\n }, [widget]);\n\n return {\n customerData,\n setCustomerData: updateCustomerData,\n getCustomerData,\n };\n}\n","// Components for @buni.ai/chatbot-react\n\nimport React, { ReactNode, useEffect } from \"react\";\nimport { useBuniChat } from \"./hooks\";\nimport { BuniChatConfig } from \"@buni.ai/chatbot-core\";\n\n// Widget component - can be used standalone or within provider\ninterface BuniChatWidgetProps {\n token?: string;\n className?: string;\n style?: React.CSSProperties;\n config?: BuniChatConfig;\n}\n\nexport const BuniChatWidget: React.FC<BuniChatWidgetProps> = ({\n token,\n config,\n}) => {\n // Use the hook - if there's a provider, it uses that; otherwise standalone\n const options = token ? { token, config } : undefined;\n useBuniChat(options);\n\n // The core widget renders directly to document.body\n return null;\n};\n\n// Chat button component\ninterface BuniChatButtonProps {\n onClick?: () => void;\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n showUnreadCount?: boolean;\n}\n\nexport const BuniChatButton: React.FC<BuniChatButtonProps> = ({\n onClick,\n children = \"Chat with us\",\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={className}\n style={style}\n >\n {children}\n {showUnreadCount && unreadCount > 0 && (\n <span className=\"buni-chat-badge\">{unreadCount}</span>\n )}\n </button>\n );\n};\n\n// Floating button component\ninterface BuniChatFloatingButtonProps\n extends Omit<BuniChatButtonProps, \"children\"> {\n position?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n size?: \"small\" | \"medium\" | \"large\";\n theme?: \"default\" | \"minimal\" | \"colorful\";\n}\n\nexport const BuniChatFloatingButton: React.FC<BuniChatFloatingButtonProps> = ({\n position = \"bottom-right\",\n size = \"medium\",\n theme = \"default\",\n onClick,\n className = \"\",\n style = {},\n disabled = false,\n showUnreadCount = true,\n}) => {\n const { toggle, unreadCount } = useBuniChat();\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else {\n toggle();\n }\n };\n\n const positionStyles = {\n \"bottom-right\": { bottom: \"20px\", right: \"20px\" },\n \"bottom-left\": { bottom: \"20px\", left: \"20px\" },\n \"top-right\": { top: \"20px\", right: \"20px\" },\n \"top-left\": { top: \"20px\", left: \"20px\" },\n };\n\n const sizeStyles = {\n small: { width: \"48px\", height: \"48px\", fontSize: \"20px\" },\n medium: { width: \"56px\", height: \"56px\", fontSize: \"24px\" },\n large: { width: \"64px\", height: \"64px\", fontSize: \"28px\" },\n };\n\n return (\n <button\n onClick={handleClick}\n disabled={disabled}\n className={`buni-chat-floating-button ${theme} ${className}`}\n style={{\n position: \"fixed\",\n ...positionStyles[position],\n ...sizeStyles[size],\n borderRadius: \"50%\",\n border: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n zIndex: 9999,\n ...style,\n }}\n >\n 💬\n {showUnreadCount && unreadCount > 0 && (\n <span\n className=\"buni-chat-badge\"\n style={{\n position: \"absolute\",\n top: \"-5px\",\n right: \"-5px\",\n background: \"red\",\n color: \"white\",\n borderRadius: \"50%\",\n padding: \"2px 6px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }}\n >\n {unreadCount}\n </span>\n )}\n </button>\n );\n};\n"],"names":["createContext","useState","BuniChatWidget","useEffect","_jsx","useContext","useCallback","_jsxs"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buni.ai/chatbot-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "React components and hooks for BuniAI chat widget",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"react-dom": ">=19.2.1"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@buni.ai/chatbot-core": "^1.0.
|
|
41
|
+
"@buni.ai/chatbot-core": "^1.0.17"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@rollup/plugin-commonjs": "^24.0.0",
|