@athoscommerce/snap-preact 1.13.3-beta.187 → 1.14.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 (430) hide show
  1. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +11 -56
  2. package/dist/cjs/components/src/components/Atoms/Icon/paths.js +0 -13
  3. package/dist/cjs/components/src/components/Molecules/Filter/Filter.js +1 -1
  4. package/dist/cjs/components/src/components/Molecules/Result/Result.js +4 -51
  5. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +2 -28
  6. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +28 -24
  7. package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +20 -50
  8. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +44 -21
  9. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +64 -6
  10. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.js +19 -8
  11. package/dist/cjs/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.js +11 -44
  12. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  13. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +12 -11
  14. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +6 -8
  15. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +6 -8
  16. package/dist/cjs/components/src/components/Templates/Search/Search.js +1 -1
  17. package/dist/cjs/components/src/index.js +1 -17
  18. package/dist/cjs/components/src/providers/themeComponents.js +0 -20
  19. package/dist/cjs/components/src/themes/base/components/templates/index.js +0 -10
  20. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +0 -10
  21. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteFixed.js +1 -1
  22. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteModal.js +1 -1
  23. package/dist/cjs/components/src/themes/pike/components/templates/autocompleteSlideout.js +3 -2
  24. package/dist/cjs/components/src/themes/pike/components/templates/index.js +0 -10
  25. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +0 -10
  26. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +0 -10
  27. package/dist/cjs/components/src/utilities/Colour/Colour.js +0 -41
  28. package/dist/cjs/components/src/utilities/componentArgs.js +1 -1
  29. package/dist/cjs/components/src/utilities/index.js +0 -1
  30. package/dist/cjs/components/src/utilities/snapify.js +0 -27
  31. package/dist/cjs/src/Snap.js +6 -85
  32. package/dist/cjs/src/Templates/SnapTemplates.js +5 -55
  33. package/dist/cjs/src/Templates/Stores/LibraryStore.js +1 -51
  34. package/dist/cjs/src/Templates/Stores/TemplateStore.js +3 -3
  35. package/dist/cjs/src/Templates/Stores/library/languages/ar.js +6 -485
  36. package/dist/cjs/src/Templates/Stores/library/languages/de.js +6 -485
  37. package/dist/cjs/src/Templates/Stores/library/languages/es.js +6 -490
  38. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +6 -490
  39. package/dist/cjs/src/Templates/Stores/library/languages/hi.js +6 -485
  40. package/dist/cjs/src/Templates/Stores/library/languages/it.js +6 -485
  41. package/dist/cjs/src/Templates/Stores/library/languages/ja.js +6 -485
  42. package/dist/cjs/src/Templates/Stores/library/languages/ko.js +6 -485
  43. package/dist/cjs/src/Templates/Stores/library/languages/nl.js +6 -485
  44. package/dist/cjs/src/Templates/Stores/library/languages/pt.js +6 -485
  45. package/dist/cjs/src/Templates/Stores/library/languages/ru.js +6 -485
  46. package/dist/cjs/src/Templates/Stores/library/languages/tr.js +6 -485
  47. package/dist/cjs/src/Templates/Stores/library/languages/vi.js +6 -485
  48. package/dist/cjs/src/Templates/Stores/library/languages/zh.js +6 -485
  49. package/dist/cjs/src/create/index.js +1 -3
  50. package/dist/cjs/src/setupEvents.js +0 -44
  51. package/dist/cjs/src/utils/index.js +1 -3
  52. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -3
  53. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  54. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -6
  55. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  56. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +12 -57
  57. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +0 -13
  58. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  59. package/dist/esm/components/src/components/Atoms/Icon/paths.js +0 -13
  60. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  61. package/dist/esm/components/src/components/Molecules/Filter/Filter.js +1 -1
  62. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts +2 -2
  63. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
  64. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +3 -7
  65. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  66. package/dist/esm/components/src/components/Molecules/Result/Result.js +4 -51
  67. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +0 -3
  68. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  69. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +2 -28
  70. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  71. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +29 -25
  72. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
  73. package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +20 -50
  74. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -1
  75. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  76. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +43 -21
  77. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts +1 -0
  78. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.d.ts.map +1 -1
  79. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +65 -7
  80. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +5 -0
  81. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  82. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.js +19 -8
  83. package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.d.ts +1 -5
  84. package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.d.ts.map +1 -1
  85. package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.js +11 -44
  86. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  87. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +4 -0
  88. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  89. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +13 -12
  90. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +3 -0
  91. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  92. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +7 -9
  93. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +3 -0
  94. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  95. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +7 -9
  96. package/dist/esm/components/src/components/Templates/Search/Search.js +2 -2
  97. package/dist/esm/components/src/hooks/index.d.ts +2 -1
  98. package/dist/esm/components/src/hooks/index.d.ts.map +1 -1
  99. package/dist/esm/components/src/index.d.ts +4 -16
  100. package/dist/esm/components/src/index.d.ts.map +1 -1
  101. package/dist/esm/components/src/index.js +1 -15
  102. package/dist/esm/components/src/providers/langComponents.d.ts +0 -20
  103. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  104. package/dist/esm/components/src/providers/themeComponents.d.ts +1 -203
  105. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  106. package/dist/esm/components/src/providers/themeComponents.js +0 -20
  107. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  108. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  109. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  110. package/dist/esm/components/src/themes/base/components/templates/index.js +0 -10
  111. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  112. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +0 -10
  113. package/dist/esm/components/src/themes/pike/components/templates/autocompleteFixed.js +1 -1
  114. package/dist/esm/components/src/themes/pike/components/templates/autocompleteModal.js +1 -1
  115. package/dist/esm/components/src/themes/pike/components/templates/autocompleteSlideout.d.ts.map +1 -1
  116. package/dist/esm/components/src/themes/pike/components/templates/autocompleteSlideout.js +3 -2
  117. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  118. package/dist/esm/components/src/themes/pike/components/templates/index.js +0 -10
  119. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  120. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +0 -10
  121. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  122. package/dist/esm/components/src/themes/snappy/components/templates/index.js +0 -10
  123. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +0 -15
  124. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  125. package/dist/esm/components/src/utilities/Colour/Colour.js +0 -41
  126. package/dist/esm/components/src/utilities/componentArgs.d.ts +1 -3
  127. package/dist/esm/components/src/utilities/componentArgs.d.ts.map +1 -1
  128. package/dist/esm/components/src/utilities/componentArgs.js +1 -1
  129. package/dist/esm/components/src/utilities/index.d.ts +0 -1
  130. package/dist/esm/components/src/utilities/index.d.ts.map +1 -1
  131. package/dist/esm/components/src/utilities/index.js +0 -1
  132. package/dist/esm/components/src/utilities/snapify.d.ts +2 -3
  133. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  134. package/dist/esm/components/src/utilities/snapify.js +2 -29
  135. package/dist/esm/src/Snap.d.ts +1 -3
  136. package/dist/esm/src/Snap.d.ts.map +1 -1
  137. package/dist/esm/src/Snap.js +7 -86
  138. package/dist/esm/src/Templates/SnapTemplates.d.ts +1 -2
  139. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  140. package/dist/esm/src/Templates/SnapTemplates.js +5 -54
  141. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +0 -43
  142. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  143. package/dist/esm/src/Templates/Stores/LibraryStore.js +1 -51
  144. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +5 -19
  145. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  146. package/dist/esm/src/Templates/Stores/TemplateStore.js +3 -3
  147. package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts.map +1 -1
  148. package/dist/esm/src/Templates/Stores/library/languages/ar.js +6 -485
  149. package/dist/esm/src/Templates/Stores/library/languages/de.d.ts.map +1 -1
  150. package/dist/esm/src/Templates/Stores/library/languages/de.js +6 -485
  151. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  152. package/dist/esm/src/Templates/Stores/library/languages/es.js +6 -490
  153. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  154. package/dist/esm/src/Templates/Stores/library/languages/fr.js +6 -490
  155. package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts.map +1 -1
  156. package/dist/esm/src/Templates/Stores/library/languages/hi.js +6 -485
  157. package/dist/esm/src/Templates/Stores/library/languages/it.d.ts.map +1 -1
  158. package/dist/esm/src/Templates/Stores/library/languages/it.js +6 -485
  159. package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts.map +1 -1
  160. package/dist/esm/src/Templates/Stores/library/languages/ja.js +6 -485
  161. package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts.map +1 -1
  162. package/dist/esm/src/Templates/Stores/library/languages/ko.js +6 -485
  163. package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts.map +1 -1
  164. package/dist/esm/src/Templates/Stores/library/languages/nl.js +6 -485
  165. package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts.map +1 -1
  166. package/dist/esm/src/Templates/Stores/library/languages/pt.js +6 -485
  167. package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts.map +1 -1
  168. package/dist/esm/src/Templates/Stores/library/languages/ru.js +6 -485
  169. package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts.map +1 -1
  170. package/dist/esm/src/Templates/Stores/library/languages/tr.js +6 -485
  171. package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts.map +1 -1
  172. package/dist/esm/src/Templates/Stores/library/languages/vi.js +6 -485
  173. package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts.map +1 -1
  174. package/dist/esm/src/Templates/Stores/library/languages/zh.js +6 -485
  175. package/dist/esm/src/create/index.d.ts +0 -1
  176. package/dist/esm/src/create/index.d.ts.map +1 -1
  177. package/dist/esm/src/create/index.js +0 -1
  178. package/dist/esm/src/setupEvents.d.ts +0 -13
  179. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  180. package/dist/esm/src/setupEvents.js +0 -44
  181. package/dist/esm/src/types.d.ts +3 -13
  182. package/dist/esm/src/types.d.ts.map +1 -1
  183. package/dist/esm/src/utils/index.d.ts +0 -1
  184. package/dist/esm/src/utils/index.d.ts.map +1 -1
  185. package/dist/esm/src/utils/index.js +0 -1
  186. package/package.json +20 -29
  187. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +0 -99
  188. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +0 -17
  189. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +0 -221
  190. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +0 -17
  191. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +0 -211
  192. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +0 -17
  193. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +0 -259
  194. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +0 -17
  195. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +0 -286
  196. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +0 -17
  197. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +0 -174
  198. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +0 -17
  199. package/dist/cjs/components/src/components/Molecules/ChatQuickview/ChatQuickview.js +0 -514
  200. package/dist/cjs/components/src/components/Molecules/ChatQuickview/index.js +0 -17
  201. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +0 -252
  202. package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +0 -17
  203. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +0 -113
  204. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +0 -17
  205. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +0 -107
  206. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +0 -17
  207. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +0 -628
  208. package/dist/cjs/components/src/components/Organisms/Chat/Chat.lang.js +0 -110
  209. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatAttachments.js +0 -105
  210. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +0 -161
  211. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatComposer.js +0 -166
  212. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +0 -369
  213. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatHistory.js +0 -130
  214. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatMessages.js +0 -218
  215. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +0 -123
  216. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatSideChat.js +0 -173
  217. package/dist/cjs/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +0 -149
  218. package/dist/cjs/components/src/components/Organisms/Chat/components/chatAccentTheme.js +0 -62
  219. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +0 -66
  220. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +0 -96
  221. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +0 -113
  222. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +0 -135
  223. package/dist/cjs/components/src/components/Organisms/Chat/index.js +0 -18
  224. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.js +0 -94
  225. package/dist/cjs/components/src/components/Organisms/ChatButton/ChatButton.lang.js +0 -11
  226. package/dist/cjs/components/src/components/Organisms/ChatButton/index.js +0 -18
  227. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +0 -47
  228. package/dist/cjs/components/src/components/Templates/Chat/index.js +0 -17
  229. package/dist/cjs/components/src/components/Templates/ChatButton/ChatButton.js +0 -47
  230. package/dist/cjs/components/src/components/Templates/ChatButton/index.js +0 -17
  231. package/dist/cjs/components/src/themes/base/components/templates/chat.js +0 -6
  232. package/dist/cjs/components/src/themes/base/components/templates/chatButton.js +0 -6
  233. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +0 -6
  234. package/dist/cjs/components/src/themes/bocachica/components/templates/chatButton.js +0 -6
  235. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +0 -6
  236. package/dist/cjs/components/src/themes/pike/components/templates/chatButton.js +0 -6
  237. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +0 -6
  238. package/dist/cjs/components/src/themes/snapnco/components/templates/chatButton.js +0 -6
  239. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +0 -6
  240. package/dist/cjs/components/src/themes/snappy/components/templates/chatButton.js +0 -6
  241. package/dist/cjs/components/src/themes/themeComponents/chat.js +0 -14
  242. package/dist/cjs/components/src/themes/themeComponents/chatButton.js +0 -9
  243. package/dist/cjs/components/src/utilities/storybook.js +0 -17
  244. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +0 -5
  245. package/dist/cjs/src/Templates/Stores/library/components/ChatButton.js +0 -5
  246. package/dist/cjs/src/create/createChatController.js +0 -31
  247. package/dist/cjs/src/utils/applyChatTargetInject.js +0 -25
  248. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +0 -17
  249. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +0 -1
  250. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +0 -92
  251. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +0 -2
  252. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +0 -1
  253. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +0 -1
  254. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +0 -37
  255. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +0 -1
  256. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +0 -215
  257. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +0 -2
  258. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +0 -1
  259. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +0 -1
  260. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +0 -30
  261. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +0 -1
  262. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +0 -205
  263. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +0 -2
  264. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +0 -1
  265. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +0 -1
  266. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +0 -36
  267. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +0 -1
  268. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +0 -253
  269. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +0 -2
  270. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +0 -1
  271. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +0 -1
  272. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +0 -52
  273. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +0 -1
  274. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +0 -280
  275. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +0 -2
  276. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +0 -1
  277. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +0 -1
  278. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +0 -25
  279. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +0 -1
  280. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +0 -168
  281. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +0 -2
  282. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +0 -1
  283. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +0 -1
  284. package/dist/esm/components/src/components/Molecules/ChatQuickview/ChatQuickview.d.ts +0 -30
  285. package/dist/esm/components/src/components/Molecules/ChatQuickview/ChatQuickview.d.ts.map +0 -1
  286. package/dist/esm/components/src/components/Molecules/ChatQuickview/ChatQuickview.js +0 -508
  287. package/dist/esm/components/src/components/Molecules/ChatQuickview/index.d.ts +0 -2
  288. package/dist/esm/components/src/components/Molecules/ChatQuickview/index.d.ts.map +0 -1
  289. package/dist/esm/components/src/components/Molecules/ChatQuickview/index.js +0 -1
  290. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +0 -35
  291. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +0 -1
  292. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +0 -246
  293. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +0 -2
  294. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +0 -1
  295. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +0 -1
  296. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +0 -24
  297. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +0 -1
  298. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +0 -107
  299. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +0 -2
  300. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +0 -1
  301. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +0 -1
  302. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +0 -16
  303. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +0 -1
  304. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +0 -101
  305. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +0 -2
  306. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +0 -1
  307. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +0 -1
  308. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +0 -41
  309. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +0 -1
  310. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +0 -622
  311. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts +0 -79
  312. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.d.ts.map +0 -1
  313. package/dist/esm/components/src/components/Organisms/Chat/Chat.lang.js +0 -105
  314. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts +0 -26
  315. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.d.ts.map +0 -1
  316. package/dist/esm/components/src/components/Organisms/Chat/components/ChatAttachments.js +0 -99
  317. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts +0 -13
  318. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.d.ts.map +0 -1
  319. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComparisonsTray.js +0 -155
  320. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts +0 -19
  321. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.d.ts.map +0 -1
  322. package/dist/esm/components/src/components/Organisms/Chat/components/ChatComposer.js +0 -160
  323. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts +0 -18
  324. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.d.ts.map +0 -1
  325. package/dist/esm/components/src/components/Organisms/Chat/components/ChatFacetsBar.js +0 -363
  326. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts +0 -11
  327. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.d.ts.map +0 -1
  328. package/dist/esm/components/src/components/Organisms/Chat/components/ChatHistory.js +0 -124
  329. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts +0 -30
  330. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.d.ts.map +0 -1
  331. package/dist/esm/components/src/components/Organisms/Chat/components/ChatMessages.js +0 -212
  332. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts +0 -13
  333. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.d.ts.map +0 -1
  334. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSessionFeedback.js +0 -117
  335. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts +0 -19
  336. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.d.ts.map +0 -1
  337. package/dist/esm/components/src/components/Organisms/Chat/components/ChatSideChat.js +0 -167
  338. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts +0 -14
  339. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.d.ts.map +0 -1
  340. package/dist/esm/components/src/components/Organisms/Chat/components/ChatTopicDrift.js +0 -143
  341. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts +0 -15
  342. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.d.ts.map +0 -1
  343. package/dist/esm/components/src/components/Organisms/Chat/components/chatAccentTheme.js +0 -58
  344. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +0 -32
  345. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +0 -1
  346. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +0 -62
  347. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +0 -40
  348. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +0 -1
  349. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +0 -92
  350. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +0 -43
  351. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +0 -1
  352. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +0 -109
  353. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts +0 -26
  354. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.d.ts.map +0 -1
  355. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatScrollLock.js +0 -131
  356. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +0 -3
  357. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +0 -1
  358. package/dist/esm/components/src/components/Organisms/Chat/index.js +0 -2
  359. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts +0 -18
  360. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.d.ts.map +0 -1
  361. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.js +0 -88
  362. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts +0 -7
  363. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.d.ts.map +0 -1
  364. package/dist/esm/components/src/components/Organisms/ChatButton/ChatButton.lang.js +0 -8
  365. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts +0 -3
  366. package/dist/esm/components/src/components/Organisms/ChatButton/index.d.ts.map +0 -1
  367. package/dist/esm/components/src/components/Organisms/ChatButton/index.js +0 -2
  368. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +0 -12
  369. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +0 -1
  370. package/dist/esm/components/src/components/Templates/Chat/Chat.js +0 -41
  371. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +0 -2
  372. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +0 -1
  373. package/dist/esm/components/src/components/Templates/Chat/index.js +0 -1
  374. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts +0 -13
  375. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.d.ts.map +0 -1
  376. package/dist/esm/components/src/components/Templates/ChatButton/ChatButton.js +0 -41
  377. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts +0 -2
  378. package/dist/esm/components/src/components/Templates/ChatButton/index.d.ts.map +0 -1
  379. package/dist/esm/components/src/components/Templates/ChatButton/index.js +0 -1
  380. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +0 -4
  381. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +0 -1
  382. package/dist/esm/components/src/themes/base/components/templates/chat.js +0 -3
  383. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts +0 -4
  384. package/dist/esm/components/src/themes/base/components/templates/chatButton.d.ts.map +0 -1
  385. package/dist/esm/components/src/themes/base/components/templates/chatButton.js +0 -3
  386. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +0 -4
  387. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +0 -1
  388. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +0 -3
  389. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts +0 -4
  390. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.d.ts.map +0 -1
  391. package/dist/esm/components/src/themes/bocachica/components/templates/chatButton.js +0 -3
  392. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +0 -4
  393. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +0 -1
  394. package/dist/esm/components/src/themes/pike/components/templates/chat.js +0 -3
  395. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts +0 -4
  396. package/dist/esm/components/src/themes/pike/components/templates/chatButton.d.ts.map +0 -1
  397. package/dist/esm/components/src/themes/pike/components/templates/chatButton.js +0 -3
  398. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +0 -4
  399. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +0 -1
  400. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +0 -3
  401. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts +0 -4
  402. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.d.ts.map +0 -1
  403. package/dist/esm/components/src/themes/snapnco/components/templates/chatButton.js +0 -3
  404. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +0 -4
  405. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +0 -1
  406. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +0 -3
  407. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts +0 -4
  408. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.d.ts.map +0 -1
  409. package/dist/esm/components/src/themes/snappy/components/templates/chatButton.js +0 -3
  410. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +0 -4
  411. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +0 -1
  412. package/dist/esm/components/src/themes/themeComponents/chat.js +0 -11
  413. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts +0 -4
  414. package/dist/esm/components/src/themes/themeComponents/chatButton.d.ts.map +0 -1
  415. package/dist/esm/components/src/themes/themeComponents/chatButton.js +0 -6
  416. package/dist/esm/components/src/utilities/storybook.d.ts +0 -5
  417. package/dist/esm/components/src/utilities/storybook.d.ts.map +0 -1
  418. package/dist/esm/components/src/utilities/storybook.js +0 -13
  419. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +0 -2
  420. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +0 -1
  421. package/dist/esm/src/Templates/Stores/library/components/Chat.js +0 -1
  422. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts +0 -2
  423. package/dist/esm/src/Templates/Stores/library/components/ChatButton.d.ts.map +0 -1
  424. package/dist/esm/src/Templates/Stores/library/components/ChatButton.js +0 -1
  425. package/dist/esm/src/create/createChatController.d.ts +0 -5
  426. package/dist/esm/src/create/createChatController.d.ts.map +0 -1
  427. package/dist/esm/src/create/createChatController.js +0 -29
  428. package/dist/esm/src/utils/applyChatTargetInject.d.ts +0 -3
  429. package/dist/esm/src/utils/applyChatTargetInject.d.ts.map +0 -1
  430. package/dist/esm/src/utils/applyChatTargetInject.js +0 -22
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AutocompleteLayout = void 0;
7
+ exports.layoutHasModule = layoutHasModule;
7
8
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
9
  const hooks_1 = require("preact/hooks");
9
10
  const mobx_react_lite_1 = require("mobx-react-lite");
@@ -132,6 +133,9 @@ const defaultStyles = ({ controller, input, viewportMaxHeight, width, theme, col
132
133
  '.ss__autocomplete__facets-wrapper': {
133
134
  width: '100%',
134
135
  },
136
+ '.ss__autocomplete__search-input-wrapper': {
137
+ width: '100%',
138
+ },
135
139
  '.ss__autocomplete__content': {
136
140
  display: 'flex',
137
141
  flex: `1 1 0%`,
@@ -281,7 +285,7 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
281
285
  input = document.querySelector(input);
282
286
  }
283
287
  }
284
- const { facetsTitle, contentTitle, column1, column2, column3, column4, onReset, excludeBanners, resultComponent, templates, disableStyles, className, internalClassName, controller, tabManager, } = props;
288
+ const { facetsTitle, contentTitle, column1, column2, column3, column4, onReset, excludeBanners, resultComponent, templates, disableStyles, className, internalClassName, controller, tabManager, searchInputSlot, } = props;
285
289
  let layout = props.layout;
286
290
  const subProps = {
287
291
  button: {
@@ -337,6 +341,7 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
337
341
  facetsHorizontal: {
338
342
  name: 'autocomplete',
339
343
  // default props
344
+ controller,
340
345
  // inherited props
341
346
  ...(0, utilities_1.defined)({
342
347
  disableStyles,
@@ -406,8 +411,10 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
406
411
  controller.bind();
407
412
  }, []);
408
413
  }
409
- const visible = Boolean(input === state.focusedInput) &&
410
- (terms.length > 0 || trending?.length > 0 || history?.length > 0 || (state.input && controller.store.loaded));
414
+ // content modules require a focused input and something to show (terms, or a loaded query)
415
+ const contentVisible = Boolean(input === state.focusedInput) &&
416
+ Boolean(terms.length > 0 || trending?.length > 0 || history?.length > 0 || (state.input && controller.store.loaded));
417
+ const visible = contentVisible || Boolean(searchInputSlot);
411
418
  const showResultsBool = () => Boolean(results.length > 0 || Object.keys(merchandising.content).length > 0 || search?.query?.string || loading);
412
419
  const [showResults, setShowResults] = (0, hooks_1.useState)(showResultsBool());
413
420
  const checkAndSetShowResults = () => {
@@ -464,6 +471,8 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
464
471
  RecommendationTemplateResultComponent = recs.RecommendationTemplateResultComponent;
465
472
  recsController = recs.recsController;
466
473
  }
474
+ // the slot element can only be rendered once - the first 'searchInput' module claims it
475
+ let searchInputRendered = false;
467
476
  const findModule = (module, rowCounter) => {
468
477
  //new row
469
478
  if (typeof module !== 'string') {
@@ -505,6 +514,15 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
505
514
  return null;
506
515
  return (0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__column ss__autocomplete__column--c4", children: children });
507
516
  }
517
+ if (module == 'searchInput') {
518
+ if (!searchInputSlot || searchInputRendered)
519
+ return null;
520
+ searchInputRendered = true;
521
+ return (0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__search-input-wrapper", children: searchInputSlot });
522
+ }
523
+ // separators render whenever the layout does; every other module needs a focused input with content
524
+ if (module !== '_' && !contentVisible)
525
+ return null;
508
526
  if (module == 'termsList') {
509
527
  if (!terms?.length && !history?.length && !trending?.length)
510
528
  return null;
@@ -558,23 +576,11 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
558
576
  if (module == 'button.see-more' && showResults && search?.query?.string && results.length > 0) {
559
577
  return ((0, jsx_runtime_1.jsxs)(Button_1.Button, { ...subProps.button, ...mergedLang.seeMoreButton.attributes, children: [(0, jsx_runtime_1.jsx)("span", { ...mergedLang.seeMoreButton.value }), (0, jsx_runtime_1.jsx)(Icon_1.Icon, { ...subProps.icon })] }));
560
578
  }
579
+ return null;
561
580
  };
562
- if (typeof props.layout === 'string') {
563
- if (props.layout === 'terms') {
564
- layout = [['termsList'], ['no-results'], ['_', 'button.see-more']];
565
- }
566
- if (props.layout === 'mobile') {
567
- layout = [['termsList'], ['content'], ['_', 'button.see-more']];
568
- }
569
- if (props.layout === 'tablet') {
570
- layout = [['c1', 'c3']];
571
- }
572
- if (props.layout === 'desktop') {
573
- layout = [['c1', 'c2', 'c3']];
574
- }
575
- }
581
+ layout = typeof props.layout === 'string' ? PREBUILT_LAYOUTS[props.layout] : props.layout;
576
582
  //fallback for unsupported layout values
577
- if (typeof layout === 'string') {
583
+ if (typeof props.layout === 'string' && !layout) {
578
584
  controller.log.warn(`unsupported layout found. ${props.layout}`);
579
585
  layout = [];
580
586
  }
@@ -586,7 +592,24 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
586
592
  role: 'tabpanel',
587
593
  'aria-labelledby': `ss__tab--${tabControllerId}`,
588
594
  }
589
- : {}), children: [(0, jsx_runtime_1.jsx)("span", { role: 'link', ref: (e) => (0, hooks_2.useA11y)(e), onClick: () => props.onReset && props.onReset(), className: "ss__autocomplete__close-button", style: { position: 'absolute', top: '-10000000px', left: '-1000000px' }, ...mergedLang.closeButton?.all }), layout?.map((module) => {
590
- return findModule(module, topRowCounter);
591
- })] }) })) : null;
595
+ : {}), children: [(0, jsx_runtime_1.jsx)("span", { role: 'link', ref: (e) => (0, hooks_2.useA11y)(e), onClick: () => props.onReset && props.onReset(), className: "ss__autocomplete__close-button", style: { position: 'absolute', top: '-10000000px', left: '-1000000px' }, ...mergedLang.closeButton?.all }), layout.map((module) => findModule(module, topRowCounter))] }) })) : null;
592
596
  });
597
+ const PREBUILT_LAYOUTS = {
598
+ terms: [['termsList'], ['no-results'], ['_', 'button.see-more']],
599
+ mobile: [['termsList'], ['content'], ['_', 'button.see-more']],
600
+ tablet: [['c1', 'c3']],
601
+ desktop: [['c1', 'c2', 'c3']],
602
+ };
603
+ // checks a layout (and the column layouts it references) for a module
604
+ function layoutHasModule({ layout, column1, column2, column3, column4, }, moduleToFind) {
605
+ //recast names back to c1 style
606
+ const columns = {
607
+ c1: column1,
608
+ c2: column2,
609
+ c3: column3,
610
+ c4: column4,
611
+ };
612
+ const modulesList = (typeof layout === 'string' ? PREBUILT_LAYOUTS[layout] : layout)?.flat() || [];
613
+ // a module is either listed directly or inside a referenced column's layout
614
+ return modulesList.some((entry) => entry === moduleToFind || Boolean(columns[entry]?.layout.flat().includes(moduleToFind)));
615
+ }
@@ -19,6 +19,7 @@ const Icon_1 = require("../../Atoms/Icon");
19
19
  const Button_1 = require("../../Atoms/Button");
20
20
  const Slideout_1 = require("../../Molecules/Slideout");
21
21
  const Sidebar_1 = require("../Sidebar");
22
+ const useA11y_1 = require("../../../hooks/useA11y");
22
23
  const defaultStyles = ({ theme }) => {
23
24
  return (0, react_1.css)({
24
25
  margin: '10px 0px',
@@ -101,6 +102,8 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
101
102
  };
102
103
  let props = (0, utilities_1.mergeProps)('facetsHorizontal', globalTheme, defaultProps, properties);
103
104
  const { facets, limit, alwaysShowToggleSidebarButton, hideToggleSidebarButton, onFacetOptionClick, showSelectedCount, hideSelectedCountParenthesis, clearAllIcon, showClearAllText, iconExpand, clearAllText, iconCollapse, toggleSidebarButtonText, disableStyles, className, internalClassName, controller, treePath, } = props;
105
+ //we just dont allow this prop to be used outside of the search controller.
106
+ const openFacetsInSidebar = controller?.type !== 'search' ? false : props.openFacetsInSidebar;
104
107
  const { overrideElement, shouldRenderDefault } = (0, hooks_2.useCustomComponentOverride)('facetsHorizontal', props);
105
108
  if (!shouldRenderDefault) {
106
109
  return overrideElement;
@@ -142,6 +145,7 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
142
145
  }
143
146
  }
144
147
  const [sidebarOpenState, setSidebarOpenState] = (0, hooks_1.useState)(false);
148
+ const renderToggleSidebarButton = Boolean(!hideToggleSidebarButton && (isOverflowing || alwaysShowToggleSidebarButton));
145
149
  const subProps = {
146
150
  dropdown: {
147
151
  // default props
@@ -182,7 +186,7 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
182
186
  internalClassName: `ss__facets-horizontal__content__facet`,
183
187
  justContent: true,
184
188
  // this should be turned on if there is ever a filters button rendering.
185
- statefulOverflow: !hideToggleSidebarButton && (isOverflowing || alwaysShowToggleSidebarButton) ? true : undefined,
189
+ statefulOverflow: renderToggleSidebarButton ? true : undefined,
186
190
  // inherited props
187
191
  ...(0, utilities_1.defined)({
188
192
  disableStyles,
@@ -206,6 +210,7 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
206
210
  sidebar: {
207
211
  // default props
208
212
  internalClassName: 'ss__facets-horizontal__sidebar',
213
+ onToggleSidebar: () => setSidebarOpenState(false),
209
214
  // inherited props
210
215
  ...(0, utilities_1.defined)({
211
216
  disableStyles,
@@ -229,6 +234,54 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
229
234
  const innerRef = (0, hooks_2.useClickOutside)(() => {
230
235
  selectedFacet && setSelectedFacet(undefined);
231
236
  });
237
+ // facet field to scroll into view once the slideout renders
238
+ const [sidebarFacetField, setSidebarFacetField] = (0, hooks_1.useState)(undefined);
239
+ // facet expanded by a header click; collapsed again when the sidebar closes
240
+ const autoOpenedFacet = (0, hooks_1.useRef)(undefined);
241
+ // field of the header that opened the sidebar; focus returns to it when the sidebar closes
242
+ const openerField = (0, hooks_1.useRef)(undefined);
243
+ const openFacetsInSidebarFunc = (facet) => {
244
+ // expand the facet so it renders open in the sidebar
245
+ if (facet.collapsed) {
246
+ facet.toggleCollapse();
247
+ autoOpenedFacet.current = facet;
248
+ }
249
+ openerField.current = facet.field;
250
+ setSidebarFacetField(facet.field);
251
+ setSidebarOpenState(true);
252
+ };
253
+ (0, hooks_1.useEffect)(() => {
254
+ if (!sidebarFacetField || !sidebarOpenState)
255
+ return;
256
+ // slideout content is already mounted; match by class so field names need no CSS escaping
257
+ const slideoutElem = innerRef.current?.querySelector('.ss__facets-horizontal__slideout');
258
+ const facetElem = Array.from(slideoutElem?.querySelectorAll('.ss__facet') || []).find((elem) => elem.classList.contains(`ss__facet--${sidebarFacetField}`));
259
+ if (facetElem) {
260
+ if (typeof facetElem.scrollIntoView == 'function') {
261
+ facetElem.scrollIntoView({ block: 'start' });
262
+ }
263
+ // move focus into the sidebar so keyboard navigation continues from the opened facet
264
+ facetElem.querySelector('.ss__facet__header')?.focus({ preventScroll: true });
265
+ }
266
+ setSidebarFacetField(undefined);
267
+ }, [sidebarFacetField, sidebarOpenState]);
268
+ (0, hooks_1.useEffect)(() => {
269
+ if (sidebarOpenState)
270
+ return;
271
+ // re-collapse the auto-opened facet (slideout content is already unmounted, so nothing flickers)
272
+ const facet = autoOpenedFacet.current;
273
+ autoOpenedFacet.current = undefined;
274
+ if (facet && !facet.collapsed && typeof facet.toggleCollapse == 'function') {
275
+ facet.toggleCollapse();
276
+ }
277
+ // return focus to the header that opened the sidebar
278
+ const field = openerField.current;
279
+ openerField.current = undefined;
280
+ if (field) {
281
+ const headerDropdown = Array.from(innerRef.current?.querySelectorAll('.ss__facets-horizontal__header__dropdown') || []).find((elem) => elem.classList.contains(`ss__facets-horizontal__header__dropdown--${field}`));
282
+ headerDropdown?.querySelector('.ss__dropdown__button')?.focus();
283
+ }
284
+ }, [sidebarOpenState]);
232
285
  //initialize lang
233
286
  const defaultLang = {
234
287
  toggleSidebarButtonText: {
@@ -241,7 +294,8 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
241
294
  const ToggleSidebarButton = ({ sidebarOpenState, setSidebarOpenState, subProps }) => {
242
295
  return ((0, jsx_runtime_1.jsx)(Button_1.Button, { ...subProps.toggleSidebarButton, internalClassName: "ss__facets-horizontal__header__toggle-sidebar", onClick: () => setSidebarOpenState(!sidebarOpenState), children: (0, jsx_runtime_1.jsx)("span", { ...mergedLang.toggleSidebarButtonText.all }) }));
243
296
  };
244
- const renderSidebar = Boolean(!hideToggleSidebarButton && (isOverflowing || alwaysShowToggleSidebarButton));
297
+ // the slideout is also needed when facet headers open the sidebar
298
+ const renderSlideout = renderToggleSidebarButton || Boolean(openFacetsInSidebar);
245
299
  //todo investigate keyboard navigation here when overlay prop is true/false
246
300
  return (facetsToShow && facetsToShow?.length > 0) || isOverflowing ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('ss__facets-horizontal', className, internalClassName), ref: innerRef, ...styling, children: [(0, jsx_runtime_1.jsxs)("div", { className: "ss__facets-horizontal__header", children: [facetsToShow?.map((facet) => {
247
301
  const selectedCount = facet?.values?.filter((value) => value?.filtered).length ||
@@ -264,8 +318,12 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
264
318
  selectedFacet,
265
319
  facet,
266
320
  }, { activeBreakpoint: globalTheme?.activeBreakpoint });
267
- return ((0, jsx_runtime_1.jsx)(Dropdown_1.Dropdown, { ...subProps.dropdown, internalClassName: (0, classnames_1.default)(subProps.dropdown.internalClassName, `ss__facets-horizontal__header__dropdown--${facet.display}`, `ss__facets-horizontal__header__dropdown--${facet.field}`), open: selectedFacet?.field === facet.field, onClick: (e) => {
268
- // @ts-ignore - this is a workaround for the fact that selectedFacet is not defined when the onclick is triggered by the escape key.
321
+ return ((0, jsx_runtime_1.jsx)(Dropdown_1.Dropdown, { ...subProps.dropdown, internalClassName: (0, classnames_1.default)(subProps.dropdown.internalClassName, `ss__facets-horizontal__header__dropdown--${facet.display}`, `ss__facets-horizontal__header__dropdown--${facet.field}`), open: openFacetsInSidebar ? false : selectedFacet?.field === facet.field, onClick: (e) => {
322
+ if (openFacetsInSidebar) {
323
+ openFacetsInSidebarFunc(facet);
324
+ return;
325
+ }
326
+ // @ts-ignore - escape key closes the dropdown
269
327
  if (selectedFacet !== facet && e.code !== 'Escape') {
270
328
  setSelectedFacet(facet);
271
329
  }
@@ -277,6 +335,6 @@ exports.FacetsHorizontal = (0, mobx_react_lite_1.observer)((properties) => {
277
335
  facet?.clear.url.link.onClick();
278
336
  }, icon: clearAllIcon ? clearAllIcon : undefined, children: mergedLang.clearAllText.value && showClearAllText ? (0, jsx_runtime_1.jsx)("label", { ...mergedLang.clearAllText.all }) : null })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}))] }), (0, jsx_runtime_1.jsx)(Icon_1.Icon, { ...subProps.icon, ...(selectedFacet?.field === facet.field
279
337
  ? { ...(typeof iconExpand == 'string' ? { icon: iconExpand } : iconExpand) }
280
- : { ...(typeof iconCollapse == 'string' ? { icon: iconCollapse } : iconCollapse) }) })] }), disableOverlay: false, children: (0, jsx_runtime_1.jsx)(Facet_1.Facet, { ...subProps.facet, facet: facet }) }));
281
- }), renderSidebar && (0, jsx_runtime_1.jsx)(ToggleSidebarButton, { sidebarOpenState: sidebarOpenState, setSidebarOpenState: setSidebarOpenState, subProps: subProps })] }), renderSidebar && ((0, jsx_runtime_1.jsx)(Slideout_1.Slideout, { ...subProps.slideout, active: sidebarOpenState, children: (0, jsx_runtime_1.jsx)(Sidebar_1.Sidebar, { ...subProps.sidebar, controller: controller }) }))] }) })) : null;
338
+ : { ...(typeof iconCollapse == 'string' ? { icon: iconCollapse } : iconCollapse) }) })] }), disableOverlay: false, children: !openFacetsInSidebar && (0, jsx_runtime_1.jsx)(Facet_1.Facet, { ...subProps.facet, facet: facet }) }));
339
+ }), renderToggleSidebarButton && ((0, jsx_runtime_1.jsx)(ToggleSidebarButton, { sidebarOpenState: sidebarOpenState, setSidebarOpenState: setSidebarOpenState, subProps: subProps }))] }), renderSlideout && ((0, jsx_runtime_1.jsx)(Slideout_1.Slideout, { ...subProps.slideout, active: sidebarOpenState, children: (0, jsx_runtime_1.jsx)("div", { className: 'ss__facets-horizontal__slideout__sidebar-wrapper', ref: (e) => (0, useA11y_1.useA11y)(e, 0, true, () => setSidebarOpenState((prev) => !prev)), children: (0, jsx_runtime_1.jsx)(Sidebar_1.Sidebar, { ...subProps.sidebar, controller: controller }) }) }))] }) })) : null;
282
340
  });
@@ -26,6 +26,9 @@ const defaultStyles = (props) => {
26
26
  gap: '10px',
27
27
  flexWrap: 'wrap',
28
28
  },
29
+ '.ss__filter-summary__no-filters': {
30
+ margin: '5px 0',
31
+ },
29
32
  '&.ss__filter-summary--list': {
30
33
  '& .ss__filter-summary__clear-all .ss__filter__value': {
31
34
  marginLeft: '5px',
@@ -70,6 +73,8 @@ exports.FilterSummary = (0, mobx_react_lite_1.observer)((properties) => {
70
73
  title: 'Current Filters',
71
74
  type: 'inline',
72
75
  clearAllLabel: 'Clear All',
76
+ noFiltersText: 'No filters applied',
77
+ hideNoFiltersText: true,
73
78
  clearAllIcon: 'close-thin',
74
79
  filterIcon: 'close-thin',
75
80
  filters: properties.controller?.store?.filters,
@@ -77,7 +82,7 @@ exports.FilterSummary = (0, mobx_react_lite_1.observer)((properties) => {
77
82
  treePath: globalTreePath,
78
83
  };
79
84
  const props = (0, utilities_1.mergeProps)('filterSummary', globalTheme, defaultProps, properties);
80
- const { filters, title, type, filterIcon, clearAllIcon, separator, hideFacetLabel, hideTitle, clearAllLabel, hideClearAll, onClick, onClearAllClick, disableStyles, className, internalClassName, treePath, } = props;
85
+ const { filters, title, type, filterIcon, clearAllIcon, separator, hideFacetLabel, hideTitle, clearAllLabel, hideClearAll, noFiltersText, hideNoFiltersText, onClick, onClearAllClick, disableStyles, className, internalClassName, treePath, } = props;
81
86
  const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('filterSummary', props);
82
87
  if (!shouldRenderDefault) {
83
88
  return overrideElement;
@@ -108,16 +113,22 @@ exports.FilterSummary = (0, mobx_react_lite_1.observer)((properties) => {
108
113
  clearAllLabel: {
109
114
  value: clearAllLabel,
110
115
  },
116
+ noFiltersText: {
117
+ value: noFiltersText,
118
+ },
111
119
  };
112
120
  //deep merge with props.lang
113
121
  const lang = (0, deepmerge_1.default)(defaultLang, props.lang || {});
114
- const mergedLang = (0, hooks_1.useLang)(lang, {
115
- filters,
116
- }, { activeBreakpoint: globalTheme?.activeBreakpoint });
117
- return filters?.length ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { ...styling, className: (0, classnames_1.default)('ss__filter-summary', { 'ss__filter-summary--list': type === 'list' }, { 'ss__filter-summary--inline': type === 'inline' }, className, internalClassName), children: [!hideTitle && (0, jsx_runtime_1.jsx)("div", { className: "ss__filter-summary__title", ...mergedLang.title?.all }), (0, jsx_runtime_1.jsxs)("div", { className: "ss__filter-summary__filters", children: [filters.map((filter) => ((0, jsx_runtime_1.jsx)(Filter_1.Filter, { ...subProps.filter, filter: filter, onClick: (e) => onClick && onClick(e, filter) }))), !hideClearAll && ((0, jsx_runtime_1.jsx)(Filter_1.Filter, { ...subProps.filter, name: 'clear-all', icon: clearAllIcon, internalClassName: `${subProps?.filter?.internalClassName} ss__filter-summary__clear-all`, hideFacetLabel: true, valueLabel: clearAllLabel, onClick: (e) => {
122
+ const langOptions = { activeBreakpoint: globalTheme?.activeBreakpoint };
123
+ const mergedLang = {
124
+ ...(0, hooks_1.useLang)({ title: lang.title }, { filters }, langOptions),
125
+ ...(0, hooks_1.useLang)({ noFiltersText: lang.noFiltersText }, { controller: properties.controller }, langOptions),
126
+ };
127
+ if (!filters?.length && hideNoFiltersText) {
128
+ return null;
129
+ }
130
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { ...styling, className: (0, classnames_1.default)('ss__filter-summary', { 'ss__filter-summary--list': type === 'list' }, { 'ss__filter-summary--inline': type === 'inline' }, { 'ss__filter-summary--no-filters': !filters?.length }, className, internalClassName), children: [!hideTitle && (0, jsx_runtime_1.jsx)("div", { className: "ss__filter-summary__title", ...mergedLang.title?.all }), filters?.length ? ((0, jsx_runtime_1.jsxs)("div", { className: "ss__filter-summary__filters", children: [filters.map((filter) => ((0, jsx_runtime_1.jsx)(Filter_1.Filter, { ...subProps.filter, filter: filter, onClick: (e) => onClick && onClick(e, filter) }))), !hideClearAll && ((0, jsx_runtime_1.jsx)(Filter_1.Filter, { ...subProps.filter, name: 'clear-all', icon: clearAllIcon, internalClassName: `${subProps?.filter?.internalClassName} ss__filter-summary__clear-all`, hideFacetLabel: true, valueLabel: clearAllLabel, onClick: (e) => {
118
131
  onClearAllClick && onClearAllClick(e);
119
132
  properties.controller?.urlManager.remove('filter').remove('page').go();
120
- }, lang: {
121
- filter: { attributes: { 'aria-label': clearAllLabel } },
122
- } }))] })] }) })) : null;
133
+ }, lang: { filter: lang.clearAllLabel } }))] })) : ((0, jsx_runtime_1.jsx)("div", { className: "ss__filter-summary__no-filters", ...mergedLang.noFiltersText?.all }))] }) }));
123
134
  });
@@ -258,7 +258,7 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
258
258
  hideBadge: false,
259
259
  };
260
260
  const props = (0, utilities_1.mergeProps)('quickviewLayout', globalTheme, defaultProps, properties);
261
- const { quickviewManager, className, internalClassName, disableStyles, treePath, hideBadge, variantDropdownType, column1, column2, column3, column4, recommendation, } = props;
261
+ const { quickviewManager, className, internalClassName, disableStyles, treePath, hideBadge, column1, column2, column3, column4, recommendation } = props;
262
262
  // NOTE: the `!shouldRenderDefault` return lives below the last hook call — every hook in this
263
263
  // component must run unconditionally on every render (shouldRenderDefault can flip while
264
264
  // mounted, e.g. when a pending customComponent import resolves or fails).
@@ -281,12 +281,6 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
281
281
  moreInfoButton: {
282
282
  value: 'More info',
283
283
  },
284
- similarButton: {
285
- value: 'Similar',
286
- },
287
- discussButton: {
288
- value: 'Discuss',
289
- },
290
284
  loadingText: {
291
285
  value: 'Loading…',
292
286
  },
@@ -349,8 +343,7 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
349
343
  // is within it).
350
344
  (0, hooks_1.useEffect)(() => {
351
345
  const isOpenNow = Boolean(quickviewManager?.store?.isOpen);
352
- // inline embeds (e.g. the chat secondary window) are not modal — Escape must not close them
353
- if (!shouldRenderDefault || !isOpenNow || props.inline)
346
+ if (!shouldRenderDefault || !isOpenNow)
354
347
  return;
355
348
  const onKey = (e) => {
356
349
  if (e.key === 'Escape' && !galleryOpen) {
@@ -359,7 +352,7 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
359
352
  };
360
353
  window.addEventListener('keydown', onKey);
361
354
  return () => window.removeEventListener('keydown', onKey);
362
- }, [shouldRenderDefault, quickviewManager?.store?.isOpen, galleryOpen, props.inline]);
355
+ }, [shouldRenderDefault, quickviewManager?.store?.isOpen, galleryOpen]);
363
356
  // Recommendation modules. `findModule` runs inside .map()/recursion and must not call hooks, so
364
357
  // resolve every referenced profile's controller + components here (stable order) and let
365
358
  // findModule read from this map. Mirrors Organisms/NoResults.
@@ -456,18 +449,12 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
456
449
  };
457
450
  // Dialog semantics + focus trap for the quickview content, following the autocomplete
458
451
  // containers (AutocompleteModal/AutocompleteSlideout): useA11y traps Tab within the
459
- // content and wires Escape to the callback above. Inline embeds (e.g. the chat secondary
460
- // window) are part of the surrounding page — no dialog role and no focus trap, which
461
- // would otherwise stop the shopper tabbing out to the chat composer.
452
+ // content and wires Escape to the callback above.
462
453
  const contentProps = {
463
454
  className: 'ss__quickview__content',
464
- ...(props.inline
465
- ? {}
466
- : {
467
- role: 'dialog',
468
- 'aria-modal': 'true',
469
- ref: (e) => (0, hooks_2.useA11y)(e, 0, true, handleEscape),
470
- }),
455
+ role: 'dialog',
456
+ 'aria-modal': 'true',
457
+ ref: (e) => (0, hooks_2.useA11y)(e, 0, true, handleEscape),
471
458
  ...mergedLang.quickview?.attributes,
472
459
  };
473
460
  // Prefer `product.display` so the displayed name/image/attributes reflect the
@@ -562,23 +549,17 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
562
549
  // the selection whose field matches (e.g. `variantSelection.color`). The field also matches its
563
550
  // component-name form (`color_family` → `color-family`). A bare `variantSelection` module is
564
551
  // not supported.
565
- // `variantDropdownType` swaps the component for selections that aren't swatches.
566
- const renderSelection = (selection) => {
567
- const isSwatch = selection.type === 'swatch' || selection.type === 'swatches';
568
- const type = variantDropdownType && !isSwatch ? variantDropdownType : selection.type;
569
- return ((0, jsx_runtime_1.jsxs)("div", { className: "ss__quickview__variant", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__variant-title", children: selection.label || selection.field }), (0, jsx_runtime_1.jsx)(VariantSelection_1.VariantSelection, { selection: selection, type: type, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) })] }, selection.field));
570
- };
571
552
  if (module == 'variantSelections') {
572
553
  if (!selections || selections.length === 0)
573
554
  return null;
574
- return (0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__variants", children: selections.map((selection) => renderSelection(selection)) });
555
+ return ((0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__variants", children: selections.map((selection) => ((0, jsx_runtime_1.jsxs)("div", { className: "ss__quickview__variant", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__variant-title", children: selection.label || selection.field }), (0, jsx_runtime_1.jsx)(VariantSelection_1.VariantSelection, { selection: selection, type: selection.type, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) })] }, selection.field))) }));
575
556
  }
576
557
  if (module.startsWith('variantSelection.')) {
577
558
  const name = module.slice('variantSelection.'.length);
578
559
  const selection = selections?.find((selection) => selection.field === name || (0, snap_toolbox_1.fieldNameToComponentName)(selection.field) === name);
579
560
  if (!name || !selection)
580
561
  return null;
581
- return renderSelection(selection);
562
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "ss__quickview__variant", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__variant-title", children: selection.label || selection.field }), (0, jsx_runtime_1.jsx)(VariantSelection_1.VariantSelection, { selection: selection, type: selection.type, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) })] }));
582
563
  }
583
564
  if (module == 'button.add-to-cart') {
584
565
  if (!product)
@@ -588,7 +569,7 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
588
569
  if (module == 'button.more-info') {
589
570
  if (!url)
590
571
  return null;
591
- return ((0, jsx_runtime_1.jsx)(Button_1.Button, { name: "more-info", internalClassName: "ss__quickview__more-info", lang: { button: lang.moreInfoButton }, onClick: (e) => {
572
+ return ((0, jsx_runtime_1.jsx)(Button_1.Button, { name: "more-info", internalClassName: "ss__quickview__go-to-product", lang: { button: lang.moreInfoButton }, onClick: (e) => {
592
573
  // track the redirect to the product page as a quickview clickThrough
593
574
  // before navigating away (delegated with `quickView: true`)
594
575
  if (product) {
@@ -597,20 +578,6 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
597
578
  window.location.href = url;
598
579
  }, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) }));
599
580
  }
600
- // Chat-only modules: `button.similar` and `button.discuss` forward to the chat controller
601
- // that opened the quickview. They render nothing for non-chat source controllers, so a
602
- // layout carrying them stays safe to share across surfaces.
603
- if (module == 'button.similar' || module == 'button.discuss') {
604
- const chatController = quickviewManager.sourceController?.type === 'chat' ? quickviewManager.sourceController : undefined;
605
- if (!product || !chatController)
606
- return null;
607
- if (module == 'button.similar') {
608
- if (!chatController.store.features?.similarProducts?.enabled)
609
- return null;
610
- return ((0, jsx_runtime_1.jsx)(Button_1.Button, { name: "similar", internalClassName: "ss__quickview__similar", lang: { button: lang.similarButton }, onClick: () => chatController.productSimilar(product), theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) }));
611
- }
612
- return ((0, jsx_runtime_1.jsx)(Button_1.Button, { name: "discuss", internalClassName: "ss__quickview__discuss", lang: { button: lang.discussButton }, onClick: () => chatController.productQuery(product), theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) }));
613
- }
614
581
  // `quantityPicker` binds to the observable `product.quantity`, which `button.add-to-cart`
615
582
  // (via the cart store) picks up when the product is added.
616
583
  if (module == 'quantityPicker') {
@@ -646,5 +613,5 @@ exports.QuickviewLayout = (0, mobx_react_lite_1.observer)((properties) => {
646
613
  }
647
614
  const topRowCounter = { value: 0 };
648
615
  const closeButton = ((0, jsx_runtime_1.jsx)(Button_1.Button, { name: "close", internalClassName: "ss__quickview__close", icon: "close-thin", lang: { button: lang.closeButton }, onClick: () => onClose(), theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) }));
649
- return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__quickview', className, internalClassName), children: error || loading || product ? ((0, jsx_runtime_1.jsxs)("div", { ...contentProps, children: [!props.inline && closeButton, error ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__error", role: "alert", children: error.message })) : loading ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__loading", ...mergedLang.loadingText?.all })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [layout?.map((module) => findModule(module, topRowCounter)), (0, jsx_runtime_1.jsx)(Gallery_1.Gallery, { images: galleryImages, open: galleryOpen, startIndex: galleryIndex, onClose: () => setGalleryOpen(false), alt: name, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) })] }))] })) : null }) }));
616
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__quickview', className, internalClassName), children: error || loading || product ? ((0, jsx_runtime_1.jsxs)("div", { ...contentProps, children: [closeButton, error ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__error", role: "alert", children: error.message })) : loading ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__quickview__loading", ...mergedLang.loadingText?.all })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [layout?.map((module) => findModule(module, topRowCounter)), (0, jsx_runtime_1.jsx)(Gallery_1.Gallery, { images: galleryImages, open: galleryOpen, startIndex: galleryIndex, onClose: () => setGalleryOpen(false), alt: name, theme: props.theme, treePath: treePath, ...(0, utilities_1.defined)({ disableStyles }) })] }))] })) : null }) }));
650
617
  });
@@ -25,7 +25,7 @@ const defaultStyles = ({ gapSize, columns }) => {
25
25
  flexFlow: 'row wrap',
26
26
  gap: gapSize,
27
27
  gridTemplateRows: 'auto',
28
- gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
28
+ gridTemplateColumns: `repeat(${columns}, 1fr)`,
29
29
  '& .ss__result, & .ss__result-layout': {
30
30
  boxSizing: 'border-box',
31
31
  flex: '0 1 auto',
@@ -17,7 +17,9 @@ const SearchInput_1 = require("../../Molecules/SearchInput");
17
17
  const snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
18
18
  const hooks_2 = require("../../../hooks");
19
19
  const useAcRenderedInput_1 = require("../../../hooks/useAcRenderedInput");
20
- const defaultStyles = ({ inputBounds, offset, renderInput, width }) => {
20
+ const defaultStyles = ({ inputBounds, offset, renderInput, searchInputInLayout, width }) => {
21
+ // the rendered input only overlays the native input when it sits above the layout
22
+ const inputAboveLayout = Boolean(renderInput) && !searchInputInLayout;
21
23
  return (0, react_1.css)({
22
24
  position: 'absolute',
23
25
  left: '0',
@@ -35,7 +37,8 @@ const defaultStyles = ({ inputBounds, offset, renderInput, width }) => {
35
37
  zIndex: 1001,
36
38
  maxWidth: '100vw',
37
39
  pointerEvents: 'auto',
38
- '.ss__search-input': {
40
+ // direct child only - this sizes the input overlaying the native one, not an input placed inside the layout
41
+ '& > .ss__search-input': {
39
42
  background: '#fff',
40
43
  width: `${inputBounds.width}px`,
41
44
  height: `${inputBounds.height}px`,
@@ -45,7 +48,7 @@ const defaultStyles = ({ inputBounds, offset, renderInput, width }) => {
45
48
  '.ss__autocomplete-fixed__inner__layout-wrapper': {
46
49
  width: width,
47
50
  overflowY: 'scroll',
48
- maxHeight: `calc(90vh - ${inputBounds.top || 0}px - ${renderInput ? `${inputBounds.height}px` : '0px'} + ${offset?.top || 0}px)`,
51
+ maxHeight: `calc(90vh - ${inputBounds.top || 0}px - ${inputAboveLayout ? `${inputBounds.height}px` : '0px'} + ${offset?.top || 0}px)`,
49
52
  },
50
53
  '.ss__search-input__button--close-search-icon': {
51
54
  border: 'none',
@@ -77,7 +80,7 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
77
80
  if (!buttonSelector && input) {
78
81
  buttonSelector = input;
79
82
  }
80
- const { layout, disableStyles, renderInput, overlayColor, className, internalClassName, offset, treePath, tabManager } = props;
83
+ const { layout, column1, column2, column3, column4, disableStyles, renderInput, overlayColor, className, internalClassName, offset, treePath, tabManager, } = props;
81
84
  let controller = props.controller;
82
85
  let controllers = [controller];
83
86
  if (tabManager && tabManager.active) {
@@ -151,11 +154,6 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
151
154
  closeSearchButton: {
152
155
  onClick: () => reset(),
153
156
  },
154
- // wiring only — no default `icon`, so the button stays hidden until a site
155
- // opts in by supplying one via theme or props (see SearchInput.hideChatButton)
156
- chatButton: {
157
- onClick: () => controller.openChat(),
158
- },
159
157
  inputName: inputName,
160
158
  // inherited props
161
159
  ...(0, utilities_1.defined)({
@@ -208,7 +206,10 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
208
206
  (0, hooks_1.useEffect)(() => {
209
207
  window.addEventListener('resize', debouncedHandleResize);
210
208
  }, []);
211
- const styling = (0, utilities_1.mergeStyles)({ ...props, inputBounds }, defaultStyles);
209
+ // the search input renders inside the layout when it contains a 'searchInput' module, otherwise above the layout
210
+ const searchInputInLayout = Boolean(renderInput) && (0, AutocompleteLayout_1.layoutHasModule)({ layout, column1, column2, column3, column4 }, 'searchInput');
211
+ const searchInput = renderInput ? ((0, jsx_runtime_1.jsx)(SearchInput_1.SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : undefined;
212
+ const styling = (0, utilities_1.mergeStyles)({ ...props, inputBounds, searchInputInLayout }, defaultStyles);
212
213
  let _input;
213
214
  if (input) {
214
215
  _input = (0, useAcRenderedInput_1.useAcRenderedInput)({
@@ -229,5 +230,5 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
229
230
  delete acProps.style;
230
231
  delete acProps.styleScript;
231
232
  delete acProps.themeStyleScript;
232
- return layout?.length && active ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete-fixed', className, internalClassName), children: (0, jsx_runtime_1.jsx)(Modal_1.Modal, { ...subProps.modal, children: (0, jsx_runtime_1.jsxs)("div", { className: "ss__autocomplete-fixed__inner", ref: (e) => (0, hooks_2.useA11y)(e, 0, true, reset), children: [renderInput ? ((0, jsx_runtime_1.jsx)(SearchInput_1.SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})), (0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete-fixed__inner__layout-wrapper", children: (0, jsx_runtime_1.jsx)(AutocompleteLayout_1.AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` }) })] }) }) }) })) : null;
233
+ return layout?.length && active ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete-fixed', className, internalClassName), children: (0, jsx_runtime_1.jsx)(Modal_1.Modal, { ...subProps.modal, children: (0, jsx_runtime_1.jsxs)("div", { className: "ss__autocomplete-fixed__inner", ref: (e) => (0, hooks_2.useA11y)(e, 0, true, reset), children: [searchInput && !searchInputInLayout ? searchInput : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), (0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete-fixed__inner__layout-wrapper", children: (0, jsx_runtime_1.jsx)(AutocompleteLayout_1.AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, searchInputSlot: searchInputInLayout ? searchInput : undefined, treePath: `${treePath} modal` }) })] }) }) }) })) : null;
233
234
  });
@@ -89,7 +89,7 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
89
89
  if (!buttonSelector && input) {
90
90
  buttonSelector = input;
91
91
  }
92
- const { layout, disableStyles, overlayColor, renderInput, className, internalClassName, treePath, tabManager } = props;
92
+ const { layout, column1, column2, column3, column4, disableStyles, overlayColor, renderInput, className, internalClassName, treePath, tabManager } = props;
93
93
  let controller = props.controller;
94
94
  let controllers = [controller];
95
95
  if (tabManager && tabManager.active) {
@@ -162,11 +162,6 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
162
162
  onClick: () => reset(),
163
163
  icon: 'angle-left',
164
164
  },
165
- // wiring only — no default `icon`, so the button stays hidden until a site
166
- // opts in by supplying one via theme or props (see SearchInput.hideChatButton)
167
- chatButton: {
168
- onClick: () => controller.openChat(),
169
- },
170
165
  inputName: inputName,
171
166
  // inherited props
172
167
  ...(0, utilities_1.defined)({
@@ -177,7 +172,9 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
177
172
  treePath: `${treePath} modal`,
178
173
  },
179
174
  };
180
- const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
175
+ // the search input renders inside the layout when it contains a 'searchInput' module, otherwise above the layout
176
+ const searchInputInLayout = Boolean(renderInput) && (0, AutocompleteLayout_1.layoutHasModule)({ layout, column1, column2, column3, column4 }, 'searchInput');
177
+ const styling = (0, utilities_1.mergeStyles)({ ...props, searchInputInLayout }, defaultStyles);
181
178
  let _input;
182
179
  if (input) {
183
180
  _input = (0, useAcRenderedInput_1.useAcRenderedInput)({
@@ -189,6 +186,7 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
189
186
  setActive: setActive,
190
187
  });
191
188
  }
189
+ const searchInput = renderInput ? ((0, jsx_runtime_1.jsx)(SearchInput_1.SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : undefined;
192
190
  const acProps = {
193
191
  ...props,
194
192
  };
@@ -198,5 +196,5 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
198
196
  delete acProps.style;
199
197
  delete acProps.styleScript;
200
198
  delete acProps.themeStyleScript;
201
- return layout?.length && active ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete-modal', className, internalClassName), children: (0, jsx_runtime_1.jsx)(Modal_1.Modal, { ...subProps.modal, children: (0, jsx_runtime_1.jsxs)("div", { className: "ss__autocomplete-modal__inner", ref: (e) => (0, hooks_2.useA11y)(e, 0, true, reset), children: [renderInput ? ((0, jsx_runtime_1.jsx)(SearchInput_1.SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})), (0, jsx_runtime_1.jsx)(AutocompleteLayout_1.AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` })] }) }) }) })) : null;
199
+ return layout?.length && active ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__autocomplete-modal', className, internalClassName), children: (0, jsx_runtime_1.jsx)(Modal_1.Modal, { ...subProps.modal, children: (0, jsx_runtime_1.jsxs)("div", { className: "ss__autocomplete-modal__inner", ref: (e) => (0, hooks_2.useA11y)(e, 0, true, reset), children: [searchInput && !searchInputInLayout ? searchInput : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), (0, jsx_runtime_1.jsx)(AutocompleteLayout_1.AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, searchInputSlot: searchInputInLayout ? searchInput : undefined, treePath: `${treePath} modal` })] }) }) }) })) : null;
202
200
  });