@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.
- package/LICENSE +22 -0
- package/README.md +528 -0
- package/dist/AIChatSDK.d.ts +75 -0
- package/dist/AIChatSDK.d.ts.map +1 -0
- package/dist/AIChatSDK.js +357 -0
- package/dist/AIChatSDK.js.map +1 -0
- package/dist/components/AIChatProvider.d.ts +25 -0
- package/dist/components/AIChatProvider.d.ts.map +1 -0
- package/dist/components/AIChatProvider.js +93 -0
- package/dist/components/AIChatProvider.js.map +1 -0
- package/dist/components/AIChatWidget.d.ts +62 -0
- package/dist/components/AIChatWidget.d.ts.map +1 -0
- package/dist/components/AIChatWidget.handlers.d.ts +15 -0
- package/dist/components/AIChatWidget.handlers.d.ts.map +1 -0
- package/dist/components/AIChatWidget.handlers.js +180 -0
- package/dist/components/AIChatWidget.handlers.js.map +1 -0
- package/dist/components/AIChatWidget.js +403 -0
- package/dist/components/AIChatWidget.js.map +1 -0
- package/dist/components/AIChatWidget.styles.d.ts +17 -0
- package/dist/components/AIChatWidget.styles.d.ts.map +1 -0
- package/dist/components/AIChatWidget.styles.js +68 -0
- package/dist/components/AIChatWidget.styles.js.map +1 -0
- package/dist/components/AIChatWidget.types.d.ts +250 -0
- package/dist/components/AIChatWidget.types.d.ts.map +1 -0
- package/dist/components/AIChatWidget.types.js +3 -0
- package/dist/components/AIChatWidget.types.js.map +1 -0
- package/dist/components/AIChatWidget.utils.d.ts +12 -0
- package/dist/components/AIChatWidget.utils.d.ts.map +1 -0
- package/dist/components/AIChatWidget.utils.js +109 -0
- package/dist/components/AIChatWidget.utils.js.map +1 -0
- package/dist/components/ConfigError.d.ts +33 -0
- package/dist/components/ConfigError.d.ts.map +1 -0
- package/dist/components/ConfigError.js +195 -0
- package/dist/components/ConfigError.js.map +1 -0
- package/dist/components/FloatingButton.d.ts +12 -0
- package/dist/components/FloatingButton.d.ts.map +1 -0
- package/dist/components/FloatingButton.js +163 -0
- package/dist/components/FloatingButton.js.map +1 -0
- package/dist/components/InputArea.d.ts +58 -0
- package/dist/components/InputArea.d.ts.map +1 -0
- package/dist/components/InputArea.js +135 -0
- package/dist/components/InputArea.js.map +1 -0
- package/dist/components/MarkdownText.d.ts +16 -0
- package/dist/components/MarkdownText.d.ts.map +1 -0
- package/dist/components/MarkdownText.js +263 -0
- package/dist/components/MarkdownText.js.map +1 -0
- package/dist/components/MessageBubble.d.ts +101 -0
- package/dist/components/MessageBubble.d.ts.map +1 -0
- package/dist/components/MessageBubble.js +377 -0
- package/dist/components/MessageBubble.js.map +1 -0
- package/dist/components/NavigationSuggestion.d.ts +13 -0
- package/dist/components/NavigationSuggestion.d.ts.map +1 -0
- package/dist/components/NavigationSuggestion.js +117 -0
- package/dist/components/NavigationSuggestion.js.map +1 -0
- package/dist/components/QuickReplies.d.ts +15 -0
- package/dist/components/QuickReplies.d.ts.map +1 -0
- package/dist/components/QuickReplies.js +49 -0
- package/dist/components/QuickReplies.js.map +1 -0
- package/dist/components/TemplateRenderer.d.ts +17 -0
- package/dist/components/TemplateRenderer.d.ts.map +1 -0
- package/dist/components/TemplateRenderer.js +397 -0
- package/dist/components/TemplateRenderer.js.map +1 -0
- package/dist/components/TypingIndicator.d.ts +29 -0
- package/dist/components/TypingIndicator.d.ts.map +1 -0
- package/dist/components/TypingIndicator.js +110 -0
- package/dist/components/TypingIndicator.js.map +1 -0
- package/dist/components/defaults/DefaultCard.d.ts +15 -0
- package/dist/components/defaults/DefaultCard.d.ts.map +1 -0
- package/dist/components/defaults/DefaultCard.js +157 -0
- package/dist/components/defaults/DefaultCard.js.map +1 -0
- package/dist/components/defaults/DefaultDetail.d.ts +15 -0
- package/dist/components/defaults/DefaultDetail.d.ts.map +1 -0
- package/dist/components/defaults/DefaultDetail.js +139 -0
- package/dist/components/defaults/DefaultDetail.js.map +1 -0
- package/dist/components/defaults/DefaultList.d.ts +13 -0
- package/dist/components/defaults/DefaultList.d.ts.map +1 -0
- package/dist/components/defaults/DefaultList.js +99 -0
- package/dist/components/defaults/DefaultList.js.map +1 -0
- package/dist/components/defaults/DefaultTable.d.ts +15 -0
- package/dist/components/defaults/DefaultTable.d.ts.map +1 -0
- package/dist/components/defaults/DefaultTable.js +205 -0
- package/dist/components/defaults/DefaultTable.js.map +1 -0
- package/dist/components/defaults/index.d.ts +15 -0
- package/dist/components/defaults/index.d.ts.map +1 -0
- package/dist/components/defaults/index.js +26 -0
- package/dist/components/defaults/index.js.map +1 -0
- package/dist/components/index.d.ts +17 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +33 -0
- package/dist/components/index.js.map +1 -0
- package/dist/constants.d.ts +41 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +52 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/useAIChatConfig.d.ts +61 -0
- package/dist/hooks/useAIChatConfig.d.ts.map +1 -0
- package/dist/hooks/useAIChatConfig.js +95 -0
- package/dist/hooks/useAIChatConfig.js.map +1 -0
- package/dist/hooks/useChatMessages.d.ts +27 -0
- package/dist/hooks/useChatMessages.d.ts.map +1 -0
- package/dist/hooks/useChatMessages.js +255 -0
- package/dist/hooks/useChatMessages.js.map +1 -0
- package/dist/hooks/useContextManager.d.ts +13 -0
- package/dist/hooks/useContextManager.d.ts.map +1 -0
- package/dist/hooks/useContextManager.js +42 -0
- package/dist/hooks/useContextManager.js.map +1 -0
- package/dist/hooks/useSDK.d.ts +18 -0
- package/dist/hooks/useSDK.d.ts.map +1 -0
- package/dist/hooks/useSDK.js +64 -0
- package/dist/hooks/useSDK.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/TemplateRegistry.d.ts +48 -0
- package/dist/registry/TemplateRegistry.d.ts.map +1 -0
- package/dist/registry/TemplateRegistry.js +77 -0
- package/dist/registry/TemplateRegistry.js.map +1 -0
- package/dist/registry/index.d.ts +5 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +9 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/services/BackendService.d.ts +47 -0
- package/dist/services/BackendService.d.ts.map +1 -0
- package/dist/services/BackendService.js +362 -0
- package/dist/services/BackendService.js.map +1 -0
- package/dist/services/ConversationManager.d.ts +40 -0
- package/dist/services/ConversationManager.d.ts.map +1 -0
- package/dist/services/ConversationManager.js +95 -0
- package/dist/services/ConversationManager.js.map +1 -0
- package/dist/services/LocalAIClassifier.d.ts +32 -0
- package/dist/services/LocalAIClassifier.d.ts.map +1 -0
- package/dist/services/LocalAIClassifier.js +149 -0
- package/dist/services/LocalAIClassifier.js.map +1 -0
- package/dist/services/NavigationHandler.d.ts +30 -0
- package/dist/services/NavigationHandler.d.ts.map +1 -0
- package/dist/services/NavigationHandler.js +74 -0
- package/dist/services/NavigationHandler.js.map +1 -0
- package/dist/themes/dark.d.ts +6 -0
- package/dist/themes/dark.d.ts.map +1 -0
- package/dist/themes/dark.js +130 -0
- package/dist/themes/dark.js.map +1 -0
- package/dist/themes/index.d.ts +13 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +34 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/light.d.ts +6 -0
- package/dist/themes/light.d.ts.map +1 -0
- package/dist/themes/light.js +130 -0
- package/dist/themes/light.js.map +1 -0
- package/dist/themes/types.d.ts +143 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/themes/types.js +6 -0
- package/dist/themes/types.js.map +1 -0
- package/dist/types/api.d.ts +118 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +6 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/chat.d.ts +154 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +6 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/components.d.ts +69 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/components.js +17 -0
- package/dist/types/components.js.map +1 -0
- package/dist/types/config.d.ts +122 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +18 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/document.d.ts +108 -0
- package/dist/types/document.d.ts.map +1 -0
- package/dist/types/document.js +7 -0
- package/dist/types/document.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +31 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/local-ai.d.ts +48 -0
- package/dist/types/local-ai.d.ts.map +1 -0
- package/dist/types/local-ai.js +17 -0
- package/dist/types/local-ai.js.map +1 -0
- package/dist/types/navigation.d.ts +89 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/navigation.js +6 -0
- package/dist/types/navigation.js.map +1 -0
- package/dist/types/sdk.d.ts +47 -0
- package/dist/types/sdk.d.ts.map +1 -0
- package/dist/types/sdk.js +6 -0
- package/dist/types/sdk.js.map +1 -0
- package/dist/types/template.d.ts +220 -0
- package/dist/types/template.d.ts.map +1 -0
- package/dist/types/template.js +8 -0
- package/dist/types/template.js.map +1 -0
- package/dist/utils/configLoader.d.ts +69 -0
- package/dist/utils/configLoader.d.ts.map +1 -0
- package/dist/utils/configLoader.js +278 -0
- package/dist/utils/configLoader.js.map +1 -0
- package/dist/utils/deepMerge.d.ts +47 -0
- package/dist/utils/deepMerge.d.ts.map +1 -0
- package/dist/utils/deepMerge.js +71 -0
- package/dist/utils/deepMerge.js.map +1 -0
- 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"}
|