@athoscommerce/snap-preact 1.12.0 → 1.12.1-beta.152

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 (385) 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 +51 -4
  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 +4 -0
  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/Results/Results.js +1 -1
  48. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  49. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  50. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  51. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +47 -0
  52. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  53. package/dist/cjs/components/src/components/Templates/ChatButton/ChatButton.js +47 -0
  54. package/dist/cjs/components/src/components/Templates/ChatButton/index.js +17 -0
  55. package/dist/cjs/components/src/index.js +17 -1
  56. package/dist/cjs/components/src/providers/themeComponents.js +20 -0
  57. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  58. package/dist/cjs/components/src/themes/base/components/templates/chatButton.js +6 -0
  59. package/dist/cjs/components/src/themes/base/components/templates/index.js +10 -0
  60. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  61. package/dist/cjs/components/src/themes/bocachica/components/templates/chatButton.js +6 -0
  62. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +10 -0
  63. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  64. package/dist/cjs/components/src/themes/pike/components/templates/chatButton.js +6 -0
  65. package/dist/cjs/components/src/themes/pike/components/templates/index.js +10 -0
  66. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  67. package/dist/cjs/components/src/themes/snapnco/components/templates/chatButton.js +6 -0
  68. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +10 -0
  69. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  70. package/dist/cjs/components/src/themes/snappy/components/templates/chatButton.js +6 -0
  71. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +10 -0
  72. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  73. package/dist/cjs/components/src/themes/themeComponents/chatButton.js +9 -0
  74. package/dist/cjs/components/src/utilities/Colour/Colour.js +41 -0
  75. package/dist/cjs/components/src/utilities/snapify.js +27 -0
  76. package/dist/cjs/src/Snap.js +70 -0
  77. package/dist/cjs/src/Templates/SnapTemplates.js +55 -5
  78. package/dist/cjs/src/Templates/Stores/LibraryStore.js +51 -1
  79. package/dist/cjs/src/Templates/Stores/TemplateStore.js +3 -3
  80. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  81. package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +5 -0
  82. package/dist/cjs/src/Templates/Stores/library/languages/ar.js +474 -0
  83. package/dist/cjs/src/Templates/Stores/library/languages/de.js +474 -0
  84. package/dist/cjs/src/Templates/Stores/library/languages/es.js +479 -0
  85. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +479 -0
  86. package/dist/cjs/src/Templates/Stores/library/languages/hi.js +474 -0
  87. package/dist/cjs/src/Templates/Stores/library/languages/it.js +474 -0
  88. package/dist/cjs/src/Templates/Stores/library/languages/ja.js +474 -0
  89. package/dist/cjs/src/Templates/Stores/library/languages/ko.js +474 -0
  90. package/dist/cjs/src/Templates/Stores/library/languages/nl.js +474 -0
  91. package/dist/cjs/src/Templates/Stores/library/languages/pt.js +474 -0
  92. package/dist/cjs/src/Templates/Stores/library/languages/ru.js +474 -0
  93. package/dist/cjs/src/Templates/Stores/library/languages/tr.js +474 -0
  94. package/dist/cjs/src/Templates/Stores/library/languages/vi.js +474 -0
  95. package/dist/cjs/src/Templates/Stores/library/languages/zh.js +474 -0
  96. package/dist/cjs/src/create/createChatController.js +30 -0
  97. package/dist/cjs/src/create/index.js +3 -1
  98. package/dist/cjs/src/setupEvents.js +44 -0
  99. package/dist/cjs/src/utils/applyChatTargetInject.js +25 -0
  100. package/dist/cjs/src/utils/index.js +3 -1
  101. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +3 -1
  102. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  103. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +17 -0
  104. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  105. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +92 -0
  106. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  107. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  108. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  109. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -1
  110. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  111. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +57 -12
  112. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +13 -0
  113. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  114. package/dist/esm/components/src/components/Atoms/Icon/paths.js +13 -0
  115. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +30 -0
  116. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  117. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +215 -0
  118. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  119. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  120. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  121. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +19 -0
  122. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  123. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +203 -0
  124. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  125. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  126. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  127. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +36 -0
  128. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  129. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +252 -0
  130. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  131. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  132. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  133. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +38 -0
  134. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  135. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +276 -0
  136. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  137. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  138. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  139. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +19 -0
  140. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  141. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +167 -0
  142. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  143. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  144. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  145. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +38 -0
  146. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  147. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +571 -0
  148. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  149. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  150. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  151. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +35 -0
  152. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  153. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +246 -0
  154. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  155. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  156. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  157. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +24 -0
  158. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  159. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +107 -0
  160. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  161. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  162. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  163. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +16 -0
  164. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  165. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +101 -0
  166. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  167. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  168. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  169. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  170. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  171. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +7 -3
  172. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  173. package/dist/esm/components/src/components/Molecules/Result/Result.js +51 -4
  174. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +3 -0
  175. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  176. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +28 -2
  177. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  178. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +25 -29
  179. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  180. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +4 -0
  181. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +41 -0
  182. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  183. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +615 -0
  184. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +76 -0
  185. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +1 -0
  186. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +100 -0
  187. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +26 -0
  188. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +1 -0
  189. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +98 -0
  190. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +13 -0
  191. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +1 -0
  192. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +155 -0
  193. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +19 -0
  194. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +1 -0
  195. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +160 -0
  196. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +18 -0
  197. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +1 -0
  198. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +363 -0
  199. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +11 -0
  200. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +1 -0
  201. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +124 -0
  202. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +30 -0
  203. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +1 -0
  204. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +212 -0
  205. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +13 -0
  206. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +1 -0
  207. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +117 -0
  208. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +19 -0
  209. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +1 -0
  210. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +167 -0
  211. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +14 -0
  212. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +1 -0
  213. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +143 -0
  214. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +15 -0
  215. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +1 -0
  216. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +56 -0
  217. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  218. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  219. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +62 -0
  220. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  221. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  222. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  223. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +43 -0
  224. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  225. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +109 -0
  226. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +26 -0
  227. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +1 -0
  228. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +131 -0
  229. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +3 -0
  230. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  231. package/dist/esm/components/src/components/Organisms/Chat/index.js +2 -0
  232. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +18 -0
  233. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +1 -0
  234. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +88 -0
  235. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +7 -0
  236. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +1 -0
  237. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +8 -0
  238. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +3 -0
  239. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +1 -0
  240. package/dist/esm/components/src/components/Organisms/ChatButton/index.js +2 -0
  241. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  242. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  243. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  244. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  245. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  246. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  247. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  248. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  249. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  250. package/dist/esm/components/src/components/Templates/Chat/Chat.js +41 -0
  251. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  252. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  253. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  254. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +13 -0
  255. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +1 -0
  256. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +41 -0
  257. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +2 -0
  258. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +1 -0
  259. package/dist/esm/components/src/components/Templates/ChatButton/index.js +1 -0
  260. package/dist/esm/components/src/index.d.ts +14 -0
  261. package/dist/esm/components/src/index.d.ts.map +1 -1
  262. package/dist/esm/components/src/index.js +14 -0
  263. package/dist/esm/components/src/providers/langComponents.d.ts +20 -0
  264. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  265. package/dist/esm/components/src/providers/themeComponents.d.ts +203 -1
  266. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  267. package/dist/esm/components/src/providers/themeComponents.js +20 -0
  268. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  269. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  270. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  271. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  272. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  273. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +4 -0
  274. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +1 -0
  275. package/dist/esm/components/src/themes/base/components/templates/chatButton.js +3 -0
  276. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  277. package/dist/esm/components/src/themes/base/components/templates/index.js +10 -0
  278. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  279. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  280. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  281. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +4 -0
  282. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +1 -0
  283. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +3 -0
  284. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  285. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +10 -0
  286. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  287. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  288. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  289. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +4 -0
  290. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +1 -0
  291. package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +3 -0
  292. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  293. package/dist/esm/components/src/themes/pike/components/templates/index.js +10 -0
  294. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  295. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  296. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  297. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +4 -0
  298. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +1 -0
  299. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +3 -0
  300. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  301. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +10 -0
  302. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  303. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  304. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  305. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +4 -0
  306. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +1 -0
  307. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +3 -0
  308. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  309. package/dist/esm/components/src/themes/snappy/components/templates/index.js +10 -0
  310. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  311. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  312. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  313. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +4 -0
  314. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +1 -0
  315. package/dist/esm/components/src/themes/themeComponents/chatButton.js +6 -0
  316. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +15 -0
  317. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  318. package/dist/esm/components/src/utilities/Colour/Colour.js +41 -0
  319. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  320. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  321. package/dist/esm/components/src/utilities/snapify.js +29 -2
  322. package/dist/esm/src/Snap.d.ts +2 -1
  323. package/dist/esm/src/Snap.d.ts.map +1 -1
  324. package/dist/esm/src/Snap.js +71 -1
  325. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  326. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  327. package/dist/esm/src/Templates/SnapTemplates.js +54 -5
  328. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +43 -0
  329. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  330. package/dist/esm/src/Templates/Stores/LibraryStore.js +51 -1
  331. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +19 -5
  332. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  333. package/dist/esm/src/Templates/Stores/TemplateStore.js +3 -3
  334. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  335. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  336. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  337. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +2 -0
  338. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +1 -0
  339. package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +1 -0
  340. package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts.map +1 -1
  341. package/dist/esm/src/Templates/Stores/library/languages/ar.js +474 -0
  342. package/dist/esm/src/Templates/Stores/library/languages/de.d.ts.map +1 -1
  343. package/dist/esm/src/Templates/Stores/library/languages/de.js +474 -0
  344. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  345. package/dist/esm/src/Templates/Stores/library/languages/es.js +479 -0
  346. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  347. package/dist/esm/src/Templates/Stores/library/languages/fr.js +479 -0
  348. package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts.map +1 -1
  349. package/dist/esm/src/Templates/Stores/library/languages/hi.js +474 -0
  350. package/dist/esm/src/Templates/Stores/library/languages/it.d.ts.map +1 -1
  351. package/dist/esm/src/Templates/Stores/library/languages/it.js +474 -0
  352. package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts.map +1 -1
  353. package/dist/esm/src/Templates/Stores/library/languages/ja.js +474 -0
  354. package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts.map +1 -1
  355. package/dist/esm/src/Templates/Stores/library/languages/ko.js +474 -0
  356. package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts.map +1 -1
  357. package/dist/esm/src/Templates/Stores/library/languages/nl.js +474 -0
  358. package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts.map +1 -1
  359. package/dist/esm/src/Templates/Stores/library/languages/pt.js +474 -0
  360. package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts.map +1 -1
  361. package/dist/esm/src/Templates/Stores/library/languages/ru.js +474 -0
  362. package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts.map +1 -1
  363. package/dist/esm/src/Templates/Stores/library/languages/tr.js +474 -0
  364. package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts.map +1 -1
  365. package/dist/esm/src/Templates/Stores/library/languages/vi.js +474 -0
  366. package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts.map +1 -1
  367. package/dist/esm/src/Templates/Stores/library/languages/zh.js +474 -0
  368. package/dist/esm/src/create/createChatController.d.ts +5 -0
  369. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  370. package/dist/esm/src/create/createChatController.js +28 -0
  371. package/dist/esm/src/create/index.d.ts +1 -0
  372. package/dist/esm/src/create/index.d.ts.map +1 -1
  373. package/dist/esm/src/create/index.js +1 -0
  374. package/dist/esm/src/setupEvents.d.ts +13 -0
  375. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  376. package/dist/esm/src/setupEvents.js +44 -0
  377. package/dist/esm/src/types.d.ts +13 -3
  378. package/dist/esm/src/types.d.ts.map +1 -1
  379. package/dist/esm/src/utils/applyChatTargetInject.d.ts +3 -0
  380. package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +1 -0
  381. package/dist/esm/src/utils/applyChatTargetInject.js +22 -0
  382. package/dist/esm/src/utils/index.d.ts +1 -0
  383. package/dist/esm/src/utils/index.d.ts.map +1 -1
  384. package/dist/esm/src/utils/index.js +1 -0
  385. package/package.json +14 -12
@@ -0,0 +1,621 @@
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.ChatOrganism = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const hooks_1 = require("preact/hooks");
9
+ const react_1 = require("@emotion/react");
10
+ const classnames_1 = __importDefault(require("classnames"));
11
+ const deepmerge_1 = __importDefault(require("deepmerge"));
12
+ const mobx_react_lite_1 = require("mobx-react-lite");
13
+ const providers_1 = require("../../../providers");
14
+ const utilities_1 = require("../../../utilities");
15
+ const hooks_2 = require("../../../hooks");
16
+ const useA11y_1 = require("../../../hooks/useA11y");
17
+ const Button_1 = require("../../Atoms/Button");
18
+ const Icon_1 = require("../../Atoms/Icon");
19
+ const Image_1 = require("../../Atoms/Image");
20
+ const Overlay_1 = require("../../Atoms/Overlay");
21
+ const ChatLoadingIndicator_1 = require("../../Atoms/ChatLoadingIndicator");
22
+ const useChatOverflow_1 = require("./hooks/useChatOverflow");
23
+ const useChatFileUpload_1 = require("./hooks/useChatFileUpload");
24
+ const useChatScrollLock_1 = require("./hooks/useChatScrollLock");
25
+ const chatAccentTheme_1 = require("./components/chatAccentTheme");
26
+ const Chat_lang_1 = require("./Chat.lang");
27
+ const ChatHistory_1 = require("./components/ChatHistory");
28
+ const ChatSideChat_1 = require("./components/ChatSideChat");
29
+ const ChatMessages_1 = require("./components/ChatMessages");
30
+ const ChatSessionFeedback_1 = require("./components/ChatSessionFeedback");
31
+ const ChatComparisonsTray_1 = require("./components/ChatComparisonsTray");
32
+ const ChatFacetsBar_1 = require("./components/ChatFacetsBar");
33
+ const ChatAttachments_1 = require("./components/ChatAttachments");
34
+ const ChatTopicDrift_1 = require("./components/ChatTopicDrift");
35
+ const ChatComposer_1 = require("./components/ChatComposer");
36
+ const isValidImageUrl = (value) => {
37
+ try {
38
+ const { protocol } = new URL(value);
39
+ return protocol === 'http:' || protocol === 'https:' || protocol === 'data:';
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ };
45
+ // maps the store requestType to the lang key providing the loading indicator verbs
46
+ const LOADING_VERB_LANG_KEYS = {
47
+ productQuery: 'loadingVerbsProductQuery',
48
+ productSearch: 'loadingVerbsProductSearch',
49
+ productComparison: 'loadingVerbsProductComparison',
50
+ imageSearch: 'loadingVerbsImageSearch',
51
+ productSimilar: 'loadingVerbsProductSimilar',
52
+ inspirationRequest: 'loadingVerbsInspirationRequest',
53
+ };
54
+ const defaultStyles = ({ mobile, offset, hasSideChat, position, primaryColorBg, primaryColorFg, }) => {
55
+ const isRight = position !== 'left';
56
+ // horizontal anchor for the root + bubble + suggested questions
57
+ const horizontalAnchor = isRight ? 'right' : 'left';
58
+ const colorPrimary = primaryColorBg;
59
+ const colorPrimaryText = primaryColorFg;
60
+ const colorPrimaryHover = new utilities_1.Colour(colorPrimary).mixBlack();
61
+ const offsetValue = offset !== undefined ? (typeof offset === 'number' ? `${offset}px` : offset) : undefined;
62
+ return (0, react_1.css)({
63
+ position: 'fixed',
64
+ [horizontalAnchor]: '20px',
65
+ bottom: '20px',
66
+ zIndex: 1002,
67
+ color: '#333',
68
+ '.ss__chat__primary': {
69
+ ...(mobile
70
+ ? { width: '100%', height: '100%', position: 'relative', zIndex: 0 }
71
+ : hasSideChat
72
+ ? { flex: '1 1 0', minWidth: 0, maxWidth: 600, height: '70vh' }
73
+ : { width: 600, maxWidth: 'calc(100vw - 60px)', height: '70vh' }),
74
+ display: 'flex',
75
+ flexDirection: 'column',
76
+ justifyContent: 'flex-end',
77
+ overflow: 'hidden',
78
+ order: isRight ? 2 : 1,
79
+ '.ss__chat__header__title': {
80
+ gap: '22px',
81
+ },
82
+ '.ss__chat__messages': {
83
+ padding: '1em',
84
+ },
85
+ },
86
+ '.ss__chat__secondary': {
87
+ ...(mobile ? {} : { flex: '1 1 0', minWidth: 0, maxWidth: 600 }),
88
+ order: isRight ? 1 : 2,
89
+ },
90
+ '.ss__button': {
91
+ border: 'none',
92
+ background: 'none',
93
+ color: 'inherit',
94
+ '&:not(.ss__button--disabled):hover': {
95
+ background: new utilities_1.Colour(colorPrimary).mixWhite(0.85),
96
+ },
97
+ svg: {
98
+ fill: colorPrimary,
99
+ stroke: colorPrimary,
100
+ },
101
+ },
102
+ '.ss__chat__bubble': {
103
+ position: mobile ? 'fixed' : 'absolute',
104
+ bottom: mobile ? '20px' : 0,
105
+ [horizontalAnchor]: mobile ? '20px' : 0,
106
+ width: '60px',
107
+ height: '60px',
108
+ borderRadius: '50%',
109
+ background: colorPrimary,
110
+ color: colorPrimaryText,
111
+ display: 'flex',
112
+ alignItems: 'center',
113
+ justifyContent: 'center',
114
+ cursor: 'pointer',
115
+ fontSize: '24px',
116
+ boxShadow: '0 4px 8px rgba(0, 0, 0, 0.2)',
117
+ zIndex: 10,
118
+ border: 'none',
119
+ padding: 0,
120
+ font: 'inherit',
121
+ '&:hover': {
122
+ background: colorPrimaryHover,
123
+ transform: 'scale(1.05)',
124
+ },
125
+ '&:focus-visible': {
126
+ outline: `2px solid ${colorPrimary}`,
127
+ outlineOffset: '4px',
128
+ },
129
+ '.ss__icon': {
130
+ height: '33px',
131
+ width: '33px',
132
+ fill: colorPrimaryText,
133
+ stroke: colorPrimaryText,
134
+ },
135
+ },
136
+ '.ss__chat__suggested-questions': {
137
+ position: mobile ? 'fixed' : 'absolute',
138
+ bottom: mobile ? '90px' : '70px',
139
+ [horizontalAnchor]: mobile ? '20px' : 0,
140
+ display: 'flex',
141
+ flexDirection: 'column',
142
+ gap: '8px',
143
+ width: '250px',
144
+ zIndex: 10,
145
+ '.ss__chat__suggested-questions__item': {
146
+ background: '#fff',
147
+ borderRadius: '12px',
148
+ padding: '12px 16px',
149
+ fontSize: '14px',
150
+ color: '#333',
151
+ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.2)',
152
+ cursor: 'pointer',
153
+ lineHeight: 1.4,
154
+ '&:hover': {
155
+ boxShadow: '0 4px 12px rgba(0, 0, 0, 0.2)',
156
+ },
157
+ },
158
+ },
159
+ '&.ss__chat--minimized': {
160
+ width: '60px',
161
+ height: '60px',
162
+ minHeight: '60px',
163
+ },
164
+ '&.ss__chat--open': {
165
+ display: 'flex',
166
+ flexDirection: mobile ? 'column' : 'row',
167
+ gap: mobile ? 0 : '12px',
168
+ ...(mobile
169
+ ? {
170
+ top: offsetValue || 0,
171
+ left: 0,
172
+ right: 0,
173
+ bottom: 0,
174
+ width: '100%',
175
+ height: offsetValue ? `calc(100% - ${offsetValue})` : '100%',
176
+ }
177
+ : {
178
+ // Hug the content width — two 600px panels + 12px gap — so the
179
+ // container stays anchored to its side instead of stretching to
180
+ // the opposite viewport edge when the side chat opens.
181
+ width: hasSideChat ? 'min(calc(100vw - 60px), 1212px)' : 'auto',
182
+ maxWidth: 'calc(100vw - 60px)',
183
+ maxHeight: 'calc(100vh - 40px)',
184
+ }),
185
+ '.ss__chat__bubble': {
186
+ display: 'none',
187
+ },
188
+ // At constrained viewport heights (e.g. browser zoom-in) the fixed 70vh panels
189
+ // leave too little room for the messages view once sticky header/footer content
190
+ // is accounted for. Stretch the chat to fill the window minus the offset.
191
+ ...(mobile
192
+ ? {}
193
+ : {
194
+ '@media (max-height: 800px)': {
195
+ top: offsetValue || 0,
196
+ bottom: 0,
197
+ height: offsetValue ? `calc(100vh - ${offsetValue})` : '100vh',
198
+ maxHeight: offsetValue ? `calc(100vh - ${offsetValue})` : '100vh',
199
+ '.ss__chat__primary': {
200
+ height: '100%',
201
+ },
202
+ '.ss__chat__secondary': {
203
+ height: '100%',
204
+ maxHeight: '100%',
205
+ },
206
+ // The default 90vh cap on chat content would leave unfilled space when
207
+ // the chat stretches to 100vh; primary's justifyContent: flex-end then
208
+ // pushes its content down while secondary stays anchored to the top,
209
+ // making the panels appear misaligned.
210
+ '.ss__chat__content': {
211
+ maxHeight: '100%',
212
+ },
213
+ },
214
+ }),
215
+ },
216
+ // Welcome state: only the greeting + suggested questions are shown, so let the
217
+ // chat hug its content instead of taking the full 70vh / 100vh used once a
218
+ // conversation has started. Mobile stays fullscreen by design.
219
+ ...(mobile
220
+ ? {}
221
+ : {
222
+ '&.ss__chat--welcome.ss__chat--open': {
223
+ '.ss__chat__primary': {
224
+ height: 'auto',
225
+ },
226
+ // With an auto-sized panel, the messages container's overflow/maxHeight
227
+ // constraints (and the welcome's minHeight: 100%) resolve against an
228
+ // undefined parent height and produce a stray scrollbar / clipped layout.
229
+ // Let everything flow at its natural size.
230
+ '.ss__chat__messages': {
231
+ overflow: 'visible',
232
+ maxHeight: 'none',
233
+ },
234
+ '.ss__chat__welcome': {
235
+ minHeight: 0,
236
+ },
237
+ '@media (max-height: 800px)': {
238
+ top: 'auto',
239
+ bottom: '20px',
240
+ height: 'auto',
241
+ maxHeight: 'calc(100vh - 40px)',
242
+ '.ss__chat__primary': {
243
+ height: 'auto',
244
+ },
245
+ },
246
+ },
247
+ }),
248
+ '.ss__chat__header': {
249
+ display: 'flex',
250
+ justifyContent: 'space-between',
251
+ alignItems: 'center',
252
+ fontSize: '16px',
253
+ position: 'relative',
254
+ padding: '10px 15px',
255
+ color: colorPrimaryText,
256
+ background: colorPrimary,
257
+ borderTopLeftRadius: mobile ? 0 : '12px',
258
+ borderTopRightRadius: mobile ? 0 : '12px',
259
+ '.ss__chat__header__title': {
260
+ display: 'flex',
261
+ '.ss__chat__header__title__logo': {
262
+ height: '44px',
263
+ width: 'auto',
264
+ },
265
+ '.ss__chat__header__title__text': {
266
+ display: 'flex',
267
+ flexDirection: 'column',
268
+ '.ss__chat__header__title__text__primary': {
269
+ fontWeight: 'bold',
270
+ },
271
+ '.ss__chat__header__title__text__secondary': {
272
+ fontSize: '80%',
273
+ },
274
+ },
275
+ },
276
+ '.ss__chat__header__buttons': {
277
+ display: 'flex',
278
+ gap: '10px',
279
+ '.ss__button': {
280
+ display: 'flex',
281
+ flexDirection: 'row-reverse',
282
+ padding: '5px',
283
+ border: 0,
284
+ fontSize: '70%',
285
+ '&:hover': {
286
+ backgroundColor: 'transparent',
287
+ },
288
+ svg: {
289
+ fill: colorPrimaryText,
290
+ stroke: colorPrimaryText,
291
+ },
292
+ },
293
+ },
294
+ },
295
+ '.ss__chat__content': {
296
+ background: '#fff',
297
+ maxHeight: mobile ? undefined : '90vh',
298
+ overflow: 'hidden',
299
+ display: 'flex',
300
+ flexDirection: 'column',
301
+ border: `1px solid ${colorPrimary}`,
302
+ borderTop: 'none',
303
+ marginTop: '-1px',
304
+ borderBottomRightRadius: mobile ? 0 : '12px',
305
+ borderBottomLeftRadius: mobile ? 0 : '12px',
306
+ flexGrow: 1,
307
+ position: 'relative',
308
+ '.ss__chat__content__header': {
309
+ // In overlay mode (only applied when messages overflow), the comparisons
310
+ // tray floats over the messages so toggling it doesn't shift the layout
311
+ // or push the latest message out of view. When messages don't overflow,
312
+ // the tray stays in flow so older messages remain reachable above it.
313
+ '&.ss__chat__content__header--overlay': {
314
+ position: 'absolute',
315
+ top: 0,
316
+ left: 0,
317
+ right: 0,
318
+ zIndex: 20,
319
+ },
320
+ },
321
+ '.ss__chat__messages': {
322
+ flex: '1 1 auto',
323
+ overflowY: 'auto',
324
+ overscrollBehavior: 'contain',
325
+ margin: 0,
326
+ maxHeight: '100%',
327
+ background: new utilities_1.Colour(colorPrimary).mixWhite(0.95),
328
+ },
329
+ '.ss__chat__content__footer': {
330
+ padding: '1em',
331
+ display: 'flex',
332
+ flexDirection: 'column',
333
+ gap: '8px',
334
+ flexShrink: 0,
335
+ position: 'relative',
336
+ ...(mobile
337
+ ? {
338
+ zIndex: 11,
339
+ background: '#fff',
340
+ }
341
+ : {}),
342
+ '.ss__chat__content__footer__drop-overlay': {
343
+ position: 'absolute',
344
+ inset: 0,
345
+ display: 'flex',
346
+ alignItems: 'center',
347
+ justifyContent: 'center',
348
+ gap: '8px',
349
+ borderRadius: '6px',
350
+ border: `2px dashed ${colorPrimary}`,
351
+ backgroundColor: new utilities_1.Colour(colorPrimary).mixWhite(0.9),
352
+ color: colorPrimary,
353
+ fontWeight: 'bold',
354
+ pointerEvents: 'none',
355
+ zIndex: 12,
356
+ svg: {
357
+ fill: colorPrimary,
358
+ stroke: colorPrimary,
359
+ },
360
+ },
361
+ },
362
+ '.ss__chat__expired': {
363
+ display: 'flex',
364
+ flexDirection: 'column',
365
+ alignItems: 'center',
366
+ justifyContent: 'center',
367
+ gap: '12px',
368
+ padding: '16px',
369
+ textAlign: 'center',
370
+ color: '#6A7282',
371
+ '.ss__chat__expired__message': {
372
+ fontSize: '14px',
373
+ },
374
+ '.ss__chat__expired__button': {
375
+ alignSelf: 'center',
376
+ },
377
+ },
378
+ },
379
+ });
380
+ };
381
+ exports.ChatOrganism = (0, mobx_react_lite_1.observer)((properties) => {
382
+ const globalTheme = (0, providers_1.useTheme)();
383
+ const globalTreePath = (0, providers_1.useTreePath)();
384
+ const mobileBreakpoint = globalTheme?.variables?.breakpoints?.tablet ?? 767;
385
+ const isMobile = (0, hooks_2.useMediaQuery)(`(max-width: ${mobileBreakpoint}px)`);
386
+ const defaultProps = {
387
+ treePath: globalTreePath,
388
+ logo: 'https://cdn.athoscommerce.net/snap/images/Athos%20Commerce_Icon_white.svg',
389
+ title: 'Athos Conversational Assistant',
390
+ subtitle: 'Your Guided Discovery Expert',
391
+ multiselectFacets: false,
392
+ disableBubbleSuggestedQuestions: isMobile ? true : false,
393
+ primaryColorBg: utilities_1.Colour.concrete(globalTheme?.variables?.colors?.primary) || '#253B80',
394
+ primaryColorFg: '#fff',
395
+ primaryAccentColorBg: utilities_1.Colour.concrete(globalTheme?.variables?.colors?.accent) || '#feeeae',
396
+ primaryAccentColorFg: '#000000',
397
+ secondaryAccentColorBg: utilities_1.Colour.concrete(globalTheme?.variables?.colors?.secondary) || '#000000',
398
+ secondaryAccentColorFg: '#ffffff',
399
+ position: 'right',
400
+ hideMessageTypeIndicatorText: false,
401
+ buttonBelowMessage: false,
402
+ poweredByText: 'Powered by Athos Commerce.',
403
+ };
404
+ let props = (0, utilities_1.mergeProps)('chat', globalTheme, defaultProps, properties);
405
+ const { overrideElement, shouldRenderDefault } = (0, hooks_2.useCustomComponentOverride)('chat', props);
406
+ const { className, internalClassName, controller, logo, title, subtitle, avatar, multiselectFacets, disableBubbleSuggestedQuestions, primaryColorBg, primaryColorFg, primaryAccentColorBg, primaryAccentColorFg, secondaryAccentColorBg, secondaryAccentColorFg, position, hideMessageTypeIndicatorText, buttonBelowMessage, poweredByText, privacyPolicyUrl, disableStyles, treePath, } = props;
407
+ const colorPrimary = primaryColorBg;
408
+ const colorPrimaryText = primaryColorFg;
409
+ const colorPrimaryAccent = primaryAccentColorBg;
410
+ const colorPrimaryAccentText = primaryAccentColorFg;
411
+ const colorSecondaryAccent = secondaryAccentColorBg;
412
+ const colorSecondaryAccentText = secondaryAccentColorFg;
413
+ const chatPosition = position === 'left' ? 'left' : 'right';
414
+ // A single-character avatar renders as a capitalized letter; a longer value renders
415
+ // as an image when it's a valid image URL. Anything else renders no avatar.
416
+ const avatarCharacter = avatar && avatar.length === 1 ? avatar.toUpperCase() : undefined;
417
+ const avatarImage = avatar && avatar.length > 1 && isValidImageUrl(avatar) ? avatar : undefined;
418
+ const { store } = controller;
419
+ // The built-in bubble (and its suggested-question chips) yields to an external
420
+ // launcher by default. An explicit hideBubble wins either way: `true` always
421
+ // suppresses it, `false` keeps it alongside an inline ChatButton.
422
+ const hideLauncher = props.hideBubble ?? store.hasExternalLauncher;
423
+ // Track that the widget has been visible so a mid-session disable (status check
424
+ // flips chatEnabled to false) keeps it mounted with the unavailable message
425
+ // instead of vanishing. A disabled status at bootstrap still renders nothing.
426
+ const wasVisibleRef = (0, hooks_1.useRef)(false);
427
+ // Accent styling for buttons living inside child components — injected through the
428
+ // theme so each child applies it via its own style pipeline (no `!important` overrides).
429
+ const themeDefaults = {
430
+ components: (0, chatAccentTheme_1.chatAccentThemeComponents)({
431
+ primaryAccentColorBg: colorPrimaryAccent,
432
+ primaryAccentColorFg: colorPrimaryAccentText,
433
+ secondaryAccentColorBg: colorSecondaryAccent,
434
+ secondaryAccentColorFg: colorSecondaryAccentText,
435
+ }),
436
+ };
437
+ // merge deeply the themeDefaults with the theme props and the displaySettings theme props (do not merge arrays, but replace them)
438
+ const theme = (0, deepmerge_1.default)(themeDefaults, props?.theme || {}, { arrayMerge: (destinationArray, sourceArray) => sourceArray });
439
+ props = {
440
+ ...props,
441
+ theme,
442
+ };
443
+ const lang = (0, deepmerge_1.default)(Chat_lang_1.chatDefaultLang, props.lang || {});
444
+ const mergedLang = (0, hooks_2.useLang)({
445
+ chatUnavailableMessage: lang.chatUnavailableMessage,
446
+ newSessionButton: lang.newSessionButton,
447
+ expiredMessage: lang.expiredMessage,
448
+ dropOverlayText: lang.dropOverlayText,
449
+ }, { controller }, { activeBreakpoint: globalTheme?.activeBreakpoint });
450
+ const messagesEndRef = (0, hooks_1.useRef)(null);
451
+ const messagesContainerRef = (0, hooks_1.useRef)(null);
452
+ const headerRef = (0, hooks_1.useRef)(null);
453
+ const footerRef = (0, hooks_1.useRef)(null);
454
+ const chatRef = (0, hooks_1.useRef)(null);
455
+ const [mobileProductInfoOpen, setMobileProductInfoOpen] = (0, hooks_1.useState)(false);
456
+ const [footerHeight, setFooterHeight] = (0, hooks_1.useState)(0);
457
+ const dropEnabled = store.features.imageSearch.enabled && !store.loading && !store.blocked && !store.currentChat?.sessionLimitReached;
458
+ const { fileInputRef, isDraggingFile, dragHandlers } = (0, useChatFileUpload_1.useChatFileUpload)({
459
+ enabled: !!dropEnabled,
460
+ onUpload: (files) => controller.upload(files),
461
+ });
462
+ // productQuery messages are filtered out of the main chat render (they only drive the side-chat panel),
463
+ // so don't auto-scroll when one is added — otherwise clicking a product in the side chat scrolls the main thread.
464
+ const visibleChat = (store.currentChat?.chat || []).filter((m) => m.messageType !== 'productQuery');
465
+ const visibleChatLength = visibleChat.length;
466
+ const lastVisibleMessage = visibleChat[visibleChat.length - 1];
467
+ const { showNewMessages, setShowNewMessages, messagesOverflow, scrollToBottom, scrollToBottomIfNear } = (0, useChatOverflow_1.useChatOverflow)({
468
+ messagesContainerRef,
469
+ headerRef,
470
+ open: store.open,
471
+ loading: store.loading,
472
+ visibleChatLength,
473
+ lastVisibleMessage,
474
+ });
475
+ // Re-focus the chat input on desktop after a search completes.
476
+ // The input is disabled while loading, which causes the browser to drop focus.
477
+ // On mobile we intentionally skip this so the virtual keyboard dismisses.
478
+ // Only fire on the loading true → false transition — running on mount steals
479
+ // focus away from the Storybook controls whenever the story re-renders.
480
+ const prevLoadingRef = (0, hooks_1.useRef)(store.loading);
481
+ (0, hooks_1.useEffect)(() => {
482
+ if (prevLoadingRef.current && !store.loading && !isMobile && store.open) {
483
+ controller.focusInput();
484
+ }
485
+ prevLoadingRef.current = store.loading;
486
+ }, [store.loading]);
487
+ const activeMessage = store.currentChat?.activeMessage;
488
+ // On mobile, only auto-open the secondary panel for the first productComparison
489
+ // message in the chat session. Subsequent comparison results show a "Show Details"
490
+ // button instead (handled in MessageText via sideChatLabel toggle).
491
+ const isFirstMobileComparison = (() => {
492
+ if (!isMobile || activeMessage?.messageType !== 'productComparison')
493
+ return true;
494
+ // If the user explicitly activated a comparison (via "Show Details" or the
495
+ // view-side-chat button), always allow it regardless of position in the chat
496
+ if (store.currentChat?.activeMessageId)
497
+ return true;
498
+ const comparisonMessages = (store.currentChat?.chat || []).filter((m) => m.messageType === 'productComparison');
499
+ return comparisonMessages.length <= 1;
500
+ })();
501
+ const sideChatTypes = isMobile
502
+ ? ['inspirationResult', ...(isFirstMobileComparison ? ['productComparison'] : []), ...(mobileProductInfoOpen ? ['productQuery'] : [])]
503
+ : ['inspirationResult', 'productComparison', 'productQuery'];
504
+ const shouldShowSideChat = activeMessage && sideChatTypes.includes(activeMessage?.messageType) && store.currentChat?.dismissedSideChatMessageId !== activeMessage.id;
505
+ const hasSideChat = !!shouldShowSideChat;
506
+ // Lock body scrolling (wheel + touch) to the chat while it is open. Mobile only —
507
+ // on desktop the chat is a side panel and the page behind it stays scrollable.
508
+ (0, useChatScrollLock_1.useChatScrollLock)({ open: store.open && isMobile, chatRef });
509
+ // Close chat on Escape key (or dismiss side chat first when it's open)
510
+ (0, hooks_1.useEffect)(() => {
511
+ if (!store.open)
512
+ return;
513
+ const onKeyDown = (e) => {
514
+ if (e.key !== 'Escape')
515
+ return;
516
+ if (store.currentChat?.activeMessage && shouldShowSideChat) {
517
+ store.currentChat?.dismissSideChat();
518
+ }
519
+ else {
520
+ controller.handlers.button.click();
521
+ }
522
+ };
523
+ document.addEventListener('keydown', onKeyDown);
524
+ return () => document.removeEventListener('keydown', onKeyDown);
525
+ }, [store.open, shouldShowSideChat]);
526
+ // Track the primary footer height so the mobile secondary panel can sit above it
527
+ (0, hooks_1.useEffect)(() => {
528
+ const el = footerRef.current;
529
+ if (!el)
530
+ return;
531
+ const observer = new ResizeObserver((entries) => {
532
+ for (const entry of entries) {
533
+ setFooterHeight(entry.borderBoxSize?.[0]?.blockSize ?? entry.target.getBoundingClientRect().height);
534
+ }
535
+ });
536
+ observer.observe(el);
537
+ return () => observer.disconnect();
538
+ }, [store.open, store.currentChat?.isExpired]);
539
+ if (controller.store.chatEnabled) {
540
+ wasVisibleRef.current = true;
541
+ }
542
+ // Dismiss the secondary panel and clear any product attachments tied to the side-chat
543
+ // (discuss product flow), while preserving productSimilar/productComparison attachments.
544
+ const dismissSideChat = () => {
545
+ const productAttachmentsToRemove = (store.currentChat?.attachments.attached || []).filter((item) => item.type === 'product' &&
546
+ item.requestType !== 'productSimilar' &&
547
+ item.requestType !== 'productComparison');
548
+ productAttachmentsToRemove.forEach((item) => store.currentChat?.attachments.remove(item.id));
549
+ setMobileProductInfoOpen(false);
550
+ store.currentChat?.dismissSideChat();
551
+ };
552
+ const requestType = store.currentChat?.requestType;
553
+ const loadingVerbLangKey = requestType ? LOADING_VERB_LANG_KEYS[requestType] : undefined;
554
+ const loadingVerbs = loadingVerbLangKey
555
+ ? (0, Chat_lang_1.langTextOf)(lang[loadingVerbLangKey])
556
+ ?.split(',')
557
+ .map((verb) => verb.trim())
558
+ .filter(Boolean)
559
+ : undefined;
560
+ const isWelcomeState = (!store.currentChat?.chat || store.currentChat.chat.length === 0) && !!store.welcomeMessage && !store.currentChat?.isExpired;
561
+ // props inherited by every extracted chat sub-component
562
+ const inheritedProps = {
563
+ disableStyles,
564
+ theme: props.theme,
565
+ treePath,
566
+ lang: props.lang,
567
+ };
568
+ const primaryColors = {
569
+ primaryColorBg: colorPrimary,
570
+ primaryColorFg: colorPrimaryText,
571
+ };
572
+ const subProps = {
573
+ history: { ...inheritedProps },
574
+ sideChat: { ...inheritedProps, ...primaryColors },
575
+ messages: {
576
+ ...inheritedProps,
577
+ ...primaryColors,
578
+ primaryAccentColorBg: colorPrimaryAccent,
579
+ primaryAccentColorFg: colorPrimaryAccentText,
580
+ hideMessageTypeIndicatorText,
581
+ buttonBelowMessage,
582
+ },
583
+ sessionFeedback: { ...inheritedProps, ...primaryColors },
584
+ comparisonsTray: { ...inheritedProps, ...primaryColors },
585
+ facetsBar: { ...inheritedProps, ...primaryColors },
586
+ attachments: { ...inheritedProps },
587
+ topicDrift: { ...inheritedProps, ...primaryColors },
588
+ composer: { ...inheritedProps, ...primaryColors, poweredByText, privacyPolicyUrl },
589
+ loadingIndicator: { disableStyles, theme: props.theme, treePath },
590
+ };
591
+ const styling = (0, utilities_1.mergeStyles)({ ...props, mobile: isMobile, hasSideChat, footerHeight, position: chatPosition }, defaultStyles);
592
+ // Hide the widget entirely when chat is disabled at bootstrap (silent disable).
593
+ // When chat becomes disabled mid-session, keep the widget mounted so the footer
594
+ // unavailable message stays visible (with the input disabled).
595
+ if (!controller.store.chatEnabled && !wasVisibleRef.current) {
596
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
597
+ }
598
+ if (!shouldRenderDefault) {
599
+ return overrideElement;
600
+ }
601
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { ref: chatRef, className: (0, classnames_1.default)('ss__chat', {
602
+ 'ss__chat--open': store.open,
603
+ 'ss__chat--minimized': !store.open,
604
+ 'ss__chat--mobile': isMobile,
605
+ 'ss__chat--welcome': isWelcomeState,
606
+ }, className, internalClassName), ...styling, children: [!hideLauncher && !disableBubbleSuggestedQuestions && !store.open && !store.currentChat && store.suggestedQuestions?.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__suggested-questions", children: store.suggestedQuestions.map((question) => ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__suggested-questions__item", role: "button", ref: (e) => (0, useA11y_1.useA11y)(e), onClick: () => {
607
+ controller.openChat(question);
608
+ }, children: question }, question))) })), !hideLauncher && ((0, jsx_runtime_1.jsx)("button", { type: "button", className: 'ss__chat__bubble', "aria-label": store.open ? (0, Chat_lang_1.langAttrOf)(lang.closeChatButton, 'aria-label') : (0, Chat_lang_1.langAttrOf)(lang.openChatButton, 'aria-label'), "aria-expanded": store.open, onClick: () => controller.handlers.button.click(), children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { icon: "chat", title: (0, Chat_lang_1.langAttrOf)(lang.openChatButton, 'title') }) })), store.open && shouldShowSideChat && activeMessage ? ((0, jsx_runtime_1.jsx)(ChatSideChat_1.ChatSideChat, { ...subProps.sideChat, controller: controller, activeMessage: activeMessage, mobile: isMobile, footerHeight: footerHeight, onDismiss: dismissSideChat, onProductQuickView: isMobile ? () => setMobileProductInfoOpen(true) : undefined })) : null, store.open ? ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__primary',
609
+ // On mobile, interacting with the primary chat (header or anywhere within)
610
+ // dismisses the secondary panel. Capture phase so it fires even when an
611
+ // inner control stops propagation.
612
+ onClickCapture: isMobile && shouldShowSideChat ? () => dismissSideChat() : undefined, children: [(0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__header', children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__title", children: [logo ? (0, jsx_runtime_1.jsx)(Image_1.Image, { className: "ss__chat__header__title__logo", src: logo, alt: title || 'Chat logo' }) : null, (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__title__text", children: [title ? (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__text__primary", children: title }) : null, subtitle ? (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__text__secondary", children: subtitle }) : null] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__buttons", children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__header__button--new", "aria-label": (0, Chat_lang_1.langAttrOf)(lang.newChatButton, 'aria-label'), icon: { icon: controller.store.initChatLoading ? 'spinner' : 'plus-rounded', title: (0, Chat_lang_1.langAttrOf)(lang.newChatButton, 'title') }, onClick: () => controller.store.createChat() }), store.chats.length > 1 && (0, jsx_runtime_1.jsx)(ChatHistory_1.ChatHistory, { ...subProps.history, controller: controller }), (0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__header__button--close", "aria-label": (0, Chat_lang_1.langAttrOf)(lang.closeChatButton, 'aria-label'), icon: { icon: 'close-rounded', title: (0, Chat_lang_1.langAttrOf)(lang.closeChatButton, 'title') }, onClick: () => controller.handlers.button.click() })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__content", children: [(0, jsx_runtime_1.jsx)(ChatSessionFeedback_1.ChatSessionFeedback, { ...subProps.sessionFeedback, controller: controller }), (0, jsx_runtime_1.jsx)("div", { ref: headerRef, className: (0, classnames_1.default)('ss__chat__content__header', {
613
+ 'ss__chat__content__header--overlay': messagesOverflow,
614
+ }), children: (0, jsx_runtime_1.jsx)(ChatComparisonsTray_1.ChatComparisonsTray, { ...subProps.comparisonsTray, controller: controller }) }), (0, jsx_runtime_1.jsx)(ChatMessages_1.ChatMessages, { ...subProps.messages, controller: controller, messagesContainerRef: messagesContainerRef, messagesEndRef: messagesEndRef, mobile: isMobile, avatarCharacter: avatarCharacter, avatarImage: avatarImage, sideChatOpen: !!shouldShowSideChat, onProductQuickView: () => setMobileProductInfoOpen(true), scrollToBottom: scrollToBottom, scrollToBottomIfNear: scrollToBottomIfNear, showNewMessages: showNewMessages, setShowNewMessages: setShowNewMessages, messagesOverflow: messagesOverflow }), (0, jsx_runtime_1.jsx)(ChatLoadingIndicator_1.ChatLoadingIndicator, { ...subProps.loadingIndicator, loading: store.loading, verbs: loadingVerbs }), !store.currentChat?.isExpired ? ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__content__footer", ref: footerRef, ...dragHandlers, children: [(store.error || store.chatEnabled === false) && ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__error", children: store.error?.message || (0, Chat_lang_1.langTextOf)(lang.chatUnavailableMessage) })), (0, jsx_runtime_1.jsx)(ChatTopicDrift_1.ChatTopicDrift, { ...subProps.topicDrift, controller: controller, variant: "sessionLimit" }), (0, jsx_runtime_1.jsx)(ChatFacetsBar_1.ChatFacetsBar, { ...subProps.facetsBar, controller: controller, chatRef: chatRef, multiselectFacets: multiselectFacets }), (0, jsx_runtime_1.jsx)(ChatAttachments_1.ChatAttachments, { ...subProps.attachments, controller: controller, activeMessage: activeMessage, sideChatOpen: !!shouldShowSideChat, mobile: isMobile, onProductQuickView: () => setMobileProductInfoOpen(true), onProductAttachmentsRemoved: () => setMobileProductInfoOpen(false) }), (0, jsx_runtime_1.jsx)(ChatTopicDrift_1.ChatTopicDrift, { ...subProps.topicDrift, controller: controller, variant: "drift" }), (0, jsx_runtime_1.jsx)(ChatComposer_1.ChatComposer, { ...subProps.composer, controller: controller, fileInputRef: fileInputRef, onUserSend: () => {
615
+ if (isMobile && mobileProductInfoOpen) {
616
+ setMobileProductInfoOpen(false);
617
+ }
618
+ } }), isDraggingFile && ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__content__footer__drop-overlay", children: [(0, jsx_runtime_1.jsx)(Icon_1.Icon, { icon: "image", size: "24px" }), (0, jsx_runtime_1.jsx)("span", { ...mergedLang.dropOverlayText?.all })] }))] })) : ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__expired', children: [(0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__expired__message', ...mergedLang.expiredMessage?.all }), (0, jsx_runtime_1.jsx)(Button_1.Button, { className: 'ss__chat__expired__button', onClick: () => {
619
+ controller.store.createChat();
620
+ }, children: (0, jsx_runtime_1.jsx)("span", { ...mergedLang.newSessionButton?.all }) })] }))] })] })) : null] }), (0, jsx_runtime_1.jsx)(Overlay_1.Overlay, { style: { zIndex: 1001 }, color: "transparent", active: store.open, onClick: () => controller.handlers.button.click() })] }) }));
621
+ });