@athoscommerce/snap-preact 1.6.0 → 1.7.1-beta.121

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 (819) hide show
  1. package/dist/cjs/components/src/components/Atoms/BadgeImage/BadgeImage.d.ts +2 -1
  2. package/dist/cjs/components/src/components/Atoms/BadgeImage/BadgeImage.d.ts.map +1 -1
  3. package/dist/cjs/components/src/components/Atoms/BadgeImage/BadgeImage.js +4 -8
  4. package/dist/cjs/components/src/components/Atoms/BadgePill/BadgePill.d.ts +2 -1
  5. package/dist/cjs/components/src/components/Atoms/BadgePill/BadgePill.d.ts.map +1 -1
  6. package/dist/cjs/components/src/components/Atoms/BadgePill/BadgePill.js +4 -8
  7. package/dist/cjs/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.d.ts +2 -1
  8. package/dist/cjs/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.d.ts.map +1 -1
  9. package/dist/cjs/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.js +4 -8
  10. package/dist/cjs/components/src/components/Atoms/BadgeText/BadgeText.d.ts +2 -1
  11. package/dist/cjs/components/src/components/Atoms/BadgeText/BadgeText.d.ts.map +1 -1
  12. package/dist/cjs/components/src/components/Atoms/BadgeText/BadgeText.js +4 -8
  13. package/dist/cjs/components/src/components/Atoms/Banner/Banner.d.ts.map +1 -1
  14. package/dist/cjs/components/src/components/Atoms/Banner/Banner.js +6 -9
  15. package/dist/cjs/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.d.ts +2 -1
  16. package/dist/cjs/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  17. package/dist/cjs/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.js +4 -8
  18. package/dist/cjs/components/src/components/Atoms/Button/Button.d.ts +4 -4
  19. package/dist/cjs/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  20. package/dist/cjs/components/src/components/Atoms/Button/Button.js +8 -9
  21. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  22. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  23. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +85 -0
  24. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  25. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  26. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +17 -0
  27. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -2
  28. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  29. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +54 -21
  30. package/dist/cjs/components/src/components/Atoms/FormattedNumber/FormattedNumber.d.ts +2 -1
  31. package/dist/cjs/components/src/components/Atoms/FormattedNumber/FormattedNumber.d.ts.map +1 -1
  32. package/dist/cjs/components/src/components/Atoms/FormattedNumber/FormattedNumber.js +4 -8
  33. package/dist/cjs/components/src/components/Atoms/Icon/Icon.d.ts +3 -2
  34. package/dist/cjs/components/src/components/Atoms/Icon/Icon.d.ts.map +1 -1
  35. package/dist/cjs/components/src/components/Atoms/Icon/Icon.js +17 -9
  36. package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  37. package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  38. package/dist/cjs/components/src/components/Atoms/Icon/paths.js +21 -0
  39. package/dist/cjs/components/src/components/Atoms/Image/Image.d.ts +2 -1
  40. package/dist/cjs/components/src/components/Atoms/Image/Image.d.ts.map +1 -1
  41. package/dist/cjs/components/src/components/Atoms/Image/Image.js +4 -8
  42. package/dist/cjs/components/src/components/Atoms/InlineBanner/InlineBanner.d.ts.map +1 -1
  43. package/dist/cjs/components/src/components/Atoms/InlineBanner/InlineBanner.js +4 -8
  44. package/dist/cjs/components/src/components/Atoms/LoadingBar/LoadingBar.d.ts +2 -1
  45. package/dist/cjs/components/src/components/Atoms/LoadingBar/LoadingBar.d.ts.map +1 -1
  46. package/dist/cjs/components/src/components/Atoms/LoadingBar/LoadingBar.js +4 -8
  47. package/dist/cjs/components/src/components/Atoms/Overlay/Overlay.d.ts +2 -1
  48. package/dist/cjs/components/src/components/Atoms/Overlay/Overlay.d.ts.map +1 -1
  49. package/dist/cjs/components/src/components/Atoms/Overlay/Overlay.js +4 -8
  50. package/dist/cjs/components/src/components/Atoms/PaginationInfo/PaginationInfo.d.ts +2 -1
  51. package/dist/cjs/components/src/components/Atoms/PaginationInfo/PaginationInfo.d.ts.map +1 -1
  52. package/dist/cjs/components/src/components/Atoms/PaginationInfo/PaginationInfo.js +8 -11
  53. package/dist/cjs/components/src/components/Atoms/Price/Price.d.ts +2 -1
  54. package/dist/cjs/components/src/components/Atoms/Price/Price.d.ts.map +1 -1
  55. package/dist/cjs/components/src/components/Atoms/Price/Price.js +4 -8
  56. package/dist/cjs/components/src/components/Atoms/SearchHeader/SearchHeader.d.ts +2 -1
  57. package/dist/cjs/components/src/components/Atoms/SearchHeader/SearchHeader.d.ts.map +1 -1
  58. package/dist/cjs/components/src/components/Atoms/SearchHeader/SearchHeader.js +6 -9
  59. package/dist/cjs/components/src/components/Atoms/Skeleton/Skeleton.d.ts +2 -1
  60. package/dist/cjs/components/src/components/Atoms/Skeleton/Skeleton.d.ts.map +1 -1
  61. package/dist/cjs/components/src/components/Atoms/Skeleton/Skeleton.js +4 -8
  62. package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.d.ts +2 -1
  63. package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.d.ts.map +1 -1
  64. package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +15 -15
  65. package/dist/cjs/components/src/components/Molecules/Carousel/Carousel.d.ts +2 -2
  66. package/dist/cjs/components/src/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  67. package/dist/cjs/components/src/components/Molecules/Carousel/Carousel.js +42 -38
  68. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  69. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  70. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +187 -0
  71. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  72. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  73. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +17 -0
  74. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  75. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  76. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +154 -0
  77. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  78. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  79. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
  80. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +21 -0
  81. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  82. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +211 -0
  83. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  84. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  85. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +17 -0
  86. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +16 -0
  87. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  88. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +255 -0
  89. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  90. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  91. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +17 -0
  92. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  93. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  94. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +143 -0
  95. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  96. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  97. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
  98. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  99. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  100. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +487 -0
  101. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  102. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  103. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
  104. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  105. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  106. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +200 -0
  107. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  108. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  109. package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +17 -0
  110. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  111. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  112. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +123 -0
  113. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  114. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  115. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +17 -0
  116. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  117. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  118. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +99 -0
  119. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  120. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  121. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +17 -0
  122. package/dist/cjs/components/src/components/Molecules/Checkbox/Checkbox.d.ts +2 -1
  123. package/dist/cjs/components/src/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
  124. package/dist/cjs/components/src/components/Molecules/Checkbox/Checkbox.js +6 -9
  125. package/dist/cjs/components/src/components/Molecules/ErrorHandler/ErrorHandler.d.ts +2 -1
  126. package/dist/cjs/components/src/components/Molecules/ErrorHandler/ErrorHandler.d.ts.map +1 -1
  127. package/dist/cjs/components/src/components/Molecules/ErrorHandler/ErrorHandler.js +6 -9
  128. package/dist/cjs/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
  129. package/dist/cjs/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  130. package/dist/cjs/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.js +4 -8
  131. package/dist/cjs/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
  132. package/dist/cjs/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  133. package/dist/cjs/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +4 -8
  134. package/dist/cjs/components/src/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
  135. package/dist/cjs/components/src/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  136. package/dist/cjs/components/src/components/Molecules/FacetListOptions/FacetListOptions.js +4 -8
  137. package/dist/cjs/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
  138. package/dist/cjs/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  139. package/dist/cjs/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +4 -8
  140. package/dist/cjs/components/src/components/Molecules/FacetSlider/FacetSlider.d.ts +2 -1
  141. package/dist/cjs/components/src/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
  142. package/dist/cjs/components/src/components/Molecules/FacetSlider/FacetSlider.js +13 -16
  143. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts +2 -1
  144. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  145. package/dist/cjs/components/src/components/Molecules/Filter/Filter.js +7 -10
  146. package/dist/cjs/components/src/components/Molecules/Grid/Grid.d.ts +2 -1
  147. package/dist/cjs/components/src/components/Molecules/Grid/Grid.d.ts.map +1 -1
  148. package/dist/cjs/components/src/components/Molecules/Grid/Grid.js +4 -8
  149. package/dist/cjs/components/src/components/Molecules/LayoutSelector/LayoutSelector.d.ts +2 -1
  150. package/dist/cjs/components/src/components/Molecules/LayoutSelector/LayoutSelector.d.ts.map +1 -1
  151. package/dist/cjs/components/src/components/Molecules/LayoutSelector/LayoutSelector.js +4 -8
  152. package/dist/cjs/components/src/components/Molecules/List/List.d.ts +2 -1
  153. package/dist/cjs/components/src/components/Molecules/List/List.d.ts.map +1 -1
  154. package/dist/cjs/components/src/components/Molecules/List/List.js +6 -9
  155. package/dist/cjs/components/src/components/Molecules/LoadMore/LoadMore.d.ts +2 -1
  156. package/dist/cjs/components/src/components/Molecules/LoadMore/LoadMore.d.ts.map +1 -1
  157. package/dist/cjs/components/src/components/Molecules/LoadMore/LoadMore.js +8 -11
  158. package/dist/cjs/components/src/components/Molecules/Modal/Modal.d.ts +2 -2
  159. package/dist/cjs/components/src/components/Molecules/Modal/Modal.d.ts.map +1 -1
  160. package/dist/cjs/components/src/components/Molecules/Modal/Modal.js +4 -8
  161. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  162. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  163. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +21 -21
  164. package/dist/cjs/components/src/components/Molecules/OverlayResult/OverlayResult.d.ts +48 -0
  165. package/dist/cjs/components/src/components/Molecules/OverlayResult/OverlayResult.d.ts.map +1 -0
  166. package/dist/cjs/components/src/components/Molecules/OverlayResult/OverlayResult.js +241 -0
  167. package/dist/cjs/components/src/components/Molecules/OverlayResult/index.d.ts +2 -0
  168. package/dist/cjs/components/src/components/Molecules/OverlayResult/index.d.ts.map +1 -0
  169. package/dist/cjs/components/src/components/Molecules/OverlayResult/index.js +17 -0
  170. package/dist/cjs/components/src/components/Molecules/Pagination/Pagination.d.ts +2 -1
  171. package/dist/cjs/components/src/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
  172. package/dist/cjs/components/src/components/Molecules/Pagination/Pagination.js +8 -11
  173. package/dist/cjs/components/src/components/Molecules/PerPage/PerPage.d.ts +2 -1
  174. package/dist/cjs/components/src/components/Molecules/PerPage/PerPage.d.ts.map +1 -1
  175. package/dist/cjs/components/src/components/Molecules/PerPage/PerPage.js +8 -11
  176. package/dist/cjs/components/src/components/Molecules/Radio/Radio.d.ts +2 -1
  177. package/dist/cjs/components/src/components/Molecules/Radio/Radio.d.ts.map +1 -1
  178. package/dist/cjs/components/src/components/Molecules/Radio/Radio.js +6 -9
  179. package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.d.ts +2 -1
  180. package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.d.ts.map +1 -1
  181. package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.js +6 -9
  182. package/dist/cjs/components/src/components/Molecules/Rating/Rating.d.ts +2 -1
  183. package/dist/cjs/components/src/components/Molecules/Rating/Rating.d.ts.map +1 -1
  184. package/dist/cjs/components/src/components/Molecules/Rating/Rating.js +4 -8
  185. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts +7 -5
  186. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  187. package/dist/cjs/components/src/components/Molecules/Result/Result.js +18 -15
  188. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  189. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  190. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +22 -9
  191. package/dist/cjs/components/src/components/Molecules/Select/Select.d.ts +2 -1
  192. package/dist/cjs/components/src/components/Molecules/Select/Select.d.ts.map +1 -1
  193. package/dist/cjs/components/src/components/Molecules/Select/Select.js +6 -9
  194. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts +2 -2
  195. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  196. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +25 -34
  197. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.d.ts +2 -1
  198. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  199. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +11 -10
  200. package/dist/cjs/components/src/components/Molecules/SortBy/SortBy.d.ts +2 -1
  201. package/dist/cjs/components/src/components/Molecules/SortBy/SortBy.d.ts.map +1 -1
  202. package/dist/cjs/components/src/components/Molecules/SortBy/SortBy.js +7 -10
  203. package/dist/cjs/components/src/components/Molecules/Swatches/Swatches.d.ts +2 -1
  204. package/dist/cjs/components/src/components/Molecules/Swatches/Swatches.d.ts.map +1 -1
  205. package/dist/cjs/components/src/components/Molecules/Swatches/Swatches.js +4 -8
  206. package/dist/cjs/components/src/components/Molecules/Terms/Terms.d.ts +2 -1
  207. package/dist/cjs/components/src/components/Molecules/Terms/Terms.d.ts.map +1 -1
  208. package/dist/cjs/components/src/components/Molecules/Terms/Terms.js +5 -8
  209. package/dist/cjs/components/src/components/Molecules/VariantSelection/VariantSelection.d.ts +2 -1
  210. package/dist/cjs/components/src/components/Molecules/VariantSelection/VariantSelection.d.ts.map +1 -1
  211. package/dist/cjs/components/src/components/Molecules/VariantSelection/VariantSelection.js +4 -8
  212. package/dist/cjs/components/src/components/Organisms/Autocomplete/Autocomplete.d.ts +2 -1
  213. package/dist/cjs/components/src/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  214. package/dist/cjs/components/src/components/Organisms/Autocomplete/Autocomplete.js +20 -25
  215. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -2
  216. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  217. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +14 -6
  218. package/dist/cjs/components/src/components/Organisms/BranchOverride/BranchOverride.d.ts +2 -1
  219. package/dist/cjs/components/src/components/Organisms/BranchOverride/BranchOverride.d.ts.map +1 -1
  220. package/dist/cjs/components/src/components/Organisms/BranchOverride/BranchOverride.js +4 -8
  221. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +30 -0
  222. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  223. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +1030 -0
  224. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  225. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  226. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.js +1186 -0
  227. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  228. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  229. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +104 -0
  230. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  231. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  232. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +98 -0
  233. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  234. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  235. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +116 -0
  236. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts +2 -0
  237. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  238. package/dist/cjs/components/src/components/Organisms/Chat/index.js +17 -0
  239. package/dist/cjs/components/src/components/Organisms/Facet/Facet.d.ts +2 -1
  240. package/dist/cjs/components/src/components/Organisms/Facet/Facet.d.ts.map +1 -1
  241. package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +16 -18
  242. package/dist/cjs/components/src/components/Organisms/Facets/Facets.d.ts +2 -1
  243. package/dist/cjs/components/src/components/Organisms/Facets/Facets.d.ts.map +1 -1
  244. package/dist/cjs/components/src/components/Organisms/Facets/Facets.js +5 -8
  245. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts +2 -1
  246. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts.map +1 -1
  247. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +7 -9
  248. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -1
  249. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  250. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.js +6 -9
  251. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts +2 -1
  252. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts.map +1 -1
  253. package/dist/cjs/components/src/components/Organisms/MobileSidebar/MobileSidebar.js +4 -8
  254. package/dist/cjs/components/src/components/Organisms/NoResults/NoResults.d.ts +2 -1
  255. package/dist/cjs/components/src/components/Organisms/NoResults/NoResults.d.ts.map +1 -1
  256. package/dist/cjs/components/src/components/Organisms/NoResults/NoResults.js +25 -26
  257. package/dist/cjs/components/src/components/Organisms/Results/Results.d.ts +4 -2
  258. package/dist/cjs/components/src/components/Organisms/Results/Results.d.ts.map +1 -1
  259. package/dist/cjs/components/src/components/Organisms/Results/Results.js +19 -12
  260. package/dist/cjs/components/src/components/Organisms/Sidebar/Sidebar.d.ts +2 -1
  261. package/dist/cjs/components/src/components/Organisms/Sidebar/Sidebar.d.ts.map +1 -1
  262. package/dist/cjs/components/src/components/Organisms/Sidebar/Sidebar.js +6 -9
  263. package/dist/cjs/components/src/components/Organisms/TermsList/TermsList.d.ts +2 -1
  264. package/dist/cjs/components/src/components/Organisms/TermsList/TermsList.d.ts.map +1 -1
  265. package/dist/cjs/components/src/components/Organisms/TermsList/TermsList.js +4 -8
  266. package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.d.ts +2 -1
  267. package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.d.ts.map +1 -1
  268. package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.js +4 -8
  269. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +5 -4
  270. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  271. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -1
  272. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +5 -4
  273. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  274. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -1
  275. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +5 -4
  276. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  277. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +3 -1
  278. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  279. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  280. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +55 -0
  281. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts +2 -0
  282. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  283. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  284. package/dist/cjs/components/src/components/Templates/Recommendation/Recommendation.d.ts +2 -1
  285. package/dist/cjs/components/src/components/Templates/Recommendation/Recommendation.d.ts.map +1 -1
  286. package/dist/cjs/components/src/components/Templates/Recommendation/Recommendation.js +17 -7
  287. package/dist/cjs/components/src/components/Templates/RecommendationBundle/RecommendationBundle.d.ts +2 -1
  288. package/dist/cjs/components/src/components/Templates/RecommendationBundle/RecommendationBundle.d.ts.map +1 -1
  289. package/dist/cjs/components/src/components/Templates/RecommendationBundle/RecommendationBundle.js +32 -14
  290. package/dist/cjs/components/src/components/Templates/RecommendationBundleEasyAdd/RecommendationBundleEasyAdd.d.ts +1 -1
  291. package/dist/cjs/components/src/components/Templates/RecommendationBundleEasyAdd/RecommendationBundleEasyAdd.d.ts.map +1 -1
  292. package/dist/cjs/components/src/components/Templates/RecommendationBundleList/RecommendationBundleList.d.ts +1 -1
  293. package/dist/cjs/components/src/components/Templates/RecommendationBundleList/RecommendationBundleList.d.ts.map +1 -1
  294. package/dist/cjs/components/src/components/Templates/RecommendationBundleVertical/RecommendationBundleVertical.d.ts +1 -1
  295. package/dist/cjs/components/src/components/Templates/RecommendationBundleVertical/RecommendationBundleVertical.d.ts.map +1 -1
  296. package/dist/cjs/components/src/components/Templates/RecommendationEmail/RecommendationEmail.d.ts +2 -1
  297. package/dist/cjs/components/src/components/Templates/RecommendationEmail/RecommendationEmail.d.ts.map +1 -1
  298. package/dist/cjs/components/src/components/Templates/RecommendationEmail/RecommendationEmail.js +16 -5
  299. package/dist/cjs/components/src/components/Templates/RecommendationGrid/RecommendationGrid.d.ts +2 -1
  300. package/dist/cjs/components/src/components/Templates/RecommendationGrid/RecommendationGrid.d.ts.map +1 -1
  301. package/dist/cjs/components/src/components/Templates/RecommendationGrid/RecommendationGrid.js +15 -5
  302. package/dist/cjs/components/src/components/Templates/Search/Search.d.ts +2 -1
  303. package/dist/cjs/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  304. package/dist/cjs/components/src/components/Templates/Search/Search.js +2 -4
  305. package/dist/cjs/components/src/components/Templates/SearchCollapsible/SearchCollapsible.d.ts +1 -1
  306. package/dist/cjs/components/src/components/Templates/SearchCollapsible/SearchCollapsible.d.ts.map +1 -1
  307. package/dist/cjs/components/src/components/Templates/SearchHorizontal/SearchHorizontal.d.ts +1 -1
  308. package/dist/cjs/components/src/components/Templates/SearchHorizontal/SearchHorizontal.d.ts.map +1 -1
  309. package/dist/cjs/components/src/hooks/createRecommendationTemplate.d.ts.map +1 -1
  310. package/dist/cjs/components/src/hooks/createRecommendationTemplate.js +17 -13
  311. package/dist/cjs/components/src/hooks/index.d.ts +1 -0
  312. package/dist/cjs/components/src/hooks/index.d.ts.map +1 -1
  313. package/dist/cjs/components/src/hooks/index.js +1 -0
  314. package/dist/cjs/components/src/hooks/useComponent.d.ts +5 -1
  315. package/dist/cjs/components/src/hooks/useComponent.d.ts.map +1 -1
  316. package/dist/cjs/components/src/hooks/useComponent.js +42 -4
  317. package/dist/cjs/components/src/hooks/useCustomComponentOverride.d.ts +12 -0
  318. package/dist/cjs/components/src/hooks/useCustomComponentOverride.d.ts.map +1 -0
  319. package/dist/cjs/components/src/hooks/useCustomComponentOverride.js +31 -0
  320. package/dist/cjs/components/src/hooks/useLayoutOptions.d.ts.map +1 -1
  321. package/dist/cjs/components/src/hooks/useLayoutOptions.js +5 -0
  322. package/dist/cjs/components/src/index.d.ts +23 -1
  323. package/dist/cjs/components/src/index.d.ts.map +1 -1
  324. package/dist/cjs/components/src/index.js +26 -2
  325. package/dist/cjs/components/src/providers/theme.d.ts +1 -1
  326. package/dist/cjs/components/src/providers/theme.d.ts.map +1 -1
  327. package/dist/cjs/components/src/providers/themeComponents.d.ts +78 -2
  328. package/dist/cjs/components/src/providers/themeComponents.d.ts.map +1 -1
  329. package/dist/cjs/components/src/providers/themeComponents.js +75 -0
  330. package/dist/cjs/components/src/providers/withTracking.d.ts +2 -2
  331. package/dist/cjs/components/src/providers/withTracking.d.ts.map +1 -1
  332. package/dist/cjs/components/src/setupTests.js +17 -0
  333. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts +4 -0
  334. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  335. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  336. package/dist/cjs/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  337. package/dist/cjs/components/src/themes/base/components/templates/index.js +5 -4
  338. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  339. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  340. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  341. package/dist/cjs/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  342. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +5 -4
  343. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteFixed.js +4 -4
  344. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteModal.js +4 -4
  345. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteShared.js +3 -3
  346. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteSlideout.js +4 -4
  347. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  348. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  349. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  350. package/dist/cjs/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  351. package/dist/cjs/components/src/themes/pike/components/templates/index.js +5 -4
  352. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  353. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  354. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  355. package/dist/cjs/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  356. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +5 -4
  357. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  358. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  359. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  360. package/dist/cjs/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  361. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +5 -4
  362. package/dist/cjs/components/src/themes/themeComponents/autocompleteFixed.js +1 -1
  363. package/dist/cjs/components/src/themes/themeComponents/autocompleteModal.js +1 -1
  364. package/dist/cjs/components/src/themes/themeComponents/autocompleteSlideout.js +1 -1
  365. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts +4 -0
  366. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  367. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  368. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
  369. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  370. package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
  371. package/dist/cjs/components/src/utilities/mergeProps.d.ts.map +1 -1
  372. package/dist/cjs/components/src/utilities/mergeProps.js +2 -2
  373. package/dist/cjs/components/src/utilities/snapify.d.ts +3 -2
  374. package/dist/cjs/components/src/utilities/snapify.d.ts.map +1 -1
  375. package/dist/cjs/components/src/utilities/snapify.js +48 -0
  376. package/dist/cjs/src/Snap.d.ts +2 -1
  377. package/dist/cjs/src/Snap.d.ts.map +1 -1
  378. package/dist/cjs/src/Snap.js +134 -24
  379. package/dist/cjs/src/Templates/SnapTemplates.d.ts +2 -1
  380. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  381. package/dist/cjs/src/Templates/SnapTemplates.js +67 -5
  382. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts +7 -4
  383. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  384. package/dist/cjs/src/Templates/Stores/LibraryStore.js +48 -67
  385. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +21 -70
  386. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  387. package/dist/cjs/src/Templates/Stores/TemplateStore.js +2 -1
  388. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts +1 -1
  389. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  390. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  391. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  392. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  393. package/dist/cjs/src/Templates/Stores/library/components/OverlayResult.d.ts +2 -0
  394. package/dist/cjs/src/Templates/Stores/library/components/OverlayResult.d.ts.map +1 -0
  395. package/dist/cjs/src/Templates/Stores/library/components/OverlayResult.js +5 -0
  396. package/dist/cjs/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  397. package/dist/cjs/src/Templates/Stores/library/languages/es.js +5 -0
  398. package/dist/cjs/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  399. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +5 -0
  400. package/dist/cjs/src/Templates/index.d.ts +1 -1
  401. package/dist/cjs/src/Templates/index.d.ts.map +1 -1
  402. package/dist/cjs/src/create/createChatController.d.ts +5 -0
  403. package/dist/cjs/src/create/createChatController.d.ts.map +1 -0
  404. package/dist/cjs/src/create/createChatController.js +43 -0
  405. package/dist/cjs/src/setupEvents.d.ts +13 -0
  406. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  407. package/dist/cjs/src/setupEvents.js +87 -0
  408. package/dist/cjs/src/types.d.ts +15 -3
  409. package/dist/cjs/src/types.d.ts.map +1 -1
  410. package/dist/esm/components/src/components/Atoms/BadgeImage/BadgeImage.d.ts +2 -1
  411. package/dist/esm/components/src/components/Atoms/BadgeImage/BadgeImage.d.ts.map +1 -1
  412. package/dist/esm/components/src/components/Atoms/BadgeImage/BadgeImage.js +6 -9
  413. package/dist/esm/components/src/components/Atoms/BadgePill/BadgePill.d.ts +2 -1
  414. package/dist/esm/components/src/components/Atoms/BadgePill/BadgePill.d.ts.map +1 -1
  415. package/dist/esm/components/src/components/Atoms/BadgePill/BadgePill.js +6 -9
  416. package/dist/esm/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.d.ts +2 -1
  417. package/dist/esm/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.d.ts.map +1 -1
  418. package/dist/esm/components/src/components/Atoms/BadgeRectangle/BadgeRectangle.js +6 -9
  419. package/dist/esm/components/src/components/Atoms/BadgeText/BadgeText.d.ts +2 -1
  420. package/dist/esm/components/src/components/Atoms/BadgeText/BadgeText.d.ts.map +1 -1
  421. package/dist/esm/components/src/components/Atoms/BadgeText/BadgeText.js +6 -9
  422. package/dist/esm/components/src/components/Atoms/Banner/Banner.d.ts.map +1 -1
  423. package/dist/esm/components/src/components/Atoms/Banner/Banner.js +6 -9
  424. package/dist/esm/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.d.ts +2 -1
  425. package/dist/esm/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  426. package/dist/esm/components/src/components/Atoms/Breadcrumbs/Breadcrumbs.js +6 -9
  427. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +4 -4
  428. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  429. package/dist/esm/components/src/components/Atoms/Button/Button.js +10 -11
  430. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  431. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  432. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +67 -0
  433. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  434. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  435. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  436. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +6 -2
  437. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  438. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +59 -20
  439. package/dist/esm/components/src/components/Atoms/FormattedNumber/FormattedNumber.d.ts +2 -1
  440. package/dist/esm/components/src/components/Atoms/FormattedNumber/FormattedNumber.d.ts.map +1 -1
  441. package/dist/esm/components/src/components/Atoms/FormattedNumber/FormattedNumber.js +7 -10
  442. package/dist/esm/components/src/components/Atoms/Icon/Icon.d.ts +3 -2
  443. package/dist/esm/components/src/components/Atoms/Icon/Icon.d.ts.map +1 -1
  444. package/dist/esm/components/src/components/Atoms/Icon/Icon.js +23 -11
  445. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  446. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  447. package/dist/esm/components/src/components/Atoms/Icon/paths.js +21 -0
  448. package/dist/esm/components/src/components/Atoms/Image/Image.d.ts +2 -1
  449. package/dist/esm/components/src/components/Atoms/Image/Image.d.ts.map +1 -1
  450. package/dist/esm/components/src/components/Atoms/Image/Image.js +6 -9
  451. package/dist/esm/components/src/components/Atoms/InlineBanner/InlineBanner.d.ts.map +1 -1
  452. package/dist/esm/components/src/components/Atoms/InlineBanner/InlineBanner.js +6 -9
  453. package/dist/esm/components/src/components/Atoms/LoadingBar/LoadingBar.d.ts +2 -1
  454. package/dist/esm/components/src/components/Atoms/LoadingBar/LoadingBar.d.ts.map +1 -1
  455. package/dist/esm/components/src/components/Atoms/LoadingBar/LoadingBar.js +6 -9
  456. package/dist/esm/components/src/components/Atoms/Overlay/Overlay.d.ts +2 -1
  457. package/dist/esm/components/src/components/Atoms/Overlay/Overlay.d.ts.map +1 -1
  458. package/dist/esm/components/src/components/Atoms/Overlay/Overlay.js +6 -9
  459. package/dist/esm/components/src/components/Atoms/PaginationInfo/PaginationInfo.d.ts +2 -1
  460. package/dist/esm/components/src/components/Atoms/PaginationInfo/PaginationInfo.d.ts.map +1 -1
  461. package/dist/esm/components/src/components/Atoms/PaginationInfo/PaginationInfo.js +6 -9
  462. package/dist/esm/components/src/components/Atoms/Price/Price.d.ts +2 -1
  463. package/dist/esm/components/src/components/Atoms/Price/Price.d.ts.map +1 -1
  464. package/dist/esm/components/src/components/Atoms/Price/Price.js +7 -10
  465. package/dist/esm/components/src/components/Atoms/SearchHeader/SearchHeader.d.ts +2 -1
  466. package/dist/esm/components/src/components/Atoms/SearchHeader/SearchHeader.d.ts.map +1 -1
  467. package/dist/esm/components/src/components/Atoms/SearchHeader/SearchHeader.js +6 -9
  468. package/dist/esm/components/src/components/Atoms/Skeleton/Skeleton.d.ts +2 -1
  469. package/dist/esm/components/src/components/Atoms/Skeleton/Skeleton.d.ts.map +1 -1
  470. package/dist/esm/components/src/components/Atoms/Skeleton/Skeleton.js +6 -9
  471. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.d.ts +2 -1
  472. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.d.ts.map +1 -1
  473. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +14 -15
  474. package/dist/esm/components/src/components/Molecules/Carousel/Carousel.d.ts +2 -2
  475. package/dist/esm/components/src/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  476. package/dist/esm/components/src/components/Molecules/Carousel/Carousel.js +47 -43
  477. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  478. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  479. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +169 -0
  480. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  481. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  482. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  483. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  484. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  485. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +145 -0
  486. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  487. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  488. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  489. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +21 -0
  490. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  491. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +192 -0
  492. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  493. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  494. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  495. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +16 -0
  496. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  497. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +223 -0
  498. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  499. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  500. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  501. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  502. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  503. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +121 -0
  504. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  505. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  506. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  507. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  508. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  509. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +460 -0
  510. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  511. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  512. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  513. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  514. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  515. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +184 -0
  516. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  517. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  518. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  519. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  520. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  521. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +102 -0
  522. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  523. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  524. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  525. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  526. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  527. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +80 -0
  528. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  529. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  530. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  531. package/dist/esm/components/src/components/Molecules/Checkbox/Checkbox.d.ts +2 -1
  532. package/dist/esm/components/src/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
  533. package/dist/esm/components/src/components/Molecules/Checkbox/Checkbox.js +6 -9
  534. package/dist/esm/components/src/components/Molecules/ErrorHandler/ErrorHandler.d.ts +2 -1
  535. package/dist/esm/components/src/components/Molecules/ErrorHandler/ErrorHandler.d.ts.map +1 -1
  536. package/dist/esm/components/src/components/Molecules/ErrorHandler/ErrorHandler.js +6 -9
  537. package/dist/esm/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
  538. package/dist/esm/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  539. package/dist/esm/components/src/components/Molecules/FacetGridOptions/FacetGridOptions.js +6 -9
  540. package/dist/esm/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
  541. package/dist/esm/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  542. package/dist/esm/components/src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +6 -9
  543. package/dist/esm/components/src/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
  544. package/dist/esm/components/src/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  545. package/dist/esm/components/src/components/Molecules/FacetListOptions/FacetListOptions.js +6 -9
  546. package/dist/esm/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
  547. package/dist/esm/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  548. package/dist/esm/components/src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +6 -9
  549. package/dist/esm/components/src/components/Molecules/FacetSlider/FacetSlider.d.ts +2 -1
  550. package/dist/esm/components/src/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
  551. package/dist/esm/components/src/components/Molecules/FacetSlider/FacetSlider.js +6 -9
  552. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts +2 -1
  553. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  554. package/dist/esm/components/src/components/Molecules/Filter/Filter.js +6 -9
  555. package/dist/esm/components/src/components/Molecules/Grid/Grid.d.ts +2 -1
  556. package/dist/esm/components/src/components/Molecules/Grid/Grid.d.ts.map +1 -1
  557. package/dist/esm/components/src/components/Molecules/Grid/Grid.js +6 -9
  558. package/dist/esm/components/src/components/Molecules/LayoutSelector/LayoutSelector.d.ts +2 -1
  559. package/dist/esm/components/src/components/Molecules/LayoutSelector/LayoutSelector.d.ts.map +1 -1
  560. package/dist/esm/components/src/components/Molecules/LayoutSelector/LayoutSelector.js +6 -9
  561. package/dist/esm/components/src/components/Molecules/List/List.d.ts +2 -1
  562. package/dist/esm/components/src/components/Molecules/List/List.d.ts.map +1 -1
  563. package/dist/esm/components/src/components/Molecules/List/List.js +6 -9
  564. package/dist/esm/components/src/components/Molecules/LoadMore/LoadMore.d.ts +2 -1
  565. package/dist/esm/components/src/components/Molecules/LoadMore/LoadMore.d.ts.map +1 -1
  566. package/dist/esm/components/src/components/Molecules/LoadMore/LoadMore.js +6 -9
  567. package/dist/esm/components/src/components/Molecules/Modal/Modal.d.ts +2 -2
  568. package/dist/esm/components/src/components/Molecules/Modal/Modal.d.ts.map +1 -1
  569. package/dist/esm/components/src/components/Molecules/Modal/Modal.js +6 -9
  570. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  571. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  572. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +14 -15
  573. package/dist/esm/components/src/components/Molecules/OverlayResult/OverlayResult.d.ts +48 -0
  574. package/dist/esm/components/src/components/Molecules/OverlayResult/OverlayResult.d.ts.map +1 -0
  575. package/dist/esm/components/src/components/Molecules/OverlayResult/OverlayResult.js +260 -0
  576. package/dist/esm/components/src/components/Molecules/OverlayResult/index.d.ts +2 -0
  577. package/dist/esm/components/src/components/Molecules/OverlayResult/index.d.ts.map +1 -0
  578. package/dist/esm/components/src/components/Molecules/OverlayResult/index.js +1 -0
  579. package/dist/esm/components/src/components/Molecules/Pagination/Pagination.d.ts +2 -1
  580. package/dist/esm/components/src/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
  581. package/dist/esm/components/src/components/Molecules/Pagination/Pagination.js +6 -9
  582. package/dist/esm/components/src/components/Molecules/PerPage/PerPage.d.ts +2 -1
  583. package/dist/esm/components/src/components/Molecules/PerPage/PerPage.d.ts.map +1 -1
  584. package/dist/esm/components/src/components/Molecules/PerPage/PerPage.js +6 -9
  585. package/dist/esm/components/src/components/Molecules/Radio/Radio.d.ts +2 -1
  586. package/dist/esm/components/src/components/Molecules/Radio/Radio.d.ts.map +1 -1
  587. package/dist/esm/components/src/components/Molecules/Radio/Radio.js +6 -9
  588. package/dist/esm/components/src/components/Molecules/RadioList/RadioList.d.ts +2 -1
  589. package/dist/esm/components/src/components/Molecules/RadioList/RadioList.d.ts.map +1 -1
  590. package/dist/esm/components/src/components/Molecules/RadioList/RadioList.js +6 -9
  591. package/dist/esm/components/src/components/Molecules/Rating/Rating.d.ts +2 -1
  592. package/dist/esm/components/src/components/Molecules/Rating/Rating.d.ts.map +1 -1
  593. package/dist/esm/components/src/components/Molecules/Rating/Rating.js +6 -9
  594. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +7 -5
  595. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  596. package/dist/esm/components/src/components/Molecules/Result/Result.js +21 -16
  597. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  598. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  599. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +40 -10
  600. package/dist/esm/components/src/components/Molecules/Select/Select.d.ts +2 -1
  601. package/dist/esm/components/src/components/Molecules/Select/Select.d.ts.map +1 -1
  602. package/dist/esm/components/src/components/Molecules/Select/Select.js +6 -9
  603. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts +2 -2
  604. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  605. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +28 -36
  606. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts +2 -1
  607. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  608. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +12 -11
  609. package/dist/esm/components/src/components/Molecules/SortBy/SortBy.d.ts +2 -1
  610. package/dist/esm/components/src/components/Molecules/SortBy/SortBy.d.ts.map +1 -1
  611. package/dist/esm/components/src/components/Molecules/SortBy/SortBy.js +6 -9
  612. package/dist/esm/components/src/components/Molecules/Swatches/Swatches.d.ts +2 -1
  613. package/dist/esm/components/src/components/Molecules/Swatches/Swatches.d.ts.map +1 -1
  614. package/dist/esm/components/src/components/Molecules/Swatches/Swatches.js +6 -9
  615. package/dist/esm/components/src/components/Molecules/Terms/Terms.d.ts +2 -1
  616. package/dist/esm/components/src/components/Molecules/Terms/Terms.d.ts.map +1 -1
  617. package/dist/esm/components/src/components/Molecules/Terms/Terms.js +6 -9
  618. package/dist/esm/components/src/components/Molecules/VariantSelection/VariantSelection.d.ts +2 -1
  619. package/dist/esm/components/src/components/Molecules/VariantSelection/VariantSelection.d.ts.map +1 -1
  620. package/dist/esm/components/src/components/Molecules/VariantSelection/VariantSelection.js +6 -9
  621. package/dist/esm/components/src/components/Organisms/Autocomplete/Autocomplete.d.ts +2 -1
  622. package/dist/esm/components/src/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  623. package/dist/esm/components/src/components/Organisms/Autocomplete/Autocomplete.js +5 -10
  624. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -2
  625. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  626. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +14 -5
  627. package/dist/esm/components/src/components/Organisms/BranchOverride/BranchOverride.d.ts +2 -1
  628. package/dist/esm/components/src/components/Organisms/BranchOverride/BranchOverride.d.ts.map +1 -1
  629. package/dist/esm/components/src/components/Organisms/BranchOverride/BranchOverride.js +6 -9
  630. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +30 -0
  631. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  632. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +939 -0
  633. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  634. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  635. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.js +1227 -0
  636. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  637. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  638. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +54 -0
  639. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  640. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  641. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +92 -0
  642. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  643. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  644. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +110 -0
  645. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +2 -0
  646. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  647. package/dist/esm/components/src/components/Organisms/Chat/index.js +1 -0
  648. package/dist/esm/components/src/components/Organisms/Facet/Facet.d.ts +2 -1
  649. package/dist/esm/components/src/components/Organisms/Facet/Facet.d.ts.map +1 -1
  650. package/dist/esm/components/src/components/Organisms/Facet/Facet.js +7 -10
  651. package/dist/esm/components/src/components/Organisms/Facets/Facets.d.ts +2 -1
  652. package/dist/esm/components/src/components/Organisms/Facets/Facets.d.ts.map +1 -1
  653. package/dist/esm/components/src/components/Organisms/Facets/Facets.js +6 -9
  654. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts +2 -1
  655. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts.map +1 -1
  656. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +7 -10
  657. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -1
  658. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  659. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.js +6 -9
  660. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts +2 -1
  661. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.d.ts.map +1 -1
  662. package/dist/esm/components/src/components/Organisms/MobileSidebar/MobileSidebar.js +6 -9
  663. package/dist/esm/components/src/components/Organisms/NoResults/NoResults.d.ts +2 -1
  664. package/dist/esm/components/src/components/Organisms/NoResults/NoResults.d.ts.map +1 -1
  665. package/dist/esm/components/src/components/Organisms/NoResults/NoResults.js +22 -23
  666. package/dist/esm/components/src/components/Organisms/Results/Results.d.ts +4 -2
  667. package/dist/esm/components/src/components/Organisms/Results/Results.d.ts.map +1 -1
  668. package/dist/esm/components/src/components/Organisms/Results/Results.js +20 -13
  669. package/dist/esm/components/src/components/Organisms/Sidebar/Sidebar.d.ts +2 -1
  670. package/dist/esm/components/src/components/Organisms/Sidebar/Sidebar.d.ts.map +1 -1
  671. package/dist/esm/components/src/components/Organisms/Sidebar/Sidebar.js +6 -9
  672. package/dist/esm/components/src/components/Organisms/TermsList/TermsList.d.ts +2 -1
  673. package/dist/esm/components/src/components/Organisms/TermsList/TermsList.d.ts.map +1 -1
  674. package/dist/esm/components/src/components/Organisms/TermsList/TermsList.js +6 -9
  675. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts +2 -1
  676. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts.map +1 -1
  677. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.js +6 -9
  678. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +5 -4
  679. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  680. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +4 -1
  681. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +5 -4
  682. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  683. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +4 -1
  684. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +5 -4
  685. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  686. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +4 -1
  687. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  688. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  689. package/dist/esm/components/src/components/Templates/Chat/Chat.js +42 -0
  690. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  691. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  692. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  693. package/dist/esm/components/src/components/Templates/Recommendation/Recommendation.d.ts +2 -1
  694. package/dist/esm/components/src/components/Templates/Recommendation/Recommendation.d.ts.map +1 -1
  695. package/dist/esm/components/src/components/Templates/Recommendation/Recommendation.js +15 -5
  696. package/dist/esm/components/src/components/Templates/RecommendationBundle/RecommendationBundle.d.ts +2 -1
  697. package/dist/esm/components/src/components/Templates/RecommendationBundle/RecommendationBundle.d.ts.map +1 -1
  698. package/dist/esm/components/src/components/Templates/RecommendationBundle/RecommendationBundle.js +25 -7
  699. package/dist/esm/components/src/components/Templates/RecommendationBundleEasyAdd/RecommendationBundleEasyAdd.d.ts +1 -1
  700. package/dist/esm/components/src/components/Templates/RecommendationBundleEasyAdd/RecommendationBundleEasyAdd.d.ts.map +1 -1
  701. package/dist/esm/components/src/components/Templates/RecommendationBundleList/RecommendationBundleList.d.ts +1 -1
  702. package/dist/esm/components/src/components/Templates/RecommendationBundleList/RecommendationBundleList.d.ts.map +1 -1
  703. package/dist/esm/components/src/components/Templates/RecommendationBundleVertical/RecommendationBundleVertical.d.ts +1 -1
  704. package/dist/esm/components/src/components/Templates/RecommendationBundleVertical/RecommendationBundleVertical.d.ts.map +1 -1
  705. package/dist/esm/components/src/components/Templates/RecommendationEmail/RecommendationEmail.d.ts +2 -1
  706. package/dist/esm/components/src/components/Templates/RecommendationEmail/RecommendationEmail.d.ts.map +1 -1
  707. package/dist/esm/components/src/components/Templates/RecommendationEmail/RecommendationEmail.js +15 -4
  708. package/dist/esm/components/src/components/Templates/RecommendationGrid/RecommendationGrid.d.ts +2 -1
  709. package/dist/esm/components/src/components/Templates/RecommendationGrid/RecommendationGrid.d.ts.map +1 -1
  710. package/dist/esm/components/src/components/Templates/RecommendationGrid/RecommendationGrid.js +15 -5
  711. package/dist/esm/components/src/components/Templates/Search/Search.d.ts +2 -1
  712. package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  713. package/dist/esm/components/src/components/Templates/Search/Search.js +2 -4
  714. package/dist/esm/components/src/components/Templates/SearchCollapsible/SearchCollapsible.d.ts +1 -1
  715. package/dist/esm/components/src/components/Templates/SearchCollapsible/SearchCollapsible.d.ts.map +1 -1
  716. package/dist/esm/components/src/components/Templates/SearchHorizontal/SearchHorizontal.d.ts +1 -1
  717. package/dist/esm/components/src/components/Templates/SearchHorizontal/SearchHorizontal.d.ts.map +1 -1
  718. package/dist/esm/components/src/hooks/createRecommendationTemplate.d.ts.map +1 -1
  719. package/dist/esm/components/src/hooks/createRecommendationTemplate.js +15 -11
  720. package/dist/esm/components/src/hooks/index.d.ts +1 -0
  721. package/dist/esm/components/src/hooks/index.d.ts.map +1 -1
  722. package/dist/esm/components/src/hooks/index.js +1 -0
  723. package/dist/esm/components/src/hooks/useComponent.d.ts +5 -1
  724. package/dist/esm/components/src/hooks/useComponent.d.ts.map +1 -1
  725. package/dist/esm/components/src/hooks/useComponent.js +42 -4
  726. package/dist/esm/components/src/hooks/useCustomComponentOverride.d.ts +12 -0
  727. package/dist/esm/components/src/hooks/useCustomComponentOverride.d.ts.map +1 -0
  728. package/dist/esm/components/src/hooks/useCustomComponentOverride.js +15 -0
  729. package/dist/esm/components/src/hooks/useLayoutOptions.d.ts.map +1 -1
  730. package/dist/esm/components/src/hooks/useLayoutOptions.js +5 -0
  731. package/dist/esm/components/src/index.d.ts +23 -1
  732. package/dist/esm/components/src/index.d.ts.map +1 -1
  733. package/dist/esm/components/src/index.js +23 -1
  734. package/dist/esm/components/src/providers/theme.d.ts +1 -1
  735. package/dist/esm/components/src/providers/theme.d.ts.map +1 -1
  736. package/dist/esm/components/src/providers/themeComponents.d.ts +78 -2
  737. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  738. package/dist/esm/components/src/providers/themeComponents.js +66 -1
  739. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  740. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  741. package/dist/esm/components/src/setupTests.js +14 -0
  742. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  743. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  744. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  745. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  746. package/dist/esm/components/src/themes/base/components/templates/index.js +5 -0
  747. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  748. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  749. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  750. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  751. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +5 -0
  752. package/dist/esm/components/src/themes/pike/components/templates/autocompleteFixed.js +4 -4
  753. package/dist/esm/components/src/themes/pike/components/templates/autocompleteModal.js +4 -4
  754. package/dist/esm/components/src/themes/pike/components/templates/autocompleteShared.js +3 -3
  755. package/dist/esm/components/src/themes/pike/components/templates/autocompleteSlideout.js +4 -4
  756. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  757. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  758. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  759. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  760. package/dist/esm/components/src/themes/pike/components/templates/index.js +5 -0
  761. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  762. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  763. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  764. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  765. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +5 -0
  766. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  767. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  768. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  769. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  770. package/dist/esm/components/src/themes/snappy/components/templates/index.js +5 -0
  771. package/dist/esm/components/src/themes/themeComponents/autocompleteFixed.js +1 -1
  772. package/dist/esm/components/src/themes/themeComponents/autocompleteModal.js +1 -1
  773. package/dist/esm/components/src/themes/themeComponents/autocompleteSlideout.js +1 -1
  774. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  775. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  776. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  777. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
  778. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  779. package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
  780. package/dist/esm/components/src/utilities/mergeProps.d.ts.map +1 -1
  781. package/dist/esm/components/src/utilities/mergeProps.js +2 -1
  782. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  783. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  784. package/dist/esm/components/src/utilities/snapify.js +29 -2
  785. package/dist/esm/src/Snap.d.ts +2 -1
  786. package/dist/esm/src/Snap.d.ts.map +1 -1
  787. package/dist/esm/src/Snap.js +72 -0
  788. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  789. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  790. package/dist/esm/src/Templates/SnapTemplates.js +55 -0
  791. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +7 -4
  792. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  793. package/dist/esm/src/Templates/Stores/LibraryStore.js +14 -67
  794. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +21 -70
  795. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  796. package/dist/esm/src/Templates/Stores/TemplateStore.js +2 -1
  797. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts +1 -1
  798. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  799. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  800. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  801. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  802. package/dist/esm/src/Templates/Stores/library/components/OverlayResult.d.ts +2 -0
  803. package/dist/esm/src/Templates/Stores/library/components/OverlayResult.d.ts.map +1 -0
  804. package/dist/esm/src/Templates/Stores/library/components/OverlayResult.js +1 -0
  805. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  806. package/dist/esm/src/Templates/Stores/library/languages/es.js +5 -0
  807. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  808. package/dist/esm/src/Templates/Stores/library/languages/fr.js +5 -0
  809. package/dist/esm/src/Templates/index.d.ts +1 -1
  810. package/dist/esm/src/Templates/index.d.ts.map +1 -1
  811. package/dist/esm/src/create/createChatController.d.ts +5 -0
  812. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  813. package/dist/esm/src/create/createChatController.js +29 -0
  814. package/dist/esm/src/setupEvents.d.ts +13 -0
  815. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  816. package/dist/esm/src/setupEvents.js +40 -0
  817. package/dist/esm/src/types.d.ts +15 -3
  818. package/dist/esm/src/types.d.ts.map +1 -1
  819. package/package.json +14 -12
@@ -0,0 +1,1030 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ };
58
+ var __importDefault = (this && this.__importDefault) || function (mod) {
59
+ return (mod && mod.__esModule) ? mod : { "default": mod };
60
+ };
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ exports.ChatOrganism = void 0;
63
+ var jsx_runtime_1 = require("@emotion/react/jsx-runtime");
64
+ var classnames_1 = __importDefault(require("classnames"));
65
+ var deepmerge_1 = __importDefault(require("deepmerge"));
66
+ var mobx_react_lite_1 = require("mobx-react-lite");
67
+ var providers_1 = require("../../../providers");
68
+ var utilities_1 = require("../../../utilities");
69
+ var Chat_styles_1 = require("./Chat.styles");
70
+ var useChatGestures_1 = require("./hooks/useChatGestures");
71
+ var useChatOverflow_1 = require("./hooks/useChatOverflow");
72
+ var useChatFileUpload_1 = require("./hooks/useChatFileUpload");
73
+ var Button_1 = require("../../Atoms/Button");
74
+ var hooks_1 = require("preact/hooks");
75
+ var ChatMessageUser_1 = require("../../Molecules/ChatMessageUser");
76
+ var ChatMessageText_1 = require("../../Molecules/ChatMessageText");
77
+ var ChatSuggestedQuestions_1 = require("../../Molecules/ChatSuggestedQuestions");
78
+ var ChatAttachmentContext_1 = require("../../Molecules/ChatAttachmentContext");
79
+ var Image_1 = require("../../Atoms/Image");
80
+ var ChatLoadingIndicator_1 = require("../../Atoms/ChatLoadingIndicator");
81
+ var __1 = require("../../..");
82
+ var ChatInspirationResultMessage_1 = require("../../Molecules/ChatInspirationResultMessage");
83
+ var ChatProductComparisonMessage_1 = require("../../Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage");
84
+ var ChatProductQueryMessage_1 = require("../../Molecules/ChatProductQueryMessage/ChatProductQueryMessage");
85
+ exports.ChatOrganism = (0, mobx_react_lite_1.observer)(function (properties) {
86
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
87
+ var globalTheme = (0, providers_1.useTheme)();
88
+ var globalTreePath = (0, providers_1.useTreePath)();
89
+ var isMobile = (0, __1.useMediaQuery)('(max-width: 767px)');
90
+ var defaultProps = {
91
+ treePath: globalTreePath,
92
+ logo: 'https://cdn.athoscommerce.net/snap/images/Athos%20Commerce_Icon_white.svg',
93
+ title: 'Athos Conversational Assistant',
94
+ subtitle: 'Your Guided Discovery Expert',
95
+ multiselectFacets: false,
96
+ disableBubbleSuggestedQuestions: isMobile ? true : false,
97
+ primaryColorBg: '#253B80',
98
+ primaryColorFg: '#fff',
99
+ primaryAccentColorBg: '#feeeae',
100
+ primaryAccentColorFg: '#000000',
101
+ secondaryAccentColorBg: '#000000',
102
+ secondaryAccentColorFg: '#ffffff',
103
+ position: 'right',
104
+ hideMessageTypeIndicatorText: false,
105
+ buttonBelowMessage: false,
106
+ };
107
+ var props = (0, utilities_1.mergeProps)('chat', globalTheme, defaultProps, properties);
108
+ var className = props.className, internalClassName = props.internalClassName, controller = props.controller, logo = props.logo, title = props.title, subtitle = props.subtitle, avatar = props.avatar, offset = props.offset, multiselectFacets = props.multiselectFacets, disableBubbleSuggestedQuestions = props.disableBubbleSuggestedQuestions, primaryColorBg = props.primaryColorBg, primaryColorFg = props.primaryColorFg, primaryAccentColorBg = props.primaryAccentColorBg, primaryAccentColorFg = props.primaryAccentColorFg, secondaryAccentColorBg = props.secondaryAccentColorBg, secondaryAccentColorFg = props.secondaryAccentColorFg, position = props.position, hideMessageTypeIndicatorText = props.hideMessageTypeIndicatorText, buttonBelowMessage = props.buttonBelowMessage, disableStyles = props.disableStyles, treePath = props.treePath;
109
+ var colorPrimary = primaryColorBg;
110
+ var colorPrimaryText = primaryColorFg;
111
+ var colorPrimaryAccent = primaryAccentColorBg;
112
+ var colorPrimaryAccentText = primaryAccentColorFg;
113
+ var colorSecondaryAccent = secondaryAccentColorBg;
114
+ var colorSecondaryAccentText = secondaryAccentColorFg;
115
+ var chatPosition = position === 'right' ? 'right' : 'left';
116
+ var isValidImageUrl = function (value) {
117
+ try {
118
+ var protocol = new URL(value).protocol;
119
+ return protocol === 'http:' || protocol === 'https:' || protocol === 'data:';
120
+ }
121
+ catch (_a) {
122
+ return false;
123
+ }
124
+ };
125
+ // A single-character avatar renders as a capitalized letter; a longer value renders
126
+ // as an image when it's a valid image URL. Anything else renders no avatar.
127
+ var avatarCharacter = avatar && avatar.length === 1 ? avatar.toUpperCase() : undefined;
128
+ var avatarImage = avatar && avatar.length > 1 && isValidImageUrl(avatar) ? avatar : undefined;
129
+ var store = controller.store;
130
+ var themeDefaults = {
131
+ components: {},
132
+ };
133
+ // merge deeply the themeDefaults with the theme props and the displaySettings theme props (do not merge arrays, but replace them)
134
+ var theme = (0, deepmerge_1.default)(themeDefaults, (props === null || props === void 0 ? void 0 : props.theme) || {}, { arrayMerge: function (destinationArray, sourceArray) { return sourceArray; } });
135
+ props = __assign(__assign({}, props), { theme: theme });
136
+ var subProps = {
137
+ messageUser: {
138
+ disableStyles: disableStyles,
139
+ theme: props.theme,
140
+ treePath: treePath,
141
+ primaryColor: colorPrimary,
142
+ primaryColorText: colorPrimaryText,
143
+ hideMessageTypeIndicatorText: hideMessageTypeIndicatorText,
144
+ },
145
+ messageText: {
146
+ disableStyles: disableStyles,
147
+ theme: props.theme,
148
+ treePath: treePath,
149
+ primaryColor: colorPrimary,
150
+ primaryColorText: colorPrimaryText,
151
+ primaryAccentColor: colorPrimaryAccent,
152
+ primaryAccentColorText: colorPrimaryAccentText,
153
+ buttonBelowMessage: buttonBelowMessage,
154
+ },
155
+ suggestedQuestions: {
156
+ disableStyles: disableStyles,
157
+ theme: props.theme,
158
+ treePath: treePath,
159
+ primaryColor: colorPrimary,
160
+ },
161
+ attachmentContext: {
162
+ disableStyles: disableStyles,
163
+ theme: props.theme,
164
+ treePath: treePath,
165
+ },
166
+ loadingIndicator: {
167
+ disableStyles: disableStyles,
168
+ theme: props.theme,
169
+ treePath: treePath,
170
+ },
171
+ inspirationResultMessage: {
172
+ disableStyles: disableStyles,
173
+ theme: props.theme,
174
+ treePath: treePath,
175
+ },
176
+ productComparisonMessage: {
177
+ disableStyles: disableStyles,
178
+ theme: props.theme,
179
+ treePath: treePath,
180
+ },
181
+ productQueryMessage: {
182
+ disableStyles: disableStyles,
183
+ theme: props.theme,
184
+ treePath: treePath,
185
+ primaryColor: colorPrimary,
186
+ primaryColorText: colorPrimaryText,
187
+ },
188
+ };
189
+ var messagesEndRef = (0, hooks_1.useRef)(null);
190
+ var messagesContainerRef = (0, hooks_1.useRef)(null);
191
+ var headerRef = (0, hooks_1.useRef)(null);
192
+ var footerRef = (0, hooks_1.useRef)(null);
193
+ var chatRef = (0, hooks_1.useRef)(null);
194
+ // Ref for the mobile secondary panel — needed for swipe-to-dismiss measurements
195
+ var secondaryRef = (0, hooks_1.useRef)(null);
196
+ var _0 = (0, hooks_1.useState)(false), mobileProductInfoOpen = _0[0], setMobileProductInfoOpen = _0[1];
197
+ var _1 = (0, hooks_1.useState)(0), footerHeight = _1[0], setFooterHeight = _1[1];
198
+ var dropEnabled = store.features.imageSearch.enabled && !store.loading && !store.blocked && !((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.sessionLimitReached);
199
+ var _2 = (0, useChatFileUpload_1.useChatFileUpload)({
200
+ enabled: !!dropEnabled,
201
+ onUpload: function (files) { return controller.upload(files); },
202
+ }), fileInputRef = _2.fileInputRef, isDraggingFile = _2.isDraggingFile, dragHandlers = _2.dragHandlers;
203
+ // productQuery messages are filtered out of the main chat render (they only drive the side-chat panel),
204
+ // so don't auto-scroll when one is added — otherwise clicking a product in the side chat scrolls the main thread.
205
+ var visibleChat = (((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.chat) || []).filter(function (m) { return m.messageType !== 'productQuery'; });
206
+ var visibleChatLength = visibleChat.length;
207
+ var lastVisibleMessage = visibleChat[visibleChat.length - 1];
208
+ var _3 = (0, useChatOverflow_1.useChatOverflow)({
209
+ messagesContainerRef: messagesContainerRef,
210
+ headerRef: headerRef,
211
+ open: store.open,
212
+ loading: store.loading,
213
+ visibleChatLength: visibleChatLength,
214
+ lastVisibleMessage: lastVisibleMessage,
215
+ }), showNewMessages = _3.showNewMessages, setShowNewMessages = _3.setShowNewMessages, messagesOverflow = _3.messagesOverflow, scrollToBottom = _3.scrollToBottom, scrollToBottomIfNear = _3.scrollToBottomIfNear;
216
+ // Re-focus the chat input on desktop after a search completes.
217
+ // The input is disabled while loading, which causes the browser to drop focus.
218
+ // On mobile we intentionally skip this so the virtual keyboard dismisses.
219
+ // Only fire on the loading true → false transition — running on mount steals
220
+ // focus away from the Storybook controls whenever the story re-renders.
221
+ var prevLoadingRef = (0, hooks_1.useRef)(store.loading);
222
+ (0, hooks_1.useEffect)(function () {
223
+ if (prevLoadingRef.current && !store.loading && !isMobile && store.open) {
224
+ controller.focusInput();
225
+ }
226
+ prevLoadingRef.current = store.loading;
227
+ }, [store.loading]);
228
+ // const subProps: ChatSubProps = {};
229
+ var activeMessage = (_c = store.currentChat) === null || _c === void 0 ? void 0 : _c.activeMessage;
230
+ // On mobile, only auto-open the secondary panel for the first productComparison
231
+ // message in the chat session. Subsequent comparison results show a "Show Details"
232
+ // button instead (handled in MessageText via sideChatLabel toggle).
233
+ var isFirstMobileComparison = (function () {
234
+ var _a, _b;
235
+ if (!isMobile || (activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) !== 'productComparison')
236
+ return true;
237
+ // If the user explicitly activated a comparison (via "Show Details" or the
238
+ // view-side-chat button), always allow it regardless of position in the chat
239
+ if ((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.activeMessageId)
240
+ return true;
241
+ var comparisonMessages = (((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.chat) || []).filter(function (m) { return m.messageType === 'productComparison'; });
242
+ return comparisonMessages.length <= 1;
243
+ })();
244
+ var sideChatTypes = isMobile
245
+ ? __spreadArray(__spreadArray(['inspirationResult'], (isFirstMobileComparison ? ['productComparison'] : []), true), (mobileProductInfoOpen ? ['productQuery'] : []), true) : ['inspirationResult', 'productComparison', 'productQuery'];
246
+ var shouldShowSideChat = activeMessage && sideChatTypes.includes(activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) && ((_d = store.currentChat) === null || _d === void 0 ? void 0 : _d.dismissedSideChatMessageId) !== activeMessage.id;
247
+ var hasSideChat = !!shouldShowSideChat;
248
+ var styling = (0, hooks_1.useMemo)(function () {
249
+ return (0, utilities_1.mergeStyles)({
250
+ mobile: isMobile,
251
+ offset: offset,
252
+ hasSideChat: hasSideChat,
253
+ footerHeight: footerHeight,
254
+ primaryColorBg: colorPrimary,
255
+ primaryColorFg: colorPrimaryText,
256
+ primaryAccentColorBg: colorPrimaryAccent,
257
+ primaryAccentColorFg: colorPrimaryAccentText,
258
+ secondaryAccentColorBg: colorSecondaryAccent,
259
+ secondaryAccentColorFg: colorSecondaryAccentText,
260
+ position: chatPosition,
261
+ }, Chat_styles_1.chatDefaultStyles);
262
+ }, [
263
+ isMobile,
264
+ offset,
265
+ hasSideChat,
266
+ footerHeight,
267
+ colorPrimary,
268
+ colorPrimaryText,
269
+ colorPrimaryAccent,
270
+ colorPrimaryAccentText,
271
+ colorSecondaryAccent,
272
+ colorSecondaryAccentText,
273
+ chatPosition,
274
+ ]);
275
+ // Lock body scroll while chat is open so touch/wheel scrolls don't leak to the page behind
276
+ (0, hooks_1.useEffect)(function () {
277
+ if (!store.open)
278
+ return;
279
+ var body = document.body;
280
+ var previousOverflow = body.style.overflow;
281
+ var previousOverscroll = body.style.overscrollBehavior;
282
+ body.style.overflow = 'hidden';
283
+ body.style.overscrollBehavior = 'contain';
284
+ return function () {
285
+ body.style.overflow = previousOverflow;
286
+ body.style.overscrollBehavior = previousOverscroll;
287
+ };
288
+ }, [store.open]);
289
+ // Close chat on Escape key (or dismiss side chat first when it's open)
290
+ (0, hooks_1.useEffect)(function () {
291
+ if (!store.open)
292
+ return;
293
+ var onKeyDown = function (e) {
294
+ var _a, _b;
295
+ if (e.key !== 'Escape')
296
+ return;
297
+ if (((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.activeMessage) && shouldShowSideChat) {
298
+ (_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.dismissSideChat();
299
+ }
300
+ else {
301
+ controller.handlers.button.click();
302
+ }
303
+ };
304
+ document.addEventListener('keydown', onKeyDown);
305
+ return function () { return document.removeEventListener('keydown', onKeyDown); };
306
+ }, [store.open, shouldShowSideChat]);
307
+ // Track the primary footer height so the mobile secondary panel can sit above it
308
+ (0, hooks_1.useEffect)(function () {
309
+ var el = footerRef.current;
310
+ if (!el)
311
+ return;
312
+ var observer = new ResizeObserver(function (entries) {
313
+ var _a, _b, _c;
314
+ for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
315
+ var entry = entries_1[_i];
316
+ setFooterHeight((_c = (_b = (_a = entry.borderBoxSize) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.blockSize) !== null && _c !== void 0 ? _c : entry.target.getBoundingClientRect().height);
317
+ }
318
+ });
319
+ observer.observe(el);
320
+ return function () { return observer.disconnect(); };
321
+ }, [store.open, (_e = store.currentChat) === null || _e === void 0 ? void 0 : _e.isExpired]);
322
+ // Prevent the background page from scrolling while the chat is open on touch
323
+ // devices. iOS Safari (real iPad/iPhone) rubber-band-scrolls the body when a
324
+ // touchmove inside `.ss__chat__messages` reaches the top/bottom — and
325
+ // `overscroll-behavior: contain` is ignored there.
326
+ //
327
+ // We don't touch body styles (locking via `position: fixed` on `<body>` leaves
328
+ // iPad Safari in a stuck viewport state where the page can't scroll after the
329
+ // lock is released). Instead we install a `touchmove` handler that:
330
+ // - allows the touchmove if it's inside a scrollable region of the chat
331
+ // and that region isn't at its scroll edge in the swipe direction;
332
+ // - calls `preventDefault()` otherwise — which is what blocks both
333
+ // background scrolling and iOS rubber-band overscroll.
334
+ // Cleanup just removes the listeners, so nothing can leak into the page.
335
+ (0, hooks_1.useEffect)(function () {
336
+ if (!store.open)
337
+ return;
338
+ if (typeof document === 'undefined')
339
+ return;
340
+ var startX = 0;
341
+ var startY = 0;
342
+ var scrollEl = null;
343
+ // Walk up from the touch target to find the first ancestor inside the chat
344
+ // that is actually scrollable in either axis. Stop at the chat root so we
345
+ // never consider elements outside the chat.
346
+ var findScrollableInChat = function (start) {
347
+ var chatRoot = chatRef.current;
348
+ if (!chatRoot)
349
+ return null;
350
+ var el = start;
351
+ while (el && chatRoot.contains(el)) {
352
+ var style = getComputedStyle(el);
353
+ var scrollableY = (style.overflowY === 'auto' || style.overflowY === 'scroll') && el.scrollHeight > el.clientHeight;
354
+ var scrollableX = (style.overflowX === 'auto' || style.overflowX === 'scroll') && el.scrollWidth > el.clientWidth;
355
+ if (scrollableY || scrollableX) {
356
+ return el;
357
+ }
358
+ if (el === chatRoot)
359
+ break;
360
+ el = el.parentElement;
361
+ }
362
+ return null;
363
+ };
364
+ var onTouchStart = function (e) {
365
+ if (!e.touches[0])
366
+ return;
367
+ startX = e.touches[0].clientX;
368
+ startY = e.touches[0].clientY;
369
+ scrollEl = findScrollableInChat(e.target);
370
+ };
371
+ var onTouchMove = function (e) {
372
+ var _a, _b, _c, _d;
373
+ var target = e.target;
374
+ var chatRoot = chatRef.current;
375
+ var inChat = !!(chatRoot && target && chatRoot.contains(target));
376
+ // Touches outside the chat shouldn't scroll the background.
377
+ if (!inChat) {
378
+ if (e.cancelable)
379
+ e.preventDefault();
380
+ return;
381
+ }
382
+ // Inside the chat but no scrollable container — block to prevent body scroll.
383
+ if (!scrollEl) {
384
+ if (e.cancelable)
385
+ e.preventDefault();
386
+ return;
387
+ }
388
+ // Inside a scrollable container — only block when at the edge in the
389
+ // swipe direction, so internal scrolling continues to work. Detect the
390
+ // dominant axis so horizontally-scrollable rows (e.g. the facets row)
391
+ // also get to handle their own touch gestures.
392
+ var currentX = (_b = (_a = e.touches[0]) === null || _a === void 0 ? void 0 : _a.clientX) !== null && _b !== void 0 ? _b : startX;
393
+ var currentY = (_d = (_c = e.touches[0]) === null || _c === void 0 ? void 0 : _c.clientY) !== null && _d !== void 0 ? _d : startY;
394
+ var deltaX = currentX - startX;
395
+ var deltaY = currentY - startY;
396
+ var horizontal = Math.abs(deltaX) > Math.abs(deltaY);
397
+ if (horizontal) {
398
+ var scrollsX = scrollEl.scrollWidth > scrollEl.clientWidth;
399
+ if (!scrollsX) {
400
+ if (e.cancelable)
401
+ e.preventDefault();
402
+ return;
403
+ }
404
+ var atLeft = scrollEl.scrollLeft <= 0;
405
+ var atRight = scrollEl.scrollLeft + scrollEl.clientWidth >= scrollEl.scrollWidth - 1;
406
+ if ((atLeft && deltaX > 0) || (atRight && deltaX < 0)) {
407
+ if (e.cancelable)
408
+ e.preventDefault();
409
+ }
410
+ }
411
+ else {
412
+ var scrollsY = scrollEl.scrollHeight > scrollEl.clientHeight;
413
+ if (!scrollsY) {
414
+ if (e.cancelable)
415
+ e.preventDefault();
416
+ return;
417
+ }
418
+ var atTop = scrollEl.scrollTop <= 0;
419
+ var atBottom = scrollEl.scrollTop + scrollEl.clientHeight >= scrollEl.scrollHeight - 1;
420
+ if ((atTop && deltaY > 0) || (atBottom && deltaY < 0)) {
421
+ if (e.cancelable)
422
+ e.preventDefault();
423
+ }
424
+ }
425
+ };
426
+ document.addEventListener('touchstart', onTouchStart, { passive: true });
427
+ document.addEventListener('touchmove', onTouchMove, { passive: false });
428
+ return function () {
429
+ document.removeEventListener('touchstart', onTouchStart);
430
+ document.removeEventListener('touchmove', onTouchMove);
431
+ };
432
+ }, [store.open]);
433
+ var HistoryButton = function (props) { return ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__header__button--history", disabled: props.disabled, icon: {
434
+ icon: 'history',
435
+ title: 'Chat History',
436
+ } })); };
437
+ var HistoryPopup = function (props) { return ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__history", children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__history__header", children: [(0, jsx_runtime_1.jsx)("h4", { children: "History" }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__history__header__buttons", children: (0, jsx_runtime_1.jsx)(Button_1.Button, { content: "clear", disabled: store.loading || store.blocked, onClick: function () {
438
+ controller.store.clearHistory();
439
+ props.toggleOpen && props.toggleOpen();
440
+ } }) })] }), store.chats.length > 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__history__chats", children: store.chats
441
+ .slice()
442
+ .reverse()
443
+ .map(function (chat) { return ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__history__chats__chat", children: (0, jsx_runtime_1.jsxs)(Button_1.Button, { className: "ss__chat__history__chat__button", onClick: function () {
444
+ controller.store.switchChat(chat.id);
445
+ }, disabled: chat.id === store.currentChatId || store.loading || store.blocked, children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__chat__history__chat__button__text", children: (function () {
446
+ var lastUserMessage = __spreadArray([], chat.chat, true).reverse().find(function (message) { return message.messageType === 'user'; });
447
+ if (!lastUserMessage)
448
+ return 'New Chat';
449
+ var text = lastUserMessage.text;
450
+ return text.length > 50 ? "".concat(text.slice(0, 50), "...") : text;
451
+ })() }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__history__chat__button__date", children: chat.createdAt.toLocaleString() })] }) }, chat.id)); }) })) : null] })); };
452
+ var FacetButton = function (props) { return (0, jsx_runtime_1.jsx)(Button_1.Button, { icon: props.open ? 'angle-down' : 'angle-up', children: props.label }); };
453
+ var getFacetButtonLabel = function (facet) {
454
+ var _a, _b;
455
+ var base = facet.label || facet.field;
456
+ // Slider facets show the active low-high range in the button when narrowed.
457
+ if (facet.type === 'range') {
458
+ var rangeFacet = facet;
459
+ var active = rangeFacet.active;
460
+ var range = rangeFacet.range;
461
+ if (active && range && (active.low !== range.low || active.high !== range.high)) {
462
+ return "".concat(base, " (").concat((_a = active.low) !== null && _a !== void 0 ? _a : '*', "-").concat((_b = active.high) !== null && _b !== void 0 ? _b : '*', ")");
463
+ }
464
+ return base;
465
+ }
466
+ // Count current selections from the urlManager (source of truth for live state).
467
+ // `value.filtered` reflects the server's snapshot at response time and goes stale
468
+ // once the user deselects locally.
469
+ var applied = (facet.values || []).filter(function (value) {
470
+ var _a, _b;
471
+ if (!value)
472
+ return false;
473
+ var optionValue = 'low' in value && 'high' in value
474
+ ? "".concat((_a = value.low) !== null && _a !== void 0 ? _a : '*', ":").concat((_b = value.high) !== null && _b !== void 0 ? _b : '*')
475
+ : value.value || value.label;
476
+ return controller.store.isFacetSelected(facet.field, optionValue);
477
+ }).length;
478
+ return applied > 0 ? "".concat(base, " (").concat(applied, ")") : base;
479
+ };
480
+ // Slider dropdown grows to fill the remaining chat width from its anchor,
481
+ // so the price range slider isn't cramped inside a 150px-wide dropdown.
482
+ var SliderFacetDropdown = function (props) {
483
+ var anchorRef = (0, hooks_1.useRef)(null);
484
+ var _a = (0, hooks_1.useState)(null), width = _a[0], setWidth = _a[1];
485
+ (0, hooks_1.useEffect)(function () {
486
+ var compute = function () {
487
+ if (!anchorRef.current || !chatRef.current)
488
+ return;
489
+ var anchor = anchorRef.current.getBoundingClientRect();
490
+ var chat = chatRef.current.getBoundingClientRect();
491
+ var remaining = chat.right - anchor.left - 16;
492
+ setWidth(Math.max(220, remaining));
493
+ };
494
+ compute();
495
+ var ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(compute) : null;
496
+ if (ro && chatRef.current)
497
+ ro.observe(chatRef.current);
498
+ window.addEventListener('resize', compute);
499
+ return function () {
500
+ if (ro)
501
+ ro.disconnect();
502
+ window.removeEventListener('resize', compute);
503
+ };
504
+ }, []);
505
+ return ((0, jsx_runtime_1.jsx)("div", { ref: anchorRef, className: "ss__chat__actions__facet ss__chat__actions__facet--range", children: (0, jsx_runtime_1.jsx)(__1.Dropdown, { usePortal: true, dropUp: true, button: (0, jsx_runtime_1.jsx)(FacetButton, { label: props.label }), style: {
506
+ '.ss__dropdown__content': {
507
+ width: width ? "".concat(width, "px") : 'auto',
508
+ background: 'white',
509
+ boxShadow: '0px 3px 6px 0px rgba(0, 0, 0, 0.2)',
510
+ borderRadius: '6px',
511
+ },
512
+ }, children: (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions__facet__options", children: (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions__facet__slider", style: { padding: '12px 16px' }, children: (0, jsx_runtime_1.jsx)(__1.FacetSlider, { facet: props.facet, onChange: function () {
513
+ if (!multiselectFacets) {
514
+ // FacetSlider fires onChange before its urlManager update; defer
515
+ // so controller.search() reads the updated filter state. Force
516
+ // productSearch with the current filters so a slider tweak doesn't
517
+ // fall through to `general` when hasPendingFacetChanges happens to
518
+ // be false (e.g. the slider returned to the seeded range).
519
+ queueMicrotask(function () {
520
+ return controller.search({
521
+ data: { requestType: 'productSearch', searchFilters: controller.store.searchFilters },
522
+ });
523
+ });
524
+ }
525
+ } }) }) }) }) }));
526
+ };
527
+ // TODO: if starting a new chat and it's expired, this button would then disappear
528
+ if (!controller.store.chatEnabled) {
529
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
530
+ }
531
+ // Dismiss the secondary panel and clear any product attachments tied to the side-chat
532
+ // (discuss product flow), while preserving productSimilar/productComparison attachments.
533
+ var dismissSideChat = function () {
534
+ var _a, _b;
535
+ var productAttachmentsToRemove = (((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.attached) || []).filter(function (item) { return item.type === 'product' && item.requestType !== 'productSimilar' && item.requestType !== 'productComparison'; });
536
+ productAttachmentsToRemove.forEach(function (item) { var _a; return (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.remove(item.id); });
537
+ setMobileProductInfoOpen(false);
538
+ (_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.dismissSideChat();
539
+ };
540
+ var _4 = (0, useChatGestures_1.useChatGestures)({
541
+ panelRef: secondaryRef,
542
+ shouldShowSideChat: !!shouldShowSideChat,
543
+ activeMessageId: activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.id,
544
+ onDismiss: dismissSideChat,
545
+ }), swipeOffset = _4.swipeOffset, swipeAnimating = _4.swipeAnimating, swipeHandlers = _4.swipeHandlers;
546
+ var requestType = (_f = store.currentChat) === null || _f === void 0 ? void 0 : _f.requestType;
547
+ var loadingVerbs = (0, hooks_1.useMemo)(function () {
548
+ switch (requestType) {
549
+ case 'productQuery':
550
+ return ['Thinking', 'Searching', 'Analyzing', 'Gathering details'];
551
+ case 'productSearch':
552
+ return ['Searching', 'Browsing catalog', 'Finding products', 'Curating results'];
553
+ case 'productComparison':
554
+ return ['Comparing', 'Analyzing', 'Evaluating', 'Weighing options'];
555
+ case 'imageSearch':
556
+ return ['Analyzing image', 'Identifying', 'Searching', 'Matching'];
557
+ case 'productSimilar':
558
+ return ['Finding similar items', 'Searching', 'Matching', 'Curating'];
559
+ case 'inspirationRequest':
560
+ return ['Brainstorming', 'Imagining', 'Curating', 'Inspiring'];
561
+ case 'general':
562
+ default:
563
+ return undefined;
564
+ }
565
+ }, [requestType]);
566
+ var isWelcomeState = (!((_g = store.currentChat) === null || _g === void 0 ? void 0 : _g.chat) || store.currentChat.chat.length === 0) && !!store.welcomeMessage && !((_h = store.currentChat) === null || _h === void 0 ? void 0 : _h.isExpired);
567
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ ref: chatRef, className: (0, classnames_1.default)('ss__chat', {
568
+ 'ss__chat--open': store.open,
569
+ 'ss__chat--minimized': !store.open,
570
+ 'ss__chat--mobile': isMobile,
571
+ 'ss__chat--welcome': isWelcomeState,
572
+ }, className, internalClassName) }, styling, { children: [!disableBubbleSuggestedQuestions && !store.open && !store.currentChat && ((_j = store.suggestedQuestions) === null || _j === void 0 ? void 0 : _j.length) > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__suggested-questions", children: store.suggestedQuestions.map(function (question) { return ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__suggested-questions__item", onClick: function () {
573
+ controller.openChat(question);
574
+ }, children: question }, question)); }) })), (0, jsx_runtime_1.jsx)("button", { type: "button", className: 'ss__chat__bubble', "aria-label": store.open ? 'Close chat' : 'Open chat', "aria-expanded": store.open, onClick: function () { return controller.handlers.button.click(); }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "chat", title: "Open Chat" }) }), store.open && shouldShowSideChat && activeMessage ? ((0, jsx_runtime_1.jsxs)("div", { ref: secondaryRef, className: (0, classnames_1.default)('ss__chat__secondary'), role: "region", "aria-label": "Conversation details", style: isMobile
575
+ ? {
576
+ // Touch swipe animations need to be inline to prevent visual jumps
577
+ transform: swipeOffset > 0 ? "translateY(".concat(swipeOffset, "px)") : undefined,
578
+ transition: swipeAnimating ? 'transform 0.3s ease-out' : 'none',
579
+ }
580
+ : undefined, children: [isMobile && ((0, jsx_runtime_1.jsx)("div", __assign({ className: "ss__chat__secondary__drag-handle" }, swipeHandlers, { children: (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__secondary__drag-handle__indicator" }) }))), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__header', onTouchStart: isMobile ? swipeHandlers.onTouchStart : undefined, onTouchMove: isMobile ? swipeHandlers.onTouchMove : undefined, onTouchEnd: isMobile ? swipeHandlers.onTouchEnd : undefined, children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__title", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__primary", children: {
581
+ inspirationResult: 'Inspiration Scenarios',
582
+ productComparison: 'Product Comparison',
583
+ productQuery: '',
584
+ }[activeMessage.messageType] || null }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__secondary", children: {
585
+ inspirationResult: 'Choose a style direction to explore',
586
+ productComparison: "Comparing ".concat(((_k = activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.searchResults) === null || _k === void 0 ? void 0 : _k.length) || '', " products"),
587
+ productQuery: '',
588
+ }[activeMessage.messageType] || null })] }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__buttons", children: (0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__header__button--close", "aria-label": "Close chat", icon: { icon: 'close2', title: 'Close Chat' }, onClick: function () { return dismissSideChat(); } }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__content", children: (0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__messages', children: {
589
+ inspirationResult: ((0, jsx_runtime_1.jsx)(ChatInspirationResultMessage_1.ChatInspirationResultMessage, __assign({}, subProps.inspirationResultMessage, { chatItem: activeMessage, controller: controller, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined }))),
590
+ productComparison: ((0, jsx_runtime_1.jsx)(ChatProductComparisonMessage_1.ChatProductComparisonMessage, __assign({}, subProps.productComparisonMessage, { chatItem: activeMessage, controller: controller }))),
591
+ productQuery: ((0, jsx_runtime_1.jsx)(ChatProductQueryMessage_1.ChatProductQueryMessage, __assign({}, subProps.productQueryMessage, { chatItem: activeMessage, controller: controller, displayFields: (_m = (_l = controller.config.settings) === null || _l === void 0 ? void 0 : _l.quickview) === null || _m === void 0 ? void 0 : _m.displayFields, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
592
+ }[activeMessage.messageType] || null }) })] })) : null, store.open ? ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__primary',
593
+ // On mobile, interacting with the primary chat (header or anywhere within)
594
+ // dismisses the secondary panel. Capture phase so it fires even when an
595
+ // inner control stops propagation.
596
+ onClickCapture: isMobile && shouldShowSideChat ? function () { return dismissSideChat(); } : undefined, children: [(0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__header', children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__title", children: [logo ? (0, jsx_runtime_1.jsx)(Image_1.Image, { className: "ss__chat__header__title__logo", src: logo, alt: title || 'Chat logo' }) : null, (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__title__text", children: [title ? (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__text__primary", children: title }) : null, subtitle ? (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__header__title__text__secondary", children: subtitle }) : null] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__header__buttons", children: [(0, jsx_runtime_1.jsx)(Button_1.Button
597
+ // disabled={store.currentChat?.chat && store.currentChat.chat.length <= 1}
598
+ , {
599
+ // disabled={store.currentChat?.chat && store.currentChat.chat.length <= 1}
600
+ className: "ss__chat__header__button--new", "aria-label": "New chat", icon: { icon: controller.store.initChatLoading ? 'spinner' : 'plus2', title: 'New Chat' }, onClick: function () { return controller.store.createChat(); } }), store.chats.length > 1 && ((0, jsx_runtime_1.jsx)(__1.Dropdown, { disabled: store.loading || store.blocked, className: "ss__chat__header__dropdown-history", button: (0, jsx_runtime_1.jsx)(HistoryButton, {}), children: (0, jsx_runtime_1.jsx)(HistoryPopup, {}) })), (0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__header__button--close", "aria-label": "Close chat", icon: { icon: 'close2', title: 'Close Chat' }, onClick: function () { return controller.handlers.button.click(); } })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__content", children: [(function () {
601
+ var _a, _b, _c, _d, _e;
602
+ var feedbackAfterMessages = (_a = controller.config.settings) === null || _a === void 0 ? void 0 : _a.feedbackAfterMessages;
603
+ var systemMessages = (((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.chat) || []).filter(function (msg) { return msg.messageType !== 'user' && msg.messageType !== 'productQuery'; });
604
+ var currentRating = (_c = store.currentChat) === null || _c === void 0 ? void 0 : _c.feedback.rating;
605
+ var hasRated = !!currentRating;
606
+ var shouldShowFeedback = feedbackAfterMessages &&
607
+ systemMessages.length >= feedbackAfterMessages &&
608
+ !((_d = store.currentChat) === null || _d === void 0 ? void 0 : _d.feedback.dismissed) &&
609
+ (!hasRated || ((_e = store.currentChat) === null || _e === void 0 ? void 0 : _e.feedback.justGiven));
610
+ return shouldShowFeedback ? ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__session-feedback", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__chat__session-feedback__icon", children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "chat", size: "16px" }) }), (0, jsx_runtime_1.jsx)("span", { className: "ss__chat__session-feedback__label", children: hasRated ? 'Thank you for your feedback' : "How's your experience so far?" }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__session-feedback__actions".concat(hasRated ? ' ss__chat__session-feedback__actions--rated' : ''), children: [(!hasRated || currentRating === 'UP') && ((0, jsx_runtime_1.jsx)("span", { onClick: function () { return !hasRated && controller.handleFeedback('UP'); }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: 'thumbs-up', size: "16px", title: 'Thumbs Up' }) })), (!hasRated || currentRating === 'DOWN') && ((0, jsx_runtime_1.jsx)("span", { onClick: function () { return !hasRated && controller.handleFeedback('DOWN'); }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: 'thumbs-down', size: "16px", title: 'Thumbs Down' }) }))] }), !hasRated && ((0, jsx_runtime_1.jsx)("span", { className: "ss__chat__session-feedback__close", onClick: function () {
611
+ if (store.currentChat) {
612
+ store.currentChat.feedback.dismissed = true;
613
+ store.currentChat.save();
614
+ }
615
+ }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "close-thin", size: "14px" }) }))] })) : null;
616
+ })(), (0, jsx_runtime_1.jsx)("div", { ref: headerRef, className: (0, classnames_1.default)('ss__chat__content__header', {
617
+ 'ss__chat__content__header--overlay': messagesOverflow,
618
+ }), children: ((_o = store.currentChat) === null || _o === void 0 ? void 0 : _o.comparisons.compared) && store.currentChat.comparisons.compared.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__content__header__comparisons', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__content__header__comparisons__header', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__content__header__comparisons__header__title', children: [(0, jsx_runtime_1.jsx)(__1.Icon, { className: 'ss__chat__content__header__comparisons__header__title__icon', icon: 'clipboard' }), (0, jsx_runtime_1.jsxs)("span", { className: 'ss__chat__content__header__comparisons__header__title__text', children: ["Compare Products (", (_p = store.currentChat) === null || _p === void 0 ? void 0 : _p.comparisons.compared.length, "/", (_q = store.currentChat) === null || _q === void 0 ? void 0 : _q.comparisons.maxItems, ")"] })] }), (0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__content__header__comparisons__header__actions', children: (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: function () { var _a; return (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.reset(); }, children: "clear" }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__content__header__comparisons__content', children: [(0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__content__header__comparisons__content__items', children: Array.from({ length: (_r = store.currentChat) === null || _r === void 0 ? void 0 : _r.comparisons.maxItems }).map(function (_, index) {
619
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
620
+ var comparisonItem = (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.compared[index];
621
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat__content__header__comparisons__content__comparison', {
622
+ 'ss__chat__content__header__comparisons__content__comparison--placeholder': !comparisonItem,
623
+ }), children: comparisonItem ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Image_1.Image
624
+ // onClick={() => {
625
+ // controller?.productQuickView(product as any);
626
+ // }}
627
+ , {
628
+ // onClick={() => {
629
+ // controller?.productQuickView(product as any);
630
+ // }}
631
+ alt: ((_e = (_d = (_c = (((_b = comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result) === null || _b === void 0 ? void 0 : _b.display) || (comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result))) === null || _c === void 0 ? void 0 : _c.mappings) === null || _d === void 0 ? void 0 : _d.core) === null || _e === void 0 ? void 0 : _e.name) || '', src: ((_j = (_h = (_g = (((_f = comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result) === null || _f === void 0 ? void 0 : _f.display) || (comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result))) === null || _g === void 0 ? void 0 : _g.mappings) === null || _h === void 0 ? void 0 : _h.core) === null || _j === void 0 ? void 0 : _j.imageUrl) ||
632
+ ((_o = (_m = (_l = (((_k = comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result) === null || _k === void 0 ? void 0 : _k.display) || (comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result))) === null || _l === void 0 ? void 0 : _l.mappings) === null || _m === void 0 ? void 0 : _m.core) === null || _o === void 0 ? void 0 : _o.parentImageUrl) ||
633
+ '' }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__content__header__comparisons__content__comparison__remove", onClick: function () {
634
+ var _a;
635
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.remove(comparisonItem.result.id);
636
+ }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: 'close-thin', size: '12px' }) })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(__1.Icon, { icon: 'plus-thin' }), (0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__content__header__comparisons__content__comparison--placeholder__text', children: "Add" })] })) }, index));
637
+ }) }), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat__content__header__comparisons__action', {
638
+ 'ss__chat__content__header__comparisons__action--hidden': (((_s = store.currentChat) === null || _s === void 0 ? void 0 : _s.comparisons.compared.length) || 0) < 2,
639
+ }), children: (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: function () { return controller.search(); }, icon: { icon: 'compare', title: 'Compare' }, children: "Compare" }) })] })] })) }), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__messages', ref: messagesContainerRef, role: "log", "aria-live": "polite", "aria-relevant": "additions", "aria-label": "Chat messages", style: visibleChatLength ? { scrollbarGutter: 'stable' } : undefined, children: [(!((_t = store.currentChat) === null || _t === void 0 ? void 0 : _t.chat) || store.currentChat.chat.length === 0) && store.welcomeMessage && !((_u = store.currentChat) === null || _u === void 0 ? void 0 : _u.isExpired) && ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__welcome", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__chat__welcome__message", children: store.welcomeMessage }), (0, jsx_runtime_1.jsx)(ChatSuggestedQuestions_1.ChatSuggestedQuestions, __assign({}, subProps.suggestedQuestions, { questions: store.suggestedQuestions, controller: controller }))] })), (_v = store.currentChat) === null || _v === void 0 ? void 0 : _v.chat.filter(function (chatItem) { return chatItem.messageType !== 'productQuery'; }).map(function (chatItem) {
640
+ var showAvatar = !!(avatarCharacter || avatarImage) && chatItem.messageType !== 'user';
641
+ var messageContent = {
642
+ user: ((0, jsx_runtime_1.jsx)(ChatMessageUser_1.ChatMessageUser, __assign({}, subProps.messageUser, { chatItem: chatItem, controller: controller, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
643
+ text: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
644
+ content: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
645
+ productSearchResult: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
646
+ inspirationResult: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
647
+ productAnswer: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
648
+ productComparison: (function () {
649
+ var _a;
650
+ // On mobile, only the first productComparison in the session
651
+ // auto-opens the secondary panel. Subsequent ones get a
652
+ // prominent "Show Details" button instead.
653
+ var comparisonMessages = (((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.chat) || []).filter(function (m) { return m.messageType === 'productComparison'; });
654
+ var isFirst = comparisonMessages.length > 0 && comparisonMessages[0].id === chatItem.id;
655
+ return ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, showDetailsButton: isMobile && !isFirst, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText })));
656
+ })(),
657
+ productRecommendation: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, onProductQuickView: isMobile ? function () { return setMobileProductInfoOpen(true); } : undefined, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
658
+ actions: ((0, jsx_runtime_1.jsx)(ChatSuggestedQuestions_1.ChatSuggestedQuestions, { actions: chatItem.actions, controller: controller })),
659
+ errorResponse: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
660
+ topicDrift: ((0, jsx_runtime_1.jsx)(ChatMessageText_1.ChatMessageText, __assign({}, subProps.messageText, { chatItem: chatItem, controller: controller, scrollToBottom: scrollToBottomIfNear, sideChatOpen: !!shouldShowSideChat, primaryColor: colorPrimary, primaryColorText: colorPrimaryText }))),
661
+ productQuery: null,
662
+ }[chatItem.messageType] || null;
663
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("ss__chat__message", "ss__chat__message--".concat(chatItem.messageType), {
664
+ 'ss__chat__message--with-avatar': showAvatar,
665
+ }), children: [showAvatar && ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat__message__avatar', {
666
+ 'ss__chat__message__avatar--image': !!avatarImage,
667
+ }), "aria-hidden": "true", children: avatarImage ? (0, jsx_runtime_1.jsx)(Image_1.Image, { src: avatarImage, alt: "" }) : avatarCharacter })), showAvatar ? (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__message__content", children: messageContent }) : messageContent] }, chatItem.id));
668
+ }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__messages__end", ref: messagesEndRef }), showNewMessages && messagesOverflow && ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__new-messages", onClick: function () {
669
+ scrollToBottom();
670
+ setShowNewMessages(false);
671
+ }, children: [(0, jsx_runtime_1.jsx)(__1.Icon, { icon: "angle-down", size: "12px" }), (0, jsx_runtime_1.jsx)("span", { children: "New messages" })] }))] }), (0, jsx_runtime_1.jsx)(ChatLoadingIndicator_1.ChatLoadingIndicator, __assign({}, subProps.loadingIndicator, { loading: store.loading, verbs: loadingVerbs })), !((_w = store.currentChat) === null || _w === void 0 ? void 0 : _w.isExpired) ? ((0, jsx_runtime_1.jsxs)("div", __assign({ className: "ss__chat__content__footer", ref: footerRef }, dragHandlers, { children: [store.error && (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__error", children: store.error.message }), ((_x = store.currentChat) === null || _x === void 0 ? void 0 : _x.sessionLimitReached) && ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__topic-drift', children: [(0, jsx_runtime_1.jsx)(__1.Icon, { icon: "info", size: "18px", className: 'ss__chat__topic-drift__icon--info' }), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__topic-drift__text', children: [(0, jsx_runtime_1.jsx)("span", { children: "Session limit reached" }), (0, jsx_runtime_1.jsx)("span", { children: "This chat has reached its maximum number of interactions. Start a new session to continue." })] }), (0, jsx_runtime_1.jsx)(Button_1.Button, { className: 'ss__chat__topic-drift__button', onClick: function () {
672
+ controller.store.createChat();
673
+ }, children: "New Session" })] })), store.facets && store.facets.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__actions', children: (0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__actions__wrap", children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__actions__facets-header", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions--title", children: "Filter by:" }), multiselectFacets && store.hasPendingFacetChanges && ((0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__actions__facets-apply ss__chat__actions__facets-apply--active', children: (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: function () {
674
+ controller.search();
675
+ }, children: store.pendingFacetCount > 0 ? "Apply (".concat(store.pendingFacetCount, ")") : 'Clear facets' }) }))] }), (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions--facets", children: store.facets.slice(0, 10).map(function (facet, idx) {
676
+ var _a;
677
+ // range/slider facets render via FacetSlider; everything else needs at least one value to be useful
678
+ if (facet.type !== 'range' && !((_a = facet.values) === null || _a === void 0 ? void 0 : _a.length))
679
+ return null;
680
+ if (facet.type === 'range') {
681
+ return (0, jsx_runtime_1.jsx)(SliderFacetDropdown, { facet: facet, label: getFacetButtonLabel(facet) }, idx);
682
+ }
683
+ return ((0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions__facet ss__chat__actions__facet--".concat(facet.type), children: (0, jsx_runtime_1.jsx)(__1.Dropdown, { usePortal: true, dropUp: true, boundaryRef: chatRef, button: (0, jsx_runtime_1.jsx)(FacetButton, { label: getFacetButtonLabel(facet) }), style: {
684
+ '.ss__dropdown__content': __assign({ width: '150px', maxHeight: '200px', overflowY: 'auto', background: 'white', boxShadow: '0px 3px 6px 0px rgba(0, 0, 0, 0.2)', borderRadius: '6px' }, (multiselectFacets
685
+ ? {
686
+ '.ss__chat__actions__facet__option--checkbox': {
687
+ display: 'flex',
688
+ alignItems: 'center',
689
+ gap: '8px',
690
+ padding: '6px 10px',
691
+ cursor: 'pointer',
692
+ width: '100%',
693
+ boxSizing: 'border-box',
694
+ background: '#fff',
695
+ border: 'none',
696
+ borderBottom: '1px solid #f0f0f0',
697
+ '&:hover': {
698
+ background: new utilities_1.Colour(colorPrimary).lightenHex(0.95),
699
+ },
700
+ '&:last-child': {
701
+ borderBottom: 'none',
702
+ },
703
+ '.ss__chat__actions__facet__option__checkbox': {
704
+ width: '16px',
705
+ height: '16px',
706
+ borderRadius: '3px',
707
+ border: '2px solid #ccc',
708
+ display: 'flex',
709
+ alignItems: 'center',
710
+ justifyContent: 'center',
711
+ flexShrink: 0,
712
+ '&.ss__chat__actions__facet__option__checkbox--checked': {
713
+ background: colorPrimary,
714
+ borderColor: colorPrimary,
715
+ color: colorPrimaryText,
716
+ svg: {
717
+ fill: colorPrimaryText,
718
+ stroke: colorPrimaryText,
719
+ },
720
+ },
721
+ },
722
+ '.ss__chat__actions__facet__option__label': {
723
+ fontSize: '14px',
724
+ color: '#333',
725
+ flex: '1 1 auto',
726
+ textAlign: 'left',
727
+ },
728
+ },
729
+ }
730
+ : {
731
+ '.ss__button': {
732
+ width: '100%',
733
+ border: 'none',
734
+ borderRadius: 0,
735
+ boxSizing: 'border-box',
736
+ background: '#fff',
737
+ '&:hover': {
738
+ background: new utilities_1.Colour(colorPrimary).lightenHex(0.95),
739
+ },
740
+ '&.ss__chat__actions__facet__option--selected': {
741
+ fontWeight: 'bold',
742
+ },
743
+ },
744
+ })),
745
+ }, children: (0, jsx_runtime_1.jsx)("div", { className: "ss__chat__actions__facet__options", children: facet.type === 'range-buckets'
746
+ ? facet.values.map(function (option) {
747
+ var _a, _b;
748
+ var rangeOption = option;
749
+ var optionValue = "".concat((_a = rangeOption.low) !== null && _a !== void 0 ? _a : '*', ":").concat((_b = rangeOption.high) !== null && _b !== void 0 ? _b : '*');
750
+ if (multiselectFacets) {
751
+ var isSelected_1 = controller.store.isFacetSelected(facet.field, optionValue);
752
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__actions__facet__option--checkbox", onClick: function () {
753
+ if (isSelected_1) {
754
+ controller.store.removeFacet(facet.field, optionValue);
755
+ }
756
+ else {
757
+ controller.store.addFacet({
758
+ key: facet.field,
759
+ value: optionValue,
760
+ });
761
+ }
762
+ }, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat__actions__facet__option__checkbox', {
763
+ 'ss__chat__actions__facet__option__checkbox--checked': isSelected_1,
764
+ }), children: isSelected_1 && (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "check-thin", size: "10px" }) }), (0, jsx_runtime_1.jsx)("span", { className: "ss__chat__actions__facet__option__label", children: rangeOption.label })] }, optionValue));
765
+ }
766
+ return ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: (0, classnames_1.default)({
767
+ 'ss__chat__actions__facet__option--selected': controller.store.isFacetSelected(facet.field, optionValue),
768
+ }), onClick: function () {
769
+ // Non-multiselect: clicking an already-selected value toggles it off.
770
+ // `addFacet` is idempotent against an existing urlManager value, so without
771
+ // the toggle the state wouldn't change, `hasPendingFacetChanges` would stay
772
+ // false, and the params getter would fall through to `general`.
773
+ if (controller.store.isFacetSelected(facet.field, optionValue)) {
774
+ controller.store.removeFacet(facet.field, optionValue);
775
+ }
776
+ else {
777
+ controller.store.addFacet({
778
+ key: facet.field,
779
+ value: optionValue,
780
+ });
781
+ }
782
+ // Force productSearch with the current filter state rather than relying
783
+ // on the params getter's hasPendingFacetChanges promotion — a facet click
784
+ // in the chat is unambiguously a search intent.
785
+ controller.search({
786
+ data: { requestType: 'productSearch', searchFilters: controller.store.searchFilters },
787
+ });
788
+ }, children: rangeOption.label }, optionValue));
789
+ })
790
+ : facet.values.map(function (option) {
791
+ var valueOption = option;
792
+ var optionValue = valueOption.value || valueOption.label;
793
+ if (multiselectFacets) {
794
+ var isSelected_2 = controller.store.isFacetSelected(facet.field, optionValue);
795
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__actions__facet__option--checkbox", onClick: function () {
796
+ if (isSelected_2) {
797
+ controller.store.removeFacet(facet.field, optionValue);
798
+ }
799
+ else {
800
+ controller.store.addFacet({
801
+ key: facet.field,
802
+ value: optionValue,
803
+ });
804
+ }
805
+ }, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('ss__chat__actions__facet__option__checkbox', {
806
+ 'ss__chat__actions__facet__option__checkbox--checked': isSelected_2,
807
+ }), children: isSelected_2 && (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "check-thin", size: "10px" }) }), (0, jsx_runtime_1.jsx)("span", { className: "ss__chat__actions__facet__option__label", children: valueOption.label })] }, optionValue));
808
+ }
809
+ return ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: (0, classnames_1.default)({
810
+ 'ss__chat__actions__facet__option--selected': controller.store.isFacetSelected(facet.field, optionValue),
811
+ }), onClick: function () {
812
+ // Non-multiselect: clicking an already-selected value toggles it off.
813
+ // `addFacet` is idempotent against an existing urlManager value, so without
814
+ // the toggle the state wouldn't change, `hasPendingFacetChanges` would stay
815
+ // false, and the params getter would fall through to `general`.
816
+ if (controller.store.isFacetSelected(facet.field, optionValue)) {
817
+ controller.store.removeFacet(facet.field, optionValue);
818
+ }
819
+ else {
820
+ controller.store.addFacet({
821
+ key: facet.field,
822
+ value: optionValue,
823
+ });
824
+ }
825
+ // Force productSearch with the current filter state rather than relying
826
+ // on the params getter's hasPendingFacetChanges promotion — a facet click
827
+ // in the chat is unambiguously a search intent.
828
+ controller.search({
829
+ data: { requestType: 'productSearch', searchFilters: controller.store.searchFilters },
830
+ });
831
+ }, children: valueOption.label }, optionValue));
832
+ }) }) }, facet.field) }, idx));
833
+ }) })] }) })), (function () {
834
+ var _a, _b, _c;
835
+ var activeComparisonSearchResults = shouldShowSideChat && (activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) === 'productComparison'
836
+ ? activeMessage.searchResults || []
837
+ : null;
838
+ var showCommittedComparisons = !activeComparisonSearchResults &&
839
+ ((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.committed) &&
840
+ store.currentChat.comparisons.committed.length > 0 &&
841
+ ((activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) === 'user' ||
842
+ (activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) === 'productComparison' ||
843
+ (activeMessage === null || activeMessage === void 0 ? void 0 : activeMessage.messageType) === 'productQuery');
844
+ var visibleAttachments = ((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.attachments.attached.filter(function (item) { return item.state === 'attached' || item.state === 'active' || item.state === 'loading' || item.state === 'error'; })) || [];
845
+ var productAttachments = visibleAttachments.filter(function (item) {
846
+ return item.type === 'product' &&
847
+ item.requestType !== 'productSimilar' &&
848
+ item.requestType !== 'productComparison';
849
+ });
850
+ var imageAttachments = visibleAttachments.filter(function (item) { return item.type === 'image'; });
851
+ var comparisonItems = activeComparisonSearchResults
852
+ ? activeComparisonSearchResults.map(function (result) {
853
+ var _a, _b, _c, _d, _e, _f, _g, _h;
854
+ var d = (result === null || result === void 0 ? void 0 : result.display) || result;
855
+ return {
856
+ id: result === null || result === void 0 ? void 0 : result.id,
857
+ name: ((_b = (_a = d === null || d === void 0 ? void 0 : d.mappings) === null || _a === void 0 ? void 0 : _a.core) === null || _b === void 0 ? void 0 : _b.name) || '',
858
+ imageUrl: ((_d = (_c = d === null || d === void 0 ? void 0 : d.mappings) === null || _c === void 0 ? void 0 : _c.core) === null || _d === void 0 ? void 0 : _d.thumbnailImageUrl) || ((_f = (_e = d === null || d === void 0 ? void 0 : d.mappings) === null || _e === void 0 ? void 0 : _e.core) === null || _f === void 0 ? void 0 : _f.imageUrl) || ((_h = (_g = d === null || d === void 0 ? void 0 : d.mappings) === null || _g === void 0 ? void 0 : _g.core) === null || _h === void 0 ? void 0 : _h.parentImageUrl) || '',
859
+ onClick: function () {
860
+ controller.productQuickView(result);
861
+ if (isMobile)
862
+ setMobileProductInfoOpen(true);
863
+ },
864
+ };
865
+ })
866
+ : showCommittedComparisons
867
+ ? (((_c = store.currentChat) === null || _c === void 0 ? void 0 : _c.comparisons.committed) || []).map(function (comparisonItem) {
868
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
869
+ var d = ((_a = comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result) === null || _a === void 0 ? void 0 : _a.display) || (comparisonItem === null || comparisonItem === void 0 ? void 0 : comparisonItem.result);
870
+ return {
871
+ id: (_b = comparisonItem.result) === null || _b === void 0 ? void 0 : _b.id,
872
+ name: ((_d = (_c = d === null || d === void 0 ? void 0 : d.mappings) === null || _c === void 0 ? void 0 : _c.core) === null || _d === void 0 ? void 0 : _d.name) || '',
873
+ imageUrl: ((_f = (_e = d === null || d === void 0 ? void 0 : d.mappings) === null || _e === void 0 ? void 0 : _e.core) === null || _f === void 0 ? void 0 : _f.thumbnailImageUrl) || ((_h = (_g = d === null || d === void 0 ? void 0 : d.mappings) === null || _g === void 0 ? void 0 : _g.core) === null || _h === void 0 ? void 0 : _h.imageUrl) || ((_k = (_j = d === null || d === void 0 ? void 0 : d.mappings) === null || _j === void 0 ? void 0 : _j.core) === null || _k === void 0 ? void 0 : _k.parentImageUrl) || '',
874
+ onClick: function () {
875
+ controller.productQuickView(comparisonItem.result);
876
+ if (isMobile)
877
+ setMobileProductInfoOpen(true);
878
+ },
879
+ };
880
+ })
881
+ : [];
882
+ var productItems = productAttachments.map(function (item) {
883
+ var remove = function () {
884
+ var _a, _b;
885
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.remove(item.id);
886
+ setMobileProductInfoOpen(false);
887
+ (_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.dismissSideChat();
888
+ };
889
+ return {
890
+ id: item.id,
891
+ name: item.name || '',
892
+ imageUrl: item.thumbnailUrl || '',
893
+ onClick: remove,
894
+ onRemove: remove,
895
+ };
896
+ });
897
+ var imageItems = imageAttachments.map(function (item) {
898
+ var _a;
899
+ return ({
900
+ id: item.id,
901
+ name: item.fileName || 'Image',
902
+ imageUrl: item.base64 || item.thumbnailUrl || '',
903
+ isLoading: item.state === 'loading',
904
+ hasError: !!item.error,
905
+ errorMessage: (_a = item.error) === null || _a === void 0 ? void 0 : _a.message,
906
+ onRemove: function () { var _a; return (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.remove(item.id); },
907
+ });
908
+ });
909
+ var productTitle = productItems.length > 1 ? 'Compare these products' : 'Ask about this product';
910
+ var hasImageError = imageItems.some(function (item) { return item.hasError; });
911
+ var imageTitle = imageItems.length > 0 && !hasImageError ? 'Find products similar to this image:' : '';
912
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [comparisonItems.length > 0 && ((0, jsx_runtime_1.jsx)(ChatAttachmentContext_1.ChatAttachmentContext, __assign({}, subProps.attachmentContext, { title: 'Compare these products', items: comparisonItems, onClose: function () {
913
+ var _a, _b;
914
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.resetCommitted();
915
+ (_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.dismissSideChat();
916
+ } }))), productItems.length > 0 && ((0, jsx_runtime_1.jsx)(ChatAttachmentContext_1.ChatAttachmentContext, __assign({}, subProps.attachmentContext, { title: productTitle, items: productItems, onClose: function () {
917
+ var _a;
918
+ productAttachments.forEach(function (item) { var _a; return (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.remove(item.id); });
919
+ setMobileProductInfoOpen(false);
920
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.dismissSideChat();
921
+ } }))), imageItems.length > 0 && (0, jsx_runtime_1.jsx)(ChatAttachmentContext_1.ChatAttachmentContext, __assign({}, subProps.attachmentContext, { title: imageTitle, items: imageItems }))] }));
922
+ })(), (function () {
923
+ var _a;
924
+ var drift = (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.topicDrift;
925
+ if (!drift)
926
+ return null;
927
+ // recommendedAction is the prescription; driftType is the diagnosis.
928
+ // Hide the banner when the backend says to keep flowing, or when no drift was detected.
929
+ if (drift.recommendedAction === 'CONTINUE' || drift.driftType === 'NO_DRIFT')
930
+ return null;
931
+ var isScopeRedirect = drift.recommendedAction === 'SCOPE_REDIRECT';
932
+ var primaryText = isScopeRedirect ? "I'm here to help with shopping" : 'Looking for something new?';
933
+ var secondaryText = isScopeRedirect
934
+ ? 'Try asking about products, comparisons, or recommendations'
935
+ : 'Start a fresh session for better assistance, or keep going in this one?';
936
+ var buttonText = isScopeRedirect ? '' : 'New Session';
937
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__topic-drift', children: [(0, jsx_runtime_1.jsx)(__1.Icon, { icon: "info", size: "18px", className: 'ss__chat__topic-drift__icon--info' }), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__topic-drift__text', children: [(0, jsx_runtime_1.jsx)("span", { children: primaryText }), (0, jsx_runtime_1.jsx)("span", { children: secondaryText })] }), buttonText && ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: 'ss__chat__topic-drift__button', onClick: function () {
938
+ var _a, _b, _c;
939
+ if (isScopeRedirect) {
940
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.dismissTopicDrift();
941
+ return;
942
+ }
943
+ // Capture image attachments from the current chat before handleTopicDrift /
944
+ // createChat tear down the conversation — an imageSearch that drifted needs
945
+ // the same image attached to the carried-over message in the new session,
946
+ // otherwise params would fall back to a `general` request without the image.
947
+ var previousImageAttachments = (((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.attachments.attached) || [])
948
+ .filter(function (item) { return item.type === 'image' && item.state !== 'error'; })
949
+ .map(function (item) {
950
+ var img = item;
951
+ return {
952
+ type: 'image',
953
+ base64: img.base64,
954
+ fileName: img.fileName,
955
+ imageId: img.imageId,
956
+ imageUrl: img.imageUrl,
957
+ thumbnailUrl: img.thumbnailUrl,
958
+ // Already uploaded — skip the 'loading' default state.
959
+ state: 'attached',
960
+ };
961
+ });
962
+ var messageText = (_c = store.currentChat) === null || _c === void 0 ? void 0 : _c.handleTopicDrift();
963
+ if (messageText) {
964
+ controller.store.createChat();
965
+ previousImageAttachments.forEach(function (cfg) {
966
+ var _a;
967
+ (_a = controller.store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.add(cfg);
968
+ });
969
+ controller.search({ data: { message: messageText } });
970
+ }
971
+ }, children: buttonText })), (0, jsx_runtime_1.jsx)("span", { onClick: function () {
972
+ var _a;
973
+ (_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.dismissTopicDrift();
974
+ }, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: "close-thin", size: "14px", className: 'ss__chat__topic-drift__icon--close' }) })] }));
975
+ })(), (0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__input', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__input__input', children: [(0, jsx_runtime_1.jsx)("input", { type: "text", name: "ss-chat-input", disabled: store.loading || store.blocked || ((_y = store.currentChat) === null || _y === void 0 ? void 0 : _y.sessionLimitReached), placeholder: (function () {
976
+ var _a, _b, _c;
977
+ var comparedCount = ((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.comparisons.compared.length) || 0;
978
+ var committedCount = ((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.comparisons.committed.length) || 0;
979
+ var attached = ((_c = store.currentChat) === null || _c === void 0 ? void 0 : _c.attachments.attached.filter(function (item) { return item.state === 'attached' || item.state === 'active'; })) || [];
980
+ var attachedProducts = attached.filter(function (item) { return item.type === 'product'; });
981
+ var attachedImages = attached.filter(function (item) { return item.type === 'image' && !item.error; });
982
+ if (attachedProducts.length === 1) {
983
+ return 'Ask about this product...';
984
+ }
985
+ if (comparedCount > 1 || attachedProducts.length > 1) {
986
+ return 'What would you like to compare?';
987
+ }
988
+ if (committedCount > 0) {
989
+ return 'Ask about the compared products...';
990
+ }
991
+ if (attachedImages.length > 0) {
992
+ return 'Ask about this image...';
993
+ }
994
+ if (comparedCount === 1) {
995
+ return 'Add another product to compare...';
996
+ }
997
+ return 'Type your message...';
998
+ })(), onInput: function (e) { return controller.handlers.input.input(e); }, onKeyDown: function (e) {
999
+ controller.handlers.input.enterKey(e);
1000
+ if (e.keyCode === 13 && isMobile && mobileProductInfoOpen) {
1001
+ setMobileProductInfoOpen(false);
1002
+ }
1003
+ }, value: controller.store.inputValue }), store.features.imageSearch.enabled && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { className: 'ss__chat__upload-button', disabled: store.loading || store.blocked || ((_z = store.currentChat) === null || _z === void 0 ? void 0 : _z.sessionLimitReached), onClick: function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, icon: { icon: 'image', title: 'Upload Image' } }), (0, jsx_runtime_1.jsx)("input", { ref: fileInputRef, onChange: function (e) { return __awaiter(void 0, void 0, void 0, function () {
1004
+ return __generator(this, function (_a) {
1005
+ switch (_a.label) {
1006
+ case 0: return [4 /*yield*/, controller.upload(e.target.files)];
1007
+ case 1:
1008
+ _a.sent();
1009
+ // reset value
1010
+ e.target.value = '';
1011
+ return [2 /*return*/];
1012
+ }
1013
+ });
1014
+ }); }, type: "file", accept: "image/*", className: "ss__chat__input__input__file" })] }))] }), (0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__input__actions', children: (function () {
1015
+ var _a, _b;
1016
+ var hasImageAttachment = (((_a = store.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.attached) || []).some(function (item) { return item.type === 'image' && !item.error; });
1017
+ var messageEmpty = !controller.store.inputValue.trim();
1018
+ var sendDisabled = store.blocked || ((_b = store.currentChat) === null || _b === void 0 ? void 0 : _b.sessionLimitReached) || (hasImageAttachment && messageEmpty) || messageEmpty;
1019
+ return ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: "ss__chat__send-button", icon: { icon: 'send', title: 'Send Message' }, disabled: sendDisabled, onClick: function () {
1020
+ if (sendDisabled)
1021
+ return;
1022
+ controller.search();
1023
+ if (isMobile && mobileProductInfoOpen) {
1024
+ setMobileProductInfoOpen(false);
1025
+ }
1026
+ } }));
1027
+ })() })] }), (0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__disclaimer', children: (0, jsx_runtime_1.jsxs)("i", { children: ["Powered by Athos Commerce. AI-powered assistant. It sometimes make mistakes. Avoid sharing personal data.", ' ', (0, jsx_runtime_1.jsx)("a", { href: "https://athoscommerce.com/legal/privacy-policy/", target: "_blank", rel: "noopener noreferrer", children: "Privacy Policy" })] }) }), isDraggingFile && ((0, jsx_runtime_1.jsxs)("div", { className: "ss__chat__content__footer__drop-overlay", children: [(0, jsx_runtime_1.jsx)(__1.Icon, { icon: "image", size: "24px" }), (0, jsx_runtime_1.jsx)("span", { children: "Drop image to upload" })] }))] }))) : ((0, jsx_runtime_1.jsxs)("div", { className: 'ss__chat__expired', children: [(0, jsx_runtime_1.jsx)("div", { className: 'ss__chat__expired__message', children: "This chat is expired. Please start a new chat." }), (0, jsx_runtime_1.jsx)(Button_1.Button, { className: 'ss__chat__expired__button', onClick: function () {
1028
+ controller.store.createChat();
1029
+ }, children: "New Session" })] }))] })] })) : null] })), (0, jsx_runtime_1.jsx)(__1.Overlay, { style: { zIndex: 1001 }, color: "transparent", active: store.open, onClick: function () { return controller.handlers.button.click(); } })] }) }));
1030
+ });