@athoscommerce/snap-preact 1.2.2 → 1.2.3-beta.2

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 (235) hide show
  1. package/dist/cjs/components/src/components/Atoms/Button/Button.d.ts +1 -1
  2. package/dist/cjs/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  3. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  4. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  5. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +85 -0
  6. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  7. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  8. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +17 -0
  9. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  10. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  11. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +30 -13
  12. package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  13. package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  14. package/dist/cjs/components/src/components/Atoms/Icon/paths.js +21 -0
  15. package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +2 -2
  16. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  17. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  18. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +115 -0
  19. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  20. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  21. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
  22. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  23. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  24. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +106 -0
  25. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  26. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  27. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
  28. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +23 -0
  29. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  30. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +445 -0
  31. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  32. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  33. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
  34. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +2 -2
  35. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts +3 -3
  36. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  37. package/dist/cjs/components/src/components/Molecules/Result/Result.js +4 -4
  38. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +2 -0
  39. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  40. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +19 -2
  41. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  42. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +30 -12
  43. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +14 -0
  44. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  45. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +1619 -0
  46. package/dist/cjs/components/src/components/Organisms/Chat/ChatAttachmentContext.d.ts +19 -0
  47. package/dist/cjs/components/src/components/Organisms/Chat/ChatAttachmentContext.d.ts.map +1 -0
  48. package/dist/cjs/components/src/components/Organisms/Chat/ChatAttachmentContext.js +22 -0
  49. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.d.ts +12 -0
  50. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -0
  51. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.js +158 -0
  52. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts +13 -0
  53. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -0
  54. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.js +170 -0
  55. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts +11 -0
  56. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -0
  57. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.js +192 -0
  58. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +11 -0
  59. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -0
  60. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.js +86 -0
  61. package/dist/cjs/components/src/components/Organisms/Chat/SuggestedQuestions.d.ts +12 -0
  62. package/dist/cjs/components/src/components/Organisms/Chat/SuggestedQuestions.d.ts.map +1 -0
  63. package/dist/cjs/components/src/components/Organisms/Chat/SuggestedQuestions.js +73 -0
  64. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts +2 -0
  65. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  66. package/dist/cjs/components/src/components/Organisms/Chat/index.js +17 -0
  67. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +2 -2
  68. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts +1 -0
  69. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts.map +1 -1
  70. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.js +2 -2
  71. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  72. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  73. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +8 -10
  74. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  75. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +6 -8
  76. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  77. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +7 -9
  78. package/dist/cjs/components/src/components/Templates/Search/Search.d.ts +2 -2
  79. package/dist/cjs/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  80. package/dist/cjs/components/src/hooks/useAcRenderedInput.js +1 -1
  81. package/dist/cjs/components/src/hooks/useLayoutOptions.d.ts.map +1 -1
  82. package/dist/cjs/components/src/hooks/useLayoutOptions.js +21 -11
  83. package/dist/cjs/components/src/index.d.ts +1 -0
  84. package/dist/cjs/components/src/index.d.ts.map +1 -1
  85. package/dist/cjs/components/src/index.js +1 -0
  86. package/dist/cjs/components/src/providers/themeComponents.d.ts +50 -16
  87. package/dist/cjs/components/src/providers/themeComponents.d.ts.map +1 -1
  88. package/dist/cjs/components/src/providers/withTracking.d.ts +2 -2
  89. package/dist/cjs/components/src/providers/withTracking.d.ts.map +1 -1
  90. package/dist/cjs/components/src/types.d.ts +2 -0
  91. package/dist/cjs/components/src/types.d.ts.map +1 -1
  92. package/dist/cjs/src/Snap.d.ts +2 -1
  93. package/dist/cjs/src/Snap.d.ts.map +1 -1
  94. package/dist/cjs/src/Snap.js +124 -24
  95. package/dist/cjs/src/Templates/SnapTemplates.d.ts +12 -2
  96. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  97. package/dist/cjs/src/Templates/SnapTemplates.js +54 -1
  98. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts +4 -0
  99. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  100. package/dist/cjs/src/Templates/Stores/LibraryStore.js +19 -0
  101. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +5 -2
  102. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  103. package/dist/cjs/src/Templates/Stores/TemplateStore.js +1 -0
  104. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  105. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  106. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  107. package/dist/cjs/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  108. package/dist/cjs/src/Templates/Stores/library/languages/es.js +5 -0
  109. package/dist/cjs/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  110. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +5 -0
  111. package/dist/cjs/src/create/createChatController.d.ts +5 -0
  112. package/dist/cjs/src/create/createChatController.d.ts.map +1 -0
  113. package/dist/cjs/src/create/createChatController.js +43 -0
  114. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  115. package/dist/cjs/src/setupEvents.js +39 -0
  116. package/dist/cjs/src/types.d.ts +15 -3
  117. package/dist/cjs/src/types.d.ts.map +1 -1
  118. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -1
  119. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  120. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  121. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  122. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +67 -0
  123. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  124. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  125. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  126. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  127. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  128. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +33 -9
  129. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  130. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  131. package/dist/esm/components/src/components/Atoms/Icon/paths.js +21 -0
  132. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +1 -1
  133. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  134. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  135. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +109 -0
  136. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  137. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  138. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  139. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  140. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  141. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +85 -0
  142. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  143. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  144. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  145. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +23 -0
  146. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  147. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +421 -0
  148. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  149. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  150. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  151. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
  152. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +3 -3
  153. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  154. package/dist/esm/components/src/components/Molecules/Result/Result.js +2 -2
  155. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +2 -0
  156. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  157. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +35 -2
  158. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  159. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +30 -12
  160. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +14 -0
  161. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  162. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +1560 -0
  163. package/dist/esm/components/src/components/Organisms/Chat/ChatAttachmentContext.d.ts +19 -0
  164. package/dist/esm/components/src/components/Organisms/Chat/ChatAttachmentContext.d.ts.map +1 -0
  165. package/dist/esm/components/src/components/Organisms/Chat/ChatAttachmentContext.js +16 -0
  166. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.d.ts +12 -0
  167. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -0
  168. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.js +143 -0
  169. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts +13 -0
  170. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -0
  171. package/dist/esm/components/src/components/Organisms/Chat/MessageText.js +152 -0
  172. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts +11 -0
  173. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -0
  174. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.js +164 -0
  175. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +11 -0
  176. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -0
  177. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.js +70 -0
  178. package/dist/esm/components/src/components/Organisms/Chat/SuggestedQuestions.d.ts +12 -0
  179. package/dist/esm/components/src/components/Organisms/Chat/SuggestedQuestions.d.ts.map +1 -0
  180. package/dist/esm/components/src/components/Organisms/Chat/SuggestedQuestions.js +58 -0
  181. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +2 -0
  182. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  183. package/dist/esm/components/src/components/Organisms/Chat/index.js +1 -0
  184. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +2 -2
  185. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts +1 -0
  186. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts.map +1 -1
  187. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.js +2 -2
  188. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  189. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  190. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +7 -8
  191. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  192. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +7 -8
  193. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  194. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +7 -8
  195. package/dist/esm/components/src/components/Templates/Search/Search.d.ts +2 -2
  196. package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  197. package/dist/esm/components/src/hooks/useAcRenderedInput.js +1 -1
  198. package/dist/esm/components/src/hooks/useLayoutOptions.d.ts.map +1 -1
  199. package/dist/esm/components/src/hooks/useLayoutOptions.js +21 -11
  200. package/dist/esm/components/src/index.d.ts +1 -0
  201. package/dist/esm/components/src/index.d.ts.map +1 -1
  202. package/dist/esm/components/src/index.js +1 -0
  203. package/dist/esm/components/src/providers/themeComponents.d.ts +50 -16
  204. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  205. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  206. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  207. package/dist/esm/components/src/types.d.ts +2 -0
  208. package/dist/esm/components/src/types.d.ts.map +1 -1
  209. package/dist/esm/src/Snap.d.ts +2 -1
  210. package/dist/esm/src/Snap.d.ts.map +1 -1
  211. package/dist/esm/src/Snap.js +59 -0
  212. package/dist/esm/src/Templates/SnapTemplates.d.ts +12 -2
  213. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  214. package/dist/esm/src/Templates/SnapTemplates.js +43 -0
  215. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +4 -0
  216. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  217. package/dist/esm/src/Templates/Stores/LibraryStore.js +6 -0
  218. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +5 -2
  219. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  220. package/dist/esm/src/Templates/Stores/TemplateStore.js +1 -0
  221. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  222. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  223. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  224. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  225. package/dist/esm/src/Templates/Stores/library/languages/es.js +5 -0
  226. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  227. package/dist/esm/src/Templates/Stores/library/languages/fr.js +5 -0
  228. package/dist/esm/src/create/createChatController.d.ts +5 -0
  229. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  230. package/dist/esm/src/create/createChatController.js +29 -0
  231. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  232. package/dist/esm/src/setupEvents.js +23 -0
  233. package/dist/esm/src/types.d.ts +15 -3
  234. package/dist/esm/src/types.d.ts.map +1 -1
  235. package/package.json +13 -12
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
+ import { observer } from 'mobx-react-lite';
3
+ import { css } from '@emotion/react';
4
+ import classnames from 'classnames';
5
+ import { useTheme, CacheProvider, useTreePath } from '../../../providers';
6
+ import { mergeProps, mergeStyles } from '../../../utilities';
7
+ const defaultStyles = () => {
8
+ return css({
9
+ padding: '1em',
10
+ '.ss__chat-product-comparison-message__table-wrapper': {
11
+ overflowX: 'auto',
12
+ },
13
+ '.ss__chat-product-comparison-message__table': {
14
+ borderCollapse: 'collapse',
15
+ width: '100%',
16
+ fontSize: '0.9em',
17
+ 'th, td': {
18
+ padding: '0.6em 0.8em',
19
+ textAlign: 'left',
20
+ verticalAlign: 'top',
21
+ border: '1px solid #E5E7EB',
22
+ },
23
+ 'tbody tr:nth-of-type(even)': {
24
+ background: '#F9FAFB',
25
+ },
26
+ '.ss__chat-product-comparison-message__table__product-header': {
27
+ textAlign: 'center',
28
+ minWidth: '120px',
29
+ '.ss__chat-product-comparison-message__table__product-header__image': {
30
+ width: '80px',
31
+ height: '80px',
32
+ objectFit: 'contain',
33
+ display: 'block',
34
+ margin: '0 auto 0.4em',
35
+ },
36
+ '.ss__chat-product-comparison-message__table__product-header__name': {
37
+ fontWeight: 'bold',
38
+ fontSize: '0.85em',
39
+ },
40
+ },
41
+ '.ss__chat-product-comparison-message__table__feature-name': {
42
+ fontWeight: '600',
43
+ background: '#F3F4F6',
44
+ whiteSpace: 'nowrap',
45
+ },
46
+ '.ss__chat-product-comparison-message__table__value': {
47
+ textAlign: 'center',
48
+ },
49
+ },
50
+ });
51
+ };
52
+ export const ChatProductComparisonMessage = observer((properties) => {
53
+ const globalTheme = useTheme();
54
+ const globalTreePath = useTreePath();
55
+ const defaultProps = {
56
+ treePath: globalTreePath,
57
+ };
58
+ const props = mergeProps('chatProductComparisonMessage', globalTheme, defaultProps, properties);
59
+ const { chatItem, className, internalClassName } = props;
60
+ // const subProps: ChatProductComparisonMessageSubProps = {
61
+ // };
62
+ const styling = mergeStyles(props, defaultStyles);
63
+ //initialize lang
64
+ // const defaultLang = {
65
+ // // label: {
66
+ // // value: label,
67
+ // // },
68
+ // };
69
+ //deep merge with props.lang
70
+ // const lang = deepmerge(defaultLang, props.lang || {});
71
+ const { messageType, comparisonData, searchResults } = chatItem;
72
+ if (messageType !== 'productComparison') {
73
+ console.warn('ChatProductComparisonMessage received message with unsupported type:', messageType, 'Expected type: productComparison');
74
+ return null;
75
+ }
76
+ const headings = comparisonData.features.length ? Object.keys(comparisonData.features[0].values) : [];
77
+ const getDisplay = (r) => r?.display || r;
78
+ const allProductsHaveImage = headings.length > 0 && headings.every((heading) => !!getDisplay(searchResults.find((r) => r?.id === heading))?.mappings?.core?.imageUrl);
79
+ return comparisonData.features.length ? (_jsx(CacheProvider, { children: _jsx("div", { className: classnames('ss__chat-product-comparison-message', className, internalClassName), ...styling, children: _jsx("div", { className: classnames('ss__chat-product-comparison-message__table-wrapper'), children: _jsxs("table", { className: classnames('ss__chat-product-comparison-message__table'), children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", {}), headings.map((heading) => {
80
+ const product = searchResults.find((r) => r?.id === heading);
81
+ const display = getDisplay(product);
82
+ const productName = display?.mappings?.core?.name ?? heading;
83
+ return (_jsxs("th", { className: classnames('ss__chat-product-comparison-message__table__product-header'), children: [allProductsHaveImage && (_jsx("img", { className: classnames('ss__chat-product-comparison-message__table__product-header__image'), src: display.mappings.core.imageUrl, alt: productName })), _jsx("div", { className: classnames('ss__chat-product-comparison-message__table__product-header__name'), children: productName })] }, heading));
84
+ })] }) }), _jsx("tbody", { children: comparisonData.features.map((feature, index) => (_jsxs("tr", { children: [_jsx("td", { className: classnames('ss__chat-product-comparison-message__table__feature-name'), children: feature.featureName }), headings.map((heading) => (_jsx("td", { className: classnames('ss__chat-product-comparison-message__table__value'), children: feature.values[heading] ?? '—' }, heading)))] }, index))) })] }) }) }) })) : null;
85
+ });
@@ -0,0 +1,2 @@
1
+ export * from './ChatProductComparisonMessage';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/ChatProductComparisonMessage/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './ChatProductComparisonMessage';
@@ -0,0 +1,23 @@
1
+ import { ComponentProps } from '../../../types';
2
+ import type { ChatController } from '@athoscommerce/snap-controller';
3
+ export declare const ChatProductQueryMessage: ((properties: ChatProductQueryMessageProps) => import("@emotion/react/jsx-runtime").JSX.Element | null) & {
4
+ displayName: string;
5
+ };
6
+ export type ChatProductQueryMessageProps = {
7
+ chatItem: ChatProductQueryMessageItem;
8
+ controller?: ChatController;
9
+ displayFields?: string[];
10
+ lang?: Partial<ChatProductQueryMessageLang>;
11
+ } & ChatProductQueryMessageTemplatesLegalProps & ComponentProps<ChatProductQueryMessageProps>;
12
+ export type ChatProductQueryMessageItem = {
13
+ id: string;
14
+ messageType: 'productQuery';
15
+ sourceProduct: any;
16
+ sourceMessageId?: string;
17
+ };
18
+ export type ChatProductQueryMessageTemplatesLegalProps = {
19
+ chatItem: ChatProductQueryMessageItem;
20
+ };
21
+ export interface ChatProductQueryMessageLang {
22
+ }
23
+ //# sourceMappingURL=ChatProductQueryMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatProductQueryMessage.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AA+ZrE,eAAO,MAAM,uBAAuB,gBAAyB,4BAA4B;;CAwNvF,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,EAAE,2BAA2B,CAAC;IACtC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC5C,GAAG,0CAA0C,GAC7C,cAAc,CAAC,4BAA4B,CAAC,CAAC;AAE9C,MAAM,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACxD,QAAQ,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,2BAA2B;CAE3C"}
@@ -0,0 +1,421 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
+ import { observer } from 'mobx-react-lite';
3
+ import { css } from '@emotion/react';
4
+ import classnames from 'classnames';
5
+ import { useTheme, CacheProvider, useTreePath } from '../../../providers';
6
+ import { mergeProps, mergeStyles } from '../../../utilities';
7
+ import { Image } from '../../Atoms/Image';
8
+ import { Button } from '../../Atoms/Button';
9
+ import { Icon, Price } from '../../..';
10
+ const defaultStyles = () => {
11
+ const colorPrimary = '#253B80';
12
+ return css({
13
+ display: 'flex',
14
+ flexDirection: 'column',
15
+ gap: '1em',
16
+ '.ss__chat-product-query-message__header': {
17
+ background: colorPrimary,
18
+ padding: '1em',
19
+ display: 'flex',
20
+ flexDirection: 'column',
21
+ '.ss__chat-product-query-message__header__back': {
22
+ display: 'flex',
23
+ alignItems: 'center',
24
+ gap: '0.35em',
25
+ color: '#fff',
26
+ cursor: 'pointer',
27
+ alignSelf: 'flex-start',
28
+ padding: '0.5em 0',
29
+ fontSize: '0.85em',
30
+ opacity: 0.85,
31
+ '&:hover': {
32
+ opacity: 1,
33
+ },
34
+ svg: {
35
+ fill: '#fff',
36
+ stroke: '#fff',
37
+ },
38
+ },
39
+ '.ss__price': {
40
+ color: '#fff',
41
+ },
42
+ '.ss__chat-product-query-message__header__product': {
43
+ display: 'flex',
44
+ gap: '0.75em',
45
+ alignItems: 'center',
46
+ background: '#40528e',
47
+ borderRadius: '0.75em',
48
+ padding: '0.75em',
49
+ '.ss__chat-product-query-message__header__product__image': {
50
+ width: '25%',
51
+ objectFit: 'contain',
52
+ flexShrink: 0,
53
+ borderRadius: '0.33em',
54
+ overflow: 'hidden',
55
+ },
56
+ '.ss__chat-product-query-message__header__product__details': {
57
+ display: 'flex',
58
+ flexDirection: 'column',
59
+ gap: '0.2em',
60
+ flex: 1,
61
+ '.ss__chat-product-query-message__header__product__details__name': {
62
+ fontWeight: 'bold',
63
+ fontSize: '0.95em',
64
+ a: {
65
+ color: '#FFFFFF',
66
+ textDecoration: 'none',
67
+ '&:hover': {
68
+ textDecoration: 'underline',
69
+ },
70
+ },
71
+ },
72
+ '.ss__chat-product-query-message__header__product__details__brand': {
73
+ fontSize: '0.8em',
74
+ color: 'rgba(255, 255, 255, 0.7)',
75
+ },
76
+ '.ss__chat-product-query-message__header__product__details__price': {
77
+ fontWeight: 'bold',
78
+ fontSize: '1.1em',
79
+ color: '#D4A843',
80
+ },
81
+ },
82
+ '.ss__chat-product-query-message__header__product__actions': {
83
+ display: 'flex',
84
+ flexDirection: 'column',
85
+ alignItems: 'flex-end',
86
+ alignSelf: 'stretch',
87
+ justifyContent: 'center',
88
+ gap: '0.35em',
89
+ flexShrink: 0,
90
+ '.ss__chat-product-query-message__header__product__actions__go-to-product': {
91
+ a: {
92
+ color: 'rgba(255, 255, 255, 0.85)',
93
+ fontSize: '0.8em',
94
+ textDecoration: 'underline',
95
+ cursor: 'pointer',
96
+ '&:hover': {
97
+ color: '#FFFFFF',
98
+ },
99
+ },
100
+ },
101
+ '.ss__chat-product-query-message__header__product__actions__add-to-cart .ss__button': {
102
+ borderRadius: '0.5em',
103
+ padding: '0.4em 0.75em',
104
+ fontWeight: 'bold',
105
+ border: 'none',
106
+ whiteSpace: 'nowrap',
107
+ cursor: 'pointer',
108
+ fontSize: '0.8em',
109
+ background: '#D4A843',
110
+ color: '#1F2937',
111
+ '&:not(.ss__button--disabled):hover': {
112
+ background: '#c49a3a',
113
+ },
114
+ },
115
+ '.ss__chat-product-query-message__header__product__actions__show-similar .ss__button': {
116
+ borderRadius: '0.5em',
117
+ padding: '0.4em 0.75em',
118
+ fontWeight: 'bold',
119
+ border: '1px solid rgba(255, 255, 255, 0.6)',
120
+ whiteSpace: 'nowrap',
121
+ cursor: 'pointer',
122
+ fontSize: '0.8em',
123
+ background: 'transparent',
124
+ color: '#fff',
125
+ '&:not(.ss__button--disabled):hover': {
126
+ background: 'rgba(255, 255, 255, 0.15)',
127
+ },
128
+ },
129
+ },
130
+ },
131
+ },
132
+ '.ss__chat-product-query-message__variants': {
133
+ padding: '0 2em',
134
+ '.ss__chat-product-query-message__variants__label': {
135
+ fontWeight: '600',
136
+ fontSize: '0.9em',
137
+ color: '#374151',
138
+ textTransform: 'uppercase',
139
+ marginBottom: '0.5em',
140
+ },
141
+ '.ss__chat-product-query-message__variants__swatches': {
142
+ display: 'flex',
143
+ flexWrap: 'wrap',
144
+ gap: '0.5em',
145
+ '.ss__chat-product-query-message__variants__swatch': {
146
+ display: 'flex',
147
+ flexDirection: 'column',
148
+ alignItems: 'center',
149
+ gap: '0.25em',
150
+ cursor: 'pointer',
151
+ padding: '0.25em',
152
+ borderRadius: '0.5em',
153
+ border: '2px solid transparent',
154
+ transition: 'border-color 0.15s ease',
155
+ '&:hover': {
156
+ borderColor: '#253B80',
157
+ },
158
+ '&.ss__chat-product-query-message__variants__swatch--selected': {
159
+ borderColor: '#253B80',
160
+ borderWidth: '3px',
161
+ padding: '0.15em',
162
+ },
163
+ '&.ss__chat-product-query-message__variants__swatch--unavailable': {
164
+ opacity: 0.4,
165
+ },
166
+ '.ss__chat-product-query-message__variants__swatch__image': {
167
+ width: '48px',
168
+ height: '48px',
169
+ objectFit: 'cover',
170
+ borderRadius: '50%',
171
+ border: '1px solid #E5E7EB',
172
+ },
173
+ '.ss__chat-product-query-message__variants__swatch__value': {
174
+ fontSize: '0.75em',
175
+ color: '#374151',
176
+ textAlign: 'center',
177
+ maxWidth: '60px',
178
+ overflow: 'hidden',
179
+ textOverflow: 'ellipsis',
180
+ whiteSpace: 'nowrap',
181
+ },
182
+ },
183
+ },
184
+ },
185
+ '.ss__chat-product-query-message__section': {
186
+ padding: '0 1em',
187
+ '.ss__chat-product-query-message__section__title': {
188
+ background: '#253B80',
189
+ color: '#fff',
190
+ padding: '0.5em 0.75em',
191
+ fontWeight: 'bold',
192
+ fontSize: '0.95em',
193
+ borderRadius: '0.5em 0.5em 0 0',
194
+ },
195
+ '.ss__chat-product-query-message__section__table': {
196
+ width: '100%',
197
+ maxWidth: '100%',
198
+ tableLayout: 'fixed',
199
+ borderCollapse: 'separate',
200
+ borderSpacing: 0,
201
+ fontSize: '0.9em',
202
+ border: '3px solid #253B80',
203
+ borderTop: 'none',
204
+ borderBottomLeftRadius: '0.5em',
205
+ borderBottomRightRadius: '0.5em',
206
+ overflow: 'hidden',
207
+ tr: {
208
+ borderBottom: '1px solid #E5E7EB',
209
+ },
210
+ td: {
211
+ padding: '0.6em 0.75em',
212
+ verticalAlign: 'top',
213
+ wordBreak: 'break-word',
214
+ overflowWrap: 'anywhere',
215
+ },
216
+ 'td:first-of-type': {
217
+ fontWeight: '600',
218
+ color: '#374151',
219
+ textTransform: 'uppercase',
220
+ fontSize: '0.85em',
221
+ width: '40%',
222
+ },
223
+ 'td:last-of-type': {
224
+ textAlign: 'right',
225
+ color: '#374151',
226
+ },
227
+ '.ss__chat-product-query-message__section__table__availability--in-stock': {
228
+ color: '#10B981',
229
+ fontWeight: '600',
230
+ },
231
+ '.ss__chat-product-query-message__section__table__availability--out-of-stock': {
232
+ color: '#DC2626',
233
+ fontWeight: '600',
234
+ },
235
+ },
236
+ '.ss__chat-product-query-message__section__description': {
237
+ padding: '0.75em',
238
+ fontSize: '0.9em',
239
+ color: '#374151',
240
+ lineHeight: '1.5',
241
+ border: '3px solid #253B80',
242
+ borderTop: 'none',
243
+ borderBottomLeftRadius: '0.5em',
244
+ borderBottomRightRadius: '0.5em',
245
+ },
246
+ '.ss__chat-product-query-message__section__features': {
247
+ margin: 0,
248
+ padding: '0.5em 1.25em',
249
+ fontSize: '0.9em',
250
+ li: {
251
+ padding: '0.3em 0',
252
+ color: '#374151',
253
+ },
254
+ },
255
+ },
256
+ });
257
+ };
258
+ // fields that have dedicated rendering in the product card; skip them in the info table
259
+ const CARD_FIELDS = new Set([
260
+ 'name',
261
+ 'brand',
262
+ 'price',
263
+ 'msrp',
264
+ 'imageUrl',
265
+ 'thumbnailImageUrl',
266
+ 'secureImageUrl',
267
+ 'secureThumbnailImageUrl',
268
+ 'url',
269
+ 'addToCartUrl',
270
+ 'uid',
271
+ 'sku',
272
+ 'parentId',
273
+ 'parentImageUrl',
274
+ 'description',
275
+ 'caption',
276
+ 'popularity',
277
+ 'stockMessage',
278
+ ]);
279
+ // preferred ordering for the structured info table - any extras get appended after
280
+ const PREFERRED_INFO_ORDER = ['material', 'fit', 'color', 'sizes', 'size', 'category', 'rating', 'availability'];
281
+ const FEATURE_KEYS = ['features', 'feature_list', 'productFeatures', 'product_features', 'highlights'];
282
+ const formatLabel = (key) => {
283
+ return key
284
+ .replace(/[_-]+/g, ' ')
285
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
286
+ .trim();
287
+ };
288
+ const stripHtml = (str) => str.replace(/<[^>]*>/g, '');
289
+ const formatValue = (value) => {
290
+ if (Array.isArray(value)) {
291
+ return stripHtml(value.filter((v) => v != null && v !== '').join(', '));
292
+ }
293
+ if (value == null) {
294
+ return '';
295
+ }
296
+ return stripHtml(String(value));
297
+ };
298
+ const collectFeatures = (display) => {
299
+ const attributes = display?.attributes || {};
300
+ for (const key of FEATURE_KEYS) {
301
+ const raw = attributes[key];
302
+ if (Array.isArray(raw) && raw.length > 0) {
303
+ return raw.map((v) => String(v)).filter(Boolean);
304
+ }
305
+ if (typeof raw === 'string' && raw.trim()) {
306
+ // allow comma- or newline-separated feature strings
307
+ return raw
308
+ .split(/\r?\n|,/)
309
+ .map((v) => v.trim())
310
+ .filter(Boolean);
311
+ }
312
+ }
313
+ return [];
314
+ };
315
+ const collectInfoRows = (display, displayFields) => {
316
+ const core = display?.mappings?.core || {};
317
+ const attributes = display?.attributes || {};
318
+ const filterByDisplayFields = displayFields && displayFields.length > 0;
319
+ const displayFieldsLower = filterByDisplayFields ? displayFields.map((f) => f.toLowerCase()) : [];
320
+ const merged = {};
321
+ // when displayFields is specified, include matching core fields that are normally skipped
322
+ if (filterByDisplayFields) {
323
+ Object.entries(core).forEach(([key, value]) => {
324
+ if (displayFieldsLower.includes(key.toLowerCase()) && value != null) {
325
+ merged[key] = value;
326
+ }
327
+ });
328
+ }
329
+ // pull selected core fields (rating + availability)
330
+ if (core.rating != null) {
331
+ const rating = core.rating;
332
+ const ratingCount = core.ratingCount;
333
+ merged.rating = ratingCount ? `${rating}/5.0 (${ratingCount} reviews)` : `${rating}/5.0`;
334
+ }
335
+ if (core.available != null) {
336
+ merged.availability = core.available ? 'In Stock' : 'Out of Stock';
337
+ }
338
+ // merge product attributes, skipping ones already shown on the card and feature lists
339
+ Object.entries(attributes).forEach(([key, value]) => {
340
+ if (!filterByDisplayFields && CARD_FIELDS.has(key))
341
+ return;
342
+ if (FEATURE_KEYS.includes(key))
343
+ return;
344
+ const formatted = formatValue(value);
345
+ if (!formatted)
346
+ return;
347
+ merged[key] = formatted;
348
+ });
349
+ const seen = new Set();
350
+ const ordered = [];
351
+ PREFERRED_INFO_ORDER.forEach((preferred) => {
352
+ const match = Object.keys(merged).find((k) => k.toLowerCase() === preferred);
353
+ if (match && !seen.has(match)) {
354
+ seen.add(match);
355
+ ordered.push({ key: match, rawKey: match, label: formatLabel(match), value: formatValue(merged[match]) });
356
+ }
357
+ });
358
+ Object.keys(merged).forEach((key) => {
359
+ if (seen.has(key))
360
+ return;
361
+ seen.add(key);
362
+ ordered.push({ key, rawKey: key, label: formatLabel(key), value: formatValue(merged[key]) });
363
+ });
364
+ // filter and sort by displayFields order
365
+ if (filterByDisplayFields) {
366
+ const filtered = ordered.filter((row) => displayFieldsLower.includes(row.rawKey.toLowerCase()));
367
+ filtered.sort((a, b) => displayFieldsLower.indexOf(a.rawKey.toLowerCase()) - displayFieldsLower.indexOf(b.rawKey.toLowerCase()));
368
+ return filtered;
369
+ }
370
+ return ordered;
371
+ };
372
+ export const ChatProductQueryMessage = observer((properties) => {
373
+ const globalTheme = useTheme();
374
+ const globalTreePath = useTreePath();
375
+ const defaultProps = {
376
+ treePath: globalTreePath,
377
+ };
378
+ const props = mergeProps('chatProductQueryMessage', globalTheme, defaultProps, properties);
379
+ const { chatItem, controller, displayFields, className, internalClassName } = props;
380
+ const styling = mergeStyles(props, defaultStyles);
381
+ const { messageType, sourceProduct } = chatItem;
382
+ if (messageType !== 'productQuery') {
383
+ console.warn('ChatProductQueryMessage received message with unsupported type:', messageType, 'Expected type: productQuery');
384
+ return null;
385
+ }
386
+ const product = controller?.store.productQuickview;
387
+ const productQuickviewError = controller?.store.productQuickviewError;
388
+ const chatMessages = controller?.store.currentChat?.chat || [];
389
+ const sourceMessage = chatItem.sourceMessageId ? chatMessages.find((m) => m.id === chatItem.sourceMessageId) : null;
390
+ const cameFromInspiration = sourceMessage?.messageType === 'inspirationResult';
391
+ if (!product) {
392
+ return (_jsx(CacheProvider, { children: _jsx("div", { className: classnames('ss__chat-product-query-message', className, internalClassName), ...styling, children: _jsx("div", { className: classnames('ss__chat-product-query-message__header'), children: _jsx("div", { className: classnames('ss__chat-product-query-message__header__product'), children: _jsx("div", { className: classnames('ss__chat-product-query-message__header__product__details'), children: _jsx("div", { className: classnames('ss__chat-product-query-message__header__product__details__name'), children: productQuickviewError || 'Loading product details...' }) }) }) }) }) }));
393
+ }
394
+ const displayed = product.display;
395
+ const displayedCore = displayed.mappings?.core || {};
396
+ const variants = product.variants;
397
+ const selections = variants?.selections || [];
398
+ const displayedData = {
399
+ mappings: displayed.mappings,
400
+ attributes: displayed.attributes || {},
401
+ };
402
+ const allInfoRows = collectInfoRows(displayedData, displayFields);
403
+ const descriptionRow = allInfoRows.find((row) => row.rawKey.toLowerCase() === 'description');
404
+ const infoRows = allInfoRows.filter((row) => row.rawKey.toLowerCase() !== 'description');
405
+ const features = collectFeatures(displayedData);
406
+ const handleBack = () => {
407
+ controller?.store.currentChat?.popProductQueryMessage(chatItem.sourceMessageId);
408
+ controller?.store.clearProductQuickview();
409
+ };
410
+ return (_jsx(CacheProvider, { children: _jsxs("div", { className: classnames('ss__chat-product-query-message', className, internalClassName), ...styling, children: [_jsxs("div", { className: classnames('ss__chat-product-query-message__header'), children: [cameFromInspiration && (_jsxs("div", { className: classnames('ss__chat-product-query-message__header__back'), onClick: handleBack, children: [_jsx(Icon, { icon: "angle-left", size: "14px" }), _jsx("span", { children: "Back to inspiration" })] })), _jsxs("div", { className: classnames('ss__chat-product-query-message__header__product'), children: [displayedCore.imageUrl && (_jsx(Image, { className: classnames('ss__chat-product-query-message__header__product__image'), src: displayedCore.imageUrl, alt: displayedCore.name || '' })), _jsxs("div", { className: classnames('ss__chat-product-query-message__header__product__details'), children: [displayedCore.name && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__details__name'), children: displayedCore.url ? (_jsx("a", { href: displayedCore.url, target: "_blank", rel: "noopener noreferrer", children: displayedCore.name })) : (displayedCore.name) })), displayedCore.brand && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__details__brand'), children: displayedCore.brand })), displayedCore.price != null && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__details__price'), children: _jsx(Price, { value: displayedCore.price }) }))] }), _jsxs("div", { className: classnames('ss__chat-product-query-message__header__product__actions'), children: [displayedCore.url && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__go-to-product'), children: _jsx("a", { href: displayedCore.url, target: "_blank", rel: "noopener noreferrer", children: "Go to product" }) })), _jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__add-to-cart'), children: _jsx(Button, { content: 'Add to Cart', onClick: () => controller?.addToCart(sourceProduct) }) }), controller?.store.features.similarProducts.enabled && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__show-similar'), children: _jsx(Button, { content: 'Show Similar', onClick: () => controller?.discussProduct(sourceProduct, { requestType: 'productSimilar' }) }) }))] })] })] }), selections.length > 0 && (_jsx("div", { className: classnames('ss__chat-product-query-message__variants'), children: selections.map((selection) => (_jsxs("div", { children: [_jsxs("div", { className: classnames('ss__chat-product-query-message__variants__label'), children: [formatLabel(selection.field), " (", selection.values.length, ")"] }), _jsx("div", { className: classnames('ss__chat-product-query-message__variants__swatches'), children: selection.values.map((selectionValue) => {
411
+ const isUnavailable = !selectionValue.available;
412
+ const isSelected = selection.selected?.value === selectionValue.value;
413
+ return (_jsxs("div", { className: classnames('ss__chat-product-query-message__variants__swatch', {
414
+ 'ss__chat-product-query-message__variants__swatch--selected': isSelected,
415
+ 'ss__chat-product-query-message__variants__swatch--unavailable': isUnavailable,
416
+ }), title: selectionValue.value, onClick: () => selection.select(selectionValue.value), children: [selectionValue.thumbnailImageUrl ? (_jsx(Image, { className: classnames('ss__chat-product-query-message__variants__swatch__image'), src: selectionValue.thumbnailImageUrl, alt: selectionValue.value })) : null, _jsx("span", { className: classnames('ss__chat-product-query-message__variants__swatch__value'), children: selectionValue.value })] }, selectionValue.value));
417
+ }) })] }, selection.field))) })), infoRows.length > 0 && (_jsxs("div", { className: classnames('ss__chat-product-query-message__section'), children: [_jsx("div", { className: classnames('ss__chat-product-query-message__section__title'), children: "Product Information" }), _jsx("table", { className: classnames('ss__chat-product-query-message__section__table'), children: _jsx("tbody", { children: infoRows.map((row) => (_jsxs("tr", { children: [_jsx("td", { children: row.label }), _jsx("td", { children: row.rawKey === 'availability' ? (_jsx("span", { className: classnames({
418
+ 'ss__chat-product-query-message__section__table__availability--in-stock': row.value === 'In Stock',
419
+ 'ss__chat-product-query-message__section__table__availability--out-of-stock': row.value === 'Out of Stock',
420
+ }), children: row.value === 'In Stock' ? `\u2713 ${row.value}` : row.value })) : (row.value) })] }, row.key))) }) })] })), descriptionRow && (_jsxs("div", { className: classnames('ss__chat-product-query-message__section'), children: [_jsx("div", { className: classnames('ss__chat-product-query-message__section__title'), children: "Description" }), _jsx("div", { className: classnames('ss__chat-product-query-message__section__description'), children: descriptionRow.value })] })), features.length > 0 && (_jsxs("div", { className: classnames('ss__chat-product-query-message__section'), children: [_jsx("div", { className: classnames('ss__chat-product-query-message__section__title'), children: "Features" }), _jsx("ul", { className: classnames('ss__chat-product-query-message__section__features'), children: features.map((feature, idx) => (_jsx("li", { children: feature }, idx))) })] }))] }) }));
421
+ });
@@ -0,0 +1,2 @@
1
+ export * from './ChatProductQueryMessage';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/ChatProductQueryMessage/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './ChatProductQueryMessage';
@@ -89,7 +89,7 @@ export const OverlayBadge = observer((properties) => {
89
89
  name: slot.name,
90
90
  top: index == 0,
91
91
  bottom: index == sectionSlots.length - 1,
92
- badges: result?.display.badges?.atLocation(`${section}/${slot.tag}`).slice(0, limit),
92
+ badges: result?.display?.badges?.atLocation(`${section}/${slot.tag}`).slice(0, limit),
93
93
  }))
94
94
  .filter((slot) => slot.badges?.length);
95
95
  return {
@@ -1,6 +1,6 @@
1
1
  import { MutableRef } from 'preact/hooks';
2
2
  import { ComponentProps, ResultsLayout } from '../../../types';
3
- import type { SearchController, AutocompleteController, RecommendationController } from '@athoscommerce/snap-controller';
3
+ import type { SearchController, AutocompleteController, RecommendationController, ChatController } from '@athoscommerce/snap-controller';
4
4
  import type { Product } from '@athoscommerce/snap-store-mobx';
5
5
  import { Lang } from '../../../hooks';
6
6
  export declare const Result: ((properties: ResultProps) => import("@emotion/react/jsx-runtime").JSX.Element | null) & {
@@ -12,7 +12,7 @@ export interface TruncateTitleProps {
12
12
  }
13
13
  export type ResultProps = {
14
14
  result: Product;
15
- controller?: SearchController | AutocompleteController | RecommendationController;
15
+ controller?: SearchController | AutocompleteController | RecommendationController | ChatController;
16
16
  lang?: Partial<ResultLang>;
17
17
  trackingRef?: MutableRef<HTMLElement | null>;
18
18
  } & ResultTemplatesLegalProps & ComponentProps<ResultProps>;
@@ -41,7 +41,7 @@ export interface ResultLang {
41
41
  }
42
42
  interface ResultPropData {
43
43
  result: Product;
44
- controller?: SearchController | AutocompleteController | RecommendationController;
44
+ controller?: SearchController | AutocompleteController | RecommendationController | ChatController;
45
45
  }
46
46
  export type ResultNames = 'seed';
47
47
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Result/Result.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AAUpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACzH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAI9D,OAAO,EAAE,IAAI,EAAyB,MAAM,gBAAgB,CAAC;AAyD7D,eAAO,MAAM,MAAM,gBAAyB,WAAW;;CAiQrD,CAAC;AAWH,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7C,GAAG,yBAAyB,GAC5B,cAAc,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3F,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,OAAO,aAAa,GAAG,aAAa,CAAC;IACpD,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,0BAA0B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,UAAU,cAAc;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;CAClF;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Result/Result.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AAUpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACzI,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAI9D,OAAO,EAAE,IAAI,EAAyB,MAAM,gBAAgB,CAAC;AAyD7D,eAAO,MAAM,MAAM,gBAAyB,WAAW;;CAiQrD,CAAC;AAWH,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,cAAc,CAAC;IACnG,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7C,GAAG,yBAAyB,GAC5B,cAAc,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3F,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,OAAO,aAAa,GAAG,aAAa,CAAC;IACpD,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,0BAA0B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,UAAU,cAAc;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,cAAc,CAAC;CACnG;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"}
@@ -137,7 +137,7 @@ export const Result = observer((properties) => {
137
137
  // default props
138
138
  internalClassName: 'ss__result__image',
139
139
  alt: core?.name || '',
140
- src: core?.imageUrl || '',
140
+ src: core?.imageUrl || core?.thumbnailImageUrl || '',
141
141
  // inherited props
142
142
  ...defined({
143
143
  disableStyles,
@@ -204,7 +204,7 @@ export const Result = observer((properties) => {
204
204
  onClick && onClick(e);
205
205
  }, dangerouslySetInnerHTML: {
206
206
  __html: displayName || '',
207
- } }) })), !hideRating && _jsx(Rating, { ...subProps.rating }), !hidePricing && core.price && core.price > 0 ? (_jsx("div", { className: "ss__result__details__pricing", children: isOnSale ? (_jsxs(_Fragment, { children: [_jsx(Price, { ...subProps.price, value: core.msrp, lineThrough: true, name: 'msrp' }), "\u00A0", _jsx(Price, { ...subProps.price, value: core.price, name: 'price' })] })) : (_jsx(Price, { ...subProps.price, value: core.price })) })) : null, cloneWithProps(detailSlot, { result, treePath }), !hideVariantSelections && result.variants?.selections.length && (_jsx("div", { className: "ss__result__details__variant-selection", children: result.variants?.selections.map((selection) => {
207
+ } }) })), !hideRating && _jsx(Rating, { ...subProps.rating }), !hidePricing && core.price && core.price > 0 ? (_jsx("div", { className: "ss__result__details__pricing", children: isOnSale ? (_jsxs(_Fragment, { children: [_jsx(Price, { ...subProps.price, value: core.msrp, lineThrough: true, name: 'msrp' }), "\u00A0", _jsx(Price, { ...subProps.price, value: core.price, name: 'price' })] })) : (_jsx(Price, { ...subProps.price, value: core.price })) })) : null, cloneWithProps(detailSlot, { result, treePath }), !hideVariantSelections && result.variants?.selections?.length && (_jsx("div", { className: "ss__result__details__variant-selection", children: result.variants?.selections.map((selection) => {
208
208
  return _jsx(VariantSelection, { ...subProps.variantSelection, selection: selection });
209
209
  }) })), !hideAddToCartButton && (_jsx("div", { className: "ss__result__add-to-cart-wrapper", children: _jsx(Button, { ...subProps.button, content: addToCartButtonText, ...mergedLang.addToCartButtonText.all }) }))] })] }) })) : null;
210
210
  });
@@ -15,6 +15,7 @@ export type SearchInputTemplatesLegalProps = {
15
15
  submitSearchButton?: Buttons;
16
16
  clearSearchButton?: Buttons;
17
17
  closeSearchButton?: Buttons;
18
+ chatButton?: Buttons;
18
19
  inputName?: string;
19
20
  disabled?: boolean;
20
21
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
@@ -29,6 +30,7 @@ export interface SearchInputLang {
29
30
  closeSearchButton?: Lang<never>;
30
31
  clearSearchButton?: Lang<never>;
31
32
  submitSearchButton?: Lang<never>;
33
+ chatButton?: Lang<never>;
32
34
  }
33
35
  export {};
34
36
  //# sourceMappingURL=SearchInput.d.ts.map