@athoscommerce/snap-preact 1.13.2 → 1.13.3-beta.168

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 (399) 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 +44 -30
  27. package/dist/cjs/components/src/components/Molecules/TabSelection/TabSelection.js +5 -3
  28. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +8 -1
  29. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +621 -0
  30. package/dist/cjs/components/src/components/Organisms/Chat/Chat.lang.js +105 -0
  31. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatAttachments.js +104 -0
  32. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +161 -0
  33. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComposer.js +166 -0
  34. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +369 -0
  35. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatHistory.js +130 -0
  36. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatMessages.js +218 -0
  37. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +123 -0
  38. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSideChat.js +173 -0
  39. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +149 -0
  40. package/dist/cjs/components/src/components/Organisms/Chat/components/chatAccentTheme.js +60 -0
  41. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +66 -0
  42. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +96 -0
  43. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +113 -0
  44. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +135 -0
  45. package/dist/cjs/components/src/components/Organisms/Chat/index.js +18 -0
  46. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.js +94 -0
  47. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.lang.js +11 -0
  48. package/dist/cjs/components/src/components/Organisms/ChatButton/index.js +18 -0
  49. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  50. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  51. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  52. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  53. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +47 -0
  54. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  55. package/dist/cjs/components/src/components/Templates/ChatButton/ChatButton.js +47 -0
  56. package/dist/cjs/components/src/components/Templates/ChatButton/index.js +17 -0
  57. package/dist/cjs/components/src/components/Templates/Search/Search.js +9 -1
  58. package/dist/cjs/components/src/index.js +17 -1
  59. package/dist/cjs/components/src/providers/themeComponents.js +20 -0
  60. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  61. package/dist/cjs/components/src/themes/base/components/templates/chatButton.js +6 -0
  62. package/dist/cjs/components/src/themes/base/components/templates/index.js +10 -0
  63. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  64. package/dist/cjs/components/src/themes/bocachica/components/templates/chatButton.js +6 -0
  65. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +10 -0
  66. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  67. package/dist/cjs/components/src/themes/pike/components/templates/chatButton.js +6 -0
  68. package/dist/cjs/components/src/themes/pike/components/templates/index.js +10 -0
  69. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  70. package/dist/cjs/components/src/themes/snapnco/components/templates/chatButton.js +6 -0
  71. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +10 -0
  72. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  73. package/dist/cjs/components/src/themes/snappy/components/templates/chatButton.js +6 -0
  74. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +10 -0
  75. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  76. package/dist/cjs/components/src/themes/themeComponents/chatButton.js +9 -0
  77. package/dist/cjs/components/src/utilities/Colour/Colour.js +41 -0
  78. package/dist/cjs/components/src/utilities/snapify.js +27 -0
  79. package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +4 -1
  80. package/dist/cjs/src/Snap.js +70 -0
  81. package/dist/cjs/src/Templates/SnapTemplates.js +55 -5
  82. package/dist/cjs/src/Templates/Stores/LibraryStore.js +51 -1
  83. package/dist/cjs/src/Templates/Stores/TemplateStore.js +3 -3
  84. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  85. package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +5 -0
  86. package/dist/cjs/src/Templates/Stores/library/languages/ar.js +474 -0
  87. package/dist/cjs/src/Templates/Stores/library/languages/de.js +474 -0
  88. package/dist/cjs/src/Templates/Stores/library/languages/es.js +479 -0
  89. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +479 -0
  90. package/dist/cjs/src/Templates/Stores/library/languages/hi.js +474 -0
  91. package/dist/cjs/src/Templates/Stores/library/languages/it.js +474 -0
  92. package/dist/cjs/src/Templates/Stores/library/languages/ja.js +474 -0
  93. package/dist/cjs/src/Templates/Stores/library/languages/ko.js +474 -0
  94. package/dist/cjs/src/Templates/Stores/library/languages/nl.js +474 -0
  95. package/dist/cjs/src/Templates/Stores/library/languages/pt.js +474 -0
  96. package/dist/cjs/src/Templates/Stores/library/languages/ru.js +474 -0
  97. package/dist/cjs/src/Templates/Stores/library/languages/tr.js +474 -0
  98. package/dist/cjs/src/Templates/Stores/library/languages/vi.js +474 -0
  99. package/dist/cjs/src/Templates/Stores/library/languages/zh.js +474 -0
  100. package/dist/cjs/src/create/createChatController.js +30 -0
  101. package/dist/cjs/src/create/index.js +3 -1
  102. package/dist/cjs/src/setupEvents.js +44 -0
  103. package/dist/cjs/src/utils/applyChatTargetInject.js +25 -0
  104. package/dist/cjs/src/utils/index.js +3 -1
  105. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +3 -1
  106. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  107. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +17 -0
  108. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  109. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +92 -0
  110. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  111. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  112. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  113. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -1
  114. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  115. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +57 -12
  116. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +13 -0
  117. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  118. package/dist/esm/components/src/components/Atoms/Icon/paths.js +13 -0
  119. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +30 -0
  120. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  121. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +215 -0
  122. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  123. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  124. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  125. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +19 -0
  126. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  127. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +203 -0
  128. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  129. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  130. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  131. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +36 -0
  132. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  133. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +252 -0
  134. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  135. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  136. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  137. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +38 -0
  138. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  139. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +276 -0
  140. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  141. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  142. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  143. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +19 -0
  144. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  145. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +167 -0
  146. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  147. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  148. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  149. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +38 -0
  150. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  151. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +571 -0
  152. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  153. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  154. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  155. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +35 -0
  156. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  157. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +246 -0
  158. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  159. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  160. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  161. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +24 -0
  162. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  163. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +107 -0
  164. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  165. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  166. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  167. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +16 -0
  168. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  169. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +101 -0
  170. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  171. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  172. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  173. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  174. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  175. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +7 -3
  176. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  177. package/dist/esm/components/src/components/Molecules/Result/Result.js +51 -4
  178. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +3 -0
  179. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  180. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +28 -2
  181. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  182. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +25 -29
  183. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  184. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +44 -30
  185. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts.map +1 -1
  186. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.js +5 -3
  187. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  188. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +8 -1
  189. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +41 -0
  190. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  191. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +615 -0
  192. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +76 -0
  193. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +1 -0
  194. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +100 -0
  195. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +26 -0
  196. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +1 -0
  197. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +98 -0
  198. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +13 -0
  199. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +1 -0
  200. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +155 -0
  201. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +19 -0
  202. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +1 -0
  203. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +160 -0
  204. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +18 -0
  205. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +1 -0
  206. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +363 -0
  207. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +11 -0
  208. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +1 -0
  209. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +124 -0
  210. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +30 -0
  211. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +1 -0
  212. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +212 -0
  213. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +13 -0
  214. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +1 -0
  215. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +117 -0
  216. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +19 -0
  217. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +1 -0
  218. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +167 -0
  219. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +14 -0
  220. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +1 -0
  221. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +143 -0
  222. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +15 -0
  223. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +1 -0
  224. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +56 -0
  225. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  226. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  227. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +62 -0
  228. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  229. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  230. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  231. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +43 -0
  232. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  233. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +109 -0
  234. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +26 -0
  235. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +1 -0
  236. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +131 -0
  237. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +3 -0
  238. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  239. package/dist/esm/components/src/components/Organisms/Chat/index.js +2 -0
  240. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +18 -0
  241. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +1 -0
  242. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +88 -0
  243. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +7 -0
  244. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +1 -0
  245. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +8 -0
  246. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +3 -0
  247. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +1 -0
  248. package/dist/esm/components/src/components/Organisms/ChatButton/index.js +2 -0
  249. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  250. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  251. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  252. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  253. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  254. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  255. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  256. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  257. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  258. package/dist/esm/components/src/components/Templates/Chat/Chat.js +41 -0
  259. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  260. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  261. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  262. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +13 -0
  263. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +1 -0
  264. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +41 -0
  265. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +2 -0
  266. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +1 -0
  267. package/dist/esm/components/src/components/Templates/ChatButton/index.js +1 -0
  268. package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  269. package/dist/esm/components/src/components/Templates/Search/Search.js +9 -1
  270. package/dist/esm/components/src/index.d.ts +14 -0
  271. package/dist/esm/components/src/index.d.ts.map +1 -1
  272. package/dist/esm/components/src/index.js +14 -0
  273. package/dist/esm/components/src/providers/langComponents.d.ts +20 -0
  274. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  275. package/dist/esm/components/src/providers/themeComponents.d.ts +203 -1
  276. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  277. package/dist/esm/components/src/providers/themeComponents.js +20 -0
  278. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  279. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  280. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  281. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  282. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  283. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +4 -0
  284. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +1 -0
  285. package/dist/esm/components/src/themes/base/components/templates/chatButton.js +3 -0
  286. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  287. package/dist/esm/components/src/themes/base/components/templates/index.js +10 -0
  288. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  289. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  290. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  291. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +4 -0
  292. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +1 -0
  293. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +3 -0
  294. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  295. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +10 -0
  296. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  297. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  298. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  299. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +4 -0
  300. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +1 -0
  301. package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +3 -0
  302. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  303. package/dist/esm/components/src/themes/pike/components/templates/index.js +10 -0
  304. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  305. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  306. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  307. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +4 -0
  308. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +1 -0
  309. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +3 -0
  310. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  311. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +10 -0
  312. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  313. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  314. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  315. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +4 -0
  316. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +1 -0
  317. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +3 -0
  318. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  319. package/dist/esm/components/src/themes/snappy/components/templates/index.js +10 -0
  320. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  321. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  322. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  323. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +4 -0
  324. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +1 -0
  325. package/dist/esm/components/src/themes/themeComponents/chatButton.js +6 -0
  326. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +15 -0
  327. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  328. package/dist/esm/components/src/utilities/Colour/Colour.js +41 -0
  329. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  330. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  331. package/dist/esm/components/src/utilities/snapify.js +29 -2
  332. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +4 -1
  333. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  334. package/dist/esm/src/Instantiators/RecommendationInstantiator.js +4 -1
  335. package/dist/esm/src/Snap.d.ts +2 -1
  336. package/dist/esm/src/Snap.d.ts.map +1 -1
  337. package/dist/esm/src/Snap.js +71 -1
  338. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  339. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  340. package/dist/esm/src/Templates/SnapTemplates.js +54 -5
  341. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +43 -0
  342. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  343. package/dist/esm/src/Templates/Stores/LibraryStore.js +51 -1
  344. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +20 -6
  345. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  346. package/dist/esm/src/Templates/Stores/TemplateStore.js +3 -3
  347. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  348. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  349. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  350. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +2 -0
  351. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +1 -0
  352. package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +1 -0
  353. package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts.map +1 -1
  354. package/dist/esm/src/Templates/Stores/library/languages/ar.js +474 -0
  355. package/dist/esm/src/Templates/Stores/library/languages/de.d.ts.map +1 -1
  356. package/dist/esm/src/Templates/Stores/library/languages/de.js +474 -0
  357. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  358. package/dist/esm/src/Templates/Stores/library/languages/es.js +479 -0
  359. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  360. package/dist/esm/src/Templates/Stores/library/languages/fr.js +479 -0
  361. package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts.map +1 -1
  362. package/dist/esm/src/Templates/Stores/library/languages/hi.js +474 -0
  363. package/dist/esm/src/Templates/Stores/library/languages/it.d.ts.map +1 -1
  364. package/dist/esm/src/Templates/Stores/library/languages/it.js +474 -0
  365. package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts.map +1 -1
  366. package/dist/esm/src/Templates/Stores/library/languages/ja.js +474 -0
  367. package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts.map +1 -1
  368. package/dist/esm/src/Templates/Stores/library/languages/ko.js +474 -0
  369. package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts.map +1 -1
  370. package/dist/esm/src/Templates/Stores/library/languages/nl.js +474 -0
  371. package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts.map +1 -1
  372. package/dist/esm/src/Templates/Stores/library/languages/pt.js +474 -0
  373. package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts.map +1 -1
  374. package/dist/esm/src/Templates/Stores/library/languages/ru.js +474 -0
  375. package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts.map +1 -1
  376. package/dist/esm/src/Templates/Stores/library/languages/tr.js +474 -0
  377. package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts.map +1 -1
  378. package/dist/esm/src/Templates/Stores/library/languages/vi.js +474 -0
  379. package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts.map +1 -1
  380. package/dist/esm/src/Templates/Stores/library/languages/zh.js +474 -0
  381. package/dist/esm/src/create/createChatController.d.ts +5 -0
  382. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  383. package/dist/esm/src/create/createChatController.js +28 -0
  384. package/dist/esm/src/create/index.d.ts +1 -0
  385. package/dist/esm/src/create/index.d.ts.map +1 -1
  386. package/dist/esm/src/create/index.js +1 -0
  387. package/dist/esm/src/setupEvents.d.ts +13 -0
  388. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  389. package/dist/esm/src/setupEvents.js +44 -0
  390. package/dist/esm/src/types.d.ts +13 -3
  391. package/dist/esm/src/types.d.ts.map +1 -1
  392. package/dist/esm/src/utils/applyChatTargetInject.d.ts +3 -0
  393. package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +1 -0
  394. package/dist/esm/src/utils/applyChatTargetInject.js +22 -0
  395. package/dist/esm/src/utils/index.d.ts +1 -0
  396. package/dist/esm/src/utils/index.d.ts.map +1 -1
  397. package/dist/esm/src/utils/index.js +1 -0
  398. package/eslint/src/validate-config.cjs +140 -98
  399. package/package.json +14 -12
@@ -15,8 +15,12 @@ const searchCollapsible_1 = require("./searchCollapsible");
15
15
  const autocompleteSlideout_1 = require("./autocompleteSlideout");
16
16
  const autocompleteModal_1 = require("./autocompleteModal");
17
17
  const autocompleteFixed_1 = require("./autocompleteFixed");
18
+ const chat_1 = require("./chat");
19
+ const chatButton_1 = require("./chatButton");
18
20
  exports.templates = {
19
21
  default: {
22
+ ...chat_1.chat.default,
23
+ ...chatButton_1.chatButton.default,
20
24
  ...autocompleteSlideout_1.autocompleteSlideout.default,
21
25
  ...autocompleteModal_1.autocompleteModal.default,
22
26
  ...autocompleteFixed_1.autocompleteFixed.default,
@@ -32,6 +36,8 @@ exports.templates = {
32
36
  ...searchHorizontal_1.searchHorizontal.default,
33
37
  },
34
38
  mobile: {
39
+ ...chat_1.chat.mobile,
40
+ ...chatButton_1.chatButton.mobile,
35
41
  ...autocompleteSlideout_1.autocompleteSlideout.mobile,
36
42
  ...autocompleteModal_1.autocompleteModal.mobile,
37
43
  ...autocompleteFixed_1.autocompleteFixed.mobile,
@@ -47,6 +53,8 @@ exports.templates = {
47
53
  ...searchHorizontal_1.searchHorizontal.mobile,
48
54
  },
49
55
  tablet: {
56
+ ...chat_1.chat.tablet,
57
+ ...chatButton_1.chatButton.tablet,
50
58
  ...autocompleteSlideout_1.autocompleteSlideout.tablet,
51
59
  ...autocompleteModal_1.autocompleteModal.tablet,
52
60
  ...autocompleteFixed_1.autocompleteFixed.tablet,
@@ -62,6 +70,8 @@ exports.templates = {
62
70
  ...searchHorizontal_1.searchHorizontal.tablet,
63
71
  },
64
72
  desktop: {
73
+ ...chat_1.chat.desktop,
74
+ ...chatButton_1.chatButton.desktop,
65
75
  ...autocompleteSlideout_1.autocompleteSlideout.desktop,
66
76
  ...autocompleteModal_1.autocompleteModal.desktop,
67
77
  ...autocompleteFixed_1.autocompleteFixed.desktop,
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chat = void 0;
4
+ const chat_1 = require("../../../themeComponents/chat");
5
+ // Chat component props come from Template export
6
+ exports.chat = chat_1.chatThemeComponentProps;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chatButton = void 0;
4
+ const chatButton_1 = require("../../../themeComponents/chatButton");
5
+ // ChatButton component props come from Template export
6
+ exports.chatButton = chatButton_1.chatButtonThemeComponentProps;
@@ -15,8 +15,12 @@ const searchCollapsible_1 = require("./searchCollapsible");
15
15
  const autocompleteSlideout_1 = require("./autocompleteSlideout");
16
16
  const autocompleteModal_1 = require("./autocompleteModal");
17
17
  const autocompleteFixed_1 = require("./autocompleteFixed");
18
+ const chat_1 = require("./chat");
19
+ const chatButton_1 = require("./chatButton");
18
20
  exports.templates = {
19
21
  default: {
22
+ ...chat_1.chat.default,
23
+ ...chatButton_1.chatButton.default,
20
24
  ...autocompleteSlideout_1.autocompleteSlideout.default,
21
25
  ...autocompleteModal_1.autocompleteModal.default,
22
26
  ...autocompleteFixed_1.autocompleteFixed.default,
@@ -32,6 +36,8 @@ exports.templates = {
32
36
  ...searchHorizontal_1.searchHorizontal.default,
33
37
  },
34
38
  mobile: {
39
+ ...chat_1.chat.mobile,
40
+ ...chatButton_1.chatButton.mobile,
35
41
  ...autocompleteSlideout_1.autocompleteSlideout.mobile,
36
42
  ...autocompleteModal_1.autocompleteModal.mobile,
37
43
  ...autocompleteFixed_1.autocompleteFixed.mobile,
@@ -47,6 +53,8 @@ exports.templates = {
47
53
  ...searchHorizontal_1.searchHorizontal.mobile,
48
54
  },
49
55
  tablet: {
56
+ ...chat_1.chat.tablet,
57
+ ...chatButton_1.chatButton.tablet,
50
58
  ...autocompleteSlideout_1.autocompleteSlideout.tablet,
51
59
  ...autocompleteModal_1.autocompleteModal.tablet,
52
60
  ...autocompleteFixed_1.autocompleteFixed.tablet,
@@ -62,6 +70,8 @@ exports.templates = {
62
70
  ...searchHorizontal_1.searchHorizontal.tablet,
63
71
  },
64
72
  desktop: {
73
+ ...chat_1.chat.desktop,
74
+ ...chatButton_1.chatButton.desktop,
65
75
  ...autocompleteSlideout_1.autocompleteSlideout.desktop,
66
76
  ...autocompleteModal_1.autocompleteModal.desktop,
67
77
  ...autocompleteFixed_1.autocompleteFixed.desktop,
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chatThemeComponentProps = void 0;
4
+ exports.chatThemeComponentProps = {
5
+ default: {
6
+ chat: {
7
+ position: 'right',
8
+ offset: '20px',
9
+ },
10
+ },
11
+ mobile: {},
12
+ tablet: {},
13
+ desktop: {},
14
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chatButtonThemeComponentProps = void 0;
4
+ exports.chatButtonThemeComponentProps = {
5
+ default: {},
6
+ mobile: {},
7
+ tablet: {},
8
+ desktop: {},
9
+ };
@@ -102,6 +102,27 @@ class Colour {
102
102
  return this;
103
103
  return new Colour(Colour.opacity(this.hex, -offset));
104
104
  }
105
+ /** Returns a hex string mixed linearly toward black. `amount` is a 0-1 proportion of
106
+ * black in the result — note this differs from `darken(offset)`, which takes a 0-100
107
+ * offset and returns a chainable `Colour`. 0.9 yields a near-black with a slight tint. */
108
+ mixBlack(amount = 0.3) {
109
+ return Colour.mixToward(this.hex, '#000000', amount) ?? this.hex ?? '';
110
+ }
111
+ /** Returns a hex string mixed linearly toward white. `amount` is a 0-1 proportion of
112
+ * white in the result — note this differs from `lighten(offset)`, which takes a 0-100
113
+ * offset and returns a chainable `Colour`. 0.9 yields a near-white with a slight tint. */
114
+ mixWhite(amount = 0.3) {
115
+ return Colour.mixToward(this.hex, '#ffffff', amount) ?? this.hex ?? '';
116
+ }
117
+ /** Returns the color only if it is a concrete value that can be manipulated and paired with
118
+ * other colors. Contextual CSS keywords (currentColor and the CSS-wide keywords) resolve
119
+ * against surrounding styles, so they would defeat `|| fallback` chains — those return undefined. */
120
+ static concrete(color) {
121
+ if (!color || ['currentcolor', 'inherit', 'initial', 'unset', 'revert'].includes(color.toLowerCase())) {
122
+ return undefined;
123
+ }
124
+ return color;
125
+ }
105
126
  static isRgb(color) {
106
127
  return Boolean(color.match(/^rgba?\([0-9]{1,3}[\s,\,]+[0-9]{1,3}[\s,\,]+[0-9]{1,3}[\s,\,]*\)$/i) ||
107
128
  color.match(/^rgba?\([0-9]{1,3}[\s,\,]+[0-9]{1,3}[\s,\,]+[0-9]{1,3}[\s,\,]+0?\.?[0-9]+%?[\s,\,]*\)$/i));
@@ -170,6 +191,26 @@ class Colour {
170
191
  }
171
192
  return hexValue;
172
193
  }
194
+ /** Linear RGB mix between two hex colors. `amount` (0-1) is the proportion of `towardHex`
195
+ * in the result. Returns the source `hex` unchanged when either input is invalid. */
196
+ static mixToward(hex, towardHex, amount) {
197
+ if (!hex)
198
+ return undefined;
199
+ if (!Colour.isHex(hex) || !Colour.isHex(towardHex))
200
+ return hex;
201
+ const clamped = Math.max(0, Math.min(1, amount));
202
+ const sourceR = parseInt(hex.slice(1, 3), 16);
203
+ const sourceG = parseInt(hex.slice(3, 5), 16);
204
+ const sourceB = parseInt(hex.slice(5, 7), 16);
205
+ const targetR = parseInt(towardHex.slice(1, 3), 16);
206
+ const targetG = parseInt(towardHex.slice(3, 5), 16);
207
+ const targetB = parseInt(towardHex.slice(5, 7), 16);
208
+ const mix = (s, t) => Math.round(s * (1 - clamped) + t * clamped);
209
+ const r = mix(sourceR, targetR).toString(16).padStart(2, '0');
210
+ const g = mix(sourceG, targetG).toString(16).padStart(2, '0');
211
+ const b = mix(sourceB, targetB).toString(16).padStart(2, '0');
212
+ return `#${r}${g}${b}`;
213
+ }
173
214
  static brightness(color, offset) {
174
215
  let isRgb = false;
175
216
  if (color && Colour.isRgb(color)) {
@@ -45,6 +45,20 @@ class Snapify {
45
45
  cntrlr.init();
46
46
  return cntrlr;
47
47
  }
48
+ static chat(config) {
49
+ const id = config.id;
50
+ if (controllers[id]) {
51
+ return controllers[id];
52
+ }
53
+ const cntrlr = (controllers[id] = createChatController({ client, controller: config }));
54
+ cntrlr.on('afterStore', async ({ controller }, next) => {
55
+ controller.log.debug('controller', controller);
56
+ controller.log.debug('store', controller.store.toJSON());
57
+ await next();
58
+ });
59
+ cntrlr.init();
60
+ return cntrlr;
61
+ }
48
62
  static search(config) {
49
63
  const id = config.id;
50
64
  if (controllers[id]) {
@@ -87,6 +101,19 @@ function createRecommendationController(config) {
87
101
  });
88
102
  return cntrlr;
89
103
  }
104
+ function createChatController(config) {
105
+ const urlManager = new snap_url_manager_1.UrlManager(new snap_url_manager_1.UrlTranslator(), snap_url_manager_1.reactLinker).detach(true);
106
+ const cntrlr = new snap_controller_1.ChatController(config.controller, {
107
+ client: new snap_client_1.Client(config.client.globals, config.client.config),
108
+ store: new snap_store_mobx_1.ChatStore({ ...config.controller, siteId: config.client.globals.siteId }, { urlManager }),
109
+ urlManager,
110
+ eventManager: new snap_event_manager_1.EventManager(),
111
+ profiler: new snap_profiler_1.Profiler(),
112
+ logger: new snap_logger_1.Logger(),
113
+ tracker: new snap_tracker_1.Tracker(config.client.globals),
114
+ });
115
+ return cntrlr;
116
+ }
90
117
  function createAutocompleteController(config) {
91
118
  const urlManager = new snap_url_manager_1.UrlManager(new snap_url_manager_1.UrlTranslator(), snap_url_manager_1.reactLinker).detach();
92
119
  const cntrlr = new snap_controller_1.AutocompleteController(config.controller, {
@@ -239,7 +239,10 @@ async function readyTheController(instance, services, targetElem, context, profi
239
239
  limit: instance.config.config?.limit,
240
240
  beacon: instance.config.config?.beacon || { enabled: true },
241
241
  settings: {
242
- variants: instance.config.config?.variants,
242
+ // `settings.variants` is the intended location; however top-level `variants` remains supported as a fallback
243
+ variants: instance.config.config?.settings?.variants ?? instance.config.config?.variants,
244
+ quickview: instance.config.config?.settings?.quickview ?? instance.config.config?.quickview,
245
+ searchOnPageShow: instance.config.config?.settings?.searchOnPageShow ?? instance.config.config?.searchOnPageShow,
243
246
  },
244
247
  globals,
245
248
  };
@@ -101,6 +101,9 @@ class Snap {
101
101
  case snap_controller_1.ControllerTypes.recommendation:
102
102
  importPromise = import('./create/createRecommendationController');
103
103
  break;
104
+ case snap_controller_1.ControllerTypes.chat:
105
+ importPromise = import('./create/createChatController');
106
+ break;
104
107
  case snap_controller_1.ControllerTypes.search:
105
108
  default:
106
109
  importPromise = import('./create/createSearchController');
@@ -584,6 +587,73 @@ class Snap {
584
587
  });
585
588
  break;
586
589
  }
590
+ case 'chat': {
591
+ this.config.controllers[type].forEach((controller, index) => {
592
+ if (typeof this._controllerPromises[controller.config.id] != 'undefined') {
593
+ this.logger.error(`Controller with id '${controller.config.id}' is already defined`);
594
+ return;
595
+ }
596
+ this._controllerPromises[controller.config.id] = new Promise(async (resolve) => {
597
+ try {
598
+ // `_initialized` is only set after the awaited init fires, so two chat
599
+ // targeters would otherwise both re-run the init middleware
600
+ let initialized = false;
601
+ const targetFunction = async (target, elem, originalElem) => {
602
+ const onTarget = target.onTarget;
603
+ onTarget && (await onTarget(target, elem, originalElem));
604
+ try {
605
+ const importPromises = [];
606
+ // dynamically import the component
607
+ importPromises.push(target.component());
608
+ const importResolutions = await Promise.all(importPromises);
609
+ const Component = importResolutions[0];
610
+ setTimeout(() => {
611
+ (0, preact_1.render)((0, jsx_runtime_1.jsx)(Component, { controller: this.controllers[controller.config.id], snap: this, ...target.props }), elem);
612
+ });
613
+ }
614
+ catch (err) {
615
+ this.logger.error(err);
616
+ this.logger.error(COMPONENT_ERROR, target);
617
+ }
618
+ };
619
+ if (!controller?.targeters || controller?.targeters.length === 0) {
620
+ const cntrlr = await this._createController(snap_controller_1.ControllerTypes.chat, controller.config, controller.services, controller.url, controller.context, (cntrlr) => {
621
+ if (cntrlr)
622
+ resolve(cntrlr);
623
+ });
624
+ if (!cntrlr.initialized)
625
+ cntrlr.init();
626
+ }
627
+ controller?.targeters?.forEach((target, target_index) => {
628
+ if (!target.selector) {
629
+ throw new Error(`Targets at index ${target_index} missing selector value (string).`);
630
+ }
631
+ if (!target.component) {
632
+ throw new Error(`Targets at index ${target_index} missing component value (Component).`);
633
+ }
634
+ target = (0, utils_1.applyChatTargetInject)(target);
635
+ const targeter = new snap_toolbox_1.DomTargeter([{ ...target }], async (target, elem, originalElem) => {
636
+ const cntrlr = await this._createController(snap_controller_1.ControllerTypes.chat, controller.config, controller.services, controller.url, controller.context, (cntrlr) => {
637
+ if (cntrlr)
638
+ resolve(cntrlr);
639
+ });
640
+ if (!initialized) {
641
+ initialized = true;
642
+ if (!cntrlr.initialized)
643
+ cntrlr.init();
644
+ }
645
+ targetFunction({ controller: cntrlr, ...target }, elem, originalElem);
646
+ cntrlr.addTargeter(targeter);
647
+ });
648
+ });
649
+ }
650
+ catch (err) {
651
+ this.logger.error(`Failed to instantiate ${type} controller at index ${index}.`, err);
652
+ }
653
+ });
654
+ });
655
+ break;
656
+ }
587
657
  case 'autocomplete': {
588
658
  this.config.controllers[type].forEach((controller, index) => {
589
659
  if (typeof this._controllerPromises[controller.config.id] != 'undefined') {
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createSearchTargeters = exports.SnapTemplates = exports.TAB_PREFIXED_PARAMS = exports.DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = exports.DEFAULT_FEATURES = exports.TEMPLATE_EDITOR_UI_PARAM = exports.TEMPLATE_EDITOR_COOKIE = void 0;
6
+ exports.createChatTargeters = exports.createSearchTargeters = exports.SnapTemplates = exports.TAB_PREFIXED_PARAMS = exports.DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = exports.DEFAULT_FEATURES = exports.TEMPLATE_EDITOR_UI_PARAM = exports.TEMPLATE_EDITOR_COOKIE = void 0;
7
7
  exports.validateTemplatesConfig = validateTemplatesConfig;
8
8
  exports.validateTemplatesConfigUnlocked = validateTemplatesConfigUnlocked;
9
9
  exports.mapBreakpoints = mapBreakpoints;
@@ -177,6 +177,36 @@ const createSearchTargeters = (templateConfig, templatesStore) => {
177
177
  });
178
178
  };
179
179
  exports.createSearchTargeters = createSearchTargeters;
180
+ const createChatTargeters = (templateConfig, templatesStore) => {
181
+ // initial target configs
182
+ const targetConfigs = templateConfig.chat?.targets || [];
183
+ let mergedConfigs;
184
+ if (templatesStore.settings.editMode) {
185
+ const overrideConfigs = (templatesStore.storage.get('overrides.targets.chat') || []);
186
+ mergedConfigs = (0, deepmerge_1.default)(targetConfigs, overrideConfigs, { arrayMerge: utils_1.combineMerge });
187
+ }
188
+ else {
189
+ mergedConfigs = targetConfigs;
190
+ }
191
+ return mergedConfigs.map((targetConfig) => {
192
+ const target = templatesStore.addTarget({ ...targetConfig, type: 'chat' });
193
+ const targeter = {
194
+ selector: targetConfig.selector,
195
+ // inline selectors (e.g. a nav slot) may render after DOMContentLoaded;
196
+ // re-injection at already-targeted elements is prevented by DomTargeter
197
+ autoRetarget: true,
198
+ component: async () => {
199
+ const componentImportPromises = [];
200
+ componentImportPromises.push(templatesStore.library.import.component.chat[targetConfig.component]());
201
+ await Promise.all(componentImportPromises);
202
+ return TemplateSelect_1.TemplateSelect;
203
+ },
204
+ props: { target, templatesStore },
205
+ };
206
+ return (0, utils_1.applyChatTargetInject)(targeter);
207
+ });
208
+ };
209
+ exports.createChatTargeters = createChatTargeters;
180
210
  function createAutocompleteTargeters(templateConfig, templatesStore) {
181
211
  // initial target configs
182
212
  const targetConfigs = templateConfig.autocomplete?.targets || [];
@@ -303,6 +333,7 @@ function createTabServices(snapConfig, siteId) {
303
333
  function createSnapConfig(templateConfig, templatesStore) {
304
334
  const initiatorPrefix = window?.athos?.managed ? `managed/` : '';
305
335
  const snapConfig = {
336
+ mode: templateConfig.config?.mode,
306
337
  features: templateConfig.features || exports.DEFAULT_FEATURES,
307
338
  client: {
308
339
  globals: {},
@@ -503,6 +534,21 @@ function createSnapConfig(templateConfig, templatesStore) {
503
534
  // }
504
535
  snapConfig.instantiators.recommendation = recommendationInstantiatorConfig;
505
536
  }
537
+ /* CHAT CONTROLLER */
538
+ if (templateConfig.chat && snapConfig.controllers) {
539
+ const chatControllerConfig = {
540
+ config: {
541
+ id: 'chat',
542
+ plugins: createPlugins(templateConfig, templatesStore, 'chat'),
543
+ settings: {
544
+ languageCode: templatesStore.language,
545
+ ...(templateConfig.chat.settings || {}),
546
+ },
547
+ },
548
+ targeters: (0, exports.createChatTargeters)(templateConfig, templatesStore),
549
+ };
550
+ snapConfig.controllers.chat = [chatControllerConfig];
551
+ }
506
552
  /* QUICKVIEW MANAGER — injects quickview component(s) into <body> when enabled */
507
553
  if (templateConfig.quickview) {
508
554
  const quickviewSettings = templateConfig.quickview?.settings;
@@ -522,10 +568,14 @@ function createPlugins(templateConfig, templatesStore, controllerType) {
522
568
  if (controllerType) {
523
569
  controllerConfig = templateConfig[controllerType] || {};
524
570
  }
525
- plugins.push([
526
- templatesStore.library.import.plugins.common.backgroundFilters,
527
- (0, deepmerge_1.default)(templateConfig.plugins?.common?.backgroundFilters || {}, controllerConfig?.plugins?.common?.backgroundFilters || {}),
528
- ]);
571
+ // backgroundFilters writes `config.globals.filters`, which the chat endpoint has no
572
+ // field for — chat carries background filters via `settings.bgFilters` instead
573
+ if (controllerType !== 'chat') {
574
+ plugins.push([
575
+ templatesStore.library.import.plugins.common.backgroundFilters,
576
+ (0, deepmerge_1.default)(templateConfig.plugins?.common?.backgroundFilters || {}, controllerConfig?.plugins?.common?.backgroundFilters || {}),
577
+ ]);
578
+ }
529
579
  plugins.push([
530
580
  templatesStore.library.import.plugins.common.scrollToTop,
531
581
  (0, deepmerge_1.default)(templateConfig.plugins?.common?.scrollToTop || {}, controllerConfig?.plugins?.common?.scrollToTop || {}),
@@ -33,6 +33,26 @@ class LibraryStore {
33
33
  default: {},
34
34
  email: {},
35
35
  },
36
+ chat: {},
37
+ chatButton: {},
38
+ chatLoadingIndicator: {},
39
+ chatAttachmentContext: {},
40
+ chatInspirationResultMessage: {},
41
+ chatMessageText: {},
42
+ chatMessageUser: {},
43
+ chatProductComparisonMessage: {},
44
+ chatProductQueryMessage: {},
45
+ chatResult: {},
46
+ chatResultsDisplay: {},
47
+ chatSuggestedQuestions: {},
48
+ chatComparisonsTray: {},
49
+ chatComposer: {},
50
+ chatFacetsBar: {},
51
+ chatHistory: {},
52
+ chatMessages: {},
53
+ chatSessionFeedback: {},
54
+ chatSideChat: {},
55
+ chatTopicDrift: {},
36
56
  badge: {},
37
57
  result: {},
38
58
  overlayResult: {},
@@ -227,6 +247,33 @@ class LibraryStore {
227
247
  },
228
248
  },
229
249
  },
250
+ chat: {
251
+ Chat: async () => {
252
+ return this.components.chat.Chat || (this.components.chat.Chat = (await import('./library/components/Chat')).Chat);
253
+ },
254
+ ChatButton: async () => {
255
+ return this.components.chat.ChatButton || (this.components.chat.ChatButton = (await import('./library/components/ChatButton')).ChatButton);
256
+ },
257
+ },
258
+ chatButton: {},
259
+ chatLoadingIndicator: {},
260
+ chatAttachmentContext: {},
261
+ chatInspirationResultMessage: {},
262
+ chatMessageText: {},
263
+ chatMessageUser: {},
264
+ chatProductComparisonMessage: {},
265
+ chatProductQueryMessage: {},
266
+ chatResult: {},
267
+ chatResultsDisplay: {},
268
+ chatSuggestedQuestions: {},
269
+ chatComparisonsTray: {},
270
+ chatComposer: {},
271
+ chatFacetsBar: {},
272
+ chatHistory: {},
273
+ chatMessages: {},
274
+ chatSessionFeedback: {},
275
+ chatSideChat: {},
276
+ chatTopicDrift: {},
230
277
  badge: {},
231
278
  result: {
232
279
  Result: async () => {
@@ -401,7 +448,10 @@ class LibraryStore {
401
448
  async addComponentImport(type, name, componentFn) {
402
449
  // only allow certain types based on unlocked status
403
450
  if (this.allowedComponentTypes.includes(type) && this.components[type]) {
404
- this.import.component[type][name] = async () => {
451
+ // `chat` declares its library entry with literal keys so template targets stay
452
+ // literal-checked; custom overrides register by arbitrary name, hence the cast
453
+ const componentImports = this.import.component[type];
454
+ componentImports[name] = async () => {
405
455
  return (this.components[type][name] ||
406
456
  (this.components[type][name] = await (0, CustomComponent_1.CustomComponent)({
407
457
  type,
@@ -15,7 +15,6 @@ const ThemeStore_1 = require("./ThemeStore");
15
15
  const TargetStore_1 = require("./TargetStore");
16
16
  const TabManagerStore_1 = require("./TabManagerStore");
17
17
  const LibraryStore_1 = require("./LibraryStore");
18
- const snap_toolbox_2 = require("@athoscommerce/snap-toolbox");
19
18
  const RESIZE_DEBOUNCE = 100;
20
19
  exports.TEMPLATE_STORE_KEY = 'athos-templates';
21
20
  class TemplatesStore {
@@ -34,6 +33,7 @@ class TemplatesStore {
34
33
  this.targets = {
35
34
  search: [],
36
35
  autocomplete: [],
36
+ chat: [],
37
37
  recommendation: {
38
38
  bundle: [],
39
39
  default: [],
@@ -67,7 +67,7 @@ class TemplatesStore {
67
67
  // configure window properties and add event listeners
68
68
  if (window) {
69
69
  this.setInnerWidth(window.innerWidth);
70
- const debouncedHandleResize = (0, snap_toolbox_2.debounce)(() => {
70
+ const debouncedHandleResize = (0, snap_toolbox_1.debounce)(() => {
71
71
  this.setInnerWidth(window.innerWidth);
72
72
  }, RESIZE_DEBOUNCE);
73
73
  window.addEventListener('resize', debouncedHandleResize);
@@ -270,7 +270,7 @@ function getTargetArray(targets, type) {
270
270
  if (category === 'recommendation' && subcategory) {
271
271
  return targets.recommendation[subcategory];
272
272
  }
273
- if (category === 'search' || category === 'autocomplete') {
273
+ if (category === 'search' || category === 'autocomplete' || category === 'chat') {
274
274
  return targets[category];
275
275
  }
276
276
  return undefined;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Chat = void 0;
4
+ var Chat_1 = require("../../../../../components/src/components/Templates/Chat");
5
+ Object.defineProperty(exports, "Chat", { enumerable: true, get: function () { return Chat_1.Chat; } });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatButton = void 0;
4
+ var ChatButton_1 = require("../../../../../components/src/components/Templates/ChatButton");
5
+ Object.defineProperty(exports, "ChatButton", { enumerable: true, get: function () { return ChatButton_1.ChatButton; } });