@athoscommerce/snap-preact 1.13.1 → 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 (402) 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/mergeProps.js +2 -1
  79. package/dist/cjs/components/src/utilities/snapify.js +27 -0
  80. package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +4 -1
  81. package/dist/cjs/src/Snap.js +72 -2
  82. package/dist/cjs/src/Templates/SnapTemplates.js +55 -5
  83. package/dist/cjs/src/Templates/Stores/LibraryStore.js +51 -1
  84. package/dist/cjs/src/Templates/Stores/TemplateStore.js +3 -3
  85. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  86. package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +5 -0
  87. package/dist/cjs/src/Templates/Stores/library/languages/ar.js +474 -0
  88. package/dist/cjs/src/Templates/Stores/library/languages/de.js +474 -0
  89. package/dist/cjs/src/Templates/Stores/library/languages/es.js +479 -0
  90. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +479 -0
  91. package/dist/cjs/src/Templates/Stores/library/languages/hi.js +474 -0
  92. package/dist/cjs/src/Templates/Stores/library/languages/it.js +474 -0
  93. package/dist/cjs/src/Templates/Stores/library/languages/ja.js +474 -0
  94. package/dist/cjs/src/Templates/Stores/library/languages/ko.js +474 -0
  95. package/dist/cjs/src/Templates/Stores/library/languages/nl.js +474 -0
  96. package/dist/cjs/src/Templates/Stores/library/languages/pt.js +474 -0
  97. package/dist/cjs/src/Templates/Stores/library/languages/ru.js +474 -0
  98. package/dist/cjs/src/Templates/Stores/library/languages/tr.js +474 -0
  99. package/dist/cjs/src/Templates/Stores/library/languages/vi.js +474 -0
  100. package/dist/cjs/src/Templates/Stores/library/languages/zh.js +474 -0
  101. package/dist/cjs/src/create/createChatController.js +30 -0
  102. package/dist/cjs/src/create/index.js +3 -1
  103. package/dist/cjs/src/setupEvents.js +44 -0
  104. package/dist/cjs/src/utils/applyChatTargetInject.js +25 -0
  105. package/dist/cjs/src/utils/index.js +3 -1
  106. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +3 -1
  107. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  108. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +17 -0
  109. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  110. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +92 -0
  111. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  112. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  113. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  114. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -1
  115. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  116. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +57 -12
  117. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +13 -0
  118. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  119. package/dist/esm/components/src/components/Atoms/Icon/paths.js +13 -0
  120. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +30 -0
  121. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  122. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +215 -0
  123. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  124. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  125. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  126. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +19 -0
  127. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  128. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +203 -0
  129. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  130. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  131. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  132. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +36 -0
  133. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  134. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +252 -0
  135. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  136. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  137. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  138. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +38 -0
  139. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  140. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +276 -0
  141. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  142. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  143. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  144. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +19 -0
  145. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  146. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +167 -0
  147. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  148. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  149. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  150. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +38 -0
  151. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  152. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +571 -0
  153. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  154. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  155. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  156. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +35 -0
  157. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  158. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +246 -0
  159. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  160. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  161. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  162. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +24 -0
  163. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  164. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +107 -0
  165. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  166. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  167. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  168. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +16 -0
  169. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  170. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +101 -0
  171. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  172. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  173. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  174. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  175. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  176. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +7 -3
  177. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  178. package/dist/esm/components/src/components/Molecules/Result/Result.js +51 -4
  179. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +3 -0
  180. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  181. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +28 -2
  182. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  183. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +25 -29
  184. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  185. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +44 -30
  186. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts.map +1 -1
  187. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.js +5 -3
  188. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  189. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +8 -1
  190. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +41 -0
  191. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  192. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +615 -0
  193. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +76 -0
  194. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +1 -0
  195. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +100 -0
  196. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +26 -0
  197. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +1 -0
  198. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +98 -0
  199. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +13 -0
  200. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +1 -0
  201. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +155 -0
  202. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +19 -0
  203. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +1 -0
  204. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +160 -0
  205. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +18 -0
  206. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +1 -0
  207. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +363 -0
  208. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +11 -0
  209. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +1 -0
  210. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +124 -0
  211. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +30 -0
  212. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +1 -0
  213. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +212 -0
  214. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +13 -0
  215. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +1 -0
  216. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +117 -0
  217. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +19 -0
  218. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +1 -0
  219. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +167 -0
  220. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +14 -0
  221. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +1 -0
  222. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +143 -0
  223. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +15 -0
  224. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +1 -0
  225. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +56 -0
  226. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  227. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  228. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +62 -0
  229. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  230. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  231. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  232. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +43 -0
  233. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  234. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +109 -0
  235. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +26 -0
  236. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +1 -0
  237. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +131 -0
  238. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +3 -0
  239. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  240. package/dist/esm/components/src/components/Organisms/Chat/index.js +2 -0
  241. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +18 -0
  242. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +1 -0
  243. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +88 -0
  244. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +7 -0
  245. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +1 -0
  246. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +8 -0
  247. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +3 -0
  248. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +1 -0
  249. package/dist/esm/components/src/components/Organisms/ChatButton/index.js +2 -0
  250. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  251. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  252. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +5 -0
  253. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  254. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +5 -0
  255. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  256. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +5 -0
  257. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  258. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  259. package/dist/esm/components/src/components/Templates/Chat/Chat.js +41 -0
  260. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  261. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  262. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  263. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +13 -0
  264. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +1 -0
  265. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +41 -0
  266. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +2 -0
  267. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +1 -0
  268. package/dist/esm/components/src/components/Templates/ChatButton/index.js +1 -0
  269. package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  270. package/dist/esm/components/src/components/Templates/Search/Search.js +9 -1
  271. package/dist/esm/components/src/index.d.ts +14 -0
  272. package/dist/esm/components/src/index.d.ts.map +1 -1
  273. package/dist/esm/components/src/index.js +14 -0
  274. package/dist/esm/components/src/providers/langComponents.d.ts +20 -0
  275. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  276. package/dist/esm/components/src/providers/themeComponents.d.ts +203 -1
  277. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  278. package/dist/esm/components/src/providers/themeComponents.js +20 -0
  279. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  280. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  281. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  282. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  283. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  284. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +4 -0
  285. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +1 -0
  286. package/dist/esm/components/src/themes/base/components/templates/chatButton.js +3 -0
  287. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  288. package/dist/esm/components/src/themes/base/components/templates/index.js +10 -0
  289. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  290. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  291. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  292. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +4 -0
  293. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +1 -0
  294. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +3 -0
  295. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  296. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +10 -0
  297. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  298. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  299. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  300. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +4 -0
  301. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +1 -0
  302. package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +3 -0
  303. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  304. package/dist/esm/components/src/themes/pike/components/templates/index.js +10 -0
  305. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  306. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  307. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  308. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +4 -0
  309. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +1 -0
  310. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +3 -0
  311. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  312. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +10 -0
  313. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  314. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  315. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  316. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +4 -0
  317. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +1 -0
  318. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +3 -0
  319. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  320. package/dist/esm/components/src/themes/snappy/components/templates/index.js +10 -0
  321. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  322. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  323. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  324. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +4 -0
  325. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +1 -0
  326. package/dist/esm/components/src/themes/themeComponents/chatButton.js +6 -0
  327. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +15 -0
  328. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  329. package/dist/esm/components/src/utilities/Colour/Colour.js +41 -0
  330. package/dist/esm/components/src/utilities/mergeProps.d.ts.map +1 -1
  331. package/dist/esm/components/src/utilities/mergeProps.js +2 -1
  332. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  333. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  334. package/dist/esm/components/src/utilities/snapify.js +29 -2
  335. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +4 -1
  336. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  337. package/dist/esm/src/Instantiators/RecommendationInstantiator.js +4 -1
  338. package/dist/esm/src/Snap.d.ts +2 -1
  339. package/dist/esm/src/Snap.d.ts.map +1 -1
  340. package/dist/esm/src/Snap.js +73 -3
  341. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  342. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  343. package/dist/esm/src/Templates/SnapTemplates.js +54 -5
  344. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +43 -0
  345. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  346. package/dist/esm/src/Templates/Stores/LibraryStore.js +51 -1
  347. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +20 -6
  348. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  349. package/dist/esm/src/Templates/Stores/TemplateStore.js +3 -3
  350. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  351. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  352. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  353. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +2 -0
  354. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +1 -0
  355. package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +1 -0
  356. package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts.map +1 -1
  357. package/dist/esm/src/Templates/Stores/library/languages/ar.js +474 -0
  358. package/dist/esm/src/Templates/Stores/library/languages/de.d.ts.map +1 -1
  359. package/dist/esm/src/Templates/Stores/library/languages/de.js +474 -0
  360. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  361. package/dist/esm/src/Templates/Stores/library/languages/es.js +479 -0
  362. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  363. package/dist/esm/src/Templates/Stores/library/languages/fr.js +479 -0
  364. package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts.map +1 -1
  365. package/dist/esm/src/Templates/Stores/library/languages/hi.js +474 -0
  366. package/dist/esm/src/Templates/Stores/library/languages/it.d.ts.map +1 -1
  367. package/dist/esm/src/Templates/Stores/library/languages/it.js +474 -0
  368. package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts.map +1 -1
  369. package/dist/esm/src/Templates/Stores/library/languages/ja.js +474 -0
  370. package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts.map +1 -1
  371. package/dist/esm/src/Templates/Stores/library/languages/ko.js +474 -0
  372. package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts.map +1 -1
  373. package/dist/esm/src/Templates/Stores/library/languages/nl.js +474 -0
  374. package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts.map +1 -1
  375. package/dist/esm/src/Templates/Stores/library/languages/pt.js +474 -0
  376. package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts.map +1 -1
  377. package/dist/esm/src/Templates/Stores/library/languages/ru.js +474 -0
  378. package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts.map +1 -1
  379. package/dist/esm/src/Templates/Stores/library/languages/tr.js +474 -0
  380. package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts.map +1 -1
  381. package/dist/esm/src/Templates/Stores/library/languages/vi.js +474 -0
  382. package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts.map +1 -1
  383. package/dist/esm/src/Templates/Stores/library/languages/zh.js +474 -0
  384. package/dist/esm/src/create/createChatController.d.ts +5 -0
  385. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  386. package/dist/esm/src/create/createChatController.js +28 -0
  387. package/dist/esm/src/create/index.d.ts +1 -0
  388. package/dist/esm/src/create/index.d.ts.map +1 -1
  389. package/dist/esm/src/create/index.js +1 -0
  390. package/dist/esm/src/setupEvents.d.ts +13 -0
  391. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  392. package/dist/esm/src/setupEvents.js +44 -0
  393. package/dist/esm/src/types.d.ts +13 -3
  394. package/dist/esm/src/types.d.ts.map +1 -1
  395. package/dist/esm/src/utils/applyChatTargetInject.d.ts +3 -0
  396. package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +1 -0
  397. package/dist/esm/src/utils/applyChatTargetInject.js +22 -0
  398. package/dist/esm/src/utils/index.d.ts +1 -0
  399. package/dist/esm/src/utils/index.d.ts.map +1 -1
  400. package/dist/esm/src/utils/index.js +1 -0
  401. package/eslint/src/validate-config.cjs +140 -98
  402. 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)) {
@@ -535,7 +535,8 @@ function expandCommaSelectors(selectors) {
535
535
  }
536
536
  return expandedSelectors;
537
537
  }
538
- const DEV_MODE = typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production';
538
+ // bundlers substitute `process.env.NODE_ENV` as a literal - `typeof process` guards would defeat that
539
+ const DEV_MODE = process.env.NODE_ENV !== 'production';
539
540
  // dev-mode legacy-match warnings are emitted once per selector/treePath pair
540
541
  const warnedLegacySelectors = new Set();
541
542
  /**
@@ -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');
@@ -283,8 +286,8 @@ class Snap {
283
286
  2. config
284
287
  3. override via query param / cookie
285
288
  */
286
- // node env
287
- if (typeof process !== 'undefined' && process.env.NODE_ENV && Object.values(snap_toolbox_1.AppMode).includes(process.env.NODE_ENV)) {
289
+ // node env (bundlers substitute `process.env.NODE_ENV` as a literal - `typeof process` guards would defeat that)
290
+ if (process.env.NODE_ENV && Object.values(snap_toolbox_1.AppMode).includes(process.env.NODE_ENV)) {
288
291
  this.mode = process.env.NODE_ENV;
289
292
  }
290
293
  // config
@@ -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; } });