@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,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getWidgetStyles = void 0;
4
+ /**
5
+ * Styles for AIChatWidget component
6
+ */
7
+ const getWidgetStyles = (theme) => {
8
+ const containerStyle = {
9
+ flex: 1,
10
+ backgroundColor: theme.colors.background,
11
+ };
12
+ const headerStyle = {
13
+ paddingHorizontal: theme.spacing.md,
14
+ paddingVertical: theme.spacing.md,
15
+ backgroundColor: theme.colors.surface,
16
+ borderBottomWidth: 1,
17
+ borderBottomColor: theme.colors.border,
18
+ ...theme.shadows.small,
19
+ };
20
+ const headerTextStyle = {
21
+ fontSize: theme.typography.fontSize.lg,
22
+ fontWeight: theme.typography.fontWeight.semibold,
23
+ color: theme.colors.text,
24
+ };
25
+ const messageListStyle = {
26
+ paddingHorizontal: theme.spacing.md,
27
+ paddingTop: theme.spacing.md,
28
+ paddingBottom: theme.spacing.md,
29
+ };
30
+ const emptyStateStyle = {
31
+ flex: 1,
32
+ alignItems: 'center',
33
+ justifyContent: 'center',
34
+ padding: theme.spacing.xl,
35
+ };
36
+ const emptyStateTextStyle = {
37
+ fontSize: theme.typography.fontSize.md,
38
+ color: theme.colors.textSecondary,
39
+ textAlign: 'center',
40
+ };
41
+ const errorStyle = {
42
+ backgroundColor: theme.colors.error,
43
+ padding: theme.spacing.sm,
44
+ margin: theme.spacing.md,
45
+ borderRadius: theme.borderRadius.md,
46
+ };
47
+ const errorTextStyle = {
48
+ color: theme.colors.textInverse,
49
+ fontSize: theme.typography.fontSize.sm,
50
+ textAlign: 'center',
51
+ };
52
+ const typingIndicatorContainer = {
53
+ paddingHorizontal: theme.spacing.md,
54
+ };
55
+ return {
56
+ containerStyle,
57
+ headerStyle,
58
+ headerTextStyle,
59
+ messageListStyle,
60
+ emptyStateStyle,
61
+ emptyStateTextStyle,
62
+ errorStyle,
63
+ errorTextStyle,
64
+ typingIndicatorContainer,
65
+ };
66
+ };
67
+ exports.getWidgetStyles = getWidgetStyles;
68
+ //# sourceMappingURL=AIChatWidget.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.styles.js","sourceRoot":"","sources":["../../src/components/AIChatWidget.styles.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACI,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE;IAC9C,MAAM,cAAc,GAAc;QAChC,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;KACzC,CAAC;IAEF,MAAM,WAAW,GAAc;QAC7B,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACnC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACjC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;QACrC,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QACtC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK;KACvB,CAAC;IAEF,MAAM,eAAe,GAAc;QACjC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ;QAChD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;KACzB,CAAC;IAEF,MAAM,gBAAgB,GAAc;QAClC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACnC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAC5B,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;KAChC,CAAC;IAEF,MAAM,eAAe,GAAc;QACjC,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;KAC1B,CAAC;IAEF,MAAM,mBAAmB,GAAc;QACrC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACtC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACjC,SAAS,EAAE,QAAQ;KACpB,CAAC;IAEF,MAAM,UAAU,GAAc;QAC5B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE;KACpC,CAAC;IAEF,MAAM,cAAc,GAAc;QAChC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACtC,SAAS,EAAE,QAAQ;KACpB,CAAC;IAEF,MAAM,wBAAwB,GAAc;QAC1C,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;KACpC,CAAC;IAEF,OAAO;QACL,cAAc;QACd,WAAW;QACX,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,UAAU;QACV,cAAc;QACd,wBAAwB;KACzB,CAAC;AACJ,CAAC,CAAC;AApEW,QAAA,eAAe,mBAoE1B"}
@@ -0,0 +1,250 @@
1
+ import { ViewStyle } from 'react-native';
2
+ import { Theme, ThemeOverride } from '../themes';
3
+ import { ComponentRegistry } from '../types/components';
4
+ /**
5
+ * Props for AIChatWidget Component
6
+ *
7
+ * 🚀 Zero-Config Support:
8
+ * All config props (apiKey, projectId, apiUrl) are OPTIONAL!
9
+ * SDK automatically loads from:
10
+ * 1. Props (highest priority)
11
+ * 2. Environment variables (AICHAT_API_KEY, AICHAT_PROJECT_ID, AICHAT_API_URL)
12
+ * 3. Config file (aichat.config.js in project root)
13
+ *
14
+ * @example
15
+ * // Zero-config usage (loads from aichat.config.js or env)
16
+ * <AIChatWidget />
17
+ *
18
+ * @example
19
+ * // Explicit config
20
+ * <AIChatWidget
21
+ * apiKey="aichat_pk_xxx"
22
+ * projectId="68e4c834c62d2ff6533d6fb0"
23
+ * />
24
+ *
25
+ * @example
26
+ * // Multi-key support (in aichat.config.js)
27
+ * module.exports = {
28
+ * keys: {
29
+ * ios: 'aichat_pk_ios_xxx',
30
+ * android: 'aichat_pk_android_xxx'
31
+ * },
32
+ * projectId: 'xxx'
33
+ * }
34
+ */
35
+ export interface AIChatWidgetProps {
36
+ style?: ViewStyle;
37
+ /**
38
+ * API Key for the SDK (OPTIONAL)
39
+ *
40
+ * Use this for single-key setup (same key for all platforms).
41
+ * For platform-specific keys, use `keys` prop instead.
42
+ *
43
+ * Priority order:
44
+ * 1. This prop (highest)
45
+ * 2. AICHAT_API_KEY environment variable
46
+ * 3. aichat.config.js → apiKey or keys object
47
+ *
48
+ * @example "aichat_test_pk_1759823924751-zw3f0ofib"
49
+ */
50
+ apiKey?: string;
51
+ /**
52
+ * Platform-specific API Keys (OPTIONAL)
53
+ *
54
+ * Use this for multi-platform setup (different keys for iOS/Android/Web).
55
+ * SDK auto-selects the correct key based on Platform.OS.
56
+ *
57
+ * Priority order:
58
+ * 1. This prop (highest)
59
+ * 2. aichat.config.js → keys object
60
+ *
61
+ * @example { ios: 'aichat_pk_ios_xxx', android: 'aichat_pk_android_xxx' }
62
+ */
63
+ keys?: {
64
+ [platform: string]: string;
65
+ };
66
+ /**
67
+ * Platform selection (OPTIONAL)
68
+ *
69
+ * Force a specific platform key selection from `keys` object.
70
+ * Defaults to 'auto' which uses Platform.OS.
71
+ *
72
+ * @example 'ios' | 'android' | 'web' | 'auto'
73
+ */
74
+ platform?: 'ios' | 'android' | 'web' | 'auto' | string;
75
+ /**
76
+ * API URL (OPTIONAL)
77
+ *
78
+ * Priority order:
79
+ * 1. This prop (highest)
80
+ * 2. AICHAT_API_URL environment variable
81
+ * 3. aichat.config.js → apiUrl
82
+ * 4. Default: http://localhost:3001/api/v1
83
+ *
84
+ * @example "https://api.aichat.com/v1"
85
+ */
86
+ apiUrl?: string;
87
+ /**
88
+ * Project ID (OPTIONAL but RECOMMENDED)
89
+ *
90
+ * Priority order:
91
+ * 1. This prop (highest)
92
+ * 2. AICHAT_PROJECT_ID environment variable
93
+ * 3. aichat.config.js → projectId
94
+ *
95
+ * If provided, theme will be automatically fetched from API.
96
+ * Required for: Theme loading, Analytics, Project-specific settings
97
+ *
98
+ * @example "68e4c834c62d2ff6533d6fb0"
99
+ */
100
+ projectId?: string;
101
+ /**
102
+ * Widget display mode
103
+ */
104
+ mode?: 'fullscreen' | 'inline' | 'floating';
105
+ /**
106
+ * Theme mode or custom theme object
107
+ */
108
+ theme?: 'light' | 'dark' | Theme;
109
+ /**
110
+ * Theme overrides (partial theme)
111
+ * Allows overriding specific theme properties without replacing the entire theme
112
+ * @example { colors: { background: '#FF0000' } }
113
+ */
114
+ themeOverride?: ThemeOverride;
115
+ /**
116
+ * Custom theme (overrides theme prop)
117
+ * @deprecated Use themeOverride instead for partial overrides
118
+ */
119
+ customTheme?: Theme;
120
+ /**
121
+ * Enable local AI processing
122
+ */
123
+ enableLocalAI?: boolean;
124
+ /**
125
+ * 🆕 Enable streaming responses (real-time typing effect)
126
+ */
127
+ enableStreaming?: boolean;
128
+ /**
129
+ * 🆕 Context object for Tool Registry
130
+ * Provides runtime context to match and execute tools
131
+ * @example { selectedShoppingMallId: '123', userId: '456', isAuthenticated: true }
132
+ */
133
+ context?: Record<string, any>;
134
+ /**
135
+ * 🆕 Context description for AI
136
+ * Helps AI understand what context keys mean
137
+ * @example "User is in Mall X, viewing Campaigns section"
138
+ */
139
+ contextDescription?: string;
140
+ /**
141
+ * 🆕 Custom component registry for Tool Registry responses
142
+ * Register your own components to render tool responses
143
+ * @example { CampaignCard: MyCampaignCard, ProductCard: MyProductCard }
144
+ */
145
+ components?: ComponentRegistry;
146
+ /**
147
+ * Show message metadata (handled by, confidence, tokens)
148
+ */
149
+ showMetadata?: boolean;
150
+ /**
151
+ * Show timestamps on messages
152
+ */
153
+ showTimestamps?: boolean;
154
+ /**
155
+ * Input placeholder text
156
+ */
157
+ placeholder?: string;
158
+ /**
159
+ * Header title
160
+ */
161
+ title?: string;
162
+ /**
163
+ * Show header
164
+ */
165
+ showHeader?: boolean;
166
+ /**
167
+ * Maximum message length
168
+ */
169
+ maxMessageLength?: number;
170
+ /**
171
+ * Callback when widget is ready
172
+ */
173
+ onReady?: () => void;
174
+ /**
175
+ * Callback when message is sent
176
+ */
177
+ onMessageSent?: (message: string) => void;
178
+ /**
179
+ * Callback when response is received
180
+ */
181
+ onResponseReceived?: (response: any) => void;
182
+ /**
183
+ * Callback on error
184
+ */
185
+ onError?: (error: Error) => void;
186
+ /**
187
+ * Callback when navigation is suggested (always triggered)
188
+ */
189
+ onNavigationSuggest?: (suggestion: any) => void;
190
+ /**
191
+ * Callback when navigation button is pressed by user
192
+ */
193
+ onNavigationAction?: (suggestion: any) => void;
194
+ /**
195
+ * Callback when API actions are suggested (informational)
196
+ */
197
+ onApiActionsSuggested?: (suggestions: any[]) => void;
198
+ /**
199
+ * 🆕 Callback when Tool Registry suggests tools
200
+ * Called during streaming when backend identifies matching tools
201
+ * @param tools - Array of matched tool definitions with relevance scores and customData
202
+ * @param addResponse - Helper function to add tool response to chat
203
+ * @example
204
+ * onToolSuggested={async (tools, addResponse) => {
205
+ * const tool = tools[0];
206
+ * // tool.customData contains dashboard-configured custom data
207
+ * const response = await fetch(tool.customData.apiBaseUrl + tool.endpoint);
208
+ * addResponse(tool.key, await response.json(), tool);
209
+ * }}
210
+ */
211
+ onToolSuggested?: (tools: any[], addResponse: (toolKey: string, data: any, tool: any) => void) => void | Promise<void>;
212
+ /**
213
+ * 🆕 Enhanced: Callback when API action button is pressed by user
214
+ * Developer executes the API call and returns result via callback
215
+ *
216
+ * @param action - API action details (method, endpoint, params)
217
+ * @param toolDefinition - Full tool definition from Tool Registry (if available)
218
+ * @param mappedParameters - Parameters mapped from context/AI/user input
219
+ * @param complete - Callback to return result with optional rendering hints
220
+ */
221
+ onApiActionExecute?: (action: any, toolDefinition: any | null, mappedParameters: Record<string, any> | null, complete: (result: ApiActionResult) => void) => void;
222
+ /**
223
+ * @deprecated Use onApiActionsSuggested + onApiActionExecute instead
224
+ * Legacy callback for API actions
225
+ */
226
+ onApiActionSuggest?: (suggestions: any[], executeAction: (actionId: string, result: any) => void) => void;
227
+ }
228
+ /**
229
+ * Result type for API action execution
230
+ */
231
+ export interface ApiActionResult {
232
+ success: boolean;
233
+ data?: any;
234
+ error?: string;
235
+ renderAs?: 'list' | 'card' | 'detail' | 'table' | 'raw';
236
+ itemComponent?: string;
237
+ maxItems?: number;
238
+ }
239
+ /**
240
+ * Action button type
241
+ */
242
+ export interface ActionButton {
243
+ id: string;
244
+ type: 'navigation' | 'api' | 'custom';
245
+ label: string;
246
+ icon?: string;
247
+ data: any;
248
+ style?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning';
249
+ }
250
+ //# sourceMappingURL=AIChatWidget.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.types.d.ts","sourceRoot":"","sources":["../../src/components/AIChatWidget.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AIChatWidget.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.types.js","sourceRoot":"","sources":["../../src/components/AIChatWidget.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Utility functions for AIChatWidget
3
+ */
4
+ /**
5
+ * Generate user-friendly summary from API response
6
+ */
7
+ export declare const generateApiSummary: (action: any, data: any) => string;
8
+ /**
9
+ * Build action buttons from API response
10
+ */
11
+ export declare const buildActionButtons: (response: any) => any[];
12
+ //# sourceMappingURL=AIChatWidget.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.utils.d.ts","sourceRoot":"","sources":["../../src/components/AIChatWidget.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,GAAG,EAAE,MAAM,GAAG,KAAG,MAuE3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,GAAG,KAAG,GAAG,EA8BrD,CAAC"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for AIChatWidget
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildActionButtons = exports.generateApiSummary = void 0;
7
+ /**
8
+ * Generate user-friendly summary from API response
9
+ */
10
+ const generateApiSummary = (action, data) => {
11
+ const endpoint = action.endpoint || '';
12
+ // Points endpoint
13
+ if (endpoint.includes('/points') || endpoint.includes('/puan')) {
14
+ const total = data.totalPoints || data.total || data.points || 0;
15
+ return `🎉 **Toplam Puanınız:** ${total.toLocaleString()}
16
+
17
+ ${data.mainPoints ? `• Ana hesap: ${data.mainPoints.toLocaleString()}` : ''}
18
+ ${data.bonusPoints ? `• Bonus: ${data.bonusPoints.toLocaleString()}` : ''}
19
+ ${data.pendingPoints ? `• Bekleyen: ${data.pendingPoints.toLocaleString()}` : ''}
20
+
21
+ ${data.lastEarned ? `Son kazanç: ${data.lastEarned.amount || 0} puan` : ''}`.trim();
22
+ }
23
+ // Campaigns endpoint
24
+ if (endpoint.includes('/campaign')) {
25
+ const campaigns = data.data || data.campaigns || (Array.isArray(data) ? data : []);
26
+ const total = data.total || campaigns.length || 0;
27
+ const preview = campaigns.slice(0, 3);
28
+ return `📋 **${total} kampanya bulundu**
29
+
30
+ ${preview.map((c) => `• **${c.title || c.name}**${c.description ? `\n ${c.description.slice(0, 60)}...` : ''}`).join('\n\n')}
31
+
32
+ ${total > 3 ? `\n...ve ${total - 3} kampanya daha` : ''}`.trim();
33
+ }
34
+ // Products endpoint
35
+ if (endpoint.includes('/product')) {
36
+ const products = data.data || data.products || (Array.isArray(data) ? data : []);
37
+ const total = data.total || products.length || 0;
38
+ const preview = products.slice(0, 3);
39
+ return `🛍️ **${total} ürün bulundu**
40
+
41
+ ${preview.map((p) => `• **${p.name || p.title}**${p.price ? ` - ${p.price} TL` : ''}`).join('\n')}
42
+
43
+ ${total > 3 ? `\n...ve ${total - 3} ürün daha` : ''}`.trim();
44
+ }
45
+ // User profile endpoint
46
+ if (endpoint.includes('/user') || endpoint.includes('/profile')) {
47
+ return `👤 **Profil Bilgileri**
48
+
49
+ ${data.name ? `• İsim: ${data.name}` : ''}
50
+ ${data.email ? `• E-posta: ${data.email}` : ''}
51
+ ${data.phone ? `• Telefon: ${data.phone}` : ''}
52
+ ${data.memberSince ? `• Üyelik: ${data.memberSince}` : ''}`.trim();
53
+ }
54
+ // Default: Format as readable JSON
55
+ try {
56
+ const formatted = JSON.stringify(data, null, 2);
57
+ if (formatted.length > 300) {
58
+ return `✅ **İşlem tamamlandı!**
59
+
60
+ \`\`\`json
61
+ ${formatted.slice(0, 300)}...
62
+ \`\`\`
63
+
64
+ _Detayları görmek için aşağıdaki butonu kullanın._`;
65
+ }
66
+ return `✅ **İşlem tamamlandı!**
67
+
68
+ \`\`\`json
69
+ ${formatted}
70
+ \`\`\``;
71
+ }
72
+ catch {
73
+ return '✅ İşlem başarıyla tamamlandı!';
74
+ }
75
+ };
76
+ exports.generateApiSummary = generateApiSummary;
77
+ /**
78
+ * Build action buttons from API response
79
+ */
80
+ const buildActionButtons = (response) => {
81
+ const actionButtons = [];
82
+ // Add navigation button if available
83
+ if (response.navigationSuggestion) {
84
+ actionButtons.push({
85
+ id: `nav-${Date.now()}`,
86
+ type: 'navigation',
87
+ label: response.navigationSuggestion.message || `Go to ${response.navigationSuggestion.screenName}`,
88
+ icon: '🧭',
89
+ data: response.navigationSuggestion,
90
+ style: 'primary',
91
+ });
92
+ }
93
+ // Add API action buttons if available
94
+ if (response.apiSuggestions && response.apiSuggestions.length > 0) {
95
+ response.apiSuggestions.forEach((suggestion) => {
96
+ actionButtons.push({
97
+ id: suggestion.id,
98
+ type: 'api',
99
+ label: suggestion.description,
100
+ icon: suggestion.method === 'GET' ? '📥' : suggestion.method === 'POST' ? '📤' : '🔄',
101
+ data: suggestion,
102
+ style: suggestion.risk === 'low' ? 'success' : suggestion.risk === 'high' ? 'danger' : 'warning',
103
+ });
104
+ });
105
+ }
106
+ return actionButtons;
107
+ };
108
+ exports.buildActionButtons = buildActionButtons;
109
+ //# sourceMappingURL=AIChatWidget.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.utils.js","sourceRoot":"","sources":["../../src/components/AIChatWidget.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { ConfigResult } from '../types/config';
3
+ interface ConfigErrorProps {
4
+ /**
5
+ * Config result with missing fields info
6
+ */
7
+ result: ConfigResult;
8
+ /**
9
+ * Custom error title
10
+ */
11
+ title?: string;
12
+ /**
13
+ * Custom error message
14
+ */
15
+ message?: string;
16
+ }
17
+ /**
18
+ * ConfigError Component
19
+ *
20
+ * Displays a helpful error screen when AIChatSDK configuration is missing.
21
+ * Shows setup instructions with CLI command and documentation link.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * const configResult = useAIChatConfig({});
26
+ * if (!configResult.config) {
27
+ * return <ConfigError result={configResult} />;
28
+ * }
29
+ * ```
30
+ */
31
+ export declare function ConfigError({ result, title, message }: ConfigErrorProps): React.JSX.Element;
32
+ export {};
33
+ //# sourceMappingURL=ConfigError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigError.d.ts","sourceRoot":"","sources":["../../src/components/ConfigError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,gBAAgB;IACxB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,qBAiEvE"}