@volkansuner/aichat-react-native 0.1.0

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.
Files changed (203) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +528 -0
  3. package/dist/AIChatSDK.d.ts +75 -0
  4. package/dist/AIChatSDK.d.ts.map +1 -0
  5. package/dist/AIChatSDK.js +357 -0
  6. package/dist/AIChatSDK.js.map +1 -0
  7. package/dist/components/AIChatProvider.d.ts +25 -0
  8. package/dist/components/AIChatProvider.d.ts.map +1 -0
  9. package/dist/components/AIChatProvider.js +93 -0
  10. package/dist/components/AIChatProvider.js.map +1 -0
  11. package/dist/components/AIChatWidget.d.ts +62 -0
  12. package/dist/components/AIChatWidget.d.ts.map +1 -0
  13. package/dist/components/AIChatWidget.handlers.d.ts +15 -0
  14. package/dist/components/AIChatWidget.handlers.d.ts.map +1 -0
  15. package/dist/components/AIChatWidget.handlers.js +180 -0
  16. package/dist/components/AIChatWidget.handlers.js.map +1 -0
  17. package/dist/components/AIChatWidget.js +403 -0
  18. package/dist/components/AIChatWidget.js.map +1 -0
  19. package/dist/components/AIChatWidget.styles.d.ts +17 -0
  20. package/dist/components/AIChatWidget.styles.d.ts.map +1 -0
  21. package/dist/components/AIChatWidget.styles.js +68 -0
  22. package/dist/components/AIChatWidget.styles.js.map +1 -0
  23. package/dist/components/AIChatWidget.types.d.ts +250 -0
  24. package/dist/components/AIChatWidget.types.d.ts.map +1 -0
  25. package/dist/components/AIChatWidget.types.js +3 -0
  26. package/dist/components/AIChatWidget.types.js.map +1 -0
  27. package/dist/components/AIChatWidget.utils.d.ts +12 -0
  28. package/dist/components/AIChatWidget.utils.d.ts.map +1 -0
  29. package/dist/components/AIChatWidget.utils.js +109 -0
  30. package/dist/components/AIChatWidget.utils.js.map +1 -0
  31. package/dist/components/ConfigError.d.ts +33 -0
  32. package/dist/components/ConfigError.d.ts.map +1 -0
  33. package/dist/components/ConfigError.js +195 -0
  34. package/dist/components/ConfigError.js.map +1 -0
  35. package/dist/components/FloatingButton.d.ts +12 -0
  36. package/dist/components/FloatingButton.d.ts.map +1 -0
  37. package/dist/components/FloatingButton.js +163 -0
  38. package/dist/components/FloatingButton.js.map +1 -0
  39. package/dist/components/InputArea.d.ts +58 -0
  40. package/dist/components/InputArea.d.ts.map +1 -0
  41. package/dist/components/InputArea.js +135 -0
  42. package/dist/components/InputArea.js.map +1 -0
  43. package/dist/components/MarkdownText.d.ts +16 -0
  44. package/dist/components/MarkdownText.d.ts.map +1 -0
  45. package/dist/components/MarkdownText.js +263 -0
  46. package/dist/components/MarkdownText.js.map +1 -0
  47. package/dist/components/MessageBubble.d.ts +101 -0
  48. package/dist/components/MessageBubble.d.ts.map +1 -0
  49. package/dist/components/MessageBubble.js +377 -0
  50. package/dist/components/MessageBubble.js.map +1 -0
  51. package/dist/components/NavigationSuggestion.d.ts +13 -0
  52. package/dist/components/NavigationSuggestion.d.ts.map +1 -0
  53. package/dist/components/NavigationSuggestion.js +117 -0
  54. package/dist/components/NavigationSuggestion.js.map +1 -0
  55. package/dist/components/QuickReplies.d.ts +15 -0
  56. package/dist/components/QuickReplies.d.ts.map +1 -0
  57. package/dist/components/QuickReplies.js +49 -0
  58. package/dist/components/QuickReplies.js.map +1 -0
  59. package/dist/components/TemplateRenderer.d.ts +17 -0
  60. package/dist/components/TemplateRenderer.d.ts.map +1 -0
  61. package/dist/components/TemplateRenderer.js +397 -0
  62. package/dist/components/TemplateRenderer.js.map +1 -0
  63. package/dist/components/TypingIndicator.d.ts +29 -0
  64. package/dist/components/TypingIndicator.d.ts.map +1 -0
  65. package/dist/components/TypingIndicator.js +110 -0
  66. package/dist/components/TypingIndicator.js.map +1 -0
  67. package/dist/components/defaults/DefaultCard.d.ts +15 -0
  68. package/dist/components/defaults/DefaultCard.d.ts.map +1 -0
  69. package/dist/components/defaults/DefaultCard.js +157 -0
  70. package/dist/components/defaults/DefaultCard.js.map +1 -0
  71. package/dist/components/defaults/DefaultDetail.d.ts +15 -0
  72. package/dist/components/defaults/DefaultDetail.d.ts.map +1 -0
  73. package/dist/components/defaults/DefaultDetail.js +139 -0
  74. package/dist/components/defaults/DefaultDetail.js.map +1 -0
  75. package/dist/components/defaults/DefaultList.d.ts +13 -0
  76. package/dist/components/defaults/DefaultList.d.ts.map +1 -0
  77. package/dist/components/defaults/DefaultList.js +99 -0
  78. package/dist/components/defaults/DefaultList.js.map +1 -0
  79. package/dist/components/defaults/DefaultTable.d.ts +15 -0
  80. package/dist/components/defaults/DefaultTable.d.ts.map +1 -0
  81. package/dist/components/defaults/DefaultTable.js +205 -0
  82. package/dist/components/defaults/DefaultTable.js.map +1 -0
  83. package/dist/components/defaults/index.d.ts +15 -0
  84. package/dist/components/defaults/index.d.ts.map +1 -0
  85. package/dist/components/defaults/index.js +26 -0
  86. package/dist/components/defaults/index.js.map +1 -0
  87. package/dist/components/index.d.ts +17 -0
  88. package/dist/components/index.d.ts.map +1 -0
  89. package/dist/components/index.js +33 -0
  90. package/dist/components/index.js.map +1 -0
  91. package/dist/constants.d.ts +41 -0
  92. package/dist/constants.d.ts.map +1 -0
  93. package/dist/constants.js +52 -0
  94. package/dist/constants.js.map +1 -0
  95. package/dist/hooks/useAIChatConfig.d.ts +61 -0
  96. package/dist/hooks/useAIChatConfig.d.ts.map +1 -0
  97. package/dist/hooks/useAIChatConfig.js +95 -0
  98. package/dist/hooks/useAIChatConfig.js.map +1 -0
  99. package/dist/hooks/useChatMessages.d.ts +27 -0
  100. package/dist/hooks/useChatMessages.d.ts.map +1 -0
  101. package/dist/hooks/useChatMessages.js +255 -0
  102. package/dist/hooks/useChatMessages.js.map +1 -0
  103. package/dist/hooks/useContextManager.d.ts +13 -0
  104. package/dist/hooks/useContextManager.d.ts.map +1 -0
  105. package/dist/hooks/useContextManager.js +42 -0
  106. package/dist/hooks/useContextManager.js.map +1 -0
  107. package/dist/hooks/useSDK.d.ts +18 -0
  108. package/dist/hooks/useSDK.d.ts.map +1 -0
  109. package/dist/hooks/useSDK.js +64 -0
  110. package/dist/hooks/useSDK.js.map +1 -0
  111. package/dist/index.d.ts +15 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +46 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/registry/TemplateRegistry.d.ts +48 -0
  116. package/dist/registry/TemplateRegistry.d.ts.map +1 -0
  117. package/dist/registry/TemplateRegistry.js +77 -0
  118. package/dist/registry/TemplateRegistry.js.map +1 -0
  119. package/dist/registry/index.d.ts +5 -0
  120. package/dist/registry/index.d.ts.map +1 -0
  121. package/dist/registry/index.js +9 -0
  122. package/dist/registry/index.js.map +1 -0
  123. package/dist/services/BackendService.d.ts +47 -0
  124. package/dist/services/BackendService.d.ts.map +1 -0
  125. package/dist/services/BackendService.js +362 -0
  126. package/dist/services/BackendService.js.map +1 -0
  127. package/dist/services/ConversationManager.d.ts +40 -0
  128. package/dist/services/ConversationManager.d.ts.map +1 -0
  129. package/dist/services/ConversationManager.js +95 -0
  130. package/dist/services/ConversationManager.js.map +1 -0
  131. package/dist/services/LocalAIClassifier.d.ts +32 -0
  132. package/dist/services/LocalAIClassifier.d.ts.map +1 -0
  133. package/dist/services/LocalAIClassifier.js +149 -0
  134. package/dist/services/LocalAIClassifier.js.map +1 -0
  135. package/dist/services/NavigationHandler.d.ts +30 -0
  136. package/dist/services/NavigationHandler.d.ts.map +1 -0
  137. package/dist/services/NavigationHandler.js +74 -0
  138. package/dist/services/NavigationHandler.js.map +1 -0
  139. package/dist/themes/dark.d.ts +6 -0
  140. package/dist/themes/dark.d.ts.map +1 -0
  141. package/dist/themes/dark.js +130 -0
  142. package/dist/themes/dark.js.map +1 -0
  143. package/dist/themes/index.d.ts +13 -0
  144. package/dist/themes/index.d.ts.map +1 -0
  145. package/dist/themes/index.js +34 -0
  146. package/dist/themes/index.js.map +1 -0
  147. package/dist/themes/light.d.ts +6 -0
  148. package/dist/themes/light.d.ts.map +1 -0
  149. package/dist/themes/light.js +130 -0
  150. package/dist/themes/light.js.map +1 -0
  151. package/dist/themes/types.d.ts +143 -0
  152. package/dist/themes/types.d.ts.map +1 -0
  153. package/dist/themes/types.js +6 -0
  154. package/dist/themes/types.js.map +1 -0
  155. package/dist/types/api.d.ts +118 -0
  156. package/dist/types/api.d.ts.map +1 -0
  157. package/dist/types/api.js +6 -0
  158. package/dist/types/api.js.map +1 -0
  159. package/dist/types/chat.d.ts +154 -0
  160. package/dist/types/chat.d.ts.map +1 -0
  161. package/dist/types/chat.js +6 -0
  162. package/dist/types/chat.js.map +1 -0
  163. package/dist/types/components.d.ts +69 -0
  164. package/dist/types/components.d.ts.map +1 -0
  165. package/dist/types/components.js +17 -0
  166. package/dist/types/components.js.map +1 -0
  167. package/dist/types/config.d.ts +122 -0
  168. package/dist/types/config.d.ts.map +1 -0
  169. package/dist/types/config.js +18 -0
  170. package/dist/types/config.js.map +1 -0
  171. package/dist/types/document.d.ts +108 -0
  172. package/dist/types/document.d.ts.map +1 -0
  173. package/dist/types/document.js +7 -0
  174. package/dist/types/document.js.map +1 -0
  175. package/dist/types/index.d.ts +14 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/index.js +31 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/types/local-ai.d.ts +48 -0
  180. package/dist/types/local-ai.d.ts.map +1 -0
  181. package/dist/types/local-ai.js +17 -0
  182. package/dist/types/local-ai.js.map +1 -0
  183. package/dist/types/navigation.d.ts +89 -0
  184. package/dist/types/navigation.d.ts.map +1 -0
  185. package/dist/types/navigation.js +6 -0
  186. package/dist/types/navigation.js.map +1 -0
  187. package/dist/types/sdk.d.ts +47 -0
  188. package/dist/types/sdk.d.ts.map +1 -0
  189. package/dist/types/sdk.js +6 -0
  190. package/dist/types/sdk.js.map +1 -0
  191. package/dist/types/template.d.ts +220 -0
  192. package/dist/types/template.d.ts.map +1 -0
  193. package/dist/types/template.js +8 -0
  194. package/dist/types/template.js.map +1 -0
  195. package/dist/utils/configLoader.d.ts +69 -0
  196. package/dist/utils/configLoader.d.ts.map +1 -0
  197. package/dist/utils/configLoader.js +278 -0
  198. package/dist/utils/configLoader.js.map +1 -0
  199. package/dist/utils/deepMerge.d.ts +47 -0
  200. package/dist/utils/deepMerge.d.ts.map +1 -0
  201. package/dist/utils/deepMerge.js +71 -0
  202. package/dist/utils/deepMerge.js.map +1 -0
  203. package/package.json +65 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createActionHandler = void 0;
4
+ const AIChatWidget_utils_1 = require("./AIChatWidget.utils");
5
+ /**
6
+ * Handle action button clicks
7
+ */
8
+ const createActionHandler = (options) => {
9
+ const { onNavigationAction, onApiActionExecute, onApiActionSuggest, componentRegistry, setMessages, } = options;
10
+ return (action) => {
11
+ console.log('🎯 Action clicked:', action.type, action.id);
12
+ if (action.type === 'navigation') {
13
+ // Trigger navigation ACTION callback (user clicked button)
14
+ if (onNavigationAction) {
15
+ onNavigationAction(action.data);
16
+ }
17
+ }
18
+ else if (action.type === 'api') {
19
+ handleApiAction(action, {
20
+ onApiActionExecute,
21
+ onApiActionSuggest,
22
+ componentRegistry,
23
+ setMessages,
24
+ });
25
+ }
26
+ else if (action.type === 'custom') {
27
+ handleCustomAction(action, setMessages);
28
+ }
29
+ };
30
+ };
31
+ exports.createActionHandler = createActionHandler;
32
+ /**
33
+ * Handle API action execution
34
+ */
35
+ const handleApiAction = (action, options) => {
36
+ const { onApiActionExecute, onApiActionSuggest, componentRegistry, setMessages } = options;
37
+ // New API execution flow
38
+ if (onApiActionExecute) {
39
+ // Show loading message
40
+ const loadingId = `loading-${Date.now()}`;
41
+ const loadingMsg = {
42
+ id: loadingId,
43
+ role: 'assistant',
44
+ text: '⏳ İşleminiz yapılıyor...',
45
+ content: '⏳ İşleminiz yapılıyor...',
46
+ timestamp: new Date(),
47
+ metadata: {
48
+ handledBy: 'local',
49
+ },
50
+ };
51
+ setMessages((prev) => [...prev, loadingMsg]);
52
+ const toolDefinition = action.data.toolDefinition || null;
53
+ const mappedParameters = action.data.mappedParameters || null;
54
+ onApiActionExecute(action.data, toolDefinition, mappedParameters, (result) => {
55
+ // Remove loading message
56
+ setMessages((prev) => prev.filter((m) => m.id !== loadingId));
57
+ if (result.success && result.data) {
58
+ handleSuccessfulApiResult(result, action, toolDefinition, componentRegistry, setMessages);
59
+ }
60
+ else {
61
+ handleFailedApiResult(result, setMessages);
62
+ }
63
+ });
64
+ }
65
+ // Legacy support
66
+ else if (onApiActionSuggest) {
67
+ const handleActionResult = (actionId, result) => {
68
+ console.log(`✅ Action ${actionId} completed:`, result);
69
+ const summary = (0, AIChatWidget_utils_1.generateApiSummary)(action.data, result);
70
+ const resultMessage = {
71
+ id: Date.now().toString(),
72
+ role: 'assistant',
73
+ text: summary,
74
+ content: summary,
75
+ timestamp: new Date(),
76
+ metadata: {
77
+ handledBy: 'local',
78
+ apiActionResult: result,
79
+ },
80
+ };
81
+ setMessages((prev) => [...prev, resultMessage]);
82
+ };
83
+ onApiActionSuggest([action.data], handleActionResult);
84
+ }
85
+ };
86
+ /**
87
+ * Handle successful API result
88
+ */
89
+ const handleSuccessfulApiResult = (result, action, toolDefinition, componentRegistry, setMessages) => {
90
+ const shouldAutoRender = toolDefinition &&
91
+ result.renderAs &&
92
+ result.itemComponent &&
93
+ componentRegistry[result.itemComponent];
94
+ if (shouldAutoRender) {
95
+ // Use custom component rendering
96
+ const successMsg = {
97
+ id: Date.now().toString(),
98
+ role: 'assistant',
99
+ text: '✅ İşlem tamamlandı:',
100
+ content: '✅ İşlem tamamlandı:',
101
+ timestamp: new Date(),
102
+ metadata: {
103
+ handledBy: 'local',
104
+ apiActionResult: result.data,
105
+ },
106
+ };
107
+ setMessages((prev) => [...prev, successMsg]);
108
+ // Add rendered result message
109
+ const renderMsg = {
110
+ id: Date.now().toString(),
111
+ role: 'assistant',
112
+ text: '',
113
+ content: '',
114
+ timestamp: new Date(),
115
+ metadata: {
116
+ handledBy: 'local',
117
+ },
118
+ };
119
+ setMessages((prev) => [...prev, renderMsg]);
120
+ }
121
+ else {
122
+ // Fallback: Generate text summary
123
+ const summary = (0, AIChatWidget_utils_1.generateApiSummary)(action.data, result.data);
124
+ const successMsg = {
125
+ id: Date.now().toString(),
126
+ role: 'assistant',
127
+ text: summary,
128
+ content: summary,
129
+ timestamp: new Date(),
130
+ actions: [{
131
+ id: 'view-raw-data',
132
+ type: 'custom',
133
+ label: '📊 Ham Veriyi Gör',
134
+ icon: '📋',
135
+ data: result.data,
136
+ style: 'secondary',
137
+ }],
138
+ metadata: {
139
+ handledBy: 'local',
140
+ apiActionResult: result.data,
141
+ },
142
+ };
143
+ setMessages((prev) => [...prev, successMsg]);
144
+ }
145
+ };
146
+ /**
147
+ * Handle failed API result
148
+ */
149
+ const handleFailedApiResult = (result, setMessages) => {
150
+ const errorMsg = {
151
+ id: Date.now().toString(),
152
+ role: 'assistant',
153
+ text: `❌ **İşlem başarısız**\n\n${result.error || 'Bilinmeyen bir hata oluştu.'}`,
154
+ content: `❌ **İşlem başarısız**\n\n${result.error || 'Bilinmeyen bir hata oluştu.'}`,
155
+ timestamp: new Date(),
156
+ metadata: {
157
+ handledBy: 'local',
158
+ },
159
+ };
160
+ setMessages((prev) => [...prev, errorMsg]);
161
+ };
162
+ /**
163
+ * Handle custom actions
164
+ */
165
+ const handleCustomAction = (action, setMessages) => {
166
+ if (action.id === 'view-raw-data' && action.data) {
167
+ const rawDataMsg = {
168
+ id: Date.now().toString(),
169
+ role: 'assistant',
170
+ text: `\`\`\`json\n${JSON.stringify(action.data, null, 2)}\n\`\`\``,
171
+ content: `\`\`\`json\n${JSON.stringify(action.data, null, 2)}\n\`\`\``,
172
+ timestamp: new Date(),
173
+ metadata: {
174
+ handledBy: 'local',
175
+ },
176
+ };
177
+ setMessages((prev) => [...prev, rawDataMsg]);
178
+ }
179
+ };
180
+ //# sourceMappingURL=AIChatWidget.handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.handlers.js","sourceRoot":"","sources":["../../src/components/AIChatWidget.handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,403 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AIChatWidget = AIChatWidget;
37
+ const react_1 = __importStar(require("react"));
38
+ const react_native_1 = require("react-native");
39
+ const MessageBubble_1 = require("./MessageBubble");
40
+ const InputArea_1 = require("./InputArea");
41
+ const TypingIndicator_1 = require("./TypingIndicator");
42
+ const themes_1 = require("../themes");
43
+ const defaults_1 = require("./defaults");
44
+ const useSDK_1 = require("../hooks/useSDK");
45
+ const useContextManager_1 = require("../hooks/useContextManager");
46
+ const useChatMessages_1 = require("../hooks/useChatMessages");
47
+ const useAIChatConfig_1 = require("../hooks/useAIChatConfig");
48
+ const AIChatWidget_styles_1 = require("./AIChatWidget.styles");
49
+ const AIChatWidget_handlers_1 = require("./AIChatWidget.handlers");
50
+ const deepMerge_1 = require("../utils/deepMerge");
51
+ const ConfigError_1 = require("./ConfigError");
52
+ const react_native_safe_area_context_1 = require("react-native-safe-area-context");
53
+ /**
54
+ * AIChatWidget Component
55
+ *
56
+ * Main chat widget component with full UI and functionality.
57
+ *
58
+ * 🚀 Zero-Config Support:
59
+ * All config props (apiKey, projectId, apiUrl) are OPTIONAL!
60
+ * SDK automatically loads from aichat.config.js or environment variables.
61
+ *
62
+ * Features:
63
+ * - Three display modes: fullscreen, inline, floating
64
+ * - Complete chat UI with message list and input
65
+ * - Integration with AIChatSDK for backend communication
66
+ * - Auto-loading theme from API (via projectId)
67
+ * - Theme support (light/dark) with overrides
68
+ * - Multi-key support (platform-specific API keys)
69
+ * - Typing indicators and streaming responses
70
+ * - Tool Registry integration
71
+ * - Message metadata display
72
+ * - Error handling with clear config errors
73
+ *
74
+ * @example Zero-config usage (recommended)
75
+ * ```tsx
76
+ * // Create aichat.config.js in project root:
77
+ * // module.exports = {
78
+ * // projectId: '68e4c834c62d2ff6533d6fb0',
79
+ * // keys: {
80
+ * // ios: 'aichat_pk_ios_xxx',
81
+ * // android: 'aichat_pk_android_xxx'
82
+ * // }
83
+ * // }
84
+ *
85
+ * <AIChatWidget />
86
+ * ```
87
+ *
88
+ * @example Explicit config
89
+ * ```tsx
90
+ * <AIChatWidget
91
+ * apiKey="aichat_pk_xxx"
92
+ * projectId="68e4c834c62d2ff6533d6fb0"
93
+ * mode="fullscreen"
94
+ * theme="light"
95
+ * title="AI Assistant"
96
+ * />
97
+ * ```
98
+ *
99
+ * @example With theme override
100
+ * ```tsx
101
+ * <AIChatWidget
102
+ * themeOverride={{
103
+ * colors: {
104
+ * userBubble: '#FF0000',
105
+ * userBubbleText: '#FFFFFF'
106
+ * }
107
+ * }}
108
+ * />
109
+ * ```
110
+ */
111
+ function AIChatWidget({ style, apiKey: apiKeyProp, keys: keysProp, platform: platformProp, apiUrl: apiUrlProp, projectId: projectIdProp, mode = 'fullscreen', theme: themeName = 'light', customTheme, themeOverride, enableLocalAI = false, enableStreaming = true, context: userContext, contextDescription, components: customComponents, showMetadata = false, showTimestamps = true, placeholder = 'Type a message...', maxMessageLength = 500, onReady, onMessageSent, onResponseReceived, onError, onNavigationSuggest, onNavigationAction, onApiActionsSuggested, onToolSuggested, onApiActionExecute, onApiActionSuggest, }) {
112
+ console.log('Chat mode:', mode);
113
+ const insets = (0, react_native_safe_area_context_1.useSafeAreaInsets)();
114
+ // 🆕 Load config from props, env, or config file
115
+ const configResult = (0, useAIChatConfig_1.useAIChatConfig)({
116
+ apiKey: apiKeyProp,
117
+ keys: keysProp,
118
+ platform: platformProp,
119
+ apiUrl: apiUrlProp,
120
+ projectId: projectIdProp,
121
+ });
122
+ // Show config error if config is missing
123
+ if (!configResult.config) {
124
+ return <ConfigError_1.ConfigError result={configResult}/>;
125
+ }
126
+ // Extract config values
127
+ const { apiKey, apiUrl, projectId } = configResult.config;
128
+ // State for API-loaded theme
129
+ const [apiThemeOverride, setApiThemeOverride] = (0, react_1.useState)(null);
130
+ const [isLoadingTheme, setIsLoadingTheme] = (0, react_1.useState)(false);
131
+ // Load theme from API if projectId is provided
132
+ (0, react_1.useEffect)(() => {
133
+ console.log('🎨 Theme API: useEffect triggered');
134
+ console.log('🎨 Theme API: projectId =', projectId);
135
+ console.log('🎨 Theme API: apiUrl =', apiUrl);
136
+ if (!projectId || !apiUrl) {
137
+ console.log('🎨 Theme API: Skipping (no projectId or apiUrl)');
138
+ return;
139
+ }
140
+ const loadProjectTheme = async () => {
141
+ setIsLoadingTheme(true);
142
+ try {
143
+ const url = `${apiUrl}/api/v1/projects/${projectId}/chat-theme`;
144
+ console.log('🎨 Theme API: Loading from', url);
145
+ console.log('🎨 Theme API: Loading with api key', apiKey);
146
+ console.log('🎨 Theme API: Loading project', projectId);
147
+ const response = await fetch(url, {
148
+ headers: {
149
+ 'Content-Type': 'application/json',
150
+ 'x-api-key': apiKey,
151
+ },
152
+ }).catch((err) => {
153
+ console.error('🎨 Theme API: Error fetching theme:', err);
154
+ throw err;
155
+ });
156
+ if (!response.ok) {
157
+ const errorText = await response.text();
158
+ console.error('🎨 Theme API: Failed with status', response.status, errorText);
159
+ throw new Error(errorText);
160
+ }
161
+ console.log('🎨 Theme API: Response status', response.status);
162
+ if (response.ok) {
163
+ const themeData = await response.json();
164
+ console.log('🎨 Theme API: Data received', JSON.stringify(themeData, null, 2));
165
+ // Use light or dark based on current theme
166
+ const modeTheme = typeof themeName === 'string' ? themeName : 'light';
167
+ console.log('🎨 Theme API: Looking for mode:', modeTheme);
168
+ console.log('🎨 Theme API: Available keys:', Object.keys(themeData));
169
+ const rawTheme = themeData[modeTheme];
170
+ console.log('🎨 Theme API: Raw theme from API:', JSON.stringify(rawTheme, null, 2));
171
+ if (rawTheme) {
172
+ // Map Dashboard theme properties to SDK theme properties
173
+ const mappedTheme = {
174
+ colors: {
175
+ background: rawTheme.containerBackground,
176
+ userBubble: rawTheme.userMessageBackground,
177
+ userBubbleText: rawTheme.userMessageText,
178
+ aiBubble: rawTheme.aiMessageBackground,
179
+ aiBubbleText: rawTheme.aiMessageText,
180
+ inputBackground: rawTheme.inputBackground,
181
+ text: rawTheme.inputText,
182
+ inputBorder: rawTheme.inputBorder,
183
+ buttonBackground: rawTheme.sendButtonBackground,
184
+ buttonText: rawTheme.sendButtonText,
185
+ },
186
+ typography: {
187
+ fontSize: {
188
+ md: rawTheme.fontSize,
189
+ },
190
+ fontWeight: {
191
+ regular: '400',
192
+ medium: '500',
193
+ semibold: '600',
194
+ bold: rawTheme.fontWeight,
195
+ },
196
+ lineHeight: {
197
+ normal: rawTheme.lineHeight,
198
+ },
199
+ },
200
+ borderRadius: {
201
+ md: rawTheme.userMessageBorderRadius ||
202
+ rawTheme.aiMessageBorderRadius,
203
+ lg: rawTheme.inputBorderRadius,
204
+ },
205
+ spacing: {
206
+ md: rawTheme.containerPadding,
207
+ lg: rawTheme.userMessagePadding || rawTheme.aiMessagePadding,
208
+ },
209
+ messages: {
210
+ user: {
211
+ padding: rawTheme.userMessagePadding || 12,
212
+ maxWidth: rawTheme.userMessageMaxWidth || 70,
213
+ },
214
+ ai: {
215
+ padding: rawTheme.aiMessagePadding || 12,
216
+ maxWidth: rawTheme.aiMessageMaxWidth || 70,
217
+ },
218
+ },
219
+ };
220
+ console.log('🎨 Theme API: Mapped theme:', JSON.stringify(mappedTheme, null, 2));
221
+ setApiThemeOverride(mappedTheme);
222
+ console.log('🎨 Theme API: ✅ Applied successfully!');
223
+ }
224
+ else {
225
+ console.log('🎨 Theme API: ❌ No theme found for mode', modeTheme);
226
+ }
227
+ }
228
+ else {
229
+ const errorText = await response.text();
230
+ console.error('🎨 Theme API: Failed with status', response.status, errorText);
231
+ }
232
+ }
233
+ catch (error) {
234
+ console.error('🎨 Theme API: Error loading project theme:', error);
235
+ }
236
+ finally {
237
+ setIsLoadingTheme(false);
238
+ }
239
+ };
240
+ loadProjectTheme();
241
+ }, [projectId, apiUrl, apiKey, themeName]);
242
+ // Theme setup with deep merge for partial overrides
243
+ const theme = (0, react_1.useMemo)(() => {
244
+ console.log('🎨 Theme Merge: Starting...');
245
+ // 1. Get base theme
246
+ let baseTheme;
247
+ if (customTheme) {
248
+ baseTheme = customTheme;
249
+ console.log('🎨 Theme Merge: Using customTheme');
250
+ }
251
+ else if (typeof themeName === 'string') {
252
+ baseTheme = (0, themes_1.getTheme)(themeName);
253
+ console.log('🎨 Theme Merge: Using theme name:', themeName);
254
+ }
255
+ else {
256
+ baseTheme = themeName;
257
+ console.log('🎨 Theme Merge: Using theme object');
258
+ }
259
+ // 2. Apply API theme overrides first
260
+ if (apiThemeOverride) {
261
+ console.log('🎨 Theme Merge: Applying API theme override', apiThemeOverride);
262
+ baseTheme = (0, deepMerge_1.deepMerge)(baseTheme, apiThemeOverride);
263
+ }
264
+ else {
265
+ console.log('🎨 Theme Merge: No API theme override');
266
+ }
267
+ // 3. Apply manual theme overrides (has highest priority)
268
+ if (themeOverride) {
269
+ console.log('🎨 Theme Merge: Applying manual theme override', themeOverride);
270
+ baseTheme = (0, deepMerge_1.deepMerge)(baseTheme, themeOverride);
271
+ }
272
+ else {
273
+ console.log('🎨 Theme Merge: No manual theme override');
274
+ }
275
+ console.log('🎨 Theme Merge: Final theme colors:', baseTheme.colors);
276
+ return baseTheme;
277
+ }, [themeName, customTheme, themeOverride, apiThemeOverride]);
278
+ // Component Registry - merge default with custom components
279
+ const componentRegistry = {
280
+ ...defaults_1.defaultComponentRegistry,
281
+ ...customComponents,
282
+ };
283
+ // SDK initialization
284
+ const { sdkReady, error: sdkError } = (0, useSDK_1.useSDK)({
285
+ apiKey,
286
+ apiUrl,
287
+ enableLocalAI,
288
+ onReady,
289
+ onError,
290
+ });
291
+ // Context management with debouncing
292
+ const { currentContext } = (0, useContextManager_1.useContextManager)({
293
+ initialContext: userContext,
294
+ debounceMs: 500,
295
+ });
296
+ // Chat messages and sending
297
+ const { messages, isTyping, isSending, streamingMessage, flatListRef, handleSend, setMessages, } = (0, useChatMessages_1.useChatMessages)({
298
+ enableStreaming,
299
+ context: currentContext,
300
+ contextDescription,
301
+ onMessageSent,
302
+ onResponseReceived,
303
+ onError,
304
+ onNavigationSuggest,
305
+ onApiActionsSuggested,
306
+ onToolSuggested,
307
+ });
308
+ // Combine messages with streaming message for FlatList
309
+ const displayMessages = react_1.default.useMemo(() => {
310
+ if (streamingMessage) {
311
+ // Add streaming message as the last item
312
+ const streamingMsg = {
313
+ id: 'streaming-temp',
314
+ role: 'assistant',
315
+ text: streamingMessage,
316
+ content: streamingMessage,
317
+ timestamp: new Date(),
318
+ isStreaming: true, // Flag to identify streaming message
319
+ };
320
+ return [...messages, streamingMsg];
321
+ }
322
+ return messages;
323
+ }, [messages, streamingMessage]);
324
+ // Load conversation history on SDK ready (DISABLED - causing old messages to persist)
325
+ // TODO: Add enableHistory prop to control this behavior
326
+ // useEffect(() => {
327
+ // if (sdkReady) {
328
+ // loadHistory().then((history) => {
329
+ // setMessages(history);
330
+ // });
331
+ // }
332
+ // }, [sdkReady]);
333
+ // Action handler
334
+ const handleActionClick = (0, AIChatWidget_handlers_1.createActionHandler)({
335
+ onNavigationAction,
336
+ onApiActionExecute,
337
+ onApiActionSuggest,
338
+ componentRegistry,
339
+ setMessages,
340
+ });
341
+ // Styles
342
+ const styles = (0, AIChatWidget_styles_1.getWidgetStyles)(theme);
343
+ // Render message item
344
+ const renderMessage = ({ item }) => (<MessageBubble_1.MessageBubble message={item.text || item.content} role={item.role === 'system' ? 'assistant' : item.role} timestamp={new Date(item.timestamp)} theme={theme} metadata={item.metadata} showTimestamp={showTimestamps} showMetadata={showMetadata} actions={item.actions} onActionPress={handleActionClick} componentRegistry={componentRegistry} toolDefinition={item.toolResponse?.tool} toolResultData={item.toolResponse?.data}/>);
345
+ // Empty state
346
+ const renderEmpty = () => (<react_native_1.View style={styles.emptyStateStyle}>
347
+ <react_native_1.Text style={styles.emptyStateTextStyle}>
348
+ 👋 Hi! I'm your AI assistant.{'\n'}
349
+ How can I help you today?
350
+ </react_native_1.Text>
351
+ </react_native_1.View>);
352
+ // Show loading if theme is being fetched from API
353
+ if (isLoadingTheme && projectId) {
354
+ return (<react_native_1.View style={{
355
+ flex: 1,
356
+ paddingTop: insets.top,
357
+ paddingBottom: insets.bottom,
358
+ }}>
359
+ <react_native_1.View style={[
360
+ styles.containerStyle,
361
+ { justifyContent: 'center', alignItems: 'center' },
362
+ ]}>
363
+ <react_native_1.Text style={styles.emptyStateTextStyle}>Loading theme...</react_native_1.Text>
364
+ </react_native_1.View>
365
+ </react_native_1.View>);
366
+ }
367
+ return (<react_native_1.View style={[{
368
+ flex: 1,
369
+ paddingTop: insets.top,
370
+ paddingBottom: insets.bottom,
371
+ backgroundColor: theme.colors.background,
372
+ }, style]}>
373
+ <react_native_1.KeyboardAvoidingView style={styles.containerStyle} behavior={react_native_1.Platform.OS === 'ios' ? 'padding' : undefined} keyboardVerticalOffset={react_native_1.Platform.OS === 'ios' ? 90 : 0}>
374
+ {/* Header */}
375
+ {/* {showHeader && (
376
+ <View style={styles.headerStyle}>
377
+ <Text style={styles.headerTextStyle}>{title}</Text>
378
+ </View>
379
+ )} */}
380
+
381
+ {/* Error banner */}
382
+ {sdkError && (<react_native_1.View style={styles.errorStyle}>
383
+ <react_native_1.Text style={styles.errorTextStyle}>{sdkError}</react_native_1.Text>
384
+ </react_native_1.View>)}
385
+
386
+ {/* Message List */}
387
+ <react_native_1.FlatList ref={flatListRef} data={displayMessages} renderItem={renderMessage} keyExtractor={(item) => item.id} style={{ flex: 1 }} contentContainerStyle={styles.messageListStyle} ListEmptyComponent={renderEmpty} showsVerticalScrollIndicator={false} onContentSizeChange={() => {
388
+ if (displayMessages.length > 0) {
389
+ flatListRef.current?.scrollToEnd({ animated: true });
390
+ }
391
+ }}/>
392
+
393
+ {/* Typing Indicator */}
394
+ {isTyping && !streamingMessage && (<react_native_1.View style={styles.typingIndicatorContainer}>
395
+ <TypingIndicator_1.TypingIndicator theme={theme}/>
396
+ </react_native_1.View>)}
397
+
398
+ {/* Input Area */}
399
+ <InputArea_1.InputArea theme={theme} placeholder={placeholder} onSend={handleSend} isSending={isSending} disabled={!sdkReady} maxLength={maxMessageLength}/>
400
+ </react_native_1.KeyboardAvoidingView>
401
+ </react_native_1.View>);
402
+ }
403
+ //# sourceMappingURL=AIChatWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.js","sourceRoot":"","sources":["../../src/components/AIChatWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ViewStyle, TextStyle } from 'react-native';
2
+ import { Theme } from '../themes';
3
+ /**
4
+ * Styles for AIChatWidget component
5
+ */
6
+ export declare const getWidgetStyles: (theme: Theme) => {
7
+ containerStyle: ViewStyle;
8
+ headerStyle: ViewStyle;
9
+ headerTextStyle: TextStyle;
10
+ messageListStyle: ViewStyle;
11
+ emptyStateStyle: ViewStyle;
12
+ emptyStateTextStyle: TextStyle;
13
+ errorStyle: ViewStyle;
14
+ errorTextStyle: TextStyle;
15
+ typingIndicatorContainer: ViewStyle;
16
+ };
17
+ //# sourceMappingURL=AIChatWidget.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.styles.d.ts","sourceRoot":"","sources":["../../src/components/AIChatWidget.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK;;;;;;;;;;CAoE3C,CAAC"}