@athoscommerce/snap-preact 1.10.0 → 1.10.1-beta.150

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 (354) hide show
  1. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +99 -0
  2. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +17 -0
  3. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +56 -11
  4. package/dist/cjs/components/src/components/Atoms/Icon/paths.js +13 -0
  5. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +221 -0
  6. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +17 -0
  7. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +209 -0
  8. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
  9. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +258 -0
  10. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +17 -0
  11. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +282 -0
  12. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +17 -0
  13. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +173 -0
  14. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
  15. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +577 -0
  16. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
  17. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +252 -0
  18. package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +17 -0
  19. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +113 -0
  20. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +17 -0
  21. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +107 -0
  22. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +17 -0
  23. package/dist/cjs/components/src/components/Molecules/Result/Result.js +53 -6
  24. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +28 -2
  25. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +24 -28
  26. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +5 -1
  27. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +621 -0
  28. package/dist/cjs/components/src/components/Organisms/Chat/Chat.lang.js +105 -0
  29. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatAttachments.js +104 -0
  30. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +161 -0
  31. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComposer.js +166 -0
  32. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +369 -0
  33. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatHistory.js +130 -0
  34. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatMessages.js +218 -0
  35. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +123 -0
  36. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSideChat.js +173 -0
  37. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +149 -0
  38. package/dist/cjs/components/src/components/Organisms/Chat/components/chatAccentTheme.js +60 -0
  39. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +66 -0
  40. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +96 -0
  41. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +113 -0
  42. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +135 -0
  43. package/dist/cjs/components/src/components/Organisms/Chat/index.js +18 -0
  44. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.js +94 -0
  45. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.lang.js +11 -0
  46. package/dist/cjs/components/src/components/Organisms/ChatButton/index.js +18 -0
  47. package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +1 -5
  48. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  49. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  50. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  51. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  52. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +47 -0
  53. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  54. package/dist/cjs/components/src/components/Templates/ChatButton/ChatButton.js +47 -0
  55. package/dist/cjs/components/src/components/Templates/ChatButton/index.js +17 -0
  56. package/dist/cjs/components/src/index.js +17 -1
  57. package/dist/cjs/components/src/providers/themeComponents.js +20 -0
  58. package/dist/cjs/components/src/setupTests.js +14 -0
  59. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  60. package/dist/cjs/components/src/themes/base/components/templates/chatButton.js +6 -0
  61. package/dist/cjs/components/src/themes/base/components/templates/index.js +10 -0
  62. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  63. package/dist/cjs/components/src/themes/bocachica/components/templates/chatButton.js +6 -0
  64. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +10 -0
  65. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  66. package/dist/cjs/components/src/themes/pike/components/templates/chatButton.js +6 -0
  67. package/dist/cjs/components/src/themes/pike/components/templates/index.js +10 -0
  68. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  69. package/dist/cjs/components/src/themes/snapnco/components/templates/chatButton.js +6 -0
  70. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +10 -0
  71. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  72. package/dist/cjs/components/src/themes/snappy/components/templates/chatButton.js +6 -0
  73. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +10 -0
  74. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  75. package/dist/cjs/components/src/themes/themeComponents/chatButton.js +9 -0
  76. package/dist/cjs/components/src/utilities/Colour/Colour.js +41 -0
  77. package/dist/cjs/components/src/utilities/snapify.js +27 -0
  78. package/dist/cjs/src/Snap.js +70 -0
  79. package/dist/cjs/src/Templates/SnapTemplates.js +55 -5
  80. package/dist/cjs/src/Templates/Stores/LibraryStore.js +51 -1
  81. package/dist/cjs/src/Templates/Stores/TemplateStore.js +2 -1
  82. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  83. package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +5 -0
  84. package/dist/cjs/src/Templates/Stores/library/languages/es.js +487 -8
  85. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +487 -8
  86. package/dist/cjs/src/create/createChatController.js +30 -0
  87. package/dist/cjs/src/create/index.js +3 -1
  88. package/dist/cjs/src/setupEvents.js +44 -0
  89. package/dist/cjs/src/utils/applyChatTargetInject.js +25 -0
  90. package/dist/cjs/src/utils/index.js +3 -1
  91. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +3 -1
  92. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  93. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +17 -0
  94. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  95. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +92 -0
  96. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  97. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  98. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  99. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -1
  100. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  101. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +57 -12
  102. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +13 -0
  103. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  104. package/dist/esm/components/src/components/Atoms/Icon/paths.js +13 -0
  105. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +30 -0
  106. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  107. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +215 -0
  108. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  109. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  110. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  111. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +19 -0
  112. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  113. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +203 -0
  114. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  115. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  116. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  117. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +36 -0
  118. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  119. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +252 -0
  120. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  121. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  122. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  123. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +38 -0
  124. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  125. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +276 -0
  126. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  127. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  128. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  129. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +19 -0
  130. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  131. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +167 -0
  132. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  133. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  134. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  135. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +38 -0
  136. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  137. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +571 -0
  138. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  139. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  140. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  141. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +35 -0
  142. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  143. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +246 -0
  144. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  145. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  146. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  147. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +24 -0
  148. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  149. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +107 -0
  150. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  151. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  152. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  153. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +16 -0
  154. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  155. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +101 -0
  156. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  157. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  158. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  159. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  160. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  161. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +7 -3
  162. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  163. package/dist/esm/components/src/components/Molecules/Result/Result.js +53 -6
  164. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +3 -0
  165. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  166. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +28 -2
  167. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  168. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +25 -29
  169. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  170. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +5 -1
  171. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +41 -0
  172. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  173. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +615 -0
  174. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +76 -0
  175. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +1 -0
  176. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +100 -0
  177. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +26 -0
  178. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +1 -0
  179. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +98 -0
  180. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +13 -0
  181. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +1 -0
  182. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +155 -0
  183. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +19 -0
  184. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +1 -0
  185. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +160 -0
  186. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +18 -0
  187. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +1 -0
  188. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +363 -0
  189. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +11 -0
  190. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +1 -0
  191. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +124 -0
  192. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +30 -0
  193. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +1 -0
  194. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +212 -0
  195. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +13 -0
  196. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +1 -0
  197. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +117 -0
  198. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +19 -0
  199. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +1 -0
  200. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +167 -0
  201. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +14 -0
  202. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +1 -0
  203. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +143 -0
  204. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +15 -0
  205. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +1 -0
  206. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +56 -0
  207. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  208. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  209. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +62 -0
  210. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  211. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  212. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  213. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +43 -0
  214. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  215. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +109 -0
  216. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +26 -0
  217. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +1 -0
  218. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +131 -0
  219. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +3 -0
  220. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  221. package/dist/esm/components/src/components/Organisms/Chat/index.js +2 -0
  222. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +18 -0
  223. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +1 -0
  224. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +88 -0
  225. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +7 -0
  226. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +1 -0
  227. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +8 -0
  228. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +3 -0
  229. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +1 -0
  230. package/dist/esm/components/src/components/Organisms/ChatButton/index.js +2 -0
  231. package/dist/esm/components/src/components/Organisms/Facet/Facet.d.ts.map +1 -1
  232. package/dist/esm/components/src/components/Organisms/Facet/Facet.js +1 -5
  233. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  234. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  235. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  236. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  237. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  238. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  239. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  240. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  241. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  242. package/dist/esm/components/src/components/Templates/Chat/Chat.js +41 -0
  243. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  244. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  245. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  246. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +13 -0
  247. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +1 -0
  248. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +41 -0
  249. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +2 -0
  250. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +1 -0
  251. package/dist/esm/components/src/components/Templates/ChatButton/index.js +1 -0
  252. package/dist/esm/components/src/index.d.ts +14 -0
  253. package/dist/esm/components/src/index.d.ts.map +1 -1
  254. package/dist/esm/components/src/index.js +14 -0
  255. package/dist/esm/components/src/providers/langComponents.d.ts +20 -0
  256. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  257. package/dist/esm/components/src/providers/themeComponents.d.ts +203 -1
  258. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  259. package/dist/esm/components/src/providers/themeComponents.js +20 -0
  260. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  261. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  262. package/dist/esm/components/src/setupTests.js +14 -0
  263. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  264. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  265. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  266. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +4 -0
  267. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +1 -0
  268. package/dist/esm/components/src/themes/base/components/templates/chatButton.js +3 -0
  269. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  270. package/dist/esm/components/src/themes/base/components/templates/index.js +10 -0
  271. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  272. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  273. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  274. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +4 -0
  275. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +1 -0
  276. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +3 -0
  277. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  278. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +10 -0
  279. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  280. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  281. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  282. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +4 -0
  283. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +1 -0
  284. package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +3 -0
  285. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  286. package/dist/esm/components/src/themes/pike/components/templates/index.js +10 -0
  287. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  288. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  289. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  290. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +4 -0
  291. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +1 -0
  292. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +3 -0
  293. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  294. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +10 -0
  295. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  296. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  297. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  298. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +4 -0
  299. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +1 -0
  300. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +3 -0
  301. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  302. package/dist/esm/components/src/themes/snappy/components/templates/index.js +10 -0
  303. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  304. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  305. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  306. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +4 -0
  307. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +1 -0
  308. package/dist/esm/components/src/themes/themeComponents/chatButton.js +6 -0
  309. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +15 -0
  310. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  311. package/dist/esm/components/src/utilities/Colour/Colour.js +41 -0
  312. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  313. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  314. package/dist/esm/components/src/utilities/snapify.js +29 -2
  315. package/dist/esm/src/Snap.d.ts +2 -1
  316. package/dist/esm/src/Snap.d.ts.map +1 -1
  317. package/dist/esm/src/Snap.js +71 -1
  318. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  319. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  320. package/dist/esm/src/Templates/SnapTemplates.js +54 -5
  321. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +43 -0
  322. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  323. package/dist/esm/src/Templates/Stores/LibraryStore.js +51 -1
  324. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +19 -4
  325. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  326. package/dist/esm/src/Templates/Stores/TemplateStore.js +2 -1
  327. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  328. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  329. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  330. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +2 -0
  331. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +1 -0
  332. package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +1 -0
  333. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  334. package/dist/esm/src/Templates/Stores/library/languages/es.js +487 -8
  335. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  336. package/dist/esm/src/Templates/Stores/library/languages/fr.js +487 -8
  337. package/dist/esm/src/create/createChatController.d.ts +5 -0
  338. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  339. package/dist/esm/src/create/createChatController.js +28 -0
  340. package/dist/esm/src/create/index.d.ts +1 -0
  341. package/dist/esm/src/create/index.d.ts.map +1 -1
  342. package/dist/esm/src/create/index.js +1 -0
  343. package/dist/esm/src/setupEvents.d.ts +13 -0
  344. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  345. package/dist/esm/src/setupEvents.js +44 -0
  346. package/dist/esm/src/types.d.ts +13 -3
  347. package/dist/esm/src/types.d.ts.map +1 -1
  348. package/dist/esm/src/utils/applyChatTargetInject.d.ts +3 -0
  349. package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +1 -0
  350. package/dist/esm/src/utils/applyChatTargetInject.js +22 -0
  351. package/dist/esm/src/utils/index.d.ts +1 -0
  352. package/dist/esm/src/utils/index.d.ts.map +1 -1
  353. package/dist/esm/src/utils/index.js +1 -0
  354. package/package.json +14 -12
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatResult = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const mobx_react_lite_1 = require("mobx-react-lite");
9
+ const react_1 = require("@emotion/react");
10
+ const classnames_1 = __importDefault(require("classnames"));
11
+ const deepmerge_1 = __importDefault(require("deepmerge"));
12
+ const providers_1 = require("../../../providers");
13
+ const utilities_1 = require("../../../utilities");
14
+ const Image_1 = require("../../Atoms/Image");
15
+ const Button_1 = require("../../Atoms/Button");
16
+ const Price_1 = require("../../Atoms/Price");
17
+ const CalloutBadge_1 = require("../CalloutBadge");
18
+ const OverlayBadge_1 = require("../OverlayBadge");
19
+ const hooks_1 = require("../../../hooks");
20
+ const defaultStyles = ({ theme }) => {
21
+ const colorCta = utilities_1.Colour.concrete(theme?.variables?.colors?.accent) || '#feeeae';
22
+ return (0, react_1.css)({
23
+ display: 'flex',
24
+ flexDirection: 'column',
25
+ height: '100%',
26
+ width: '100%',
27
+ boxSizing: 'border-box',
28
+ border: '1px solid #e5e7eb',
29
+ borderRadius: '1em',
30
+ overflow: 'hidden',
31
+ // rest slightly scaled down and grow to full size on hover so the zoom
32
+ // reads as a subtle enlargement without ever exceeding the slide bounds
33
+ // (the surrounding Slideshow clips overflow), which would otherwise crop
34
+ // the card's border on hover
35
+ transform: 'scale(0.96)',
36
+ transition: 'transform 0.3s ease',
37
+ '&:hover': {
38
+ transform: 'scale(1)',
39
+ },
40
+ '.ss__chat-result__image': {
41
+ width: '100%',
42
+ aspectRatio: '1 / 1',
43
+ position: 'relative',
44
+ overflow: 'hidden',
45
+ // fixed-aspect frame: scale the image to fill it and crop overflow so
46
+ // results with different intrinsic image aspect ratios still line up
47
+ // at the same height when displayed side-by-side.
48
+ img: {
49
+ width: '100%',
50
+ height: '100%',
51
+ objectFit: 'cover',
52
+ },
53
+ '.ss__chat-result__image__buttons': {
54
+ position: 'absolute',
55
+ bottom: 0,
56
+ width: '100%',
57
+ display: 'flex',
58
+ justifyContent: 'center',
59
+ gap: '0.5em',
60
+ padding: '0.5em',
61
+ boxSizing: 'border-box',
62
+ '.ss__button': {
63
+ padding: '0.25em 0.5em',
64
+ background: 'rgba(255, 255, 255, 0.9)',
65
+ textAlign: 'center',
66
+ justifyContent: 'center',
67
+ borderRadius: '2em',
68
+ boxShadow: 'inset 0 0 1px 0px rgba(0, 0, 0, 0.5)',
69
+ flex: '1 1 0',
70
+ minWidth: 0,
71
+ fontWeight: 'bold',
72
+ whiteSpace: 'nowrap',
73
+ overflow: 'hidden',
74
+ textOverflow: 'ellipsis',
75
+ },
76
+ },
77
+ '.ss__chat-result__image__icons': {
78
+ position: 'absolute',
79
+ top: 0,
80
+ left: 0,
81
+ right: 0,
82
+ display: 'flex',
83
+ flexDirection: 'row',
84
+ justifyContent: 'space-between',
85
+ gap: '0.5em',
86
+ padding: '0.5em',
87
+ flex: '0 0 auto',
88
+ alignItems: 'flex-start',
89
+ boxSizing: 'border-box',
90
+ '.ss__button': {
91
+ height: '2.5em',
92
+ width: '2.5em',
93
+ backgroundColor: '#000',
94
+ borderRadius: '50%',
95
+ justifyContent: 'center',
96
+ boxSizing: 'border-box',
97
+ '&.ss__chat-result__image__icons__icon--cart': {
98
+ backgroundColor: colorCta,
99
+ svg: {
100
+ fill: '#000',
101
+ stroke: '#000',
102
+ },
103
+ },
104
+ svg: {
105
+ fill: '#fff',
106
+ stroke: '#fff',
107
+ },
108
+ },
109
+ },
110
+ },
111
+ '.ss__chat-result__content': {
112
+ background: '#f9fafb',
113
+ display: 'flex',
114
+ flexDirection: 'column',
115
+ gap: '0.5em',
116
+ flex: '1 1 auto',
117
+ padding: '0.5em 0',
118
+ '.ss__chat-result__content__title--primary': {
119
+ padding: '0 0.5em',
120
+ '&.ss__button': {
121
+ display: 'block',
122
+ background: 'none',
123
+ border: 'none',
124
+ color: 'inherit',
125
+ font: 'inherit',
126
+ textAlign: 'left',
127
+ cursor: 'pointer',
128
+ width: 'auto',
129
+ },
130
+ },
131
+ '.ss__chat-result__content__title--secondary': {
132
+ padding: '0 0.5em',
133
+ color: '#6A7282',
134
+ fontSize: '90%',
135
+ },
136
+ '.ss__chat-result__content__price': {
137
+ padding: '0 0.5em',
138
+ color: '#000',
139
+ fontWeight: 'bold',
140
+ fontSize: '1.2em',
141
+ },
142
+ },
143
+ });
144
+ };
145
+ exports.ChatResult = (0, providers_1.withTracking)((0, mobx_react_lite_1.observer)((properties) => {
146
+ const globalTheme = (0, providers_1.useTheme)();
147
+ const globalTreePath = (0, providers_1.useTreePath)();
148
+ const defaultProps = {
149
+ treePath: globalTreePath,
150
+ };
151
+ const props = (0, utilities_1.mergeProps)('chatResult', globalTheme, defaultProps, properties);
152
+ const { controller, result, scrollToBottom, onProductClick, trackingRef, disableStyles, className, internalClassName, treePath } = props;
153
+ const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('chatResult', {
154
+ ...props,
155
+ customComponent: props.customComponent && props.customComponent !== 'ChatResult' ? props.customComponent : undefined,
156
+ });
157
+ if (!shouldRenderDefault) {
158
+ return overrideElement;
159
+ }
160
+ const isInComparison = controller.store.currentChat?.comparisons.items.some((item) => item.result?.id === result.id);
161
+ // a result is "configurable" when it ships with selectable variant options
162
+ // (e.g. color/size); those need a selection before they can be added to cart
163
+ const isConfigurable = !!result.variants?.optionConfig && Object.keys(result.variants.optionConfig).length > 0;
164
+ const subProps = {
165
+ button: {
166
+ disableStyles,
167
+ theme: props.theme,
168
+ treePath,
169
+ },
170
+ image: {
171
+ lazy: false,
172
+ onLoad: scrollToBottom,
173
+ disableStyles,
174
+ theme: props.theme,
175
+ treePath,
176
+ },
177
+ };
178
+ const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
179
+ const productName = result.display.mappings.core?.name;
180
+ //initialize lang
181
+ const defaultLang = {
182
+ similarButton: {
183
+ value: 'Similar',
184
+ attributes: {
185
+ 'aria-label': `Show similar to ${productName || 'product'}`,
186
+ },
187
+ },
188
+ compareButton: {
189
+ value: 'Compare',
190
+ attributes: {
191
+ 'aria-label': `Compare ${productName || 'product'}`,
192
+ },
193
+ },
194
+ addedToComparisonButton: {
195
+ attributes: {
196
+ 'aria-label': `${productName || 'Product'} added to comparison`,
197
+ title: 'Added to comparison',
198
+ },
199
+ },
200
+ discussButton: {
201
+ attributes: {
202
+ 'aria-label': `Discuss ${productName || 'product'}`,
203
+ title: 'Discuss Product',
204
+ },
205
+ },
206
+ addToCartButton: {
207
+ attributes: {
208
+ 'aria-label': `Add ${productName || 'product'} to cart`,
209
+ title: 'Add to Cart',
210
+ },
211
+ },
212
+ configureButton: {
213
+ attributes: {
214
+ 'aria-label': `Configure ${productName || 'product'}`,
215
+ title: 'Configure',
216
+ },
217
+ },
218
+ productLink: {
219
+ attributes: {
220
+ 'aria-label': `Open ${productName || 'product'}`,
221
+ },
222
+ },
223
+ };
224
+ //deep merge with props.lang
225
+ const lang = (0, deepmerge_1.default)(defaultLang, props.lang || {});
226
+ const mergedLang = (0, hooks_1.useLang)(lang, {
227
+ controller,
228
+ result,
229
+ }, { activeBreakpoint: globalTheme?.activeBreakpoint });
230
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('ss__chat-result', className, internalClassName), ref: trackingRef, ...styling, children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat-result__image", children: [(0, jsx_runtime_1.jsx)(OverlayBadge_1.OverlayBadge, { controller: controller, result: result, renderEmpty: true, children: (0, jsx_runtime_1.jsx)(Image_1.Image, { ...subProps.image, className: 'ss__chat-result__detail-slot__image', alt: productName || '', src: result.display.mappings.core?.imageUrl || result.display.mappings.core?.parentImageUrl || '' }) }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat-result__image__buttons", children: [controller.store.features.similarProducts.enabled && ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, className: 'ss__chat-result__image__buttons__similar', onClick: () => {
231
+ controller.productSimilar(result);
232
+ }, ...mergedLang.similarButton.all })), (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, className: 'ss__chat-result__image__buttons__compare', icon: isInComparison ? { icon: 'check-thin' } : undefined, "aria-pressed": isInComparison, onClick: () => {
233
+ // toggle: clicking again removes it from comparison, matching the 'x' icon in the comparison view
234
+ if (isInComparison) {
235
+ controller.store.currentChat?.comparisons.remove(result.id);
236
+ return;
237
+ }
238
+ controller.compareProduct(result);
239
+ }, ...(isInComparison ? mergedLang.addedToComparisonButton.attributes : mergedLang.compareButton.all) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat-result__image__icons", children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, className: 'ss__chat-result__image__icons__icon--inquire', icon: { icon: 'chat' }, onClick: () => {
240
+ controller.productQuery(result);
241
+ }, ...mergedLang.discussButton.attributes }), (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, className: 'ss__chat-result__image__icons__icon--cart', icon: { icon: 'cart' }, onClick: () => {
242
+ // configurable products need a variant selection — open the product
243
+ // information panel so the user can pick options before adding to cart
244
+ if (isConfigurable) {
245
+ controller.productQuickView(result);
246
+ return;
247
+ }
248
+ controller.track.product.addToCart(result);
249
+ controller.addToCart(result);
250
+ }, ...(isConfigurable ? mergedLang.configureButton.attributes : mergedLang.addToCartButton.attributes) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat-result__content", children: [productName &&
251
+ (onProductClick ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, internalClassName: 'ss__chat-result__content__title--primary', content: productName, onClick: (e) => onProductClick(e), ...mergedLang.productLink.attributes })) : ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat-result__content__title--primary", children: productName }))), result.display.mappings.core?.price != null && ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat-result__content__price", children: (0, jsx_runtime_1.jsx)(Price_1.Price, { value: result.display.mappings.core?.price }) })), (0, jsx_runtime_1.jsx)(CalloutBadge_1.CalloutBadge, { controller: controller, result: result })] })] }) }));
252
+ }));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ChatResult"), exports);
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatResultsDisplay = void 0;
7
+ const react_1 = require("@emotion/react");
8
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
9
+ const mobx_react_lite_1 = require("mobx-react-lite");
10
+ const react_2 = require("@emotion/react");
11
+ const classnames_1 = __importDefault(require("classnames"));
12
+ const providers_1 = require("../../../providers");
13
+ const utilities_1 = require("../../../utilities");
14
+ const hooks_1 = require("../../../hooks");
15
+ const Slideshow_1 = require("../Slideshow");
16
+ const ChatResult_1 = require("../ChatResult");
17
+ const defaultStyles = () => {
18
+ return (0, react_2.css)({
19
+ width: '100%',
20
+ marginTop: '12px',
21
+ '.ss__chat-results-display__result': {
22
+ height: '100%',
23
+ width: '100%',
24
+ display: 'flex',
25
+ cursor: 'pointer',
26
+ },
27
+ });
28
+ };
29
+ const slideshowStyleScript = () => {
30
+ return (0, react_2.css)({
31
+ '.ss__slideshow__navigation .ss__button': {
32
+ background: 'rgba(255, 255, 255, 0.85)',
33
+ borderRadius: '50%',
34
+ width: '2em',
35
+ height: '2em',
36
+ display: 'flex',
37
+ justifyContent: 'center',
38
+ alignItems: 'center',
39
+ boxShadow: '0 1px 3px rgba(0, 0, 0, 0.2)',
40
+ },
41
+ });
42
+ };
43
+ exports.ChatResultsDisplay = (0, mobx_react_lite_1.observer)((properties) => {
44
+ const globalTheme = (0, providers_1.useTheme)();
45
+ const globalTreePath = (0, providers_1.useTreePath)();
46
+ const defaultProps = {
47
+ treePath: globalTreePath,
48
+ };
49
+ const props = (0, utilities_1.mergeProps)('chatResultsDisplay', globalTheme, defaultProps, properties);
50
+ const { chatItem, controller, scrollToBottom, onProductQuickView, disableStyles, className, internalClassName, treePath } = props;
51
+ const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('chatResultsDisplay', props);
52
+ const currentChat = controller.store.currentChat;
53
+ const activeMessage = currentChat?.activeMessage;
54
+ const isSideChatOpen = !!activeMessage &&
55
+ ['inspirationResult', 'productComparison', 'productQuery'].includes(activeMessage.messageType) &&
56
+ currentChat?.dismissedSideChatMessageId !== activeMessage.id;
57
+ const isNarrow = (0, hooks_1.useMediaQuery)('(max-width: 549px)');
58
+ // only the tablet range needs the narrower slideshow when the side chat is open;
59
+ // at >= 1200px there's room to keep 2.9 slides alongside the secondary chat
60
+ const isTabletRange = (0, hooks_1.useMediaQuery)('(min-width: 768px) and (max-width: 1200px)');
61
+ const isConstrained = !isNarrow && isSideChatOpen && isTabletRange;
62
+ const slidesToShow = isNarrow || isConstrained ? 1.9 : 2.9;
63
+ // after all hooks — an override that resolves or fails mid-lifecycle must not
64
+ // change the hook count between renders
65
+ if (!shouldRenderDefault) {
66
+ return overrideElement;
67
+ }
68
+ const subProps = {
69
+ slideshow: {
70
+ disableStyles,
71
+ theme: props.theme,
72
+ treePath,
73
+ slidesToShow,
74
+ slidesToMove: isNarrow || isConstrained ? 2 : 3,
75
+ loop: false,
76
+ showPagination: false,
77
+ centerInsufficientSlides: false,
78
+ overlayNavigation: true,
79
+ styleScript: slideshowStyleScript,
80
+ },
81
+ chatResult: {
82
+ disableStyles,
83
+ theme: props.theme,
84
+ treePath,
85
+ },
86
+ };
87
+ const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
88
+ const handleResultClick = (e, result) => {
89
+ // buttons should be able to be clicked without triggering the product click
90
+ if (e.composedPath().some((el) => el instanceof HTMLElement && el.matches('button, .ss__button, a')))
91
+ return;
92
+ controller.track.product.click(e, result);
93
+ controller.productQuickView(result);
94
+ onProductQuickView?.();
95
+ };
96
+ const renderSlideshow = (results, key) => {
97
+ const slides = results.map((result) => ({
98
+ content: ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat-results-display__result", onClick: (e) => handleResultClick(e, result), children: (0, jsx_runtime_1.jsx)(ChatResult_1.ChatResult, { ...subProps.chatResult, result: result, controller: controller, scrollToBottom: scrollToBottom, onProductClick: (e) => {
99
+ controller.track.product.click(e, result);
100
+ controller.productQuickView(result);
101
+ onProductQuickView?.();
102
+ } }) }, result.id)),
103
+ }));
104
+ return (0, react_1.createElement)(Slideshow_1.Slideshow, { ...subProps.slideshow, key: key, slides: slides });
105
+ };
106
+ // the store hydrates message results into Product instances before they reach this component
107
+ const isRecommendation = chatItem.messageType === 'productRecommendation' && !!chatItem.recommendationResult?.length;
108
+ if (!isRecommendation && !chatItem.results?.length)
109
+ return null;
110
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat-results-display', className, internalClassName), ...styling, children: isRecommendation
111
+ ? chatItem.recommendationResult.map((recommendation, index) => recommendation.results?.length ? renderSlideshow(recommendation.results, index) : null)
112
+ : renderSlideshow(chatItem.results) }) }));
113
+ });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ChatResultsDisplay"), exports);
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatSuggestedQuestions = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const react_1 = require("@emotion/react");
9
+ const mobx_react_lite_1 = require("mobx-react-lite");
10
+ const react_2 = require("@emotion/react");
11
+ const classnames_1 = __importDefault(require("classnames"));
12
+ const providers_1 = require("../../../providers");
13
+ const utilities_1 = require("../../../utilities");
14
+ const hooks_1 = require("../../../hooks");
15
+ const Button_1 = require("../../Atoms/Button");
16
+ const Icon_1 = require("../../Atoms/Icon");
17
+ const defaultStyles = ({ primaryColor, theme }) => {
18
+ const colorPrimary = primaryColor || utilities_1.Colour.concrete(theme?.variables?.colors?.primary) || '#253B80';
19
+ return (0, react_2.css)({
20
+ display: 'flex',
21
+ flexDirection: 'column',
22
+ gap: '10px',
23
+ '.ss__chat-suggested-questions__item.ss__button': {
24
+ display: 'flex',
25
+ alignItems: 'center',
26
+ justifyContent: 'space-between',
27
+ gap: '12px',
28
+ background: '#fff',
29
+ border: '1px solid #eee',
30
+ borderRadius: '12px',
31
+ padding: '14px 16px',
32
+ cursor: 'pointer',
33
+ fontSize: '14px',
34
+ color: '#333',
35
+ textAlign: 'left',
36
+ width: '100%',
37
+ boxSizing: 'border-box',
38
+ '.ss__button__content': {
39
+ display: 'flex',
40
+ alignItems: 'center',
41
+ justifyContent: 'space-between',
42
+ gap: '12px',
43
+ },
44
+ '&:not(.ss__button--disabled):hover': {
45
+ borderColor: '#ccc',
46
+ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.08)',
47
+ },
48
+ '&:focus-visible': {
49
+ outline: `2px solid ${colorPrimary}`,
50
+ outlineOffset: '2px',
51
+ },
52
+ '.ss__chat-suggested-questions__item__text': {
53
+ flex: 1,
54
+ fontWeight: 500,
55
+ },
56
+ '.ss__chat-suggested-questions__item__icon': {
57
+ width: '30px',
58
+ height: '30px',
59
+ background: colorPrimary,
60
+ display: 'flex',
61
+ alignItems: 'center',
62
+ justifyContent: 'center',
63
+ borderRadius: '50%',
64
+ flexShrink: 0,
65
+ svg: {
66
+ fill: '#fff',
67
+ stroke: '#fff',
68
+ },
69
+ },
70
+ },
71
+ });
72
+ };
73
+ exports.ChatSuggestedQuestions = (0, mobx_react_lite_1.observer)((properties) => {
74
+ const globalTheme = (0, providers_1.useTheme)();
75
+ const globalTreePath = (0, providers_1.useTreePath)();
76
+ const defaultProps = {
77
+ treePath: globalTreePath,
78
+ };
79
+ const props = (0, utilities_1.mergeProps)('chatSuggestedQuestions', globalTheme, defaultProps, properties);
80
+ const { controller, questions, actions, disableStyles, className, internalClassName, treePath } = props;
81
+ const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('chatSuggestedQuestions', props);
82
+ if (!shouldRenderDefault) {
83
+ return overrideElement;
84
+ }
85
+ const items = questions ?? actions?.map((action) => action.message) ?? [];
86
+ if (items.length === 0) {
87
+ return null;
88
+ }
89
+ const subProps = {
90
+ button: {
91
+ disableStyles,
92
+ theme: props.theme,
93
+ treePath,
94
+ },
95
+ icon: {
96
+ disableStyles,
97
+ theme: props.theme,
98
+ treePath,
99
+ },
100
+ };
101
+ const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
102
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat-suggested-questions', className, internalClassName), ...styling, children: items.map((item, index) => ((0, react_1.createElement)(Button_1.Button, { ...subProps.button, key: index, internalClassName: "ss__chat-suggested-questions__item", onClick: () => {
103
+ controller.openChat(item);
104
+ } },
105
+ (0, jsx_runtime_1.jsx)("span", { className: "ss__chat-suggested-questions__item__text", children: item }),
106
+ (0, jsx_runtime_1.jsx)("span", { className: "ss__chat-suggested-questions__item__icon", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { ...subProps.icon, icon: "chat" }) })))) }) }));
107
+ });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ChatSuggestedQuestions"), exports);
@@ -51,6 +51,15 @@ const defaultStyles = () => {
51
51
  background: 'rgba(255, 255, 255, 0.5)',
52
52
  padding: '10px',
53
53
  },
54
+ '& .ss__result__discuss-product-button': {
55
+ position: 'absolute',
56
+ bottom: '8px',
57
+ left: '8px',
58
+ padding: '4px',
59
+ border: 'none',
60
+ background: 'rgba(255, 255, 255, 0.5)',
61
+ cursor: 'pointer',
62
+ },
54
63
  },
55
64
  '& .ss__result__details': {
56
65
  padding: '10px',
@@ -83,7 +92,7 @@ exports.Result = (0, mobx_react_lite_1.observer)((properties) => {
83
92
  hideRating: true,
84
93
  };
85
94
  const props = (0, utilities_1.mergeProps)('result', globalTheme, defaultProps, properties);
86
- const { result, hideBadge, hideTitle, hidePricing, hideImage, detailSlot, fallback, disableStyles, className, internalClassName, layout, onClick, controller, hideVariantSelections, hideAddToCartButton, onAddToCartClick, addToCartButtonText, addToCartButtonSuccessText, addToCartButtonSuccessTimeout, hideRating, trackingRef, treePath, } = props;
95
+ const { result, hideBadge, hideTitle, hidePricing, hideImage, detailSlot, fallback, disableStyles, className, internalClassName, layout, onClick, controller, hideVariantSelections, hideAddToCartButton, onAddToCartClick, addToCartButtonText, addToCartButtonSuccessText, addToCartButtonSuccessTimeout, hideRating, trackingRef, treePath, discussProductIcon, onDiscussClick, } = props;
87
96
  const { overrideElement, shouldRenderDefault } = (0, hooks_2.useCustomComponentOverride)('result', {
88
97
  ...props,
89
98
  customComponent: props.customComponent && props.customComponent !== 'Result' ? props.customComponent : undefined,
@@ -143,7 +152,7 @@ exports.Result = (0, mobx_react_lite_1.observer)((properties) => {
143
152
  // default props
144
153
  internalClassName: 'ss__result__image',
145
154
  alt: core?.name || '',
146
- src: core?.imageUrl || '',
155
+ src: core?.imageUrl || core?.thumbnailImageUrl || '',
147
156
  // inherited props
148
157
  ...(0, utilities_1.defined)({
149
158
  disableStyles,
@@ -166,6 +175,17 @@ exports.Result = (0, mobx_react_lite_1.observer)((properties) => {
166
175
  theme: props.theme,
167
176
  treePath,
168
177
  },
178
+ discussProductButton: {
179
+ // default props
180
+ internalClassName: 'ss__result__discuss-product-button',
181
+ // inherited props
182
+ ...(0, utilities_1.defined)({
183
+ disableStyles,
184
+ }),
185
+ // component theme overrides
186
+ theme: props.theme,
187
+ treePath,
188
+ },
169
189
  button: {
170
190
  // default props
171
191
  internalClassName: 'ss__result__button--addToCart',
@@ -196,6 +216,12 @@ exports.Result = (0, mobx_react_lite_1.observer)((properties) => {
196
216
  addToCartButtonText: {
197
217
  value: addedToCart ? addToCartButtonSuccessText : addToCartButtonText,
198
218
  },
219
+ discussProductButton: {
220
+ attributes: {
221
+ 'aria-label': 'Discuss this product',
222
+ title: 'Discuss this product',
223
+ },
224
+ },
199
225
  };
200
226
  //deep merge with props.lang
201
227
  const lang = (0, deepmerge_1.default)(defaultLang, props.lang || {});
@@ -205,13 +231,34 @@ exports.Result = (0, mobx_react_lite_1.observer)((properties) => {
205
231
  }, { activeBreakpoint: globalTheme?.activeBreakpoint });
206
232
  const isOnSale = Boolean(core?.msrp && core?.price && core?.price < core?.msrp);
207
233
  const renderPrices = controller?.store?.config?.asyncState?.product?.price ? result.state.priceFetched : true;
208
- return core ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("article", { ...styling, className: (0, classnames_1.default)('ss__result', `ss__result--${layout}`, { 'ss__result--sale': isOnSale }, className, internalClassName), ref: trackingRef, children: [!hideImage && ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__image-wrapper", children: (0, jsx_runtime_1.jsx)("a", { href: core.url, onClick: (e) => {
209
- onClick && onClick(e);
210
- }, children: !hideBadge ? ((0, jsx_runtime_1.jsx)(OverlayBadge_1.OverlayBadge, { ...subProps.overlayBadge, controller: controller, children: (0, jsx_runtime_1.jsx)(Image_1.Image, { ...subProps.image }) })) : ((0, jsx_runtime_1.jsx)(Image_1.Image, { ...subProps.image })) }) })), (0, jsx_runtime_1.jsxs)("div", { className: "ss__result__details", children: [!hideBadge && ((0, jsx_runtime_1.jsx)(CalloutBadge_1.CalloutBadge, { ...subProps.calloutBadge, controller: controller })), !hideTitle && ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__title", children: (0, jsx_runtime_1.jsx)("a", { href: core.url, onClick: (e) => {
234
+ return core ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("article", { ...styling, className: (0, classnames_1.default)('ss__result', `ss__result--${layout}`, { 'ss__result--sale': isOnSale }, className, internalClassName), ref: trackingRef, children: [!hideImage && ((0, jsx_runtime_1.jsxs)("div", { className: "ss__result__image-wrapper", children: [(0, jsx_runtime_1.jsx)("a", { href: core.url, onClick: (e) => {
235
+ onClick && onClick(e);
236
+ }, children: !hideBadge ? ((0, jsx_runtime_1.jsx)(OverlayBadge_1.OverlayBadge, { ...subProps.overlayBadge, controller: controller, children: (0, jsx_runtime_1.jsx)(Image_1.Image, { ...subProps.image }) })) : ((0, jsx_runtime_1.jsx)(Image_1.Image, { ...subProps.image })) }), discussProductIcon && ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.discussProductButton, icon: discussProductIcon, onClick: (e) => {
237
+ e.preventDefault();
238
+ e.stopPropagation();
239
+ if (onDiscussClick) {
240
+ onDiscussClick(e, result);
241
+ }
242
+ else if (controller?.type === 'chat') {
243
+ // rendered inside a Chat — go straight to the controller
244
+ controller.productQuery(result);
245
+ }
246
+ else {
247
+ // otherwise hand off to an integrated Chat via the global bus,
248
+ // which the integration layer wires up (see setupEvents)
249
+ const fire = window?.athos?.fire;
250
+ if (typeof fire === 'function') {
251
+ fire('controller/chat/productQuery', { result });
252
+ }
253
+ else {
254
+ controller?.log?.warn('discussProductIcon requires an onDiscussClick handler or an integrated Chat');
255
+ }
256
+ }
257
+ }, ...mergedLang.discussProductButton.all }))] })), (0, jsx_runtime_1.jsxs)("div", { className: "ss__result__details", children: [!hideBadge && ((0, jsx_runtime_1.jsx)(CalloutBadge_1.CalloutBadge, { ...subProps.calloutBadge, controller: controller })), !hideTitle && ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__title", children: (0, jsx_runtime_1.jsx)("a", { href: core.url, onClick: (e) => {
211
258
  onClick && onClick(e);
212
259
  }, dangerouslySetInnerHTML: {
213
260
  __html: displayName || '',
214
- } }) })), !hideRating && (0, jsx_runtime_1.jsx)(Rating_1.Rating, { ...subProps.rating }), !hidePricing && renderPrices && core.price && core.price > 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__pricing", children: isOnSale ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.msrp, lineThrough: true, name: 'msrp' }), "\u00A0", (0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.price, name: 'price' })] })) : ((0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.price })) })) : null, (0, utilities_1.cloneWithProps)(detailSlot, { result, treePath }), !hideVariantSelections && result.variants?.selections.length ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__variant-selection", children: result.variants?.selections.map((selection) => {
261
+ } }) })), !hideRating && (0, jsx_runtime_1.jsx)(Rating_1.Rating, { ...subProps.rating }), !hidePricing && renderPrices && core.price && core.price > 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__pricing", children: isOnSale ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.msrp, lineThrough: true, name: 'msrp' }), "\u00A0", (0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.price, name: 'price' })] })) : ((0, jsx_runtime_1.jsx)(Price_1.Price, { ...subProps.price, value: core.price })) })) : null, (0, utilities_1.cloneWithProps)(detailSlot, { result, treePath }), !hideVariantSelections && result.variants?.selections?.length ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__details__variant-selection", children: result.variants?.selections.map((selection) => {
215
262
  return ((0, jsx_runtime_1.jsx)(VariantSelection_1.VariantSelection, { ...subProps.variantSelection, type: selection.type, selection: selection }));
216
263
  }) })) : null, !hideAddToCartButton && ((0, jsx_runtime_1.jsx)("div", { className: "ss__result__add-to-cart-wrapper", children: (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.button, ...mergedLang.addToCartButtonText.all }) }))] })] }) })) : null;
217
264
  });