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
@@ -6,38 +6,32 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.MessageBubble = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
- var _utils = require("./utils");
9
+ var _SuggestionsRow = _interopRequireDefault(require("./SuggestionsRow"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
- // Use expo-image on native if available, fallback to RN Image
12
- let ImageComponent = _reactNative.Image;
13
- if (_reactNative.Platform.OS !== "web") {
14
- try {
15
- const ExpoImage = require("expo-image").Image;
16
- if (ExpoImage) ImageComponent = ExpoImage;
17
- } catch {
18
- // expo-image not installed, use React Native Image
19
- }
20
- }
21
12
  const MessageBubbleComponent = ({
22
13
  message,
23
14
  theme,
24
- conversationId,
15
+ priceMode,
25
16
  handleFeedbackAction,
26
17
  onReloadResults,
27
18
  reloading,
28
- hasResults
19
+ hasResults,
20
+ totalResults,
21
+ shownResults,
22
+ onSuggestionSelect,
23
+ isLatest,
24
+ isTyping
29
25
  }) => {
30
26
  const isUser = message.role === "user";
31
- const isValidMessageId = typeof message.id === "string" && message.id.length > 0 && !message.id.startsWith("bot-loading-");
32
- const canFeedback = message.role === "assistant" && !message.isLoading && isValidMessageId && !!conversationId;
33
27
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
34
28
  style: [styles.container, isUser ? styles.alignRight : styles.alignLeft]
35
29
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
36
30
  style: [styles.bubble, {
37
31
  backgroundColor: isUser ? theme.userBubbleColor : theme.botBubbleColor,
38
- borderRadius: theme.borderRadius || 4,
39
- borderTopRightRadius: isUser ? 4 : theme.borderRadius,
40
- borderTopLeftRadius: isUser ? theme.borderRadius : 4
32
+ borderRadius: theme.borderRadius || 8,
33
+ borderBottomRightRadius: isUser ? 0 : theme.borderRadius,
34
+ borderBottomLeftRadius: isUser ? theme.borderRadius : 0
41
35
  }]
42
36
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
43
37
  style: [styles.text, {
@@ -45,61 +39,13 @@ const MessageBubbleComponent = ({
45
39
  fontFamily: theme.fontFamily,
46
40
  fontSize: theme.fontSize
47
41
  }]
48
- }, message.text || "")), (canFeedback || message.search_payload && typeof message.search_payload === "object" && Object.keys(message.search_payload).length > 0) && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
49
- style: styles.rowContainer
50
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
51
- style: styles.time
52
- }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, (0, _utils.formatToTime)(message.createdAt))), message.search_payload && typeof message.search_payload === "object" && Object.keys(message.search_payload).length > 0 && !hasResults && (reloading ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
53
- style: {
54
- flexDirection: "row",
55
- alignItems: "center",
56
- gap: 6
57
- }
58
- }, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
59
- size: "small",
60
- color: "#1a73e8"
61
- }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
62
- style: {
63
- fontSize: 12,
64
- color: "#1a73e8",
65
- textDecorationLine: "underline"
66
- }
67
- }, "Loading\u2026")) : /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
68
- onPress: () => onReloadResults?.(message),
69
- disabled: reloading
70
- }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
71
- style: {
72
- fontSize: 12,
73
- color: "#1a73e8",
74
- textDecorationLine: "underline"
75
- }
76
- }, "Reload Results"))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
77
- style: styles.likeDislikeContainer
78
- }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
79
- onPress: () => handleFeedbackAction(_utils.FeedbackAction.LIKE, String(conversationId), message.id),
80
- disabled: !canFeedback
81
- }, /*#__PURE__*/_react.default.createElement(ImageComponent, {
82
- source: {
83
- uri: message.reaction === _utils.FeedbackAction.LIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like.svg"
84
- },
85
- resizeMode: "contain",
86
- style: {
87
- width: 16,
88
- height: 16
89
- }
90
- })), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
91
- onPress: () => handleFeedbackAction(_utils.FeedbackAction.DISLIKE, String(conversationId), message.id),
92
- disabled: !canFeedback
93
- }, /*#__PURE__*/_react.default.createElement(ImageComponent, {
94
- source: {
95
- uri: message.reaction === _utils.FeedbackAction.DISLIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike.svg"
96
- },
97
- resizeMode: "contain",
98
- style: {
99
- width: 16,
100
- height: 16
101
- }
102
- })))));
42
+ }, message.text || "", message.role === "assistant" && hasResults && typeof totalResults === "number" ? ` Found ${Number(totalResults).toLocaleString()} diamonds (showing first ${shownResults})` : null), message.role === "assistant" && Array.isArray(message.suggestions) && message.suggestions.length > 0 && isLatest && !isTyping && !(message.search_payload && typeof message.search_payload === "object" && Object.keys(message.search_payload).length > 0) && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
43
+ style: styles.suggestionsWrapper
44
+ }, /*#__PURE__*/_react.default.createElement(_SuggestionsRow.default, {
45
+ suggestions: message.suggestions,
46
+ onSelect: v => onSuggestionSelect?.(v),
47
+ variant: "inline"
48
+ }))));
103
49
  };
104
50
 
105
51
  // Memoize to prevent re-renders when parent re-renders
@@ -107,21 +53,9 @@ const MessageBubble = exports.MessageBubble = /*#__PURE__*/(0, _react.memo)(Mess
107
53
  const styles = _reactNative.StyleSheet.create({
108
54
  container: {
109
55
  paddingHorizontal: 8,
110
- marginVertical: 4,
56
+ marginVertical: 0,
111
57
  width: "100%"
112
58
  },
113
- rowContainer: {
114
- flexDirection: "row",
115
- justifyContent: "space-between",
116
- alignItems: "center",
117
- gap: 12,
118
- marginTop: 8,
119
- marginBottom: 8
120
- },
121
- likeDislikeContainer: {
122
- flexDirection: "row",
123
- gap: 12
124
- },
125
59
  alignRight: {
126
60
  alignItems: "flex-end"
127
61
  },
@@ -136,11 +70,13 @@ const styles = _reactNative.StyleSheet.create({
136
70
  text: {
137
71
  lineHeight: 20
138
72
  },
139
- time: {
140
- fontSize: 12,
141
- color: "#666",
73
+ resultsInfo: {
142
74
  marginTop: 4,
143
- marginLeft: 8
75
+ fontSize: 12,
76
+ color: "#666"
77
+ },
78
+ suggestionsWrapper: {
79
+ marginTop: 8
144
80
  }
145
81
  });
146
82
  //# sourceMappingURL=MessageBubble.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ImageComponent","Image","Platform","OS","ExpoImage","MessageBubbleComponent","message","theme","conversationId","handleFeedbackAction","onReloadResults","reloading","hasResults","isUser","role","isValidMessageId","id","length","startsWith","canFeedback","isLoading","createElement","View","style","styles","container","alignRight","alignLeft","bubble","backgroundColor","userBubbleColor","botBubbleColor","borderRadius","borderTopRightRadius","borderTopLeftRadius","Text","text","color","userTextColor","botTextColor","fontFamily","fontSize","search_payload","keys","rowContainer","time","formatToTime","createdAt","flexDirection","alignItems","gap","ActivityIndicator","size","textDecorationLine","TouchableOpacity","onPress","disabled","likeDislikeContainer","FeedbackAction","LIKE","String","source","uri","reaction","resizeMode","width","height","DISLIKE","MessageBubble","exports","memo","StyleSheet","create","paddingHorizontal","marginVertical","justifyContent","marginTop","marginBottom","maxWidth","paddingVertical","lineHeight","marginLeft"],"sourceRoot":"../../../src","sources":["components/MessageBubble.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_SuggestionsRow","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MessageBubbleComponent","message","theme","priceMode","handleFeedbackAction","onReloadResults","reloading","hasResults","totalResults","shownResults","onSuggestionSelect","isLatest","isTyping","isUser","role","createElement","View","style","styles","container","alignRight","alignLeft","bubble","backgroundColor","userBubbleColor","botBubbleColor","borderRadius","borderBottomRightRadius","borderBottomLeftRadius","Text","text","color","userTextColor","botTextColor","fontFamily","fontSize","Number","toLocaleString","Array","isArray","suggestions","length","search_payload","keys","suggestionsWrapper","onSelect","v","variant","MessageBubble","exports","memo","StyleSheet","create","paddingHorizontal","marginVertical","width","alignItems","maxWidth","paddingVertical","lineHeight","resultsInfo","marginTop"],"sourceRoot":"../../../src","sources":["components/MessageBubble.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.MessageMetaRow = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _utils = require("./utils");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ let ImageComponent = _reactNative.Image;
12
+ if (_reactNative.Platform.OS !== "web") {
13
+ try {
14
+ const ExpoImage = require("expo-image").Image;
15
+ if (ExpoImage) ImageComponent = ExpoImage;
16
+ } catch {}
17
+ }
18
+ const MessageMetaRow = ({
19
+ message,
20
+ priceMode,
21
+ handleFeedbackAction,
22
+ onReloadResults,
23
+ reloading,
24
+ hasResults
25
+ }) => {
26
+ const isUser = message.role === "user";
27
+ const [conversationId, setConversationId] = _react.default.useState(null);
28
+ _react.default.useEffect(() => {
29
+ const fetchId = async () => {
30
+ const id = await (0, _utils.fetchConversationId)(priceMode);
31
+ setConversationId(id);
32
+ };
33
+ fetchId();
34
+ }, [priceMode]);
35
+ const isValidMessageId = typeof message.id === "string" && message.id.length > 0 && !message.id.startsWith("bot-loading-");
36
+ const canFeedback = message.role === "assistant" && !message.isLoading && isValidMessageId && !!conversationId;
37
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
38
+ style: [styles.rowContainer, isUser ? styles.alignRight : styles.alignLeft]
39
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
+ style: styles.timeContainer
41
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
42
+ style: styles.timeText
43
+ }, (0, _utils.formatToTime)(message.createdAt))), canFeedback ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
44
+ style: styles.likeDislikeContainer
45
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
46
+ style: state => [styles.borderButton, state?.hovered && styles.borderButtonHover],
47
+ onPress: () => handleFeedbackAction(_utils.FeedbackAction.LIKE, String(conversationId), message.id),
48
+ disabled: !canFeedback
49
+ }, /*#__PURE__*/_react.default.createElement(ImageComponent, {
50
+ source: {
51
+ uri: message.reaction === _utils.FeedbackAction.LIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like.svg"
52
+ },
53
+ resizeMode: "contain",
54
+ style: {
55
+ width: 16,
56
+ height: 16
57
+ }
58
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
59
+ style: state => [styles.borderButton, state?.hovered && styles.borderButtonHover],
60
+ onPress: () => handleFeedbackAction(_utils.FeedbackAction.DISLIKE, String(conversationId), message.id),
61
+ disabled: !canFeedback
62
+ }, /*#__PURE__*/_react.default.createElement(ImageComponent, {
63
+ source: {
64
+ uri: message.reaction === _utils.FeedbackAction.DISLIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike.svg"
65
+ },
66
+ resizeMode: "contain",
67
+ style: {
68
+ width: 16,
69
+ height: 16
70
+ }
71
+ }))) : null);
72
+ };
73
+ exports.MessageMetaRow = MessageMetaRow;
74
+ const styles = _reactNative.StyleSheet.create({
75
+ rowContainer: {
76
+ flexDirection: "row",
77
+ justifyContent: "space-between",
78
+ alignItems: "center",
79
+ gap: 6,
80
+ marginHorizontal: 8,
81
+ marginTop: 0,
82
+ marginBottom: 12
83
+ },
84
+ alignRight: {
85
+ alignSelf: "flex-end"
86
+ },
87
+ alignLeft: {
88
+ alignSelf: "flex-start"
89
+ },
90
+ likeDislikeContainer: {
91
+ flexDirection: "row",
92
+ gap: 6
93
+ },
94
+ timeContainer: {
95
+ margin: 0
96
+ },
97
+ borderButton: {
98
+ borderWidth: 1,
99
+ borderColor: "#D5D5DC",
100
+ borderRadius: 8,
101
+ paddingHorizontal: 4,
102
+ paddingVertical: 4
103
+ },
104
+ borderButtonHover: {
105
+ backgroundColor: "#EDEDF2"
106
+ },
107
+ timeText: {
108
+ fontSize: 12,
109
+ color: "#666"
110
+ }
111
+ });
112
+ var _default = exports.default = MessageMetaRow;
113
+ //# sourceMappingURL=MessageMetaRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_utils","e","__esModule","default","ImageComponent","Image","Platform","OS","ExpoImage","MessageMetaRow","message","priceMode","handleFeedbackAction","onReloadResults","reloading","hasResults","isUser","role","conversationId","setConversationId","React","useState","useEffect","fetchId","id","fetchConversationId","isValidMessageId","length","startsWith","canFeedback","isLoading","createElement","View","style","styles","rowContainer","alignRight","alignLeft","timeContainer","Text","timeText","formatToTime","createdAt","likeDislikeContainer","Pressable","state","borderButton","hovered","borderButtonHover","onPress","FeedbackAction","LIKE","String","disabled","source","uri","reaction","resizeMode","width","height","DISLIKE","exports","StyleSheet","create","flexDirection","justifyContent","alignItems","gap","marginHorizontal","marginTop","marginBottom","alignSelf","margin","borderWidth","borderColor","borderRadius","paddingHorizontal","paddingVertical","backgroundColor","fontSize","color","_default"],"sourceRoot":"../../../src","sources":["components/MessageMetaRow.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ // Use expo-image on native if available, fallback to RN Image
11
+ let ImageComponent = _reactNative.Image;
12
+ if (_reactNative.Platform.OS !== "web") {
13
+ try {
14
+ const ExpoImage = require("expo-image").Image;
15
+ if (ExpoImage) ImageComponent = ExpoImage;
16
+ } catch {
17
+ // expo-image not installed, use React Native Image
18
+ }
19
+ }
20
+ const ProductsGridComponent = ({
21
+ data,
22
+ onViewAll,
23
+ onItemPress
24
+ }) => {
25
+ if (!data || !data.length) return null;
26
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
27
+ style: styles.wrapper
28
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
29
+ horizontal: true,
30
+ showsHorizontalScrollIndicator: false,
31
+ contentContainerStyle: styles.listContent
32
+ }, data.map(item => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
33
+ key: item.id,
34
+ onPress: () => {
35
+ onItemPress?.(item);
36
+ }
37
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
38
+ key: item.id,
39
+ style: styles.card
40
+ }, item.image_thumb_url ? /*#__PURE__*/_react.default.createElement(ImageComponent, {
41
+ style: styles.image,
42
+ source: {
43
+ uri: item.image_thumb_url
44
+ }
45
+ }) : null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
46
+ style: styles.content
47
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
48
+ numberOfLines: 2,
49
+ style: styles.title
50
+ }, item.short_title), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
51
+ style: styles.price
52
+ }, "$", item.total_sales_price)))))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
53
+ style: styles.button,
54
+ activeOpacity: 0.8,
55
+ onPress: onViewAll
56
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
57
+ style: styles.buttonText
58
+ }, "View All ", ">>")));
59
+ };
60
+ const styles = _reactNative.StyleSheet.create({
61
+ wrapper: {
62
+ paddingHorizontal: 12,
63
+ marginHorizontal: 12,
64
+ marginBottom: 12,
65
+ paddingTop: 6,
66
+ paddingBottom: 14,
67
+ backgroundColor: "#fff",
68
+ borderRadius: 8,
69
+ borderWidth: 1,
70
+ borderColor: "#e8e8e8",
71
+ elevation: 3,
72
+ shadowColor: "#000",
73
+ shadowOpacity: 0.08,
74
+ shadowOffset: {
75
+ width: 0,
76
+ height: 2
77
+ },
78
+ shadowRadius: 6
79
+ },
80
+ listContent: {
81
+ gap: 12,
82
+ paddingVertical: 6
83
+ },
84
+ card: {
85
+ width: 150,
86
+ backgroundColor: "#fff",
87
+ borderRadius: 14,
88
+ overflow: "hidden",
89
+ borderColor: "#e8e8e8",
90
+ borderWidth: 1,
91
+ elevation: 3,
92
+ shadowColor: "#000",
93
+ shadowOpacity: 0.08,
94
+ shadowOffset: {
95
+ width: 0,
96
+ height: 2
97
+ },
98
+ shadowRadius: 6
99
+ },
100
+ image: {
101
+ width: "100%",
102
+ height: 120,
103
+ borderBottomWidth: 1,
104
+ borderBottomColor: "#e8e8e8"
105
+ },
106
+ content: {
107
+ padding: 10,
108
+ gap: 4
109
+ },
110
+ title: {
111
+ fontSize: 13,
112
+ color: "#222",
113
+ fontWeight: "500"
114
+ },
115
+ price: {
116
+ marginTop: 4,
117
+ fontSize: 14,
118
+ fontWeight: "700",
119
+ color: "#000"
120
+ },
121
+ button: {
122
+ marginTop: 12,
123
+ alignSelf: "center",
124
+ paddingHorizontal: 20,
125
+ paddingVertical: 8,
126
+ backgroundColor: "#804195",
127
+ borderRadius: 20,
128
+ width: 300,
129
+ alignItems: "center"
130
+ },
131
+ buttonText: {
132
+ color: "#fff",
133
+ fontSize: 14,
134
+ fontWeight: "600"
135
+ }
136
+ });
137
+ const ProductsGrid = /*#__PURE__*/(0, _react.memo)(ProductsGridComponent);
138
+ var _default = exports.default = ProductsGrid;
139
+ //# sourceMappingURL=ProductsGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ImageComponent","Image","Platform","OS","ExpoImage","ProductsGridComponent","data","onViewAll","onItemPress","length","createElement","View","style","styles","wrapper","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","listContent","map","item","TouchableOpacity","key","id","onPress","card","image_thumb_url","image","source","uri","content","Text","numberOfLines","title","short_title","price","total_sales_price","button","activeOpacity","buttonText","StyleSheet","create","paddingHorizontal","marginHorizontal","marginBottom","paddingTop","paddingBottom","backgroundColor","borderRadius","borderWidth","borderColor","elevation","shadowColor","shadowOpacity","shadowOffset","width","height","shadowRadius","gap","paddingVertical","overflow","borderBottomWidth","borderBottomColor","padding","fontSize","color","fontWeight","marginTop","alignSelf","alignItems","ProductsGrid","memo","_default","exports"],"sourceRoot":"../../../src","sources":["components/ProductsGrid.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,136 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _reactNative = require("react-native");
8
- var _react = _interopRequireWildcard(require("react"));
9
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
- // Use expo-image on native if available, fallback to RN Image
11
- let ImageComponent = _reactNative.Image;
12
- if (_reactNative.Platform.OS !== "web") {
13
- try {
14
- const ExpoImage = require("expo-image").Image;
15
- if (ExpoImage) ImageComponent = ExpoImage;
16
- } catch {
17
- // expo-image not installed, use React Native Image
18
- }
19
- }
20
- const ProductsListComponent = ({
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _ProductsGrid = _interopRequireDefault(require("./ProductsGrid"));
9
+ var _ProductsListView = _interopRequireDefault(require("./ProductsListView"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const ProductsList = ({
21
12
  data,
22
13
  onViewAll,
23
- onItemPress
14
+ onItemPress,
15
+ variant = "list",
16
+ totalResults
24
17
  }) => {
25
18
  if (!data || !data.length) return null;
26
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
27
- style: styles.wrapper
28
- }, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
29
- horizontal: true,
30
- showsHorizontalScrollIndicator: false,
31
- contentContainerStyle: styles.listContent
32
- }, data.map(item => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
33
- key: item.id,
34
- onPress: () => {
35
- onItemPress?.(item);
36
- }
37
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
38
- key: item.id,
39
- style: styles.card
40
- }, item.image_thumb_url ? /*#__PURE__*/_react.default.createElement(ImageComponent, {
41
- style: styles.image,
42
- source: {
43
- uri: item.image_thumb_url
44
- }
45
- }) : null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
46
- style: styles.content
47
- }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
48
- numberOfLines: 2,
49
- style: styles.title
50
- }, item.short_title), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
51
- style: styles.price
52
- }, "$", item.total_sales_price)))))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
53
- style: styles.button,
54
- activeOpacity: 0.8,
55
- onPress: onViewAll
56
- }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
57
- style: styles.buttonText
58
- }, "View All ", ">>")));
59
- };
60
- const styles = _reactNative.StyleSheet.create({
61
- wrapper: {
62
- paddingHorizontal: 12,
63
- marginHorizontal: 12,
64
- marginBottom: 12,
65
- paddingTop: 6,
66
- paddingBottom: 14,
67
- backgroundColor: "#fff",
68
- borderRadius: 8,
69
- borderWidth: 1,
70
- borderColor: "#e8e8e8",
71
- elevation: 3,
72
- shadowColor: "#000",
73
- shadowOpacity: 0.08,
74
- shadowOffset: {
75
- width: 0,
76
- height: 2
77
- },
78
- shadowRadius: 6
79
- },
80
- listContent: {
81
- gap: 12,
82
- paddingVertical: 6
83
- },
84
- card: {
85
- width: 150,
86
- backgroundColor: "#fff",
87
- borderRadius: 14,
88
- overflow: "hidden",
89
- borderColor: "#e8e8e8",
90
- borderWidth: 1,
91
- elevation: 3,
92
- shadowColor: "#000",
93
- shadowOpacity: 0.08,
94
- shadowOffset: {
95
- width: 0,
96
- height: 2
97
- },
98
- shadowRadius: 6
99
- },
100
- image: {
101
- width: "100%",
102
- height: 120,
103
- borderBottomWidth: 1,
104
- borderBottomColor: "#e8e8e8"
105
- },
106
- content: {
107
- padding: 10,
108
- gap: 4
109
- },
110
- title: {
111
- fontSize: 13,
112
- color: "#222",
113
- fontWeight: "500"
114
- },
115
- price: {
116
- marginTop: 4,
117
- fontSize: 14,
118
- fontWeight: "700",
119
- color: "#000"
120
- },
121
- button: {
122
- marginTop: 12,
123
- alignSelf: "center",
124
- paddingHorizontal: 20,
125
- paddingVertical: 8,
126
- backgroundColor: "#804195",
127
- borderRadius: 20,
128
- width: 300,
129
- alignItems: "center"
130
- },
131
- buttonText: {
132
- color: "#fff",
133
- fontSize: 14,
134
- fontWeight: "600"
19
+ if (variant === "list") {
20
+ return /*#__PURE__*/_react.default.createElement(_ProductsListView.default, {
21
+ data: data,
22
+ onViewAll: onViewAll,
23
+ onItemPress: onItemPress,
24
+ totalResults: totalResults
25
+ });
135
26
  }
136
- });
137
- const ProductsList = /*#__PURE__*/(0, _react.memo)(ProductsListComponent);
27
+ return /*#__PURE__*/_react.default.createElement(_ProductsGrid.default, {
28
+ data: data,
29
+ onViewAll: onViewAll,
30
+ onItemPress: onItemPress,
31
+ totalResults: totalResults
32
+ });
33
+ };
138
34
  var _default = exports.default = ProductsList;
139
35
  //# sourceMappingURL=ProductsList.js.map