vdb-ai-chat 1.0.78 → 1.0.80

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 (79) hide show
  1. package/dist/chat-widget.js +189 -164
  2. package/dist/chat-widget.js.LICENSE.txt +2 -0
  3. package/lib/commonjs/api.js +84 -4
  4. package/lib/commonjs/api.js.map +1 -1
  5. package/lib/commonjs/components/ChatInput.js +227 -65
  6. package/lib/commonjs/components/ChatInput.js.map +1 -1
  7. package/lib/commonjs/components/ChatWidget.js +6 -2
  8. package/lib/commonjs/components/ChatWidget.js.map +1 -1
  9. package/lib/commonjs/components/MessageBubble.js +22 -2
  10. package/lib/commonjs/components/MessageBubble.js.map +1 -1
  11. package/lib/commonjs/components/icons/VDBCustomIcon.js +54 -0
  12. package/lib/commonjs/components/icons/VDBCustomIcon.js.map +1 -0
  13. package/lib/commonjs/components/icons/VDBIcon.js +141 -0
  14. package/lib/commonjs/components/icons/VDBIcon.js.map +1 -0
  15. package/lib/commonjs/components/icons/VDBIcons.js +16 -0
  16. package/lib/commonjs/components/icons/VDBIcons.js.map +1 -0
  17. package/lib/commonjs/components/icons/index.js +34 -0
  18. package/lib/commonjs/components/icons/index.js.map +1 -0
  19. package/lib/commonjs/index.js +29 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/index.native.js +30 -1
  22. package/lib/commonjs/index.native.js.map +1 -1
  23. package/lib/commonjs/routes.js +1 -0
  24. package/lib/commonjs/routes.js.map +1 -1
  25. package/lib/module/api.js +81 -5
  26. package/lib/module/api.js.map +1 -1
  27. package/lib/module/components/ChatInput.js +228 -66
  28. package/lib/module/components/ChatInput.js.map +1 -1
  29. package/lib/module/components/ChatWidget.js +6 -2
  30. package/lib/module/components/ChatWidget.js.map +1 -1
  31. package/lib/module/components/MessageBubble.js +22 -2
  32. package/lib/module/components/MessageBubble.js.map +1 -1
  33. package/lib/module/components/icons/VDBCustomIcon.js +47 -0
  34. package/lib/module/components/icons/VDBCustomIcon.js.map +1 -0
  35. package/lib/module/components/icons/VDBIcon.js +134 -0
  36. package/lib/module/components/icons/VDBIcon.js.map +1 -0
  37. package/lib/module/components/icons/VDBIcons.js +10 -0
  38. package/lib/module/components/icons/VDBIcons.js.map +1 -0
  39. package/lib/module/components/icons/index.js +3 -0
  40. package/lib/module/components/icons/index.js.map +1 -0
  41. package/lib/module/index.js +1 -1
  42. package/lib/module/index.js.map +1 -1
  43. package/lib/module/index.native.js +1 -0
  44. package/lib/module/index.native.js.map +1 -1
  45. package/lib/module/routes.js +1 -0
  46. package/lib/module/routes.js.map +1 -1
  47. package/lib/typescript/api.d.ts +22 -0
  48. package/lib/typescript/api.d.ts.map +1 -1
  49. package/lib/typescript/components/ChatInput.d.ts +4 -0
  50. package/lib/typescript/components/ChatInput.d.ts.map +1 -1
  51. package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
  52. package/lib/typescript/components/MessageBubble.d.ts +2 -0
  53. package/lib/typescript/components/MessageBubble.d.ts.map +1 -1
  54. package/lib/typescript/components/icons/VDBCustomIcon.d.ts +11 -0
  55. package/lib/typescript/components/icons/VDBCustomIcon.d.ts.map +1 -0
  56. package/lib/typescript/components/icons/VDBIcon.d.ts +34 -0
  57. package/lib/typescript/components/icons/VDBIcon.d.ts.map +1 -0
  58. package/lib/typescript/components/icons/VDBIcons.d.ts +9 -0
  59. package/lib/typescript/components/icons/VDBIcons.d.ts.map +1 -0
  60. package/lib/typescript/components/icons/index.d.ts +5 -0
  61. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  62. package/lib/typescript/index.d.ts +2 -0
  63. package/lib/typescript/index.d.ts.map +1 -1
  64. package/lib/typescript/index.native.d.ts +2 -0
  65. package/lib/typescript/index.native.d.ts.map +1 -1
  66. package/lib/typescript/routes.d.ts +1 -0
  67. package/lib/typescript/routes.d.ts.map +1 -1
  68. package/package.json +18 -2
  69. package/src/api.ts +147 -3
  70. package/src/components/ChatInput.tsx +360 -83
  71. package/src/components/ChatWidget.tsx +9 -0
  72. package/src/components/MessageBubble.tsx +27 -1
  73. package/src/components/icons/VDBCustomIcon.tsx +74 -0
  74. package/src/components/icons/VDBIcon.tsx +186 -0
  75. package/src/components/icons/VDBIcons.ts +9 -0
  76. package/src/components/icons/index.ts +4 -0
  77. package/src/index.native.tsx +12 -0
  78. package/src/index.ts +12 -0
  79. package/src/routes.ts +1 -0
@@ -1,55 +1,201 @@
1
- import React from "react";
2
- import { StyleSheet, Platform, Image } from "react-native";
1
+ import React, { useRef, useState, useCallback, useEffect } from "react";
2
+ import { StyleSheet, Platform } from "react-native";
3
3
  import { useTheme } from "styled-components/native";
4
4
  import styled from "styled-components/native";
5
5
  import { useTranslation } from "../i18n";
6
-
7
- // Use expo-image on native if available, fallback to RN Image
8
- let ImageComponent = Image;
9
- if (Platform.OS !== "web") {
10
- try {
11
- const ExpoImage = require("expo-image").Image;
12
- if (ExpoImage) ImageComponent = ExpoImage;
13
- } catch {
14
- ImageComponent = Image;
15
- }
16
- }
17
- const SendIcon = ({
18
- disabled,
19
- isEmpty
20
- }) => {
21
- const isInactive = disabled || isEmpty;
22
- const theme = useTheme();
23
- return /*#__PURE__*/React.createElement(ImageComponent, {
24
- source: {
25
- uri: "https://cdn.vdbapp.com/ai/chat-widget/assets/img/send.svg"
26
- },
27
- resizeMode: "contain",
28
- style: {
29
- ...styles.buttonIcon,
30
- tintColor: isInactive ? theme["core-04"] || "#ACACB3" : theme["core-05"] || "#020001",
31
- cursor: isInactive ? "auto" : "pointer"
32
- }
33
- });
6
+ import { VDBIcons } from "./icons/VDBIcons";
7
+ import { IconsVariant, VDBIcon } from "./icons";
8
+ import { transcribeAudio, TranscribeError } from "../api";
9
+ const stripMimeParams = m => {
10
+ if (!m) return m;
11
+ const i = m.indexOf(";");
12
+ return (i >= 0 ? m.slice(0, i) : m).trim();
34
13
  };
14
+ let ExpoAudio = null;
15
+ try {
16
+ ExpoAudio = require("expo-av").Audio;
17
+ } catch {}
35
18
  export const ChatInput = ({
36
19
  value,
37
20
  onChangeText,
38
21
  onSend,
39
22
  disabled,
40
23
  placeholder,
41
- inputRef
24
+ inputRef,
25
+ apiUrl,
26
+ conversationId,
27
+ priceMode,
28
+ onTranscribeError
42
29
  }) => {
43
30
  const theme = useTheme();
44
31
  const {
45
32
  t
46
33
  } = useTranslation();
47
- return /*#__PURE__*/React.createElement(InputContainer, {
34
+ const [isRecording, setIsRecording] = useState(false);
35
+ const [isTranscribing, setIsTranscribing] = useState(false);
36
+ const [transcribeErrorMsg, setTranscribeErrorMsg] = useState(null);
37
+ const mediaRecorderRef = useRef(null);
38
+ const audioChunksRef = useRef([]);
39
+ const expoRecordingRef = useRef(null);
40
+ useEffect(() => {
41
+ if (!transcribeErrorMsg) return;
42
+ const timer = setTimeout(() => setTranscribeErrorMsg(null), 5000);
43
+ return () => clearTimeout(timer);
44
+ }, [transcribeErrorMsg]);
45
+ const handleTranscribeFailure = useCallback(err => {
46
+ const asError = err instanceof Error ? err : new Error(String(err ?? "Unknown error"));
47
+ let userMessage = t("chat.transcribeError.text", "Couldn't transcribe your recording. Please try again.");
48
+ if (err instanceof TranscribeError) {
49
+ if (err.errorCode && err.message) {
50
+ userMessage = err.message ?? t("chat.transcribeError.failed", "Transcription failed. Please try recording again.");
51
+ } else if (err.status === 401 || err.status === 403) {
52
+ userMessage = t("chat.transcribeError.auth", "You're not signed in. Please sign in and try again.");
53
+ } else if (err.status >= 500) {
54
+ userMessage = t("chat.transcribeError.server", "Server error while transcribing. Please try again shortly.");
55
+ }
56
+ }
57
+ console.error("Failed to transcribe audio", err);
58
+ setTranscribeErrorMsg(userMessage);
59
+ onTranscribeError?.(asError, userMessage);
60
+ }, [t, onTranscribeError]);
61
+ const transcribeAndAppend = useCallback(async (file, fileName, mimeType) => {
62
+ if (!apiUrl) return;
63
+ setIsTranscribing(true);
64
+ setTranscribeErrorMsg(null);
65
+ try {
66
+ const sanitizedMime = stripMimeParams(mimeType);
67
+ const data = await transcribeAudio(apiUrl, file, {
68
+ conversationId,
69
+ priceMode,
70
+ fileName,
71
+ mimeType: sanitizedMime
72
+ });
73
+ const transcript = data?.transcript ?? "";
74
+ if (transcript) {
75
+ onChangeText(value ? `${value} ${transcript}` : transcript);
76
+ }
77
+ } catch (err) {
78
+ handleTranscribeFailure(err);
79
+ } finally {
80
+ setIsTranscribing(false);
81
+ }
82
+ }, [apiUrl, conversationId, priceMode, value, onChangeText, handleTranscribeFailure]);
83
+ const startWebRecording = useCallback(async () => {
84
+ try {
85
+ const stream = await navigator.mediaDevices.getUserMedia({
86
+ audio: true
87
+ });
88
+ const preferredTypes = ["audio/webm;codecs=opus", "audio/webm", "audio/ogg;codecs=opus", "audio/mp4"];
89
+ const MR = window.MediaRecorder;
90
+ const supportedType = preferredTypes.find(tpe => MR?.isTypeSupported?.(tpe)) || "";
91
+ const mediaRecorder = supportedType ? new MR(stream, {
92
+ mimeType: supportedType
93
+ }) : new MR(stream);
94
+ mediaRecorderRef.current = mediaRecorder;
95
+ audioChunksRef.current = [];
96
+ mediaRecorder.ondataavailable = e => {
97
+ if (e.data && e.data.size > 0) audioChunksRef.current.push(e.data);
98
+ };
99
+ mediaRecorder.onstop = async () => {
100
+ stream.getTracks().forEach(track => track.stop());
101
+ const chunkType = mediaRecorder.mimeType || audioChunksRef.current[0]?.type || "audio/webm";
102
+ const audioBlob = new Blob(audioChunksRef.current, {
103
+ type: chunkType
104
+ });
105
+ const ext = chunkType.includes("mp4") ? "mp4" : chunkType.includes("ogg") ? "ogg" : "webm";
106
+ await transcribeAndAppend(audioBlob, `recording-${Date.now()}.${ext}`, chunkType);
107
+ };
108
+ mediaRecorder.start();
109
+ setIsRecording(true);
110
+ setTranscribeErrorMsg(null);
111
+ } catch (err) {
112
+ console.error("Failed to start web recording", err);
113
+ setTranscribeErrorMsg(t("chat.recordError.text", "Microphone access failed. Please check permissions."));
114
+ }
115
+ }, [transcribeAndAppend, t]);
116
+ const stopWebRecording = useCallback(() => {
117
+ if (mediaRecorderRef.current) {
118
+ mediaRecorderRef.current.stop();
119
+ mediaRecorderRef.current = null;
120
+ setIsRecording(false);
121
+ }
122
+ }, []);
123
+ const startNativeRecording = useCallback(async () => {
124
+ if (!ExpoAudio) return;
125
+ try {
126
+ const {
127
+ granted
128
+ } = await ExpoAudio.requestPermissionsAsync();
129
+ if (!granted) {
130
+ setTranscribeErrorMsg(t("chat.recordError.permission", "Microphone permission was denied."));
131
+ return;
132
+ }
133
+ await ExpoAudio.setAudioModeAsync({
134
+ allowsRecordingIOS: true,
135
+ playsInSilentModeIOS: true
136
+ });
137
+ const {
138
+ recording
139
+ } = await ExpoAudio.Recording.createAsync(ExpoAudio.RecordingOptionsPresets.HIGH_QUALITY);
140
+ expoRecordingRef.current = recording;
141
+ setIsRecording(true);
142
+ setTranscribeErrorMsg(null);
143
+ } catch (err) {
144
+ console.error("Failed to start native recording", err);
145
+ setTranscribeErrorMsg(t("chat.recordError.text", "Microphone access failed. Please check permissions."));
146
+ }
147
+ }, [t]);
148
+ const stopNativeRecording = useCallback(async () => {
149
+ const recording = expoRecordingRef.current;
150
+ if (!recording) return;
151
+ try {
152
+ await recording.stopAndUnloadAsync();
153
+ await ExpoAudio.setAudioModeAsync({
154
+ allowsRecordingIOS: false
155
+ });
156
+ const uri = recording.getURI();
157
+ expoRecordingRef.current = null;
158
+ setIsRecording(false);
159
+ if (uri) {
160
+ const fileName = `recording-${Date.now()}.m4a`;
161
+ await transcribeAndAppend({
162
+ uri,
163
+ name: fileName,
164
+ type: "audio/m4a"
165
+ }, fileName, "audio/m4a");
166
+ }
167
+ } catch (err) {
168
+ console.error("Failed to stop native recording", err);
169
+ expoRecordingRef.current = null;
170
+ setIsRecording(false);
171
+ }
172
+ }, [transcribeAndAppend]);
173
+ const startRecording = useCallback(() => {
174
+ if (Platform.OS === "web") {
175
+ return startWebRecording();
176
+ }
177
+ return startNativeRecording();
178
+ }, [startWebRecording, startNativeRecording]);
179
+ const stopRecording = useCallback(() => {
180
+ if (Platform.OS === "web") {
181
+ stopWebRecording();
182
+ } else {
183
+ stopNativeRecording();
184
+ }
185
+ }, [stopWebRecording, stopNativeRecording]);
186
+ const handleMicPress = useCallback(() => {
187
+ if (isRecording) {
188
+ stopRecording();
189
+ } else {
190
+ startRecording();
191
+ }
192
+ }, [isRecording, startRecording, stopRecording]);
193
+ const isMicAvailable = !!apiUrl && (Platform.OS === "web" || !!ExpoAudio);
194
+ const isSendDisabled = disabled || isRecording || isTranscribing;
195
+ return /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputContainer, {
48
196
  theme: theme
49
197
  }, /*#__PURE__*/React.createElement(Input, {
50
- ref: inputRef
51
- // @ts-ignore - supported on web via react-native-web
52
- ,
198
+ ref: inputRef,
53
199
  id: "chat-input",
54
200
  style: [styles.inputWeb],
55
201
  autoComplete: "off",
@@ -58,16 +204,35 @@ export const ChatInput = ({
58
204
  value: value,
59
205
  onChangeText: onChangeText,
60
206
  onSubmitEditing: onSend,
61
- editable: !disabled,
207
+ editable: !isSendDisabled,
62
208
  autoFocus: !theme.isTablet
63
- }), /*#__PURE__*/React.createElement(SendButton, {
209
+ }), isMicAvailable && /*#__PURE__*/React.createElement(MicButton, {
210
+ onPress: handleMicPress,
211
+ disabled: isTranscribing
212
+ }, /*#__PURE__*/React.createElement(VDBIcon, {
213
+ color: isTranscribing ? theme["core-04"] || "#ACACB3" : isRecording ? theme["error-01"] || "#FF0000" : theme["core-05"] || "#020001",
214
+ size: 24,
215
+ variant: IconsVariant.VDBCustom,
216
+ name: isRecording ? VDBIcons.STOP_CIRCLE : VDBIcons.MIC
217
+ })), /*#__PURE__*/React.createElement(SendButton, {
64
218
  onPress: onSend,
65
- disabled: disabled
66
- }, /*#__PURE__*/React.createElement(SendIcon, {
67
- disabled: disabled,
68
- isEmpty: value.trim() === ""
69
- })));
219
+ disabled: isSendDisabled
220
+ }, /*#__PURE__*/React.createElement(VDBIcon, {
221
+ color: isSendDisabled || value.trim() === "" ? theme["core-04"] : theme["core-05"],
222
+ size: 24,
223
+ variant: IconsVariant.VDBCustom,
224
+ name: VDBIcons.SEND
225
+ }))), transcribeErrorMsg ? /*#__PURE__*/React.createElement(ErrorBanner, {
226
+ accessibilityRole: "alert",
227
+ onPress: () => setTranscribeErrorMsg(null)
228
+ }, /*#__PURE__*/React.createElement(ErrorText, {
229
+ theme: theme,
230
+ numberOfLines: 2
231
+ }, transcribeErrorMsg)) : null);
70
232
  };
233
+ const InputWrapper = styled.View`
234
+ align-self: stretch;
235
+ `;
71
236
  const InputContainer = styled.View`
72
237
  flex-direction: row;
73
238
  padding-horizontal: 12px;
@@ -85,6 +250,17 @@ const InputContainer = styled.View`
85
250
  border-width: 1;
86
251
  height: 56px;
87
252
  `;
253
+ const ErrorBanner = styled.TouchableOpacity`
254
+ margin-top: 6px;
255
+ align-self: stretch;
256
+ `;
257
+ const ErrorText = styled.Text`
258
+ font-size: 12px;
259
+ line-height: 16px;
260
+ color: ${({
261
+ theme
262
+ }) => theme["error-01"] || "#FF0000"};
263
+ `;
88
264
  const Input = styled.TextInput`
89
265
  flex: 1;
90
266
  color: ${({
@@ -114,37 +290,23 @@ const SendButton = styled.TouchableOpacity`
114
290
  theme
115
291
  }) => theme["core-01"] || "#FFFFFF"};
116
292
  `;
293
+ const MicButton = styled.TouchableOpacity`
294
+ margin-right: 16px;
295
+ padding: 0;
296
+ justify-content: center;
297
+ align-items: center;
298
+ height: 24;
299
+ aspect-ratio: 1;
300
+ border-radius: 0px;
301
+ background-color: transparent;
302
+ `;
117
303
  const styles = StyleSheet.create({
118
- webShadow: {
119
- ...(Platform.OS === "web" ? {
120
- boxShadow: "2px 8px 24px -6px rgba(55, 54, 64, 0.26)"
121
- } : {})
122
- },
123
- nativeShadow: {
124
- shadowColor: "#373640",
125
- shadowOffset: {
126
- width: 2,
127
- height: 8
128
- },
129
- shadowOpacity: 0.26,
130
- shadowRadius: 12,
131
- elevation: 3
132
- },
133
304
  inputWeb: {
134
305
  ...(Platform.OS === "web" ? {
135
306
  outlineStyle: "none",
136
307
  outlineWidth: 0,
137
308
  boxShadow: "none"
138
309
  } : {})
139
- },
140
- buttonIcon: {
141
- height: 24,
142
- width: 24
143
- },
144
- sendIconText: {
145
- fontSize: 18,
146
- fontWeight: "700",
147
- textAlign: "center"
148
310
  }
149
311
  });
150
312
  //# sourceMappingURL=ChatInput.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","Platform","Image","useTheme","styled","useTranslation","ImageComponent","OS","ExpoImage","require","SendIcon","disabled","isEmpty","isInactive","theme","createElement","source","uri","resizeMode","style","styles","buttonIcon","tintColor","cursor","ChatInput","value","onChangeText","onSend","placeholder","inputRef","t","InputContainer","Input","ref","id","inputWeb","autoComplete","placeholderTextColor","onSubmitEditing","editable","autoFocus","isTablet","SendButton","onPress","trim","View","TextInput","TouchableOpacity","create","webShadow","boxShadow","nativeShadow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","outlineStyle","outlineWidth","sendIconText","fontSize","fontWeight","textAlign"],"sourceRoot":"../../../src","sources":["components/ChatInput.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","useState","useCallback","useEffect","StyleSheet","Platform","useTheme","styled","useTranslation","VDBIcons","IconsVariant","VDBIcon","transcribeAudio","TranscribeError","stripMimeParams","m","i","indexOf","slice","trim","ExpoAudio","require","Audio","ChatInput","value","onChangeText","onSend","disabled","placeholder","inputRef","apiUrl","conversationId","priceMode","onTranscribeError","theme","t","isRecording","setIsRecording","isTranscribing","setIsTranscribing","transcribeErrorMsg","setTranscribeErrorMsg","mediaRecorderRef","audioChunksRef","expoRecordingRef","timer","setTimeout","clearTimeout","handleTranscribeFailure","err","asError","Error","String","userMessage","errorCode","message","status","console","error","transcribeAndAppend","file","fileName","mimeType","sanitizedMime","data","transcript","startWebRecording","stream","navigator","mediaDevices","getUserMedia","audio","preferredTypes","MR","window","MediaRecorder","supportedType","find","tpe","isTypeSupported","mediaRecorder","current","ondataavailable","e","size","push","onstop","getTracks","forEach","track","stop","chunkType","type","audioBlob","Blob","ext","includes","Date","now","start","stopWebRecording","startNativeRecording","granted","requestPermissionsAsync","setAudioModeAsync","allowsRecordingIOS","playsInSilentModeIOS","recording","Recording","createAsync","RecordingOptionsPresets","HIGH_QUALITY","stopNativeRecording","stopAndUnloadAsync","uri","getURI","name","startRecording","OS","stopRecording","handleMicPress","isMicAvailable","isSendDisabled","createElement","InputWrapper","InputContainer","Input","ref","id","style","styles","inputWeb","autoComplete","placeholderTextColor","onSubmitEditing","editable","autoFocus","isTablet","MicButton","onPress","color","variant","VDBCustom","STOP_CIRCLE","MIC","SendButton","SEND","ErrorBanner","accessibilityRole","ErrorText","numberOfLines","View","TouchableOpacity","Text","TextInput","create","outlineStyle","outlineWidth","boxShadow"],"sourceRoot":"../../../src","sources":["components/ChatInput.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AACvE,SAAoBC,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AAE9D,SAASC,QAAQ,QAAQ,0BAA0B;AAEnD,OAAOC,MAAM,MAAM,0BAA0B;AAC7C,SAASC,cAAc,QAAQ,SAAS;AACxC,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,YAAY,EAAEC,OAAO,QAAQ,SAAS;AAC/C,SACEC,eAAe,EACfC,eAAe,QAGV,QAAQ;AAEf,MAAMC,eAAe,GAAIC,CAAS,IAAa;EAC7C,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC;EAChB,MAAMC,CAAC,GAAGD,CAAC,CAACE,OAAO,CAAC,GAAG,CAAC;EACxB,OAAO,CAACD,CAAC,IAAI,CAAC,GAAGD,CAAC,CAACG,KAAK,CAAC,CAAC,EAAEF,CAAC,CAAC,GAAGD,CAAC,EAAEI,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,IAAIC,SAAc,GAAG,IAAI;AACzB,IAAI;EACFA,SAAS,GAAGC,OAAO,CAAC,SAAS,CAAC,CAACC,KAAK;AACtC,CAAC,CAAC,MAAM,CACR;AAgBA,OAAO,MAAMC,SAA0B,GAAGA,CAAC;EACzCC,KAAK;EACLC,YAAY;EACZC,MAAM;EACNC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC,MAAM;EACNC,cAAc;EACdC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAG5B,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAE6B;EAAE,CAAC,GAAG3B,cAAc,CAAC,CAAC;EAE9B,MAAM,CAAC4B,WAAW,EAAEC,cAAc,CAAC,GAAGpC,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAACqC,cAAc,EAAEC,iBAAiB,CAAC,GAAGtC,QAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAACuC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGxC,QAAQ,CAC1D,IACF,CAAC;EAED,MAAMyC,gBAAgB,GAAG1C,MAAM,CAAM,IAAI,CAAC;EAC1C,MAAM2C,cAAc,GAAG3C,MAAM,CAAS,EAAE,CAAC;EAEzC,MAAM4C,gBAAgB,GAAG5C,MAAM,CAAM,IAAI,CAAC;EAE1CG,SAAS,CAAC,MAAM;IACd,IAAI,CAACqC,kBAAkB,EAAE;IACzB,MAAMK,KAAK,GAAGC,UAAU,CAAC,MAAML,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACjE,OAAO,MAAMM,YAAY,CAACF,KAAK,CAAC;EAClC,CAAC,EAAE,CAACL,kBAAkB,CAAC,CAAC;EAExB,MAAMQ,uBAAuB,GAAG9C,WAAW,CACxC+C,GAAY,IAAK;IAChB,MAAMC,OAAO,GACXD,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAG,IAAIE,KAAK,CAACC,MAAM,CAACH,GAAG,IAAI,eAAe,CAAC,CAAC;IAExE,IAAII,WAAW,GAAGlB,CAAC,CACjB,2BAA2B,EAC3B,uDACF,CAAC;IAED,IAAIc,GAAG,YAAYpC,eAAe,EAAE;MAClC,IAAIoC,GAAG,CAACK,SAAS,IAAIL,GAAG,CAACM,OAAO,EAAE;QAChCF,WAAW,GAAGJ,GAAG,CAACM,OAAO,IAAIpB,CAAC,CAC5B,6BAA6B,EAC7B,mDACF,CAAC;MACH,CAAC,MAAM,IAAIc,GAAG,CAACO,MAAM,KAAK,GAAG,IAAIP,GAAG,CAACO,MAAM,KAAK,GAAG,EAAE;QACnDH,WAAW,GAAGlB,CAAC,CACb,2BAA2B,EAC3B,qDACF,CAAC;MACH,CAAC,MAAM,IAAIc,GAAG,CAACO,MAAM,IAAI,GAAG,EAAE;QAC5BH,WAAW,GAAGlB,CAAC,CACb,6BAA6B,EAC7B,4DACF,CAAC;MACH;IACF;IAEAsB,OAAO,CAACC,KAAK,CAAC,4BAA4B,EAAET,GAAG,CAAC;IAChDR,qBAAqB,CAACY,WAAW,CAAC;IAClCpB,iBAAiB,GAAGiB,OAAO,EAAEG,WAAW,CAAC;EAC3C,CAAC,EACD,CAAClB,CAAC,EAAEF,iBAAiB,CACvB,CAAC;EAED,MAAM0B,mBAAmB,GAAGzD,WAAW,CACrC,OAAO0D,IAAyB,EAAEC,QAAgB,EAAEC,QAAgB,KAAK;IACvE,IAAI,CAAChC,MAAM,EAAE;IACbS,iBAAiB,CAAC,IAAI,CAAC;IACvBE,qBAAqB,CAAC,IAAI,CAAC;IAC3B,IAAI;MACF,MAAMsB,aAAa,GAAGjD,eAAe,CAACgD,QAAQ,CAAC;MAC/C,MAAME,IAAwB,GAAG,MAAMpD,eAAe,CAACkB,MAAM,EAAE8B,IAAI,EAAE;QACnE7B,cAAc;QACdC,SAAS;QACT6B,QAAQ;QACRC,QAAQ,EAAEC;MACZ,CAAC,CAAC;MACF,MAAME,UAAU,GAAGD,IAAI,EAAEC,UAAU,IAAI,EAAE;MACzC,IAAIA,UAAU,EAAE;QACdxC,YAAY,CAACD,KAAK,GAAG,GAAGA,KAAK,IAAIyC,UAAU,EAAE,GAAGA,UAAU,CAAC;MAC7D;IACF,CAAC,CAAC,OAAOhB,GAAG,EAAE;MACZD,uBAAuB,CAACC,GAAG,CAAC;IAC9B,CAAC,SAAS;MACRV,iBAAiB,CAAC,KAAK,CAAC;IAC1B;EACF,CAAC,EACD,CACET,MAAM,EACNC,cAAc,EACdC,SAAS,EACTR,KAAK,EACLC,YAAY,EACZuB,uBAAuB,CAE3B,CAAC;EAED,MAAMkB,iBAAiB,GAAGhE,WAAW,CAAC,YAAY;IAChD,IAAI;MACF,MAAMiE,MAAM,GAAG,MAAOC,SAAS,CAASC,YAAY,CAACC,YAAY,CAAC;QAChEC,KAAK,EAAE;MACT,CAAC,CAAC;MACF,MAAMC,cAAc,GAAG,CACrB,wBAAwB,EACxB,YAAY,EACZ,uBAAuB,EACvB,WAAW,CACZ;MACD,MAAMC,EAAO,GAAIC,MAAM,CAASC,aAAa;MAC7C,MAAMC,aAAa,GACjBJ,cAAc,CAACK,IAAI,CAAEC,GAAG,IAAKL,EAAE,EAAEM,eAAe,GAAGD,GAAG,CAAC,CAAC,IAAI,EAAE;MAEhE,MAAME,aAAa,GAAGJ,aAAa,GAC/B,IAAIH,EAAE,CAACN,MAAM,EAAE;QAAEL,QAAQ,EAAEc;MAAc,CAAC,CAAC,GAC3C,IAAIH,EAAE,CAACN,MAAM,CAAC;MAClBzB,gBAAgB,CAACuC,OAAO,GAAGD,aAAa;MACxCrC,cAAc,CAACsC,OAAO,GAAG,EAAE;MAE3BD,aAAa,CAACE,eAAe,GAAIC,CAAM,IAAK;QAC1C,IAAIA,CAAC,CAACnB,IAAI,IAAImB,CAAC,CAACnB,IAAI,CAACoB,IAAI,GAAG,CAAC,EAAEzC,cAAc,CAACsC,OAAO,CAACI,IAAI,CAACF,CAAC,CAACnB,IAAI,CAAC;MACpE,CAAC;MAEDgB,aAAa,CAACM,MAAM,GAAG,YAAY;QACjCnB,MAAM,CAACoB,SAAS,CAAC,CAAC,CAACC,OAAO,CAAEC,KAAU,IAAKA,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC;QACxD,MAAMC,SAAS,GACbX,aAAa,CAAClB,QAAQ,IACtBnB,cAAc,CAACsC,OAAO,CAAC,CAAC,CAAC,EAAEW,IAAI,IAC/B,YAAY;QACd,MAAMC,SAAS,GAAG,IAAIC,IAAI,CAACnD,cAAc,CAACsC,OAAO,EAAE;UAAEW,IAAI,EAAED;QAAU,CAAC,CAAC;QACvE,MAAMI,GAAG,GAAGJ,SAAS,CAACK,QAAQ,CAAC,KAAK,CAAC,GACjC,KAAK,GACLL,SAAS,CAACK,QAAQ,CAAC,KAAK,CAAC,GACvB,KAAK,GACL,MAAM;QACZ,MAAMrC,mBAAmB,CACvBkC,SAAS,EACT,aAAaI,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIH,GAAG,EAAE,EAChCJ,SACF,CAAC;MACH,CAAC;MAEDX,aAAa,CAACmB,KAAK,CAAC,CAAC;MACrB9D,cAAc,CAAC,IAAI,CAAC;MACpBI,qBAAqB,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC,OAAOQ,GAAG,EAAE;MACZQ,OAAO,CAACC,KAAK,CAAC,+BAA+B,EAAET,GAAG,CAAC;MACnDR,qBAAqB,CACnBN,CAAC,CACC,uBAAuB,EACvB,qDACF,CACF,CAAC;IACH;EACF,CAAC,EAAE,CAACwB,mBAAmB,EAAExB,CAAC,CAAC,CAAC;EAE5B,MAAMiE,gBAAgB,GAAGlG,WAAW,CAAC,MAAM;IACzC,IAAIwC,gBAAgB,CAACuC,OAAO,EAAE;MAC5BvC,gBAAgB,CAACuC,OAAO,CAACS,IAAI,CAAC,CAAC;MAC/BhD,gBAAgB,CAACuC,OAAO,GAAG,IAAI;MAC/B5C,cAAc,CAAC,KAAK,CAAC;IACvB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMgE,oBAAoB,GAAGnG,WAAW,CAAC,YAAY;IACnD,IAAI,CAACkB,SAAS,EAAE;IAChB,IAAI;MACF,MAAM;QAAEkF;MAAQ,CAAC,GAAG,MAAMlF,SAAS,CAACmF,uBAAuB,CAAC,CAAC;MAC7D,IAAI,CAACD,OAAO,EAAE;QACZ7D,qBAAqB,CACnBN,CAAC,CACC,6BAA6B,EAC7B,mCACF,CACF,CAAC;QACD;MACF;MAEA,MAAMf,SAAS,CAACoF,iBAAiB,CAAC;QAChCC,kBAAkB,EAAE,IAAI;QACxBC,oBAAoB,EAAE;MACxB,CAAC,CAAC;MAEF,MAAM;QAAEC;MAAU,CAAC,GAAG,MAAMvF,SAAS,CAACwF,SAAS,CAACC,WAAW,CACzDzF,SAAS,CAAC0F,uBAAuB,CAACC,YACpC,CAAC;MACDnE,gBAAgB,CAACqC,OAAO,GAAG0B,SAAS;MACpCtE,cAAc,CAAC,IAAI,CAAC;MACpBI,qBAAqB,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC,OAAOQ,GAAG,EAAE;MACZQ,OAAO,CAACC,KAAK,CAAC,kCAAkC,EAAET,GAAG,CAAC;MACtDR,qBAAqB,CACnBN,CAAC,CACC,uBAAuB,EACvB,qDACF,CACF,CAAC;IACH;EACF,CAAC,EAAE,CAACA,CAAC,CAAC,CAAC;EAEP,MAAM6E,mBAAmB,GAAG9G,WAAW,CAAC,YAAY;IAClD,MAAMyG,SAAS,GAAG/D,gBAAgB,CAACqC,OAAO;IAC1C,IAAI,CAAC0B,SAAS,EAAE;IAEhB,IAAI;MACF,MAAMA,SAAS,CAACM,kBAAkB,CAAC,CAAC;MACpC,MAAM7F,SAAS,CAACoF,iBAAiB,CAAC;QAAEC,kBAAkB,EAAE;MAAM,CAAC,CAAC;MAEhE,MAAMS,GAAG,GAAGP,SAAS,CAACQ,MAAM,CAAC,CAAC;MAC9BvE,gBAAgB,CAACqC,OAAO,GAAG,IAAI;MAC/B5C,cAAc,CAAC,KAAK,CAAC;MAErB,IAAI6E,GAAG,EAAE;QACP,MAAMrD,QAAQ,GAAG,aAAaoC,IAAI,CAACC,GAAG,CAAC,CAAC,MAAM;QAC9C,MAAMvC,mBAAmB,CACvB;UAAEuD,GAAG;UAAEE,IAAI,EAAEvD,QAAQ;UAAE+B,IAAI,EAAE;QAAY,CAAC,EAC1C/B,QAAQ,EACR,WACF,CAAC;MACH;IACF,CAAC,CAAC,OAAOZ,GAAG,EAAE;MACZQ,OAAO,CAACC,KAAK,CAAC,iCAAiC,EAAET,GAAG,CAAC;MACrDL,gBAAgB,CAACqC,OAAO,GAAG,IAAI;MAC/B5C,cAAc,CAAC,KAAK,CAAC;IACvB;EACF,CAAC,EAAE,CAACsB,mBAAmB,CAAC,CAAC;EAEzB,MAAM0D,cAAc,GAAGnH,WAAW,CAAC,MAAM;IACvC,IAAIG,QAAQ,CAACiH,EAAE,KAAK,KAAK,EAAE;MACzB,OAAOpD,iBAAiB,CAAC,CAAC;IAC5B;IACA,OAAOmC,oBAAoB,CAAC,CAAC;EAC/B,CAAC,EAAE,CAACnC,iBAAiB,EAAEmC,oBAAoB,CAAC,CAAC;EAE7C,MAAMkB,aAAa,GAAGrH,WAAW,CAAC,MAAM;IACtC,IAAIG,QAAQ,CAACiH,EAAE,KAAK,KAAK,EAAE;MACzBlB,gBAAgB,CAAC,CAAC;IACpB,CAAC,MAAM;MACLY,mBAAmB,CAAC,CAAC;IACvB;EACF,CAAC,EAAE,CAACZ,gBAAgB,EAAEY,mBAAmB,CAAC,CAAC;EAE3C,MAAMQ,cAAc,GAAGtH,WAAW,CAAC,MAAM;IACvC,IAAIkC,WAAW,EAAE;MACfmF,aAAa,CAAC,CAAC;IACjB,CAAC,MAAM;MACLF,cAAc,CAAC,CAAC;IAClB;EACF,CAAC,EAAE,CAACjF,WAAW,EAAEiF,cAAc,EAAEE,aAAa,CAAC,CAAC;EAEhD,MAAME,cAAc,GAClB,CAAC,CAAC3F,MAAM,KAAKzB,QAAQ,CAACiH,EAAE,KAAK,KAAK,IAAI,CAAC,CAAClG,SAAS,CAAC;EAEpD,MAAMsG,cAAc,GAAG/F,QAAQ,IAAIS,WAAW,IAAIE,cAAc;EAEhE,oBACEvC,KAAA,CAAA4H,aAAA,CAACC,YAAY,qBACX7H,KAAA,CAAA4H,aAAA,CAACE,cAAc;IAAC3F,KAAK,EAAEA;EAAM,gBAC3BnC,KAAA,CAAA4H,aAAA,CAACG,KAAK;IACJC,GAAG,EAAElG,QAAS;IACdmG,EAAE,EAAC,YAAY;IACfC,KAAK,EAAE,CAACC,MAAM,CAACC,QAAQ,CAAE;IACzBC,YAAY,EAAC,KAAK;IAClBxG,WAAW,EACTA,WAAW,IACXO,CAAC,CACC,uBAAuB,EACvB,4CACF,CACD;IACDkG,oBAAoB,EAAEnG,KAAK,CAAC,SAAS,CAAC,IAAI,MAAO;IACjDV,KAAK,EAAEA,KAAM;IACbC,YAAY,EAAEA,YAAa;IAC3B6G,eAAe,EAAE5G,MAAO;IACxB6G,QAAQ,EAAE,CAACb,cAAe;IAC1Bc,SAAS,EAAE,CAACtG,KAAK,CAACuG;EAAS,CAC5B,CAAC,EACDhB,cAAc,iBACb1H,KAAA,CAAA4H,aAAA,CAACe,SAAS;IAACC,OAAO,EAAEnB,cAAe;IAAC7F,QAAQ,EAAEW;EAAe,gBAC3DvC,KAAA,CAAA4H,aAAA,CAAChH,OAAO;IACNiI,KAAK,EACHtG,cAAc,GACVJ,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAC7BE,WAAW,GACTF,KAAK,CAAC,UAAU,CAAC,IAAI,SAAS,GAC9BA,KAAK,CAAC,SAAS,CAAC,IAAI,SAC3B;IACDkD,IAAI,EAAE,EAAG;IACTyD,OAAO,EAAEnI,YAAY,CAACoI,SAAU;IAChC1B,IAAI,EAAEhF,WAAW,GAAG3B,QAAQ,CAACsI,WAAW,GAAGtI,QAAQ,CAACuI;EAAI,CACzD,CACQ,CACZ,eACDjJ,KAAA,CAAA4H,aAAA,CAACsB,UAAU;IAACN,OAAO,EAAEjH,MAAO;IAACC,QAAQ,EAAE+F;EAAe,gBACpD3H,KAAA,CAAA4H,aAAA,CAAChH,OAAO;IACNiI,KAAK,EACHlB,cAAc,IAAIlG,KAAK,CAACL,IAAI,CAAC,CAAC,KAAK,EAAE,GACjCe,KAAK,CAAC,SAAS,CAAC,GAChBA,KAAK,CAAC,SAAS,CACpB;IACDkD,IAAI,EAAE,EAAG;IACTyD,OAAO,EAAEnI,YAAY,CAACoI,SAAU;IAChC1B,IAAI,EAAE3G,QAAQ,CAACyI;EAAK,CACrB,CACS,CACE,CAAC,EAChB1G,kBAAkB,gBACjBzC,KAAA,CAAA4H,aAAA,CAACwB,WAAW;IACVC,iBAAiB,EAAC,OAAO;IACzBT,OAAO,EAAEA,CAAA,KAAMlG,qBAAqB,CAAC,IAAI;EAAE,gBAE3C1C,KAAA,CAAA4H,aAAA,CAAC0B,SAAS;IAACnH,KAAK,EAAEA,KAAM;IAACoH,aAAa,EAAE;EAAE,GACvC9G,kBACQ,CACA,CAAC,GACZ,IACQ,CAAC;AAEnB,CAAC;AAED,MAAMoF,YAAY,GAAGrH,MAAM,CAACgJ,IAAI;AAChC;AACA,CAAC;AAED,MAAM1B,cAAc,GAAGtH,MAAM,CAACgJ,IAA6B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,CAAC;EAAErH;AAA+B,CAAC,KACrDA,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS;AACjC,kBAAkB,CAAC;EAAEA;AAA+B,CAAC,KACjDA,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS;AACjC;AACA;AACA,CAAC;AAED,MAAMiH,WAAW,GAAG5I,MAAM,CAACiJ,gBAAgB;AAC3C;AACA;AACA,CAAC;AAED,MAAMH,SAAS,GAAG9I,MAAM,CAACkJ,IAA6B;AACtD;AACA;AACA,WAAW,CAAC;EAAEvH;AAA+B,CAAC,KAC1CA,KAAK,CAAC,UAAU,CAAC,IAAI,SAAS;AAClC,CAAC;AAED,MAAM4F,KAAK,GAAGvH,MAAM,CAACmJ,SAAkC;AACvD;AACA,WAAW,CAAC;EAAExH;AAA+B,CAAC,KAC1CA,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAM+G,UAAU,GAAG1I,MAAM,CAACiJ,gBAAyC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,CAAC;EAAEtH;AAA+B,CAAC,KACrDA,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS;AACjC,CAAC;AAED,MAAMwG,SAAS,GAAGnI,MAAM,CAACiJ,gBAAyC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMtB,MAAM,GAAG9H,UAAU,CAACuJ,MAAM,CAAC;EAC/BxB,QAAQ,EAAE;IACR,IAAI9H,QAAQ,CAACiH,EAAE,KAAK,KAAK,GACpB;MAAEsC,YAAY,EAAE,MAAM;MAAEC,YAAY,EAAE,CAAC;MAAEC,SAAS,EAAE;IAAO,CAAC,GAC7D,CAAC,CAAC;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -946,7 +946,9 @@ export const ChatWidget = /*#__PURE__*/forwardRef(({
946
946
  disabled: loading,
947
947
  placeholder: placeholder,
948
948
  theme: themeProps,
949
- inputRef: inputRef
949
+ inputRef: inputRef,
950
+ apiUrl: apiUrl,
951
+ priceMode: priceMode
950
952
  }), /*#__PURE__*/React.createElement(BetaNotice, {
951
953
  active: betaActive
952
954
  }));
@@ -1069,7 +1071,9 @@ export const ChatWidget = /*#__PURE__*/forwardRef(({
1069
1071
  shownResults: productsByMsg[item.id]?.response?.body?.diamonds.length || 0,
1070
1072
  onSuggestionSelect: handleSuggestionSelect,
1071
1073
  isLatest: isLatest,
1072
- isTyping: typingMessageId === item.id
1074
+ isTyping: typingMessageId === item.id,
1075
+ showShowResultsButton: fromFilterScreen && item.role === "assistant" && item.search_payload && Object.keys(item.search_payload).length > 0,
1076
+ onViewAll: onViewAll
1073
1077
  }), item.role === "assistant" && item.search_payload && Object.keys(item.search_payload).length > 0 && !productsByMsg[item.id] && /*#__PURE__*/React.createElement(LazyProductsFetcher, {
1074
1078
  apiUrl: apiUrl,
1075
1079
  priceMode: priceMode,