@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
@@ -82,7 +82,15 @@ exports.SearchInput = (0, mobx_react_lite_1.observer)((properties) => {
82
82
  //passed in properties
83
83
  ...properties?.closeSearchButton,
84
84
  };
85
- const { placeholderText, value, submitSearchButton, closeSearchButton, clearSearchButton, hideSubmitSearchButton, hideClearSearchButton, hideCloseSearchButton, inputRef, inputName, onChange, onClick, onKeyDown, onKeyUp, disabled, disableStyles, className, internalClassName, treePath, } = props;
85
+ props.chatButton = {
86
+ //defaults
87
+ ...defaultProps.chatButton,
88
+ //theme
89
+ ...props.chatButton,
90
+ //passed in properties
91
+ ...properties?.chatButton,
92
+ };
93
+ const { placeholderText, value, submitSearchButton, closeSearchButton, clearSearchButton, chatButton, hideSubmitSearchButton, hideClearSearchButton, hideCloseSearchButton, hideChatButton, inputRef, inputName, onChange, onClick, onKeyDown, onKeyUp, disabled, disableStyles, className, internalClassName, treePath, } = props;
86
94
  const { overrideElement, shouldRenderDefault } = (0, hooks_2.useCustomComponentOverride)('searchInput', props);
87
95
  if (!shouldRenderDefault) {
88
96
  return overrideElement;
@@ -147,6 +155,19 @@ exports.SearchInput = (0, mobx_react_lite_1.observer)((properties) => {
147
155
  theme: props?.theme,
148
156
  treePath,
149
157
  },
158
+ chatButton: {
159
+ // default props
160
+ ...chatButton,
161
+ internalClassName: 'ss__search-input__button--chat-button',
162
+ name: 'chat',
163
+ // inherited props
164
+ ...(0, utilities_1.defined)({
165
+ disableStyles,
166
+ }),
167
+ // component theme overrides
168
+ theme: props?.theme,
169
+ treePath,
170
+ },
150
171
  };
151
172
  const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
152
173
  //initialize lang
@@ -171,6 +192,11 @@ exports.SearchInput = (0, mobx_react_lite_1.observer)((properties) => {
171
192
  'aria-label': 'Submit Search',
172
193
  },
173
194
  },
195
+ chatButton: {
196
+ attributes: {
197
+ 'aria-label': 'Open Chat',
198
+ },
199
+ },
174
200
  };
175
201
  //deep merge with props.lang
176
202
  const lang = (0, deepmerge_1.default)(defaultLang, props.lang || {});
@@ -180,5 +206,5 @@ exports.SearchInput = (0, mobx_react_lite_1.observer)((properties) => {
180
206
  setInputValue(e.target.value || '');
181
207
  }
182
208
  onChange && onChange(e);
183
- }, disabled: disabled }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__search-input__icons", children: [!hideClearSearchButton && clearSearchButton && inputValue?.length ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.clearSearchButton, ...mergedLang.clearSearchButton.all })) : null, !hideSubmitSearchButton && submitSearchButton && (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.submitSearchButton, ...mergedLang.submitSearchButton.all })] })] }) }));
209
+ }, disabled: disabled }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__search-input__icons", children: [!hideClearSearchButton && clearSearchButton && inputValue?.length ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.clearSearchButton, ...mergedLang.clearSearchButton.all })) : null, !hideChatButton && chatButton?.icon ? (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.chatButton, ...mergedLang.chatButton.all }) : null, !hideSubmitSearchButton && submitSearchButton && (0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.submitSearchButton, ...mergedLang.submitSearchButton.all })] })] }) }));
184
210
  });
@@ -75,22 +75,21 @@ exports.Slideout = (0, mobx_react_lite_1.observer)((properties) => {
75
75
  // state
76
76
  const [isActive, setActive] = (0, hooks_1.useState)(Boolean(active));
77
77
  const [renderContent, setRenderContent] = (0, hooks_1.useState)(Boolean(active));
78
- const toggleActive = () => {
79
- const newActive = !isActive;
80
- if (isActive) {
81
- setActive(false);
82
- if (rerender) {
83
- setTimeout(() => {
84
- setRenderContent(false);
85
- }, 250);
86
- }
87
- }
88
- else {
89
- setActive(true);
78
+ const isActiveRef = (0, hooks_1.useRef)(isActive);
79
+ isActiveRef.current = isActive;
80
+ const toggleActive = (force) => {
81
+ const next = typeof force === 'boolean' ? force : !isActiveRef.current;
82
+ setActive(next);
83
+ if (next) {
90
84
  setRenderContent(true);
91
85
  }
92
- document.body.style.overflow = newActive ? 'hidden' : '';
93
- onChange && onChange(newActive);
86
+ else if (rerender) {
87
+ setTimeout(() => {
88
+ setRenderContent(false);
89
+ }, 250);
90
+ }
91
+ document.body.style.overflow = next ? 'hidden' : '';
92
+ onChange && onChange(next);
94
93
  };
95
94
  // Sync internal state when the active prop changes from the parent component. This is a
96
95
  // layout effect so the content commit is scheduled before consumers' passive effects run —
@@ -106,19 +105,16 @@ exports.Slideout = (0, mobx_react_lite_1.observer)((properties) => {
106
105
  document.body.style.overflow = isVisible && isActive ? 'hidden' : '';
107
106
  const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
108
107
  (0, hooks_1.useEffect)(() => {
109
- if (buttonSelector) {
110
- let button;
111
- if (typeof buttonSelector == 'string') {
112
- button = document.querySelector(buttonSelector);
113
- }
114
- else {
115
- button = buttonSelector;
116
- }
117
- if (button) {
118
- button.addEventListener('click', () => toggleActive());
119
- }
120
- }
121
- }, []);
108
+ if (!buttonSelector)
109
+ return;
110
+ // string selectors bind to every matching element
111
+ const targets = typeof buttonSelector == 'string' ? Array.from(document.querySelectorAll(buttonSelector)) : [buttonSelector];
112
+ const handler = () => toggleActive();
113
+ targets.forEach((target) => target.addEventListener('click', handler));
114
+ return () => {
115
+ targets.forEach((target) => target.removeEventListener('click', handler));
116
+ };
117
+ }, [buttonSelector]);
122
118
  return isVisible || !rerender ? ((0, jsx_runtime_1.jsxs)(providers_1.CacheProvider, { children: [buttonContent &&
123
- (noButtonWrapper ? ((0, utilities_1.cloneWithProps)(buttonContent, { toggleActive, active: isActive, treePath })) : ((0, jsx_runtime_1.jsx)("div", { className: "ss__slideout__button", onClick: () => toggleActive(), children: (0, utilities_1.cloneWithProps)(buttonContent, { active: isActive, treePath }) }))), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__slideout', className, internalClassName, { 'ss__slideout--active': isActive }), style: { visibility: !rerender ? (isVisible ? 'visible' : 'hidden') : 'visible' }, ...styling, children: renderContent && (0, utilities_1.cloneWithProps)(children, { toggleActive, active: isActive, treePath }) }), (0, jsx_runtime_1.jsx)(Overlay_1.Overlay, { ...subProps.overlay, active: isActive, onClick: toggleActive })] })) : null;
119
+ (noButtonWrapper ? ((0, utilities_1.cloneWithProps)(buttonContent, { toggleActive, active: isActive, treePath })) : ((0, jsx_runtime_1.jsx)("div", { className: "ss__slideout__button", onClick: () => toggleActive(), children: (0, utilities_1.cloneWithProps)(buttonContent, { active: isActive, treePath }) }))), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__slideout', className, internalClassName, { 'ss__slideout--active': isActive }), style: { visibility: !rerender ? (isVisible ? 'visible' : 'hidden') : 'visible' }, ...styling, children: renderContent && (0, utilities_1.cloneWithProps)(children, { toggleActive, active: isActive, treePath }) }), (0, jsx_runtime_1.jsx)(Overlay_1.Overlay, { ...subProps.overlay, active: isActive, onClick: () => toggleActive(false) })] })) : null;
124
120
  });
@@ -272,9 +272,15 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
272
272
  }, []);
273
273
  // Touch/Drag state
274
274
  const [isDragging, setIsDragging] = (0, hooks_1.useState)(false);
275
- // refs, not state - only read inside the drag handlers, never in render
276
- // the document mouseup listener below is bound once per drag, so its closure goes stale
277
- // refs stay current even from that stale closure, state would not
275
+ // mirrors `isDragging` state - the state drives renders (the dragging class, the transform,
276
+ // the autoplay effect), but the drag handlers below run through refs and can fire before
277
+ // the re-render that follows a setState (e.g. a tap's synthetic mouseup), so they read
278
+ // this ref instead. always update both via `setDragging`.
279
+ const isDraggingRef = (0, hooks_1.useRef)(false);
280
+ const setDragging = (value) => {
281
+ isDraggingRef.current = value;
282
+ setIsDragging(value);
283
+ };
278
284
  const startXRef = (0, hooks_1.useRef)(0);
279
285
  const currentXRef = (0, hooks_1.useRef)(0);
280
286
  const [dragOffset, setDragOffset] = (0, hooks_1.useState)(0);
@@ -394,7 +400,7 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
394
400
  }
395
401
  hasDraggedRef.current = false;
396
402
  setIsPlaying(false);
397
- setIsDragging(true);
403
+ setDragging(true);
398
404
  // a previous drag's mouseup may never have arrived (e.g. a native image drag hijacked it)
399
405
  // that would leave dragOffset stuck from that aborted drag
400
406
  // reset it so this drag always starts clean, not stacked on stale movement
@@ -407,7 +413,7 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
407
413
  }
408
414
  };
409
415
  const handleDragMove = (clientX) => {
410
- if (!isDragging || !touchDragging)
416
+ if (!isDraggingRef.current || !touchDragging)
411
417
  return;
412
418
  currentXRef.current = clientX;
413
419
  const diff = clientX - startXRef.current;
@@ -420,7 +426,7 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
420
426
  setDragOffset(diff);
421
427
  };
422
428
  const handleDragEnd = () => {
423
- if (!isDragging || !touchDragging)
429
+ if (!isDraggingRef.current || !touchDragging)
424
430
  return;
425
431
  const diff = currentXRef.current - startXRef.current;
426
432
  const threshold = getNavigationThreshold();
@@ -434,7 +440,7 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
434
440
  goToNext();
435
441
  }
436
442
  }
437
- setIsDragging(false);
443
+ setDragging(false);
438
444
  setDragOffset(0);
439
445
  dragBaseTranslatePxRef.current = null;
440
446
  // Resume autoplay if it was playing
@@ -456,20 +462,35 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
456
462
  }, autoPlayInterval);
457
463
  }
458
464
  };
459
- const handleMouseMove = (event) => {
460
- handleDragMove(event.clientX);
465
+ // document listeners are bound once per drag, so they call the latest handlers through refs
466
+ const dragMoveRef = (0, hooks_1.useRef)(handleDragMove);
467
+ const dragEndRef = (0, hooks_1.useRef)(handleDragEnd);
468
+ dragMoveRef.current = handleDragMove;
469
+ dragEndRef.current = handleDragEnd;
470
+ const removeMouseListenersRef = (0, hooks_1.useRef)(null);
471
+ const handleMouseDown = (event) => {
472
+ // only the primary (left) button starts a drag; right/middle clicks keep their default behaviour
473
+ if (event.button !== 0)
474
+ return;
475
+ event.preventDefault();
476
+ handleDragStart(event.clientX);
477
+ // bound here rather than in an effect - a tap's synthetic mouseup fires before effects run
478
+ const onMouseMove = (e) => dragMoveRef.current(e.clientX);
479
+ const onMouseUp = () => {
480
+ removeMouseListenersRef.current?.();
481
+ dragEndRef.current();
482
+ };
483
+ removeMouseListenersRef.current?.();
484
+ removeMouseListenersRef.current = () => {
485
+ document.removeEventListener('mousemove', onMouseMove);
486
+ document.removeEventListener('mouseup', onMouseUp);
487
+ removeMouseListenersRef.current = null;
488
+ };
489
+ document.addEventListener('mousemove', onMouseMove);
490
+ document.addEventListener('mouseup', onMouseUp);
461
491
  };
462
- // Add/remove mouse event listeners
463
- (0, hooks_1.useEffect)(() => {
464
- if (isDragging && touchDragging) {
465
- document.addEventListener('mousemove', handleMouseMove);
466
- document.addEventListener('mouseup', handleDragEnd);
467
- return () => {
468
- document.removeEventListener('mousemove', handleMouseMove);
469
- document.removeEventListener('mouseup', handleDragEnd);
470
- };
471
- }
472
- }, [isDragging, touchDragging]);
492
+ // clean up if unmounted mid-drag
493
+ (0, hooks_1.useEffect)(() => () => removeMouseListenersRef.current?.(), []);
473
494
  // Pause autoplay on hover or focus
474
495
  const handleMouseEnter = () => {
475
496
  if (isPlaying && intervalRef.current && !isDragging) {
@@ -651,7 +672,7 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
651
672
  // @ts-ignore - touch events
652
673
  onTouchMove: touchDragging
653
674
  ? (event) => {
654
- if (isDragging) {
675
+ if (isDraggingRef.current) {
655
676
  event.preventDefault(); // Prevent scrolling while dragging
656
677
  }
657
678
  const touch = event.touches[0];
@@ -659,16 +680,9 @@ exports.Slideshow = (0, mobx_react_lite_1.observer)((properties) => {
659
680
  }
660
681
  : undefined, onTouchEnd: touchDragging ? handleDragEnd : undefined,
661
682
  // mouse events for desktop dragging
662
- // move/up are handled by the document listeners below, not here
663
- // that keeps the drag tracking even if the cursor leaves the track
664
- // and avoids firing handleDragEnd twice on a release over the track
683
+ // move/up are bound on document in handleMouseDown so the drag keeps tracking outside the track
665
684
  // @ts-ignore - mouse events
666
- onMouseDown: touchDragging
667
- ? (event) => {
668
- event.preventDefault();
669
- handleDragStart(event.clientX);
670
- }
671
- : undefined, children: normalizedSlides.map((slide, index) => {
685
+ onMouseDown: touchDragging ? handleMouseDown : undefined, children: normalizedSlides.map((slide, index) => {
672
686
  const isVisible = index >= currentIndex && index < currentIndex + computedSlidesToShow;
673
687
  const hasClickHandler = !!slide.onClick;
674
688
  const hasContent = !!slide.content;
@@ -73,7 +73,7 @@ exports.TabSelection = (0, mobx_react_lite_1.observer)((properties) => {
73
73
  },
74
74
  tabList: {
75
75
  attributes: {
76
- 'aria-label': 'Result tabs',
76
+ 'aria-label': 'Search result tabs',
77
77
  },
78
78
  },
79
79
  };
@@ -86,6 +86,8 @@ exports.TabSelection = (0, mobx_react_lite_1.observer)((properties) => {
86
86
  const disabled = !enableEmptyTabs && !active && resultCount === 0;
87
87
  const label = tab.label || tab.id;
88
88
  const displayedCount = showResultCount ? resultCount : undefined;
89
+ // whitespace is not permitted in an id and would split the aria-controls id reference list
90
+ const controllerId = tab.controller.id.replace(/\s+/g, '-');
89
91
  const defaultTabLang = {
90
92
  tabButton: {
91
93
  value: label,
@@ -99,8 +101,8 @@ exports.TabSelection = (0, mobx_react_lite_1.observer)((properties) => {
99
101
  return ((0, jsx_runtime_1.jsxs)(Button_1.Button, { ...subProps.button, internalClassName: (0, classnames_1.default)('ss__tab-selection__button', `ss__tab-selection__button--${tab.id}`, {
100
102
  'ss__tab-selection__button--active': active,
101
103
  }), disabled: disabled,
102
- // @ts-ignore - role and aria-selected are valid props for Button, but not defined in ButtonProps
103
- role: "tab", "aria-selected": active, ...tabLang.tabButton?.attributes, onClick: (e) => {
104
+ // @ts-ignore - valid props for Button, but not defined in ButtonProps
105
+ id: `ss__tab--${controllerId}`, role: "tab", "aria-selected": active, "aria-controls": `ss__tabpanel--${controllerId}`, ...tabLang.tabButton?.attributes, onClick: (e) => {
104
106
  onTabClick && onTabClick(e, tab);
105
107
  tabManager.setActive(tab.id);
106
108
  }, children: [(0, jsx_runtime_1.jsx)("span", { className: "ss__tab-selection__button__label", ...tabLang.tabButton?.value }), typeof displayedCount == 'number' ? (0, jsx_runtime_1.jsxs)("span", { className: "ss__tab-selection__button__count", children: ["(", displayedCount, ")"] }) : null] }, tab.id));
@@ -427,6 +427,7 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
427
427
  // results logic
428
428
  checkAndSetShowResults();
429
429
  const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
430
+ const tabControllerId = tabManager?.active?.controller.id;
430
431
  //initialize lang
431
432
  const defaultLang = {
432
433
  contentTitle: {
@@ -579,7 +580,13 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
579
580
  }
580
581
  const topRowCounter = { value: 0 };
581
582
  /***************************************/
582
- return visible && layout?.length ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete', { 'ss__autocomplete--terms': props.layout === 'terms' }, { 'ss__autocomplete--mobile': props.layout === 'mobile' }, { 'ss__autocomplete--desktop': props.layout === 'desktop' }, { 'ss__autocomplete--tablet': props.layout === 'tablet' }, className, internalClassName), onClick: (e) => e.stopPropagation(), ref: (e) => (0, hooks_2.useA11y)(e, 0, false, onReset), children: [(0, jsx_runtime_1.jsx)("span", { role: 'link', ref: (e) => (0, hooks_2.useA11y)(e), onClick: () => props.onReset && props.onReset(), className: "ss__autocomplete__close-button", style: { position: 'absolute', top: '-10000000px', left: '-1000000px' }, ...mergedLang.closeButton?.all }), layout?.map((module) => {
583
+ return visible && layout?.length ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete', { 'ss__autocomplete--terms': props.layout === 'terms' }, { 'ss__autocomplete--mobile': props.layout === 'mobile' }, { 'ss__autocomplete--desktop': props.layout === 'desktop' }, { 'ss__autocomplete--tablet': props.layout === 'tablet' }, className, internalClassName), onClick: (e) => e.stopPropagation(), ref: (e) => (0, hooks_2.useA11y)(e, 0, false, onReset), ...(tabManager?.active
584
+ ? {
585
+ id: `ss__tabpanel--${tabControllerId}`,
586
+ role: 'tabpanel',
587
+ 'aria-labelledby': `ss__tab--${tabControllerId}`,
588
+ }
589
+ : {}), children: [(0, jsx_runtime_1.jsx)("span", { role: 'link', ref: (e) => (0, hooks_2.useA11y)(e), onClick: () => props.onReset && props.onReset(), className: "ss__autocomplete__close-button", style: { position: 'absolute', top: '-10000000px', left: '-1000000px' }, ...mergedLang.closeButton?.all }), layout?.map((module) => {
583
590
  return findModule(module, topRowCounter);
584
591
  })] }) })) : null;
585
592
  });