@athoscommerce/snap-preact 1.7.1-beta.133 → 1.9.0

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