@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,397 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TemplateRenderer = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_native_1 = require("react-native");
9
+ /**
10
+ * TemplateRenderer
11
+ *
12
+ * Renders custom components from JSON templates without code execution.
13
+ * Supports various field types and base templates.
14
+ */
15
+ const TemplateRenderer = ({ template, data, theme, onAction, }) => {
16
+ // Extract value from data using dot notation path
17
+ const getValueFromPath = (path) => {
18
+ if (!path)
19
+ return undefined;
20
+ const keys = path.split('.');
21
+ let value = data;
22
+ for (const key of keys) {
23
+ if (value === null || value === undefined)
24
+ return undefined;
25
+ value = value[key];
26
+ }
27
+ return value;
28
+ };
29
+ // Apply comprehensive template styles
30
+ const applyTemplateStyle = (style) => {
31
+ if (!style)
32
+ return {};
33
+ const appliedStyle = {};
34
+ // Background
35
+ if (style.backgroundColor)
36
+ appliedStyle.backgroundColor = style.backgroundColor;
37
+ // Background gradient (Note: React Native doesn't support CSS gradients natively)
38
+ // You'll need to use react-native-linear-gradient or similar for full gradient support
39
+ // For now, we'll use the first color from gradient if no backgroundColor
40
+ if (style.backgroundGradient && !style.backgroundColor) {
41
+ appliedStyle.backgroundColor = style.backgroundGradient.colors[0];
42
+ }
43
+ // Border
44
+ if (style.borderColor)
45
+ appliedStyle.borderColor = style.borderColor;
46
+ if (style.borderWidth !== undefined)
47
+ appliedStyle.borderWidth = style.borderWidth;
48
+ if (style.borderRadius !== undefined)
49
+ appliedStyle.borderRadius = style.borderRadius;
50
+ // Padding - per-side support
51
+ if (typeof style.padding === 'number') {
52
+ appliedStyle.padding = style.padding;
53
+ }
54
+ else if (style.padding) {
55
+ if (style.padding.top !== undefined)
56
+ appliedStyle.paddingTop = style.padding.top;
57
+ if (style.padding.right !== undefined)
58
+ appliedStyle.paddingRight = style.padding.right;
59
+ if (style.padding.bottom !== undefined)
60
+ appliedStyle.paddingBottom = style.padding.bottom;
61
+ if (style.padding.left !== undefined)
62
+ appliedStyle.paddingLeft = style.padding.left;
63
+ }
64
+ // Margin - per-side support
65
+ if (typeof style.margin === 'number') {
66
+ appliedStyle.margin = style.margin;
67
+ }
68
+ else if (style.margin) {
69
+ if (style.margin.top !== undefined)
70
+ appliedStyle.marginTop = style.margin.top;
71
+ if (style.margin.right !== undefined)
72
+ appliedStyle.marginRight = style.margin.right;
73
+ if (style.margin.bottom !== undefined)
74
+ appliedStyle.marginBottom = style.margin.bottom;
75
+ if (style.margin.left !== undefined)
76
+ appliedStyle.marginLeft = style.margin.left;
77
+ }
78
+ // Shadow
79
+ if (style.shadow) {
80
+ appliedStyle.shadowColor = style.shadow.color || '#000';
81
+ appliedStyle.shadowOpacity = style.shadow.opacity || 0.25;
82
+ appliedStyle.shadowRadius = style.shadow.radius || 3.84;
83
+ if (style.shadow.offset) {
84
+ appliedStyle.shadowOffset = {
85
+ width: style.shadow.offset.x || 0,
86
+ height: style.shadow.offset.y || 2,
87
+ };
88
+ }
89
+ else {
90
+ appliedStyle.shadowOffset = { width: 0, height: 2 };
91
+ }
92
+ appliedStyle.elevation = style.shadow.elevation || 5;
93
+ }
94
+ // Layout constraints (React Native accepts string or number for width/height)
95
+ if (style.width !== undefined)
96
+ appliedStyle.width = style.width;
97
+ if (style.height !== undefined)
98
+ appliedStyle.height = style.height;
99
+ if (style.minWidth !== undefined)
100
+ appliedStyle.minWidth = style.minWidth;
101
+ if (style.maxWidth !== undefined)
102
+ appliedStyle.maxWidth = style.maxWidth;
103
+ if (style.minHeight !== undefined)
104
+ appliedStyle.minHeight = style.minHeight;
105
+ if (style.maxHeight !== undefined)
106
+ appliedStyle.maxHeight = style.maxHeight;
107
+ // Flexbox
108
+ if (style.alignItems)
109
+ appliedStyle.alignItems = style.alignItems;
110
+ if (style.justifyContent)
111
+ appliedStyle.justifyContent = style.justifyContent;
112
+ // Opacity
113
+ if (style.opacity !== undefined)
114
+ appliedStyle.opacity = style.opacity;
115
+ return appliedStyle;
116
+ };
117
+ // Apply field-level styles (for individual fields)
118
+ const applyFieldStyle = (fieldStyle) => {
119
+ if (!fieldStyle)
120
+ return {};
121
+ return {
122
+ margin: fieldStyle.margin,
123
+ padding: fieldStyle.padding,
124
+ backgroundColor: fieldStyle.backgroundColor,
125
+ borderRadius: fieldStyle.borderRadius,
126
+ };
127
+ };
128
+ // Render a single field based on its type
129
+ const renderField = (field, index) => {
130
+ switch (field.type) {
131
+ case 'text':
132
+ return renderTextField(field, index);
133
+ case 'image':
134
+ return renderImageField(field, index);
135
+ case 'badge':
136
+ return renderBadgeField(field, index);
137
+ case 'icon':
138
+ return renderIconField(field, index);
139
+ case 'button':
140
+ return renderButtonField(field, index);
141
+ case 'progress':
142
+ return renderProgressField(field, index);
143
+ case 'divider':
144
+ return renderDividerField(field, index);
145
+ default:
146
+ return null;
147
+ }
148
+ };
149
+ // Render text field
150
+ const renderTextField = (field, index) => {
151
+ const value = getValueFromPath(field.dataPath);
152
+ if (value === undefined || value === null)
153
+ return null;
154
+ const displayValue = `${field.prefix || ''}${value}${field.suffix || ''}`;
155
+ // Map style to theme
156
+ const getFontSize = () => {
157
+ const sizeMap = {
158
+ xs: theme.typography.fontSize.xs,
159
+ sm: theme.typography.fontSize.sm,
160
+ md: theme.typography.fontSize.md,
161
+ lg: theme.typography.fontSize.lg,
162
+ xl: theme.typography.fontSize.xl,
163
+ };
164
+ return sizeMap[field.size || 'md'];
165
+ };
166
+ const getFontWeight = () => {
167
+ const weightMap = {
168
+ regular: theme.typography.fontWeight.regular,
169
+ medium: theme.typography.fontWeight.medium,
170
+ bold: theme.typography.fontWeight.bold,
171
+ };
172
+ return weightMap[field.weight || 'regular'];
173
+ };
174
+ const getColor = () => {
175
+ if (field.color)
176
+ return field.color;
177
+ const styleMap = {
178
+ heading: theme.colors.text,
179
+ body: theme.colors.text,
180
+ caption: theme.colors.textSecondary,
181
+ accent: theme.colors.primary,
182
+ };
183
+ return styleMap[field.style || 'body'];
184
+ };
185
+ // Apply field-level styles
186
+ const fieldStyles = applyFieldStyle(field);
187
+ return (<react_native_1.View key={index} style={fieldStyles}>
188
+ <react_native_1.Text numberOfLines={field.numberOfLines} style={{
189
+ fontSize: getFontSize(),
190
+ fontWeight: getFontWeight(),
191
+ color: getColor(),
192
+ textAlign: field.align || 'left',
193
+ }}>
194
+ {displayValue}
195
+ </react_native_1.Text>
196
+ </react_native_1.View>);
197
+ };
198
+ // Render image field
199
+ const renderImageField = (field, index) => {
200
+ const imageUrl = getValueFromPath(field.dataPath);
201
+ if (!imageUrl && !field.fallbackUrl)
202
+ return null;
203
+ const source = { uri: imageUrl || field.fallbackUrl };
204
+ // Parse width - handle both number and string (e.g., "100%")
205
+ const width = typeof field.width === 'string'
206
+ ? field.width
207
+ : (field.width || 100);
208
+ const imageStyle = {
209
+ width,
210
+ height: field.height || 100,
211
+ borderRadius: field.borderRadius || 0,
212
+ };
213
+ // Apply field-level styles
214
+ const fieldStyles = applyFieldStyle(field);
215
+ return (<react_native_1.View key={index} style={fieldStyles}>
216
+ <react_native_1.Image source={source} resizeMode={field.resizeMode || 'cover'} style={imageStyle}/>
217
+ </react_native_1.View>);
218
+ };
219
+ // Render badge field
220
+ const renderBadgeField = (field, index) => {
221
+ const value = getValueFromPath(field.dataPath);
222
+ if (value === undefined || value === null)
223
+ return null;
224
+ const displayValue = `${field.prefix || ''}${value}${field.suffix || ''}`;
225
+ // Get color from map or use default
226
+ const backgroundColor = field.colorMap?.[value] || field.defaultColor || theme.colors.primary;
227
+ const sizeMap = {
228
+ sm: { padding: 4, fontSize: theme.typography.fontSize.xs },
229
+ md: { padding: 6, fontSize: theme.typography.fontSize.sm },
230
+ lg: { padding: 8, fontSize: theme.typography.fontSize.md },
231
+ };
232
+ const size = sizeMap[field.size || 'md'];
233
+ // Apply field-level styles
234
+ const fieldStyles = applyFieldStyle(field);
235
+ return (<react_native_1.View key={index} style={fieldStyles}>
236
+ <react_native_1.View style={{
237
+ backgroundColor,
238
+ paddingHorizontal: size.padding * 2,
239
+ paddingVertical: size.padding,
240
+ borderRadius: theme.borderRadius.full,
241
+ alignSelf: 'flex-start',
242
+ }}>
243
+ <react_native_1.Text style={{
244
+ color: '#ffffff',
245
+ fontSize: size.fontSize,
246
+ fontWeight: theme.typography.fontWeight.medium,
247
+ }}>
248
+ {displayValue}
249
+ </react_native_1.Text>
250
+ </react_native_1.View>
251
+ </react_native_1.View>);
252
+ };
253
+ // Render icon field
254
+ const renderIconField = (field, index) => {
255
+ const icon = field.dataPath ? getValueFromPath(field.dataPath) : field.staticIcon;
256
+ if (!icon)
257
+ return null;
258
+ // Apply field-level styles
259
+ const fieldStyles = applyFieldStyle(field);
260
+ // For now, just render emoji. Can be extended for icon libraries
261
+ return (<react_native_1.View key={index} style={fieldStyles}>
262
+ <react_native_1.Text style={{
263
+ fontSize: field.size || 24,
264
+ color: field.color,
265
+ }}>
266
+ {icon}
267
+ </react_native_1.Text>
268
+ </react_native_1.View>);
269
+ };
270
+ // Render button field
271
+ const renderButtonField = (field, index) => {
272
+ const getButtonStyle = () => {
273
+ switch (field.style) {
274
+ case 'primary':
275
+ return { backgroundColor: theme.colors.primary, color: '#ffffff' };
276
+ case 'secondary':
277
+ return { backgroundColor: theme.colors.surface, color: theme.colors.text };
278
+ case 'outline':
279
+ return {
280
+ backgroundColor: 'transparent',
281
+ color: theme.colors.primary,
282
+ borderWidth: 1,
283
+ borderColor: theme.colors.primary
284
+ };
285
+ case 'danger':
286
+ return { backgroundColor: '#ef4444', color: '#ffffff' };
287
+ default:
288
+ return { backgroundColor: theme.colors.primary, color: '#ffffff' };
289
+ }
290
+ };
291
+ const buttonStyle = getButtonStyle();
292
+ const sizeMap = {
293
+ sm: { padding: 8, fontSize: theme.typography.fontSize.sm },
294
+ md: { padding: 12, fontSize: theme.typography.fontSize.md },
295
+ lg: { padding: 16, fontSize: theme.typography.fontSize.lg },
296
+ };
297
+ const size = sizeMap[field.size || 'md'];
298
+ // Apply field-level styles
299
+ const fieldStyles = applyFieldStyle(field);
300
+ return (<react_native_1.View key={index} style={fieldStyles}>
301
+ <react_native_1.TouchableOpacity onPress={() => field.action && onAction?.(field.action)} style={{
302
+ backgroundColor: buttonStyle.backgroundColor,
303
+ paddingHorizontal: size.padding * 2,
304
+ paddingVertical: size.padding,
305
+ borderRadius: theme.borderRadius.md,
306
+ borderWidth: buttonStyle.borderWidth,
307
+ borderColor: buttonStyle.borderColor,
308
+ alignItems: 'center',
309
+ ...theme.shadows.small,
310
+ }}>
311
+ <react_native_1.Text style={{
312
+ color: buttonStyle.color,
313
+ fontSize: size.fontSize,
314
+ fontWeight: theme.typography.fontWeight.medium,
315
+ }}>
316
+ {field.label}
317
+ </react_native_1.Text>
318
+ </react_native_1.TouchableOpacity>
319
+ </react_native_1.View>);
320
+ };
321
+ // Render progress field
322
+ const renderProgressField = (field, index) => {
323
+ const value = getValueFromPath(field.dataPath);
324
+ if (value === undefined || value === null)
325
+ return null;
326
+ const min = field.min || 0;
327
+ const max = field.max || 100;
328
+ const percentage = ((value - min) / (max - min)) * 100;
329
+ // Apply field-level styles
330
+ const fieldStyles = applyFieldStyle(field);
331
+ return (<react_native_1.View key={index} style={fieldStyles}>
332
+ <react_native_1.View style={{
333
+ height: field.height || 8,
334
+ backgroundColor: field.backgroundColor || theme.colors.border,
335
+ borderRadius: theme.borderRadius.full,
336
+ overflow: 'hidden',
337
+ }}>
338
+ <react_native_1.View style={{
339
+ height: '100%',
340
+ width: `${percentage}%`,
341
+ backgroundColor: field.color || theme.colors.primary,
342
+ }}/>
343
+ </react_native_1.View>
344
+ {field.showPercentage && (<react_native_1.Text style={{
345
+ fontSize: theme.typography.fontSize.xs,
346
+ color: theme.colors.textSecondary,
347
+ marginTop: 4,
348
+ }}>
349
+ {Math.round(percentage)}%
350
+ </react_native_1.Text>)}
351
+ </react_native_1.View>);
352
+ };
353
+ // Render divider field
354
+ const renderDividerField = (field, index) => {
355
+ // Apply field-level styles
356
+ const fieldStyles = applyFieldStyle(field);
357
+ return (<react_native_1.View key={index} style={fieldStyles}>
358
+ <react_native_1.View style={{
359
+ height: field.thickness || 1,
360
+ backgroundColor: field.color || theme.colors.border,
361
+ marginVertical: field.margin || theme.spacing.md,
362
+ }}/>
363
+ </react_native_1.View>);
364
+ };
365
+ // Get spacing value
366
+ const getSpacing = () => {
367
+ const spacingMap = {
368
+ xs: theme.spacing.xs,
369
+ sm: theme.spacing.sm,
370
+ md: theme.spacing.md,
371
+ lg: theme.spacing.lg,
372
+ xl: theme.spacing.xl,
373
+ };
374
+ return spacingMap[template.spacing || 'md'];
375
+ };
376
+ // Render based on layout
377
+ const renderContent = () => {
378
+ const fields = template.fields || [];
379
+ const spacing = getSpacing();
380
+ // Apply comprehensive template styles
381
+ const templateStyles = applyTemplateStyle(template.style);
382
+ const containerStyle = {
383
+ flexDirection: template.layout === 'horizontal' ? 'row' : 'column',
384
+ gap: spacing,
385
+ ...templateStyles,
386
+ };
387
+ if (template.layout === 'wrap') {
388
+ containerStyle.flexWrap = 'wrap';
389
+ }
390
+ return (<react_native_1.View style={containerStyle}>
391
+ {fields.map((field, index) => renderField(field, index))}
392
+ </react_native_1.View>);
393
+ };
394
+ return renderContent();
395
+ };
396
+ exports.TemplateRenderer = TemplateRenderer;
397
+ //# sourceMappingURL=TemplateRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRenderer.js","sourceRoot":"","sources":["../../src/components/TemplateRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { Theme } from '../themes/types';
3
+ export interface TypingIndicatorProps {
4
+ /**
5
+ * Theme configuration
6
+ */
7
+ theme: Theme;
8
+ /**
9
+ * Size of the dots
10
+ */
11
+ dotSize?: number;
12
+ /**
13
+ * Color of the dots (overrides theme)
14
+ */
15
+ dotColor?: string;
16
+ }
17
+ /**
18
+ * TypingIndicator Component
19
+ *
20
+ * Animated three-dot indicator showing AI is typing.
21
+ * Each dot bounces with a slight delay creating a wave effect.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * {isTyping && <TypingIndicator theme={lightTheme} />}
26
+ * ```
27
+ */
28
+ export declare function TypingIndicator({ theme, dotSize, dotColor, }: TypingIndicatorProps): React.JSX.Element;
29
+ //# sourceMappingURL=TypingIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypingIndicator.d.ts","sourceRoot":"","sources":["../../src/components/TypingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAW,EACX,QAAQ,GACT,EAAE,oBAAoB,qBAsEtB"}
@@ -0,0 +1,110 @@
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.TypingIndicator = TypingIndicator;
37
+ const react_1 = __importStar(require("react"));
38
+ const react_native_1 = require("react-native");
39
+ /**
40
+ * TypingIndicator Component
41
+ *
42
+ * Animated three-dot indicator showing AI is typing.
43
+ * Each dot bounces with a slight delay creating a wave effect.
44
+ *
45
+ * @example
46
+ * ```tsx
47
+ * {isTyping && <TypingIndicator theme={lightTheme} />}
48
+ * ```
49
+ */
50
+ function TypingIndicator({ theme, dotSize = 8, dotColor, }) {
51
+ // Animation values for each dot
52
+ const dot1Anim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
53
+ const dot2Anim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
54
+ const dot3Anim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
55
+ (0, react_1.useEffect)(() => {
56
+ // Create bounce animation for a single dot
57
+ const createBounceAnimation = (animValue, delay) => {
58
+ return react_native_1.Animated.sequence([
59
+ react_native_1.Animated.delay(delay),
60
+ react_native_1.Animated.loop(react_native_1.Animated.sequence([
61
+ react_native_1.Animated.timing(animValue, {
62
+ toValue: -8,
63
+ duration: theme.animation.duration.normal,
64
+ useNativeDriver: true,
65
+ }),
66
+ react_native_1.Animated.timing(animValue, {
67
+ toValue: 0,
68
+ duration: theme.animation.duration.normal,
69
+ useNativeDriver: true,
70
+ }),
71
+ ])),
72
+ ]);
73
+ };
74
+ // Start animations with staggered delays
75
+ const animation = react_native_1.Animated.parallel([
76
+ createBounceAnimation(dot1Anim, 0),
77
+ createBounceAnimation(dot2Anim, 150),
78
+ createBounceAnimation(dot3Anim, 300),
79
+ ]);
80
+ animation.start();
81
+ return () => {
82
+ animation.stop();
83
+ };
84
+ }, [dot1Anim, dot2Anim, dot3Anim, theme.animation.duration.normal]);
85
+ const containerStyle = {
86
+ flexDirection: 'row',
87
+ alignItems: 'center',
88
+ alignSelf: 'flex-start',
89
+ backgroundColor: theme.colors.aiBubble,
90
+ borderRadius: theme.borderRadius.lg,
91
+ paddingHorizontal: theme.spacing.md,
92
+ paddingVertical: theme.spacing.sm + 2,
93
+ marginBottom: theme.spacing.sm,
94
+ ...theme.shadows.small,
95
+ };
96
+ const dotStyle = (animValue) => ({
97
+ width: dotSize,
98
+ height: dotSize,
99
+ borderRadius: dotSize / 2,
100
+ backgroundColor: dotColor || theme.colors.textSecondary,
101
+ marginHorizontal: theme.spacing.xs / 2,
102
+ transform: [{ translateY: animValue }],
103
+ });
104
+ return (<react_native_1.View style={containerStyle}>
105
+ <react_native_1.Animated.View style={dotStyle(dot1Anim)}/>
106
+ <react_native_1.Animated.View style={dotStyle(dot2Anim)}/>
107
+ <react_native_1.Animated.View style={dotStyle(dot3Anim)}/>
108
+ </react_native_1.View>);
109
+ }
110
+ //# sourceMappingURL=TypingIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypingIndicator.js","sourceRoot":"","sources":["../../src/components/TypingIndicator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * DefaultCard Component
3
+ *
4
+ * Generic card component for displaying single data items.
5
+ * Used as fallback when no custom component is registered.
6
+ *
7
+ * Displays:
8
+ * - Title (from first string field or 'title', 'name', 'label')
9
+ * - Description (from 'description', 'subtitle', 'content')
10
+ * - Key-value pairs for remaining fields
11
+ */
12
+ import React from 'react';
13
+ import { ToolComponentProps } from '../../types/components';
14
+ export declare function DefaultCard({ data, theme }: ToolComponentProps): React.JSX.Element | null;
15
+ //# sourceMappingURL=DefaultCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultCard.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/DefaultCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,kBAAkB,4BAgI9D"}