@athoscommerce/snap-preact 1.7.0 → 1.7.1-beta.129

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 (367) 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 +4 -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 +51 -14
  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 +3 -3
  16. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  17. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  18. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +187 -0
  19. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  20. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  21. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +17 -0
  22. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  23. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  24. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +175 -0
  25. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  26. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  27. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
  28. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +21 -0
  29. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  30. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +211 -0
  31. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  32. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  33. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +17 -0
  34. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +16 -0
  35. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  36. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +255 -0
  37. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  38. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  39. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +17 -0
  40. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  41. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  42. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +143 -0
  43. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  44. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  45. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
  46. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  47. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  48. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +487 -0
  49. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  50. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  51. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
  52. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  53. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  54. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +200 -0
  55. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  56. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  57. package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +17 -0
  58. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  59. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  60. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +123 -0
  61. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  62. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  63. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +17 -0
  64. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  65. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  66. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +99 -0
  67. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  68. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  69. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +17 -0
  70. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +2 -2
  71. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts +5 -3
  72. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  73. package/dist/cjs/components/src/components/Molecules/Result/Result.js +15 -9
  74. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +2 -0
  75. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  76. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +19 -2
  77. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  78. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +21 -26
  79. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  80. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +5 -1
  81. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +30 -0
  82. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  83. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +1047 -0
  84. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  85. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  86. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.js +1186 -0
  87. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  88. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  89. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +104 -0
  90. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  91. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  92. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +98 -0
  93. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  94. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  95. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +116 -0
  96. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts +2 -0
  97. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  98. package/dist/cjs/components/src/components/Organisms/Chat/index.js +17 -0
  99. package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +2 -1
  100. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +2 -1
  101. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  102. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
  103. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  104. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -1
  105. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
  106. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  107. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -1
  108. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
  109. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  110. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +3 -1
  111. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  112. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  113. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +55 -0
  114. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts +2 -0
  115. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  116. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  117. package/dist/cjs/components/src/index.d.ts +11 -0
  118. package/dist/cjs/components/src/index.d.ts.map +1 -1
  119. package/dist/cjs/components/src/index.js +13 -1
  120. package/dist/cjs/components/src/providers/withTracking.d.ts +2 -2
  121. package/dist/cjs/components/src/providers/withTracking.d.ts.map +1 -1
  122. package/dist/cjs/components/src/setupTests.js +17 -0
  123. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts +4 -0
  124. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  125. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  126. package/dist/cjs/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  127. package/dist/cjs/components/src/themes/base/components/templates/index.js +5 -4
  128. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  129. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  130. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  131. package/dist/cjs/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  132. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +5 -4
  133. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  134. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  135. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  136. package/dist/cjs/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  137. package/dist/cjs/components/src/themes/pike/components/templates/index.js +5 -4
  138. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  139. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  140. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  141. package/dist/cjs/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  142. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +5 -4
  143. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  144. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  145. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  146. package/dist/cjs/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  147. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +5 -4
  148. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts +4 -0
  149. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  150. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  151. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
  152. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  153. package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
  154. package/dist/cjs/components/src/utilities/snapify.d.ts +3 -2
  155. package/dist/cjs/components/src/utilities/snapify.d.ts.map +1 -1
  156. package/dist/cjs/components/src/utilities/snapify.js +48 -0
  157. package/dist/cjs/src/Snap.d.ts +2 -1
  158. package/dist/cjs/src/Snap.d.ts.map +1 -1
  159. package/dist/cjs/src/Snap.js +134 -24
  160. package/dist/cjs/src/Templates/SnapTemplates.d.ts +2 -1
  161. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  162. package/dist/cjs/src/Templates/SnapTemplates.js +67 -5
  163. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts +2 -0
  164. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  165. package/dist/cjs/src/Templates/Stores/LibraryStore.js +19 -0
  166. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +19 -4
  167. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  168. package/dist/cjs/src/Templates/Stores/TemplateStore.js +2 -1
  169. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  170. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  171. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  172. package/dist/cjs/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  173. package/dist/cjs/src/Templates/Stores/library/languages/es.js +5 -0
  174. package/dist/cjs/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  175. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +5 -0
  176. package/dist/cjs/src/create/createChatController.d.ts +5 -0
  177. package/dist/cjs/src/create/createChatController.d.ts.map +1 -0
  178. package/dist/cjs/src/create/createChatController.js +43 -0
  179. package/dist/cjs/src/setupEvents.d.ts +13 -0
  180. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  181. package/dist/cjs/src/setupEvents.js +87 -0
  182. package/dist/cjs/src/types.d.ts +15 -3
  183. package/dist/cjs/src/types.d.ts.map +1 -1
  184. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -1
  185. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  186. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  187. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  188. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +67 -0
  189. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  190. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  191. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  192. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +4 -0
  193. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  194. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +53 -11
  195. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  196. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  197. package/dist/esm/components/src/components/Atoms/Icon/paths.js +21 -0
  198. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +1 -1
  199. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  200. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  201. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +169 -0
  202. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  203. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  204. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  205. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  206. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  207. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +170 -0
  208. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  209. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  210. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  211. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +21 -0
  212. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  213. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +192 -0
  214. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  215. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  216. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  217. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +16 -0
  218. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  219. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +223 -0
  220. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  221. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  222. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  223. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  224. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  225. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +121 -0
  226. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  227. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  228. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  229. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  230. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  231. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +460 -0
  232. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  233. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  234. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  235. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  236. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  237. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +184 -0
  238. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  239. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  240. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  241. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  242. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  243. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +102 -0
  244. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  245. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  246. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  247. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  248. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  249. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +80 -0
  250. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  251. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  252. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  253. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
  254. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +5 -3
  255. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  256. package/dist/esm/components/src/components/Molecules/Result/Result.js +12 -7
  257. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +2 -0
  258. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  259. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +35 -2
  260. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  261. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +22 -27
  262. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  263. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +5 -1
  264. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +30 -0
  265. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  266. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +956 -0
  267. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  268. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  269. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.js +1227 -0
  270. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  271. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  272. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +54 -0
  273. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  274. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  275. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  276. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  277. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  278. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +110 -0
  279. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +2 -0
  280. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  281. package/dist/esm/components/src/components/Organisms/Chat/index.js +1 -0
  282. package/dist/esm/components/src/components/Organisms/Facet/Facet.js +1 -1
  283. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +1 -1
  284. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  285. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
  286. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  287. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +4 -1
  288. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
  289. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  290. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +4 -1
  291. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
  292. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  293. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +4 -1
  294. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  295. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  296. package/dist/esm/components/src/components/Templates/Chat/Chat.js +42 -0
  297. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  298. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  299. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  300. package/dist/esm/components/src/index.d.ts +11 -0
  301. package/dist/esm/components/src/index.d.ts.map +1 -1
  302. package/dist/esm/components/src/index.js +11 -0
  303. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  304. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  305. package/dist/esm/components/src/setupTests.js +14 -0
  306. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  307. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  308. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  309. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  310. package/dist/esm/components/src/themes/base/components/templates/index.js +5 -0
  311. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  312. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  313. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  314. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  315. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +5 -0
  316. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  317. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  318. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  319. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  320. package/dist/esm/components/src/themes/pike/components/templates/index.js +5 -0
  321. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  322. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  323. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  324. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  325. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +5 -0
  326. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  327. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  328. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  329. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  330. package/dist/esm/components/src/themes/snappy/components/templates/index.js +5 -0
  331. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  332. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  333. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  334. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
  335. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  336. package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
  337. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  338. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  339. package/dist/esm/components/src/utilities/snapify.js +29 -2
  340. package/dist/esm/src/Snap.d.ts +2 -1
  341. package/dist/esm/src/Snap.d.ts.map +1 -1
  342. package/dist/esm/src/Snap.js +72 -0
  343. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  344. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  345. package/dist/esm/src/Templates/SnapTemplates.js +55 -0
  346. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +2 -0
  347. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  348. package/dist/esm/src/Templates/Stores/LibraryStore.js +6 -0
  349. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +19 -4
  350. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  351. package/dist/esm/src/Templates/Stores/TemplateStore.js +2 -1
  352. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  353. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  354. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  355. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  356. package/dist/esm/src/Templates/Stores/library/languages/es.js +5 -0
  357. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  358. package/dist/esm/src/Templates/Stores/library/languages/fr.js +5 -0
  359. package/dist/esm/src/create/createChatController.d.ts +5 -0
  360. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  361. package/dist/esm/src/create/createChatController.js +29 -0
  362. package/dist/esm/src/setupEvents.d.ts +13 -0
  363. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  364. package/dist/esm/src/setupEvents.js +40 -0
  365. package/dist/esm/src/types.d.ts +15 -3
  366. package/dist/esm/src/types.d.ts.map +1 -1
  367. package/package.json +14 -12
@@ -0,0 +1,460 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
+ import { useEffect } from 'preact/hooks';
3
+ import { observer } from 'mobx-react-lite';
4
+ import { css } from '@emotion/react';
5
+ import classnames from 'classnames';
6
+ import { useTheme, CacheProvider, useTreePath } from '../../../providers';
7
+ import { mergeProps, mergeStyles } from '../../../utilities';
8
+ import { Image } from '../../Atoms/Image';
9
+ import { Button } from '../../Atoms/Button';
10
+ import { Icon, Price } from '../../..';
11
+ const defaultStyles = ({ primaryColor, primaryColorText }) => {
12
+ const colorPrimary = primaryColor || '#253B80';
13
+ const colorPrimaryText = primaryColorText || '#fff';
14
+ return css({
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ gap: '1em',
18
+ paddingBottom: '1em',
19
+ '.ss__chat-product-query-message__header__back': {
20
+ // Overlay banner pinned to the top of the secondary chat's scrollable messages
21
+ // container so it stays visible while the product details scroll underneath.
22
+ // Styling mirrors `.ss__chat__session-feedback` (dark primary bg, primary text,
23
+ // 8px/15px padding, 10px gap, 14px font). Rendered as a direct child of the
24
+ // component root (not the header) so sticky holds across the full scroll range.
25
+ // Negative marginBottom cancels the root's `gap: 1em` so the banner sits flush
26
+ // against the header below it.
27
+ position: 'sticky',
28
+ top: 0,
29
+ zIndex: 2,
30
+ marginBottom: '-1em',
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ gap: '10px',
34
+ padding: '8px 15px',
35
+ background: colorPrimary,
36
+ color: colorPrimaryText,
37
+ fontSize: '14px',
38
+ cursor: 'pointer',
39
+ border: 'none',
40
+ font: 'inherit',
41
+ width: 'auto',
42
+ '&:focus-visible': {
43
+ outline: `2px solid ${colorPrimaryText}`,
44
+ outlineOffset: '-2px',
45
+ },
46
+ svg: {
47
+ fill: colorPrimaryText,
48
+ stroke: colorPrimaryText,
49
+ },
50
+ },
51
+ '.ss__chat-product-query-message__header': {
52
+ background: colorPrimary,
53
+ padding: '1em',
54
+ display: 'flex',
55
+ flexDirection: 'column',
56
+ '.ss__price': {
57
+ color: colorPrimaryText,
58
+ },
59
+ '.ss__chat-product-query-message__header__product': {
60
+ display: 'flex',
61
+ gap: '1em',
62
+ '.ss__chat-product-query-message__header__product__image': {
63
+ width: '25%',
64
+ objectFit: 'contain',
65
+ flexShrink: 0,
66
+ borderRadius: '0.33em',
67
+ overflow: 'hidden',
68
+ },
69
+ '.ss__chat-product-query-message__header__product__details': {
70
+ display: 'flex',
71
+ flexDirection: 'column',
72
+ gap: '0.5em',
73
+ flex: 1,
74
+ justifyContent: 'space-evenly',
75
+ '.ss__chat-product-query-message__header__product__details__name': {
76
+ fontWeight: 'bold',
77
+ fontSize: '1.2em',
78
+ a: {
79
+ color: colorPrimaryText,
80
+ textDecoration: 'none',
81
+ '&:hover': {
82
+ textDecoration: 'underline',
83
+ },
84
+ },
85
+ },
86
+ '.ss__chat-product-query-message__header__product__details__price': {
87
+ fontWeight: 'bold',
88
+ fontSize: '1.1em',
89
+ color: '#D4A843',
90
+ display: 'flex',
91
+ gap: '0.5em',
92
+ alignItems: 'center',
93
+ },
94
+ },
95
+ '.ss__chat-product-query-message__header__product__actions': {
96
+ display: 'flex',
97
+ flexDirection: 'row',
98
+ gap: '0.5em',
99
+ '.ss__chat-product-query-message__header__product__actions__add-to-cart .ss__button': {
100
+ flexDirection: 'row-reverse',
101
+ borderRadius: '0.5em',
102
+ padding: '0.4em 0.75em',
103
+ fontWeight: 'bold',
104
+ border: 'none',
105
+ whiteSpace: 'nowrap',
106
+ cursor: 'pointer',
107
+ fontSize: '0.8em',
108
+ background: '#feeeae',
109
+ color: '#000',
110
+ justifyContent: 'center',
111
+ width: '100%',
112
+ textAlign: 'center',
113
+ svg: {
114
+ fill: '#000',
115
+ stroke: '#000',
116
+ },
117
+ '&:not(.ss__button--disabled):hover': {
118
+ background: '#fde68a',
119
+ },
120
+ },
121
+ '.ss__chat-product-query-message__header__product__actions__show-similar .ss__button, .ss__chat-product-query-message__header__product__actions__discuss-product .ss__button': {
122
+ flexDirection: 'row-reverse',
123
+ borderRadius: '0.5em',
124
+ padding: '0.4em 0.75em',
125
+ fontWeight: 'bold',
126
+ whiteSpace: 'nowrap',
127
+ cursor: 'pointer',
128
+ fontSize: '0.8em',
129
+ background: '#000',
130
+ color: '#fff',
131
+ justifyContent: 'center',
132
+ width: '100%',
133
+ textAlign: 'center',
134
+ svg: {
135
+ fill: '#fff',
136
+ stroke: '#fff',
137
+ },
138
+ },
139
+ },
140
+ },
141
+ },
142
+ '.ss__chat-product-query-message__variants': {
143
+ padding: '0 2em',
144
+ display: 'flex',
145
+ flexDirection: 'column',
146
+ gap: '1em',
147
+ '.ss__chat-product-query-message__variants__label': {
148
+ fontWeight: '600',
149
+ fontSize: '0.9em',
150
+ color: '#374151',
151
+ textTransform: 'uppercase',
152
+ marginBottom: '0.5em',
153
+ },
154
+ '.ss__chat-product-query-message__variants__swatches': {
155
+ display: 'flex',
156
+ flexWrap: 'wrap',
157
+ gap: '0.5em',
158
+ '.ss__chat-product-query-message__variants__swatch': {
159
+ display: 'flex',
160
+ flex: '1 1 auto',
161
+ flexDirection: 'column',
162
+ alignItems: 'center',
163
+ gap: '0.25em',
164
+ cursor: 'pointer',
165
+ padding: '0.25em',
166
+ borderRadius: '0.5em',
167
+ border: '2px solid transparent',
168
+ transition: 'border-color 0.15s ease',
169
+ background: 'transparent',
170
+ font: 'inherit',
171
+ color: 'inherit',
172
+ '&:hover': {
173
+ borderColor: colorPrimary,
174
+ },
175
+ '&:focus-visible': {
176
+ outline: `2px solid ${colorPrimary}`,
177
+ outlineOffset: '2px',
178
+ },
179
+ '&[aria-disabled="true"]': {
180
+ cursor: 'not-allowed',
181
+ },
182
+ '&.ss__chat-product-query-message__variants__swatch--selected': {
183
+ borderColor: colorPrimary,
184
+ borderWidth: '3px',
185
+ padding: '0.15em',
186
+ },
187
+ '&.ss__chat-product-query-message__variants__swatch--unavailable': {
188
+ opacity: 0.4,
189
+ },
190
+ '&.ss__chat-product-query-message__variants__swatch--text-only': {
191
+ padding: '0.4em 0.75em',
192
+ '&.ss__chat-product-query-message__variants__swatch--selected': {
193
+ padding: '0.3em 0.65em',
194
+ },
195
+ '.ss__chat-product-query-message__variants__swatch__value': {
196
+ fontSize: '1em',
197
+ maxWidth: 'none',
198
+ },
199
+ },
200
+ '.ss__chat-product-query-message__variants__swatch__image': {
201
+ width: '48px',
202
+ height: '48px',
203
+ objectFit: 'cover',
204
+ borderRadius: '50%',
205
+ border: '1px solid #E5E7EB',
206
+ },
207
+ '.ss__chat-product-query-message__variants__swatch__value': {
208
+ fontSize: '0.75em',
209
+ color: '#374151',
210
+ textAlign: 'center',
211
+ maxWidth: '60px',
212
+ overflow: 'hidden',
213
+ textOverflow: 'ellipsis',
214
+ whiteSpace: 'nowrap',
215
+ },
216
+ },
217
+ },
218
+ },
219
+ '.ss__chat-product-query-message__section': {
220
+ padding: '0 1em',
221
+ '.ss__chat-product-query-message__section__table': {
222
+ width: '100%',
223
+ maxWidth: '100%',
224
+ tableLayout: 'fixed',
225
+ borderCollapse: 'separate',
226
+ borderSpacing: 0,
227
+ fontSize: '0.9em',
228
+ 'tbody tr': {
229
+ transition: 'background-color 0.15s ease',
230
+ },
231
+ 'tbody tr:hover': {
232
+ background: '#F3F4F6',
233
+ },
234
+ 'th, td': {
235
+ padding: '0.75em 1em',
236
+ verticalAlign: 'top',
237
+ wordBreak: 'break-word',
238
+ overflowWrap: 'anywhere',
239
+ textAlign: 'left',
240
+ borderBottom: '1px solid #E5E7EB',
241
+ },
242
+ 'tbody tr:last-of-type th, tbody tr:last-of-type td': {
243
+ borderBottom: 'none',
244
+ },
245
+ 'th[scope="row"]': {
246
+ fontWeight: '600',
247
+ color: '#6B7280',
248
+ textTransform: 'uppercase',
249
+ fontSize: '0.8em',
250
+ letterSpacing: '0.03em',
251
+ width: '40%',
252
+ },
253
+ 'td:last-of-type': {
254
+ textAlign: 'right',
255
+ color: '#111827',
256
+ fontWeight: '500',
257
+ },
258
+ '.ss__chat-product-query-message__section__table__availability--in-stock': {
259
+ color: '#10B981',
260
+ fontWeight: '600',
261
+ },
262
+ '.ss__chat-product-query-message__section__table__availability--out-of-stock': {
263
+ color: '#DC2626',
264
+ fontWeight: '600',
265
+ },
266
+ '.ss__chat-product-query-message__section__table__price': {
267
+ display: 'flex',
268
+ gap: '0.5em',
269
+ alignItems: 'center',
270
+ justifyContent: 'flex-end',
271
+ },
272
+ },
273
+ },
274
+ '.ss__chat-product-query-message__description': {
275
+ padding: '0 1em',
276
+ fontSize: '0.9em',
277
+ color: '#374151',
278
+ lineHeight: '1.5',
279
+ },
280
+ });
281
+ };
282
+ // fields that have dedicated rendering in the product card; skip them in the info table
283
+ const CARD_FIELDS = new Set([
284
+ 'name',
285
+ 'brand',
286
+ 'price',
287
+ 'msrp',
288
+ 'imageUrl',
289
+ 'thumbnailImageUrl',
290
+ 'secureImageUrl',
291
+ 'secureThumbnailImageUrl',
292
+ 'url',
293
+ 'addToCartUrl',
294
+ 'uid',
295
+ 'sku',
296
+ 'parentId',
297
+ 'parentImageUrl',
298
+ 'description',
299
+ 'caption',
300
+ 'popularity',
301
+ 'stockMessage',
302
+ ]);
303
+ // preferred ordering for the structured info table - any extras get appended after
304
+ const PREFERRED_INFO_ORDER = ['material', 'fit', 'color', 'sizes', 'size', 'category', 'rating', 'availability'];
305
+ const formatLabel = (key) => {
306
+ return key
307
+ .replace(/[_-]+/g, ' ')
308
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
309
+ .trim();
310
+ };
311
+ const stripHtml = (str) => str.replace(/<[^>]*>/g, '');
312
+ const formatValue = (value) => {
313
+ if (Array.isArray(value)) {
314
+ return stripHtml(value.filter((v) => v != null && v !== '').join(', '));
315
+ }
316
+ if (value == null) {
317
+ return '';
318
+ }
319
+ return stripHtml(String(value));
320
+ };
321
+ const collectInfoRows = (display, displayFields) => {
322
+ const core = display?.mappings?.core || {};
323
+ const attributes = display?.attributes || {};
324
+ const filterByDisplayFields = displayFields && displayFields.length > 0;
325
+ const displayFieldsLower = filterByDisplayFields ? displayFields.map((f) => f.toLowerCase()) : [];
326
+ const merged = {};
327
+ // when displayFields is specified, include matching core fields that are normally skipped
328
+ if (filterByDisplayFields) {
329
+ Object.entries(core).forEach(([key, value]) => {
330
+ if (displayFieldsLower.includes(key.toLowerCase()) && value != null) {
331
+ merged[key] = value;
332
+ }
333
+ });
334
+ }
335
+ // pull selected core fields (rating + availability)
336
+ if (core.rating != null) {
337
+ const rating = core.rating;
338
+ const ratingCount = core.ratingCount;
339
+ merged.rating = ratingCount ? `${rating}/5.0 (${ratingCount} reviews)` : `${rating}/5.0`;
340
+ }
341
+ if (core.available != null) {
342
+ merged.availability = core.available ? 'In Stock' : 'Out of Stock';
343
+ }
344
+ // merge product attributes, skipping ones already shown on the card
345
+ Object.entries(attributes).forEach(([key, value]) => {
346
+ if (!filterByDisplayFields && CARD_FIELDS.has(key))
347
+ return;
348
+ const formatted = formatValue(value);
349
+ if (!formatted)
350
+ return;
351
+ merged[key] = formatted;
352
+ });
353
+ const seen = new Set();
354
+ const ordered = [];
355
+ PREFERRED_INFO_ORDER.forEach((preferred) => {
356
+ const match = Object.keys(merged).find((k) => k.toLowerCase() === preferred);
357
+ if (match && !seen.has(match)) {
358
+ seen.add(match);
359
+ ordered.push({ key: match, rawKey: match, label: formatLabel(match), value: formatValue(merged[match]) });
360
+ }
361
+ });
362
+ Object.keys(merged).forEach((key) => {
363
+ if (seen.has(key))
364
+ return;
365
+ seen.add(key);
366
+ ordered.push({ key, rawKey: key, label: formatLabel(key), value: formatValue(merged[key]) });
367
+ });
368
+ // filter and sort by displayFields order
369
+ if (filterByDisplayFields) {
370
+ const filtered = ordered.filter((row) => displayFieldsLower.includes(row.rawKey.toLowerCase()));
371
+ filtered.sort((a, b) => displayFieldsLower.indexOf(a.rawKey.toLowerCase()) - displayFieldsLower.indexOf(b.rawKey.toLowerCase()));
372
+ return filtered;
373
+ }
374
+ return ordered;
375
+ };
376
+ export const ChatProductQueryMessage = observer((properties) => {
377
+ const globalTheme = useTheme();
378
+ const globalTreePath = useTreePath();
379
+ const defaultProps = {
380
+ treePath: globalTreePath,
381
+ };
382
+ const props = mergeProps('chatProductQueryMessage', globalTheme, defaultProps, properties);
383
+ const { chatItem, controller, displayFields, className, internalClassName } = props;
384
+ const styling = mergeStyles(props, defaultStyles);
385
+ const { messageType, sourceProduct } = chatItem;
386
+ if (messageType !== 'productQuery') {
387
+ console.warn('ChatProductQueryMessage received message with unsupported type:', messageType, 'Expected type: productQuery');
388
+ return null;
389
+ }
390
+ const product = controller?.store.productQuickview;
391
+ const productQuickviewError = controller?.store.productQuickviewError;
392
+ const chatMessages = controller?.store.currentChat?.chat || [];
393
+ const sourceMessage = chatItem.sourceMessageId ? chatMessages.find((m) => m.id === chatItem.sourceMessageId) : null;
394
+ const cameFromInspiration = sourceMessage?.messageType === 'inspirationResult';
395
+ const cameFromComparison = sourceMessage?.messageType === 'productComparison';
396
+ if (!product) {
397
+ 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...' }) }) }) }) }) }));
398
+ }
399
+ const displayed = product.display;
400
+ const displayedCore = displayed.mappings?.core || {};
401
+ const variants = product.variants;
402
+ const selections = variants?.selections || [];
403
+ // Ensure every selection has an initial value picked. Without this, entering
404
+ // the quickview from inspiration leaves all selections empty, and the first
405
+ // variant click can't narrow `refineSelections` to a single variant — so the
406
+ // active variant (and hero image) doesn't update until a second selection is
407
+ // made. Prefer the variant whose own id (uid) matches the clicked result's id
408
+ // so the panel reflects exactly the variant the user clicked; fall back to the
409
+ // first available value. Single-value selections also get hidden from the UI
410
+ // (handled by `visibleSelections` below).
411
+ useEffect(() => {
412
+ const sourceId = sourceProduct?.id;
413
+ const matchedVariant = sourceId != null ? variants?.data?.find((variant) => variant.mappings?.core?.uid === sourceId) : undefined;
414
+ selections.forEach((selection) => {
415
+ if (selection.selected)
416
+ return;
417
+ const matchedValue = matchedVariant?.options?.[selection.field]?.value;
418
+ const target = (matchedValue != null && selection.values.find((v) => v.available && v.value == matchedValue)) ||
419
+ selection.values.find((v) => v.available) ||
420
+ selection.values[0];
421
+ if (target) {
422
+ selection.select(target.value);
423
+ }
424
+ });
425
+ }, [selections]);
426
+ const visibleSelections = selections.filter((selection) => selection.values.length > 1);
427
+ const displayedData = {
428
+ mappings: displayed.mappings,
429
+ attributes: displayed.attributes || {},
430
+ };
431
+ const allInfoRows = collectInfoRows(displayedData, displayFields);
432
+ const descriptionRow = allInfoRows.find((row) => row.rawKey.toLowerCase() === 'description');
433
+ const infoRows = allInfoRows.filter((row) => row.rawKey.toLowerCase() !== 'description');
434
+ const handleBack = () => {
435
+ controller?.store.currentChat?.popProductQueryMessage(chatItem.sourceMessageId);
436
+ controller?.store.clearProductQuickview();
437
+ };
438
+ return (_jsx(CacheProvider, { children: _jsxs("div", { className: classnames('ss__chat-product-query-message', className, internalClassName), ...styling, children: [(cameFromInspiration || cameFromComparison) && (_jsxs("button", { type: "button", className: classnames('ss__chat-product-query-message__header__back'), "aria-label": cameFromComparison ? 'Back to comparison' : 'Back to inspiration', onClick: handleBack, children: [_jsx(Icon, { icon: "angle-left", size: "14px" }), _jsx("span", { children: cameFromComparison ? 'Back to comparison' : 'Back to inspiration' })] })), _jsx("div", { className: classnames('ss__chat-product-query-message__header'), children: _jsxs("div", { className: classnames('ss__chat-product-query-message__header__product'), children: [(displayedCore.imageUrl || displayedCore.parentImageUrl) && (_jsx(Image, { className: classnames('ss__chat-product-query-message__header__product__image'), src: (displayedCore.imageUrl || displayedCore.parentImageUrl), 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, onClick: (e) => controller?.track.product.click(e, product), target: "_blank", rel: "noopener noreferrer", children: displayedCore.name })) : (displayedCore.name) })), displayedCore.price != null && (_jsxs("div", { className: classnames('ss__chat-product-query-message__header__product__details__price'), children: [displayedCore.msrp != null && Number(displayedCore.msrp) > Number(displayedCore.price) && (_jsx(Price, { value: displayedCore.msrp, lineThrough: true })), _jsx(Price, { value: displayedCore.price })] })), _jsxs("div", { className: classnames('ss__chat-product-query-message__header__product__actions'), children: [_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__add-to-cart'), children: _jsx(Button, { icon: "cart", content: 'Add to Cart', onClick: () => {
439
+ controller?.track.product.addToCart(product);
440
+ controller?.addToCart(product);
441
+ } }) }), controller?.store.features.similarProducts.enabled && (_jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__show-similar'), children: _jsx(Button, { icon: "search-thin", content: 'Similar', onClick: () => controller?.productSimilar(sourceProduct) }) })), _jsx("div", { className: classnames('ss__chat-product-query-message__header__product__actions__discuss-product'), children: _jsx(Button, { icon: "chat", content: 'Discuss', onClick: () => controller?.productQuery(sourceProduct) }) })] })] })] }) }), visibleSelections.length > 0 && (_jsx("div", { className: classnames('ss__chat-product-query-message__variants'), role: "group", "aria-label": "Variant selection", children: visibleSelections.map((selection) => {
442
+ // If every value in this selection shares the same thumbnail (or none have
443
+ // one), the image carries no signal — show text only.
444
+ const firstThumb = selection.values[0]?.thumbnailImageUrl;
445
+ const allSameThumb = selection.values.every((v) => v.thumbnailImageUrl === firstThumb);
446
+ const showThumbs = !allSameThumb;
447
+ return (_jsxs("div", { children: [_jsxs("div", { className: classnames('ss__chat-product-query-message__variants__label'), id: `ss__chat-pq-variant-${selection.field}`, children: [formatLabel(selection.field), " (", selection.values.length, ")"] }), _jsx("div", { className: classnames('ss__chat-product-query-message__variants__swatches'), role: "radiogroup", "aria-labelledby": `ss__chat-pq-variant-${selection.field}`, children: selection.values.map((selectionValue) => {
448
+ const isUnavailable = !selectionValue.available;
449
+ const isSelected = selection.selected?.value === selectionValue.value;
450
+ return (_jsxs("button", { type: "button", className: classnames('ss__chat-product-query-message__variants__swatch', {
451
+ 'ss__chat-product-query-message__variants__swatch--selected': isSelected,
452
+ 'ss__chat-product-query-message__variants__swatch--unavailable': isUnavailable,
453
+ 'ss__chat-product-query-message__variants__swatch--text-only': !showThumbs,
454
+ }), title: selectionValue.value, role: "radio", "aria-checked": isSelected, "aria-disabled": isUnavailable, "aria-label": `${formatLabel(selection.field)}: ${selectionValue.value}${isUnavailable ? ' (unavailable)' : ''}`, onClick: () => selection.select(selectionValue.value), children: [showThumbs && 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));
455
+ }) })] }, selection.field));
456
+ }) })), infoRows.length > 0 && (_jsx("div", { className: classnames('ss__chat-product-query-message__section'), children: _jsx("table", { className: classnames('ss__chat-product-query-message__section__table'), "aria-label": "Product information", children: _jsx("tbody", { children: infoRows.map((row) => (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: row.label }), _jsx("td", { children: row.rawKey === 'availability' ? (_jsx("span", { className: classnames({
457
+ 'ss__chat-product-query-message__section__table__availability--in-stock': row.value === 'In Stock',
458
+ 'ss__chat-product-query-message__section__table__availability--out-of-stock': row.value === 'Out of Stock',
459
+ }), children: row.value === 'In Stock' ? `\u2713 ${row.value}` : row.value })) : row.rawKey.toLowerCase() === 'price' ? (_jsxs("span", { className: "ss__chat-product-query-message__section__table__price", children: [displayedCore.msrp != null && Number(displayedCore.msrp) > Number(row.value) && (_jsx(Price, { value: Number(displayedCore.msrp), lineThrough: true })), _jsx(Price, { value: Number(row.value) })] })) : (row.value) })] }, row.key))) }) }) })), descriptionRow && _jsx("div", { className: classnames('ss__chat-product-query-message__description'), children: descriptionRow.value })] }) }));
460
+ });
@@ -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';
@@ -0,0 +1,11 @@
1
+ import { ComponentProps } from '../../../types';
2
+ import type { ChatController } from '@athoscommerce/snap-controller';
3
+ import type { Product } from '@athoscommerce/snap-store-mobx';
4
+ export declare const ChatResult: (props: ChatResultProps) => import("@emotion/react/jsx-runtime").JSX.Element;
5
+ export interface ChatResultProps extends ComponentProps {
6
+ result: Product;
7
+ controller: ChatController;
8
+ scrollToBottom: () => void;
9
+ trackingRef?: (el: HTMLElement | null) => void;
10
+ }
11
+ //# sourceMappingURL=ChatResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatResult.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/ChatResult/ChatResult.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAK7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AA4H9D,eAAO,MAAM,UAAU,8EAwItB,CAAC;AAOF,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/C"}