vdb-ai-chat 1.0.1 → 1.0.3

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 (128) hide show
  1. package/dist/10.chat-widget.js +2 -0
  2. package/dist/10.chat-widget.js.LICENSE.txt +1 -0
  3. package/dist/104.chat-widget.js +1 -0
  4. package/dist/50.chat-widget.js +1 -0
  5. package/dist/521.chat-widget.js +1 -0
  6. package/dist/538.chat-widget.js +1 -1
  7. package/dist/572.chat-widget.js +1 -0
  8. package/dist/694.chat-widget.js +1 -0
  9. package/dist/chat-widget.js +1 -1
  10. package/lib/commonjs/api.js +4 -3
  11. package/lib/commonjs/api.js.map +1 -1
  12. package/lib/commonjs/components/BetaNotice.js +38 -0
  13. package/lib/commonjs/components/BetaNotice.js.map +1 -0
  14. package/lib/commonjs/components/ChatHeader.js +27 -20
  15. package/lib/commonjs/components/ChatHeader.js.map +1 -1
  16. package/lib/commonjs/components/ChatInput.js +20 -21
  17. package/lib/commonjs/components/ChatInput.js.map +1 -1
  18. package/lib/commonjs/components/ChatWidget.js +165 -92
  19. package/lib/commonjs/components/ChatWidget.js.map +1 -1
  20. package/lib/commonjs/components/LazyProductsFetcher.js +47 -0
  21. package/lib/commonjs/components/LazyProductsFetcher.js.map +1 -0
  22. package/lib/commonjs/components/MessageBubble.js +26 -90
  23. package/lib/commonjs/components/MessageBubble.js.map +1 -1
  24. package/lib/commonjs/components/MessageMetaRow.js +113 -0
  25. package/lib/commonjs/components/MessageMetaRow.js.map +1 -0
  26. package/lib/commonjs/components/ProductsGrid.js +139 -0
  27. package/lib/commonjs/components/ProductsGrid.js.map +1 -0
  28. package/lib/commonjs/components/ProductsList.js +22 -126
  29. package/lib/commonjs/components/ProductsList.js.map +1 -1
  30. package/lib/commonjs/components/ProductsListView.js +139 -0
  31. package/lib/commonjs/components/ProductsListView.js.map +1 -0
  32. package/lib/commonjs/components/SuggestionsRow.js +50 -27
  33. package/lib/commonjs/components/SuggestionsRow.js.map +1 -1
  34. package/lib/commonjs/components/utils.js +4 -3
  35. package/lib/commonjs/components/utils.js.map +1 -1
  36. package/lib/commonjs/hooks/useInViewport.js +42 -0
  37. package/lib/commonjs/hooks/useInViewport.js.map +1 -0
  38. package/lib/commonjs/index.web.js +86 -29
  39. package/lib/commonjs/index.web.js.map +1 -1
  40. package/lib/commonjs/theme.js +4 -4
  41. package/lib/commonjs/theme.js.map +1 -1
  42. package/lib/module/api.js +4 -3
  43. package/lib/module/api.js.map +1 -1
  44. package/lib/module/components/BetaNotice.js +30 -0
  45. package/lib/module/components/BetaNotice.js.map +1 -0
  46. package/lib/module/components/ChatHeader.js +27 -20
  47. package/lib/module/components/ChatHeader.js.map +1 -1
  48. package/lib/module/components/ChatInput.js +20 -21
  49. package/lib/module/components/ChatInput.js.map +1 -1
  50. package/lib/module/components/ChatWidget.js +166 -93
  51. package/lib/module/components/ChatWidget.js.map +1 -1
  52. package/lib/module/components/LazyProductsFetcher.js +40 -0
  53. package/lib/module/components/LazyProductsFetcher.js.map +1 -0
  54. package/lib/module/components/MessageBubble.js +26 -92
  55. package/lib/module/components/MessageBubble.js.map +1 -1
  56. package/lib/module/components/MessageMetaRow.js +105 -0
  57. package/lib/module/components/MessageMetaRow.js.map +1 -0
  58. package/lib/module/components/ProductsGrid.js +133 -0
  59. package/lib/module/components/ProductsGrid.js.map +1 -0
  60. package/lib/module/components/ProductsList.js +21 -126
  61. package/lib/module/components/ProductsList.js.map +1 -1
  62. package/lib/module/components/ProductsListView.js +132 -0
  63. package/lib/module/components/ProductsListView.js.map +1 -0
  64. package/lib/module/components/SuggestionsRow.js +51 -28
  65. package/lib/module/components/SuggestionsRow.js.map +1 -1
  66. package/lib/module/components/utils.js +4 -3
  67. package/lib/module/components/utils.js.map +1 -1
  68. package/lib/module/hooks/useInViewport.js +36 -0
  69. package/lib/module/hooks/useInViewport.js.map +1 -0
  70. package/lib/module/index.web.js +86 -29
  71. package/lib/module/index.web.js.map +1 -1
  72. package/lib/module/theme.js +4 -4
  73. package/lib/module/theme.js.map +1 -1
  74. package/lib/typescript/api.d.ts.map +1 -1
  75. package/lib/typescript/components/BetaNotice.d.ts +5 -0
  76. package/lib/typescript/components/BetaNotice.d.ts.map +1 -0
  77. package/lib/typescript/components/ChatHeader.d.ts +5 -2
  78. package/lib/typescript/components/ChatHeader.d.ts.map +1 -1
  79. package/lib/typescript/components/ChatInput.d.ts.map +1 -1
  80. package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
  81. package/lib/typescript/components/LazyProductsFetcher.d.ts +9 -0
  82. package/lib/typescript/components/LazyProductsFetcher.d.ts.map +1 -0
  83. package/lib/typescript/components/MessageBubble.d.ts +7 -3
  84. package/lib/typescript/components/MessageBubble.d.ts.map +1 -1
  85. package/lib/typescript/components/MessageMetaRow.d.ts +14 -0
  86. package/lib/typescript/components/MessageMetaRow.d.ts.map +1 -0
  87. package/lib/typescript/components/ProductsGrid.d.ts +10 -0
  88. package/lib/typescript/components/ProductsGrid.d.ts.map +1 -0
  89. package/lib/typescript/components/ProductsList.d.ts +4 -2
  90. package/lib/typescript/components/ProductsList.d.ts.map +1 -1
  91. package/lib/typescript/components/ProductsListView.d.ts +10 -0
  92. package/lib/typescript/components/ProductsListView.d.ts.map +1 -0
  93. package/lib/typescript/components/SuggestionsRow.d.ts +2 -0
  94. package/lib/typescript/components/SuggestionsRow.d.ts.map +1 -1
  95. package/lib/typescript/components/utils.d.ts +1 -0
  96. package/lib/typescript/components/utils.d.ts.map +1 -1
  97. package/lib/typescript/hooks/useInViewport.d.ts +5 -0
  98. package/lib/typescript/hooks/useInViewport.d.ts.map +1 -0
  99. package/lib/typescript/index.web.d.ts +1 -1
  100. package/lib/typescript/index.web.d.ts.map +1 -1
  101. package/lib/typescript/types.d.ts +3 -1
  102. package/lib/typescript/types.d.ts.map +1 -1
  103. package/package.json +1 -1
  104. package/src/api.ts +4 -3
  105. package/src/components/BetaNotice.tsx +32 -0
  106. package/src/components/ChatHeader.tsx +32 -18
  107. package/src/components/ChatInput.tsx +23 -21
  108. package/src/components/ChatWidget.tsx +249 -159
  109. package/src/components/LazyProductsFetcher.tsx +41 -0
  110. package/src/components/MessageBubble.tsx +46 -148
  111. package/src/components/MessageMetaRow.tsx +199 -0
  112. package/src/components/ProductsGrid.tsx +163 -0
  113. package/src/components/ProductsList.tsx +20 -146
  114. package/src/components/ProductsListView.tsx +149 -0
  115. package/src/components/SuggestionsRow.tsx +61 -32
  116. package/src/components/utils.ts +6 -4
  117. package/src/hooks/useInViewport.ts +38 -0
  118. package/src/index.web.tsx +87 -32
  119. package/src/theme.ts +4 -4
  120. package/src/types.ts +3 -2
  121. package/dist/751.chat-widget.js +0 -1
  122. package/lib/commonjs/contexts/SegmentClientContext.js +0 -19
  123. package/lib/commonjs/contexts/SegmentClientContext.js.map +0 -1
  124. package/lib/module/contexts/SegmentClientContext.js +0 -10
  125. package/lib/module/contexts/SegmentClientContext.js.map +0 -1
  126. package/lib/typescript/contexts/SegmentClientContext.d.ts +0 -9
  127. package/lib/typescript/contexts/SegmentClientContext.d.ts.map +0 -1
  128. package/src/contexts/SegmentClientContext.tsx +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageMetaRow.d.ts","sourceRoot":"","sources":["../../../src/components/MessageMetaRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAqC,MAAM,SAAS,CAAC;AAU5E,UAAU,KAAK;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,CACpB,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA2H1C,CAAC;AAyCF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface ProductsGridProps {
3
+ data: any[];
4
+ onViewAll?: () => void;
5
+ onItemPress?: (item: any) => void;
6
+ totalResults?: number;
7
+ }
8
+ declare const ProductsGrid: React.NamedExoticComponent<ProductsGridProps>;
9
+ export default ProductsGrid;
10
+ //# sourceMappingURL=ProductsGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsGrid.tsx"],"names":[],"mappings":"AASA,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsID,QAAA,MAAM,YAAY,+CAA8B,CAAC;AACjD,eAAe,YAAY,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import React from "react";
2
2
  interface ProductsListProps {
3
- data: any;
3
+ data: any[];
4
4
  onViewAll?: () => void;
5
5
  onItemPress?: (item: any) => void;
6
+ variant?: "grid" | "list";
7
+ totalResults: number;
6
8
  }
7
- declare const ProductsList: React.NamedExoticComponent<ProductsListProps>;
9
+ declare const ProductsList: React.FC<ProductsListProps>;
8
10
  export default ProductsList;
9
11
  //# sourceMappingURL=ProductsList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsList.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsList.tsx"],"names":[],"mappings":"AASA,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC;AAsID,QAAA,MAAM,YAAY,+CAA8B,CAAC;AACjD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ProductsList.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqB7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface ProductsListViewProps {
3
+ data: any[];
4
+ totalResults?: number;
5
+ onViewAll?: () => void;
6
+ onItemPress?: (item: any) => void;
7
+ }
8
+ declare const ProductsListView: React.NamedExoticComponent<ProductsListViewProps>;
9
+ export default ProductsListView;
10
+ //# sourceMappingURL=ProductsListView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsListView.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAa9C,UAAU,qBAAqB;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC;AAiID,QAAA,MAAM,gBAAgB,mDAAkC,CAAC;AACzD,eAAe,gBAAgB,CAAC"}
@@ -2,6 +2,8 @@ import React from "react";
2
2
  interface SuggestionsRowProps {
3
3
  suggestions: string[];
4
4
  onSelect: (value: string) => void;
5
+ /** Inline variant renders inside a message bubble, without outer padding/background */
6
+ variant?: "inline" | "default";
5
7
  }
6
8
  declare const SuggestionsRow: React.NamedExoticComponent<SuggestionsRowProps>;
7
9
  export default SuggestionsRow;
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestionsRow.d.ts","sourceRoot":"","sources":["../../../src/components/SuggestionsRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AASpC,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AA2DD,QAAA,MAAM,cAAc,iDAAgC,CAAC;AACrD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"SuggestionsRow.d.ts","sourceRoot":"","sources":["../../../src/components/SuggestionsRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AASpC,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uFAAuF;IACvF,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAsFD,QAAA,MAAM,cAAc,iDAAgC,CAAC;AACrD,eAAe,cAAc,CAAC"}
@@ -15,6 +15,7 @@ export interface UserDetails {
15
15
  country?: string;
16
16
  price_mode?: string | number;
17
17
  plan_details?: any;
18
+ user?: any;
18
19
  }
19
20
  export declare const getUserDetails: () => Promise<UserDetails | null>;
20
21
  export declare enum DeviceType {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAED,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAgBvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAqBjE,CAAC;AAEF,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,cAW9C,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,aAAa,0BAA0B;IACvC,aAAa,0BAA0B;IACvC,YAAY,oBAAoB;CACjC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAED,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAqBjE,CAAC;AAEF,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,cAW9C,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,aAAa,0BAA0B;IACvC,aAAa,0BAA0B;IACvC,YAAY,oBAAoB;CACjC"}
@@ -0,0 +1,5 @@
1
+ export declare function useInViewport<T extends HTMLElement>(): {
2
+ readonly ref: import("react").MutableRefObject<T | null>;
3
+ readonly inView: boolean;
4
+ };
5
+ //# sourceMappingURL=useInViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInViewport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInViewport.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW;;;EAkClD"}
@@ -1,3 +1,3 @@
1
1
  import type { ChatTheme } from "./types";
2
- export declare function renderChatApp(domElement: HTMLElement, apiUrl: string, theme?: Partial<ChatTheme>, onClose?: () => void, onClearChat?: () => void, segmentWriteKey?: string): void;
2
+ export declare function renderChatApp(domElement: HTMLElement, apiUrl: string, theme?: Partial<ChatTheme>, onClose?: () => void, onClearChat?: () => void, segmentWriteKey?: string, onViewAllPress?: (url: string, payload: any) => void, onItemPress?: (url: string, item: any) => void, isBetaMode?: boolean): void;
3
3
  //# sourceMappingURL=index.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIzC,wBAAgB,aAAa,CAC3B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI,EACxB,eAAe,CAAC,EAAE,MAAM,QA2CzB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,wBAAgB,aAAa,CAC3B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,EACpD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,EAC9C,UAAU,CAAC,EAAE,OAAO,QA8FrB"}
@@ -6,7 +6,7 @@ export interface ChatMessage {
6
6
  createdAt: number;
7
7
  isLoading?: boolean;
8
8
  suggestions?: string[];
9
- reaction?: "0" | "1" | "2";
9
+ reaction?: string;
10
10
  search_payload?: Record<string, any>;
11
11
  }
12
12
  export interface ChatTheme {
@@ -40,6 +40,8 @@ export interface ChatWidgetProps {
40
40
  onViewAllPress?: (deepLinkUrl: string, payload: any) => void;
41
41
  /** Called when a product item is pressed. Receives the deep link URL and item data. */
42
42
  onItemPress?: (deepLinkUrl: string, item: any) => void;
43
+ /** When true, shows beta labels and disclaimer. */
44
+ isBetaMode?: boolean;
43
45
  }
44
46
  export interface ChatWidgetRef {
45
47
  clearChat: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vdb-ai-chat",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Cross-platform AI chat widget for React Native and Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/api.ts CHANGED
@@ -42,6 +42,7 @@ export function normaliseMessages(raw: any): ChatMessage[] {
42
42
  ? m.createdAt
43
43
  : Date.now(),
44
44
  search_payload: m.search_payload,
45
+ reaction: String(m.reaction ?? "0"),
45
46
  suggestions: Array.isArray(m.suggestions) ? m.suggestions : undefined,
46
47
  }));
47
48
  }
@@ -56,7 +57,7 @@ export async function fetchInitialMessages(
56
57
  {}
57
58
  );
58
59
  const storedId = conversations?.[priceMode ?? ""]?.conversation_id ?? null;
59
- if (!priceMode) return;
60
+ if (priceMode === undefined) return;
60
61
 
61
62
  const body: any = {};
62
63
  if (storedId) {
@@ -102,7 +103,7 @@ export async function sendUserMessage(
102
103
  );
103
104
  const storedId = conversations?.[priceMode]?.conversation_id ?? null;
104
105
 
105
- if (!priceMode) {
106
+ if (priceMode === undefined) {
106
107
  return null;
107
108
  }
108
109
 
@@ -147,7 +148,7 @@ export async function clearChatHistory(
147
148
  {}
148
149
  );
149
150
  const storedId = conversations?.[priceMode]?.conversation_id ?? null;
150
- if (!storedId || !priceMode) return;
151
+ if (!storedId || priceMode === undefined) return;
151
152
 
152
153
  const url = new URL(apiUrl);
153
154
  url.searchParams.set("conversation_id", storedId);
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { View, Text, StyleSheet } from "react-native";
3
+
4
+ export const BetaNotice = ({ active }: { active?: boolean }) => {
5
+ if (!active) return null;
6
+ return (
7
+ <View style={styles.container}>
8
+ <Text style={styles.text}>
9
+ This AI feature is in beta and may make mistakes.
10
+ </Text>
11
+ </View>
12
+ );
13
+ };
14
+
15
+ const styles = StyleSheet.create({
16
+ container: {
17
+ alignSelf: "stretch",
18
+ paddingVertical: 6,
19
+ paddingHorizontal: 16,
20
+ backgroundColor: "transparent",
21
+ },
22
+ text: {
23
+ color: "#4F4E57",
24
+ fontFamily: "Roboto",
25
+ fontSize: 13,
26
+ fontStyle: "normal",
27
+ fontWeight: "400",
28
+ lineHeight: 18,
29
+ },
30
+ });
31
+
32
+ export default BetaNotice;
@@ -25,37 +25,49 @@ const CloseIcon = () => {
25
25
  return (
26
26
  <ImageComponent
27
27
  source={{
28
- uri: "https://cdn.jsdelivr.net/npm/feather-icons/dist/icons/x.svg",
28
+ uri: "http://cdn.vdbapp.com/ai/chat-widget/assets/img/minus-cirlce.svg",
29
29
  }}
30
30
  resizeMode="contain"
31
- style={{ width: 20, height: 20 }}
31
+ style={{ width: 20, height: 20, tintColor: "#ACACB3" }}
32
32
  />
33
33
  );
34
34
  };
35
35
 
36
- const ChatHeader = ({
37
- onClose,
38
- onClearChat,
39
- }: {
36
+ const VDBLogo = () => {
37
+ return (
38
+ <ImageComponent
39
+ source={{
40
+ uri: "http://cdn.vdbapp.com/ai/chat-widget/assets/img/vdb.svg",
41
+ }}
42
+ resizeMode="contain"
43
+ style={{ width: 30, height: 30, marginRight: 10 }}
44
+ />
45
+ );
46
+ };
47
+
48
+ interface ChatHeaderProps {
40
49
  onClose?: () => void;
41
50
  onClearChat?: () => void;
51
+ isBetaMode?: boolean;
52
+ }
53
+
54
+ const ChatHeader: React.FC<ChatHeaderProps> = ({
55
+ onClose,
56
+ onClearChat,
57
+ isBetaMode,
42
58
  }) => {
43
59
  const { trackEvent } = useUserAnalytics();
44
60
  return (
45
61
  <View style={styles.container}>
46
62
  <View style={styles.logoContainer}>
47
- <ImageComponent
48
- source={{ uri: "https://getvdb.com/mail_images/web_app_favicon.ico" }}
49
- resizeMode="contain"
50
- style={{ width: 30, height: 30, marginRight: 10 }}
51
- />
52
- <Text style={styles.title}>AI Search</Text>
63
+ <VDBLogo />
64
+ <Text style={styles.title}>{isBetaMode ? "AI Search Beta" : "AI Search"}</Text>
53
65
  </View>
54
66
  <View style={styles.buttonContainer}>
55
67
  <TouchableOpacity onPress={() => {
56
68
  trackEvent?.(AnalyticsEventNames.CHAT_CLEARED, {});
57
- console.log("Segment: Clear Chat tracked");
58
- onClearChat?.();
69
+ console.log("Segment: Clear Chat tracked");
70
+ onClearChat?.();
59
71
  }}>
60
72
  <Text style={styles.clearChatText}>Clear Chat</Text>
61
73
  </TouchableOpacity>
@@ -77,19 +89,21 @@ const ChatHeader = ({
77
89
  const styles = StyleSheet.create({
78
90
  container: {
79
91
  padding: 16,
80
- backgroundColor: "#37363F",
92
+ backgroundColor: "#FFFFFF",
81
93
  justifyContent: "space-between",
82
94
  flexDirection: "row",
83
95
  alignItems: "center",
96
+ borderBottomWidth: 1,
97
+ borderBottomColor: "#E0E0E0",
84
98
  },
85
99
  logoContainer: {
86
100
  flexDirection: "row",
87
101
  alignItems: "center",
88
102
  },
89
103
  title: {
90
- fontSize: 17,
104
+ fontSize: 16,
91
105
  fontWeight: "500",
92
- color: "#FFF",
106
+ color: "#020001",
93
107
  },
94
108
  closeButton: {
95
109
  backgroundColor: "#FFF",
@@ -110,7 +124,7 @@ const styles = StyleSheet.create({
110
124
  color: "#FFF",
111
125
  },
112
126
  clearChatText: {
113
- color: "#FFF",
127
+ color: "#4F4E57",
114
128
  fontSize: 14,
115
129
  fontWeight: "500",
116
130
  textDecorationLine: "none",
@@ -43,10 +43,14 @@ const SendIcon = ({
43
43
  return (
44
44
  <ImageComponent
45
45
  source={{
46
- uri: "https://cdn.vdbapp.com/ai/chat-widget/assets/img/up.svg",
46
+ uri: "https://cdn.vdbapp.com/ai/chat-widget/assets/img/send.svg",
47
47
  }}
48
48
  resizeMode="contain"
49
- style={{ ...styles.buttonIcon, tintColor: isInactive ? "#AAA" : "#FFF" }}
49
+ style={{
50
+ ...styles.buttonIcon,
51
+ tintColor: isInactive ? "#ACACB3" : "#020001",
52
+ cursor: isInactive ? "auto" : "pointer",
53
+ }}
50
54
  />
51
55
  );
52
56
  };
@@ -65,7 +69,7 @@ export const ChatInput: React.FC<Props> = ({
65
69
  return (
66
70
  <View
67
71
  style={[
68
- styles.container,
72
+ styles.inputContainer,
69
73
  Platform.OS === "web" ? styles.webShadow : styles.nativeShadow,
70
74
  ]}
71
75
  >
@@ -83,10 +87,7 @@ export const ChatInput: React.FC<Props> = ({
83
87
  autoFocus
84
88
  />
85
89
  <TouchableOpacity
86
- style={{
87
- ...styles.button,
88
- backgroundColor: isInactive ? "#EDEDF2" : "#C000FF",
89
- }}
90
+ style={styles.button}
90
91
  onPress={onSend}
91
92
  disabled={disabled}
92
93
  >
@@ -97,17 +98,18 @@ export const ChatInput: React.FC<Props> = ({
97
98
  };
98
99
 
99
100
  const styles = StyleSheet.create({
100
- container: {
101
+ inputContainer: {
101
102
  flexDirection: "row",
102
- height: 48,
103
- paddingHorizontal: 16,
104
- paddingVertical: 0,
103
+ paddingHorizontal: 12,
104
+ paddingVertical: 16,
105
105
  justifyContent: "space-between",
106
106
  alignItems: "center",
107
107
  alignSelf: "stretch",
108
- borderRadius: 56,
108
+ borderRadius: 8,
109
109
  backgroundColor: "#FFF",
110
- margin: 8,
110
+ borderColor: "#ACACB3",
111
+ borderWidth: 1,
112
+ height: 56,
111
113
  },
112
114
  webShadow: {
113
115
  ...(Platform.OS === "web"
@@ -131,7 +133,7 @@ const styles = StyleSheet.create({
131
133
  lineHeight: 20,
132
134
  minHeight: 20,
133
135
  maxHeight: 120,
134
- paddingHorizontal: 8,
136
+ paddingHorizontal: 0,
135
137
  paddingVertical: 0,
136
138
  backgroundColor: "transparent",
137
139
  borderWidth: 0,
@@ -142,18 +144,18 @@ const styles = StyleSheet.create({
142
144
  : {}),
143
145
  },
144
146
  button: {
145
- marginLeft: 8,
146
- padding: 4,
147
+ marginLeft: 0,
148
+ padding: 0,
147
149
  justifyContent: "center",
148
150
  alignItems: "center",
149
- height: 40,
151
+ height: 24,
150
152
  aspectRatio: 1,
151
- borderRadius: 40,
152
- backgroundColor: "#C000FF",
153
+ borderRadius: 0,
154
+ backgroundColor: "#FFFFFF",
153
155
  },
154
156
  buttonIcon: {
155
- height: 16,
156
- width: 16,
157
+ height: 24,
158
+ width: 24,
157
159
  },
158
160
  sendIconText: {
159
161
  fontSize: 18,