@athoscommerce/snap-preact 1.5.0 → 1.5.1-beta.110

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 (381) 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/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  4. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  5. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +85 -0
  6. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  7. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  8. package/dist/cjs/components/src/components/Atoms/ChatLoadingIndicator/index.js +17 -0
  9. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  10. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  11. package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +30 -13
  12. package/dist/cjs/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  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 +21 -0
  15. package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +2 -2
  16. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  17. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  18. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +186 -0
  19. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  20. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  21. package/dist/cjs/components/src/components/Molecules/ChatAttachmentContext/index.js +17 -0
  22. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  23. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  24. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +124 -0
  25. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  26. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  27. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/index.js +17 -0
  28. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +18 -0
  29. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  30. package/dist/cjs/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +183 -0
  31. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  32. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  33. package/dist/cjs/components/src/components/Molecules/ChatMessageText/index.js +17 -0
  34. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +15 -0
  35. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  36. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +255 -0
  37. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  38. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  39. package/dist/cjs/components/src/components/Molecules/ChatMessageUser/index.js +17 -0
  40. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  41. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  42. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +122 -0
  43. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  44. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  45. package/dist/cjs/components/src/components/Molecules/ChatProductComparisonMessage/index.js +17 -0
  46. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  47. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  48. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +474 -0
  49. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  50. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  51. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/index.js +17 -0
  52. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  53. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  54. package/dist/cjs/components/src/components/Molecules/ChatResult/ChatResult.js +189 -0
  55. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  56. package/dist/cjs/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  57. package/dist/cjs/components/src/components/Molecules/ChatResult/index.js +17 -0
  58. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  59. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  60. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +133 -0
  61. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  62. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  63. package/dist/cjs/components/src/components/Molecules/ChatResultsDisplay/index.js +17 -0
  64. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  65. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  66. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +99 -0
  67. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  68. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  69. package/dist/cjs/components/src/components/Molecules/ChatSuggestedQuestions/index.js +17 -0
  70. package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +2 -2
  71. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts +5 -3
  72. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  73. package/dist/cjs/components/src/components/Molecules/Result/Result.js +14 -8
  74. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +6 -1
  75. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  76. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +20 -3
  77. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  78. package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +30 -12
  79. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +27 -0
  80. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  81. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +815 -0
  82. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  83. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  84. package/dist/cjs/components/src/components/Organisms/Chat/Chat.styles.js +1090 -0
  85. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  86. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  87. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +104 -0
  88. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  89. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  90. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatGestures.js +87 -0
  91. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  92. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  93. package/dist/cjs/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +116 -0
  94. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts +2 -0
  95. package/dist/cjs/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  96. package/dist/cjs/components/src/components/Organisms/Chat/index.js +17 -0
  97. package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +2 -1
  98. package/dist/cjs/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +2 -1
  99. package/dist/cjs/components/src/components/Organisms/Results/Results.js +1 -1
  100. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
  101. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  102. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -1
  103. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
  104. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  105. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -1
  106. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
  107. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  108. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +3 -1
  109. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  110. package/dist/cjs/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  111. package/dist/cjs/components/src/components/Templates/Chat/Chat.js +55 -0
  112. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts +2 -0
  113. package/dist/cjs/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  114. package/dist/cjs/components/src/components/Templates/Chat/index.js +17 -0
  115. package/dist/cjs/components/src/index.d.ts +11 -0
  116. package/dist/cjs/components/src/index.d.ts.map +1 -1
  117. package/dist/cjs/components/src/index.js +13 -1
  118. package/dist/cjs/components/src/providers/withTracking.d.ts +2 -2
  119. package/dist/cjs/components/src/providers/withTracking.d.ts.map +1 -1
  120. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts +4 -0
  121. package/dist/cjs/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  122. package/dist/cjs/components/src/themes/base/components/templates/chat.js +6 -0
  123. package/dist/cjs/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  124. package/dist/cjs/components/src/themes/base/components/templates/index.js +5 -4
  125. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  126. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  127. package/dist/cjs/components/src/themes/bocachica/components/templates/chat.js +6 -0
  128. package/dist/cjs/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  129. package/dist/cjs/components/src/themes/bocachica/components/templates/index.js +5 -4
  130. package/dist/cjs/components/src/themes/everest/components/templates/chat.d.ts +4 -0
  131. package/dist/cjs/components/src/themes/everest/components/templates/chat.d.ts.map +1 -0
  132. package/dist/cjs/components/src/themes/everest/components/templates/chat.js +6 -0
  133. package/dist/cjs/components/src/themes/everest/components/templates/index.d.ts.map +1 -1
  134. package/dist/cjs/components/src/themes/everest/components/templates/index.js +5 -4
  135. package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.d.ts +4 -0
  136. package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.d.ts.map +1 -0
  137. package/dist/cjs/components/src/themes/matterhorn/components/templates/chat.js +6 -0
  138. package/dist/cjs/components/src/themes/matterhorn/components/templates/index.d.ts.map +1 -1
  139. package/dist/cjs/components/src/themes/matterhorn/components/templates/index.js +5 -4
  140. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  141. package/dist/cjs/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  142. package/dist/cjs/components/src/themes/pike/components/templates/chat.js +6 -0
  143. package/dist/cjs/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  144. package/dist/cjs/components/src/themes/pike/components/templates/index.js +5 -4
  145. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  146. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  147. package/dist/cjs/components/src/themes/snapnco/components/templates/chat.js +6 -0
  148. package/dist/cjs/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  149. package/dist/cjs/components/src/themes/snapnco/components/templates/index.js +5 -4
  150. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  151. package/dist/cjs/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  152. package/dist/cjs/components/src/themes/snappy/components/templates/chat.js +6 -0
  153. package/dist/cjs/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  154. package/dist/cjs/components/src/themes/snappy/components/templates/index.js +5 -4
  155. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts +4 -0
  156. package/dist/cjs/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  157. package/dist/cjs/components/src/themes/themeComponents/chat.js +14 -0
  158. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
  159. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  160. package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
  161. package/dist/cjs/components/src/utilities/snapify.d.ts +3 -2
  162. package/dist/cjs/components/src/utilities/snapify.d.ts.map +1 -1
  163. package/dist/cjs/components/src/utilities/snapify.js +48 -0
  164. package/dist/cjs/src/Snap.d.ts +2 -1
  165. package/dist/cjs/src/Snap.d.ts.map +1 -1
  166. package/dist/cjs/src/Snap.js +134 -24
  167. package/dist/cjs/src/Templates/SnapTemplates.d.ts +2 -1
  168. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  169. package/dist/cjs/src/Templates/SnapTemplates.js +63 -1
  170. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts +4 -0
  171. package/dist/cjs/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  172. package/dist/cjs/src/Templates/Stores/LibraryStore.js +19 -0
  173. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +19 -4
  174. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  175. package/dist/cjs/src/Templates/Stores/TemplateStore.js +2 -1
  176. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  177. package/dist/cjs/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  178. package/dist/cjs/src/Templates/Stores/library/components/Chat.js +5 -0
  179. package/dist/cjs/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  180. package/dist/cjs/src/Templates/Stores/library/languages/es.js +5 -0
  181. package/dist/cjs/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  182. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +5 -0
  183. package/dist/cjs/src/create/createChatController.d.ts +5 -0
  184. package/dist/cjs/src/create/createChatController.d.ts.map +1 -0
  185. package/dist/cjs/src/create/createChatController.js +43 -0
  186. package/dist/cjs/src/setupEvents.d.ts +13 -0
  187. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  188. package/dist/cjs/src/setupEvents.js +87 -0
  189. package/dist/cjs/src/types.d.ts +15 -3
  190. package/dist/cjs/src/types.d.ts.map +1 -1
  191. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -1
  192. package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
  193. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts +7 -0
  194. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.d.ts.map +1 -0
  195. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/ChatLoadingIndicator.js +67 -0
  196. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts +2 -0
  197. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.d.ts.map +1 -0
  198. package/dist/esm/components/src/components/Atoms/ChatLoadingIndicator/index.js +1 -0
  199. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  200. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  201. package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +33 -9
  202. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts +21 -0
  203. package/dist/esm/components/src/components/Atoms/Icon/paths.d.ts.map +1 -1
  204. package/dist/esm/components/src/components/Atoms/Icon/paths.js +21 -0
  205. package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +1 -1
  206. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts +20 -0
  207. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.d.ts.map +1 -0
  208. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/ChatAttachmentContext.js +168 -0
  209. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts +2 -0
  210. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.d.ts.map +1 -0
  211. package/dist/esm/components/src/components/Molecules/ChatAttachmentContext/index.js +1 -0
  212. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +18 -0
  213. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -0
  214. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +118 -0
  215. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts +2 -0
  216. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.d.ts.map +1 -0
  217. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/index.js +1 -0
  218. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts +18 -0
  219. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.d.ts.map +1 -0
  220. package/dist/esm/components/src/components/Molecules/ChatMessageText/ChatMessageText.js +164 -0
  221. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts +2 -0
  222. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.d.ts.map +1 -0
  223. package/dist/esm/components/src/components/Molecules/ChatMessageText/index.js +1 -0
  224. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts +15 -0
  225. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.d.ts.map +1 -0
  226. package/dist/esm/components/src/components/Molecules/ChatMessageUser/ChatMessageUser.js +223 -0
  227. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts +2 -0
  228. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.d.ts.map +1 -0
  229. package/dist/esm/components/src/components/Molecules/ChatMessageUser/index.js +1 -0
  230. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts +17 -0
  231. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.d.ts.map +1 -0
  232. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/ChatProductComparisonMessage.js +100 -0
  233. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts +2 -0
  234. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.d.ts.map +1 -0
  235. package/dist/esm/components/src/components/Molecules/ChatProductComparisonMessage/index.js +1 -0
  236. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +25 -0
  237. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -0
  238. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +449 -0
  239. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts +2 -0
  240. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.d.ts.map +1 -0
  241. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/index.js +1 -0
  242. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts +11 -0
  243. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.d.ts.map +1 -0
  244. package/dist/esm/components/src/components/Molecules/ChatResult/ChatResult.js +171 -0
  245. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts +2 -0
  246. package/dist/esm/components/src/components/Molecules/ChatResult/index.d.ts.map +1 -0
  247. package/dist/esm/components/src/components/Molecules/ChatResult/index.js +1 -0
  248. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts +12 -0
  249. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.d.ts.map +1 -0
  250. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/ChatResultsDisplay.js +112 -0
  251. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts +2 -0
  252. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.d.ts.map +1 -0
  253. package/dist/esm/components/src/components/Molecules/ChatResultsDisplay/index.js +1 -0
  254. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts +15 -0
  255. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.d.ts.map +1 -0
  256. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/ChatSuggestedQuestions.js +80 -0
  257. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts +2 -0
  258. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.d.ts.map +1 -0
  259. package/dist/esm/components/src/components/Molecules/ChatSuggestedQuestions/index.js +1 -0
  260. package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
  261. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +5 -3
  262. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  263. package/dist/esm/components/src/components/Molecules/Result/Result.js +12 -7
  264. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +6 -1
  265. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  266. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +36 -3
  267. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  268. package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +30 -12
  269. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +27 -0
  270. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -0
  271. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +726 -0
  272. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts +16 -0
  273. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.d.ts.map +1 -0
  274. package/dist/esm/components/src/components/Organisms/Chat/Chat.styles.js +1105 -0
  275. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts +32 -0
  276. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.d.ts.map +1 -0
  277. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatFileUpload.js +54 -0
  278. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts +40 -0
  279. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.d.ts.map +1 -0
  280. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatGestures.js +81 -0
  281. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts +44 -0
  282. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.d.ts.map +1 -0
  283. package/dist/esm/components/src/components/Organisms/Chat/hooks/useChatOverflow.js +110 -0
  284. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts +2 -0
  285. package/dist/esm/components/src/components/Organisms/Chat/index.d.ts.map +1 -0
  286. package/dist/esm/components/src/components/Organisms/Chat/index.js +1 -0
  287. package/dist/esm/components/src/components/Organisms/Facet/Facet.js +1 -1
  288. package/dist/esm/components/src/components/Organisms/FacetsHorizontal/FacetsHorizontal.js +1 -1
  289. package/dist/esm/components/src/components/Organisms/Results/Results.js +1 -1
  290. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +1 -1
  291. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  292. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +4 -1
  293. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +1 -1
  294. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  295. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +4 -1
  296. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +1 -1
  297. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  298. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +4 -1
  299. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts +12 -0
  300. package/dist/esm/components/src/components/Templates/Chat/Chat.d.ts.map +1 -0
  301. package/dist/esm/components/src/components/Templates/Chat/Chat.js +42 -0
  302. package/dist/esm/components/src/components/Templates/Chat/index.d.ts +2 -0
  303. package/dist/esm/components/src/components/Templates/Chat/index.d.ts.map +1 -0
  304. package/dist/esm/components/src/components/Templates/Chat/index.js +1 -0
  305. package/dist/esm/components/src/index.d.ts +11 -0
  306. package/dist/esm/components/src/index.d.ts.map +1 -1
  307. package/dist/esm/components/src/index.js +11 -0
  308. package/dist/esm/components/src/providers/withTracking.d.ts +2 -2
  309. package/dist/esm/components/src/providers/withTracking.d.ts.map +1 -1
  310. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts +4 -0
  311. package/dist/esm/components/src/themes/base/components/templates/chat.d.ts.map +1 -0
  312. package/dist/esm/components/src/themes/base/components/templates/chat.js +3 -0
  313. package/dist/esm/components/src/themes/base/components/templates/index.d.ts.map +1 -1
  314. package/dist/esm/components/src/themes/base/components/templates/index.js +5 -0
  315. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts +4 -0
  316. package/dist/esm/components/src/themes/bocachica/components/templates/chat.d.ts.map +1 -0
  317. package/dist/esm/components/src/themes/bocachica/components/templates/chat.js +3 -0
  318. package/dist/esm/components/src/themes/bocachica/components/templates/index.d.ts.map +1 -1
  319. package/dist/esm/components/src/themes/bocachica/components/templates/index.js +5 -0
  320. package/dist/esm/components/src/themes/everest/components/templates/chat.d.ts +4 -0
  321. package/dist/esm/components/src/themes/everest/components/templates/chat.d.ts.map +1 -0
  322. package/dist/esm/components/src/themes/everest/components/templates/chat.js +3 -0
  323. package/dist/esm/components/src/themes/everest/components/templates/index.d.ts.map +1 -1
  324. package/dist/esm/components/src/themes/everest/components/templates/index.js +5 -0
  325. package/dist/esm/components/src/themes/matterhorn/components/templates/chat.d.ts +4 -0
  326. package/dist/esm/components/src/themes/matterhorn/components/templates/chat.d.ts.map +1 -0
  327. package/dist/esm/components/src/themes/matterhorn/components/templates/chat.js +3 -0
  328. package/dist/esm/components/src/themes/matterhorn/components/templates/index.d.ts.map +1 -1
  329. package/dist/esm/components/src/themes/matterhorn/components/templates/index.js +5 -0
  330. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts +4 -0
  331. package/dist/esm/components/src/themes/pike/components/templates/chat.d.ts.map +1 -0
  332. package/dist/esm/components/src/themes/pike/components/templates/chat.js +3 -0
  333. package/dist/esm/components/src/themes/pike/components/templates/index.d.ts.map +1 -1
  334. package/dist/esm/components/src/themes/pike/components/templates/index.js +5 -0
  335. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts +4 -0
  336. package/dist/esm/components/src/themes/snapnco/components/templates/chat.d.ts.map +1 -0
  337. package/dist/esm/components/src/themes/snapnco/components/templates/chat.js +3 -0
  338. package/dist/esm/components/src/themes/snapnco/components/templates/index.d.ts.map +1 -1
  339. package/dist/esm/components/src/themes/snapnco/components/templates/index.js +5 -0
  340. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts +4 -0
  341. package/dist/esm/components/src/themes/snappy/components/templates/chat.d.ts.map +1 -0
  342. package/dist/esm/components/src/themes/snappy/components/templates/chat.js +3 -0
  343. package/dist/esm/components/src/themes/snappy/components/templates/index.d.ts.map +1 -1
  344. package/dist/esm/components/src/themes/snappy/components/templates/index.js +5 -0
  345. package/dist/esm/components/src/themes/themeComponents/chat.d.ts +4 -0
  346. package/dist/esm/components/src/themes/themeComponents/chat.d.ts.map +1 -0
  347. package/dist/esm/components/src/themes/themeComponents/chat.js +11 -0
  348. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
  349. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  350. package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
  351. package/dist/esm/components/src/utilities/snapify.d.ts +3 -2
  352. package/dist/esm/components/src/utilities/snapify.d.ts.map +1 -1
  353. package/dist/esm/components/src/utilities/snapify.js +29 -2
  354. package/dist/esm/src/Snap.d.ts +2 -1
  355. package/dist/esm/src/Snap.d.ts.map +1 -1
  356. package/dist/esm/src/Snap.js +72 -0
  357. package/dist/esm/src/Templates/SnapTemplates.d.ts +2 -1
  358. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  359. package/dist/esm/src/Templates/SnapTemplates.js +52 -0
  360. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +4 -0
  361. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  362. package/dist/esm/src/Templates/Stores/LibraryStore.js +6 -0
  363. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +19 -4
  364. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  365. package/dist/esm/src/Templates/Stores/TemplateStore.js +2 -1
  366. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts +2 -0
  367. package/dist/esm/src/Templates/Stores/library/components/Chat.d.ts.map +1 -0
  368. package/dist/esm/src/Templates/Stores/library/components/Chat.js +1 -0
  369. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  370. package/dist/esm/src/Templates/Stores/library/languages/es.js +5 -0
  371. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  372. package/dist/esm/src/Templates/Stores/library/languages/fr.js +5 -0
  373. package/dist/esm/src/create/createChatController.d.ts +5 -0
  374. package/dist/esm/src/create/createChatController.d.ts.map +1 -0
  375. package/dist/esm/src/create/createChatController.js +29 -0
  376. package/dist/esm/src/setupEvents.d.ts +13 -0
  377. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  378. package/dist/esm/src/setupEvents.js +40 -0
  379. package/dist/esm/src/types.d.ts +15 -3
  380. package/dist/esm/src/types.d.ts.map +1 -1
  381. package/package.json +13 -12
@@ -0,0 +1,32 @@
1
+ import type { RefObject } from 'preact';
2
+ export type UseChatFileUploadOptions = {
3
+ /**
4
+ * When false, drag handlers are no-ops and the dragging indicator never activates.
5
+ */
6
+ enabled: boolean;
7
+ /**
8
+ * Called when image files are dropped onto the footer. Receives a freshly-built
9
+ * FileList (filtered to only image/* types).
10
+ */
11
+ onUpload: (files: FileList) => void | Promise<void>;
12
+ };
13
+ export type UseChatFileUploadResult = {
14
+ /** Attach to a hidden `<input type="file">` so the upload button can trigger it. */
15
+ fileInputRef: RefObject<HTMLInputElement>;
16
+ /** True while the user is actively dragging files over the footer. */
17
+ isDraggingFile: boolean;
18
+ /** Spread these onto the drop-zone element. */
19
+ dragHandlers: {
20
+ onDragEnter: (e: any) => void;
21
+ onDragOver: (e: any) => void;
22
+ onDragLeave: (e: any) => void;
23
+ onDrop: (e: any) => void;
24
+ };
25
+ };
26
+ /**
27
+ * Wires drag-and-drop image upload onto the chat footer plus a ref for the
28
+ * hidden file input. `dragenter` / `dragleave` fire on every child crossing,
29
+ * so a counter is kept to know when the pointer has truly left the footer.
30
+ */
31
+ export declare const useChatFileUpload: ({ enabled, onUpload }: UseChatFileUploadOptions) => UseChatFileUploadResult;
32
+ //# sourceMappingURL=useChatFileUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatFileUpload.d.ts","sourceRoot":"","sources":["../../../../../../../../components/src/components/Organisms/Chat/hooks/useChatFileUpload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,oFAAoF;IACpF,YAAY,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC1C,sEAAsE;IACtE,cAAc,EAAE,OAAO,CAAC;IACxB,+CAA+C;IAC/C,YAAY,EAAE;QACb,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC9B,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC7B,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KACzB,CAAC;CACF,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,0BAA2B,wBAAwB,KAAG,uBA4CnF,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { useRef, useState } from 'preact/hooks';
2
+ const hasFiles = (e) => Array.from(e.dataTransfer?.types || []).includes('Files');
3
+ /**
4
+ * Wires drag-and-drop image upload onto the chat footer plus a ref for the
5
+ * hidden file input. `dragenter` / `dragleave` fire on every child crossing,
6
+ * so a counter is kept to know when the pointer has truly left the footer.
7
+ */
8
+ export const useChatFileUpload = ({ enabled, onUpload }) => {
9
+ const fileInputRef = useRef(null);
10
+ const [isDraggingFile, setIsDraggingFile] = useState(false);
11
+ const dragCounterRef = useRef(0);
12
+ const onDragEnter = (e) => {
13
+ if (!enabled || !hasFiles(e))
14
+ return;
15
+ e.preventDefault();
16
+ dragCounterRef.current += 1;
17
+ setIsDraggingFile(true);
18
+ };
19
+ const onDragOver = (e) => {
20
+ if (!enabled || !hasFiles(e))
21
+ return;
22
+ // Required to allow the drop event to fire
23
+ e.preventDefault();
24
+ if (e.dataTransfer)
25
+ e.dataTransfer.dropEffect = 'copy';
26
+ };
27
+ const onDragLeave = (e) => {
28
+ if (!enabled || !hasFiles(e))
29
+ return;
30
+ dragCounterRef.current = Math.max(0, dragCounterRef.current - 1);
31
+ if (dragCounterRef.current === 0)
32
+ setIsDraggingFile(false);
33
+ };
34
+ const onDrop = async (e) => {
35
+ if (!enabled || !hasFiles(e))
36
+ return;
37
+ e.preventDefault();
38
+ dragCounterRef.current = 0;
39
+ setIsDraggingFile(false);
40
+ const dropped = Array.from(e.dataTransfer?.files || []);
41
+ const images = dropped.filter((f) => f.type.startsWith('image/'));
42
+ if (images.length === 0)
43
+ return;
44
+ // Reconstruct a FileList — consumers (e.g. controller.upload) expect FileList | null
45
+ const dt = new DataTransfer();
46
+ images.forEach((f) => dt.items.add(f));
47
+ await onUpload(dt.files);
48
+ };
49
+ return {
50
+ fileInputRef,
51
+ isDraggingFile,
52
+ dragHandlers: { onDragEnter, onDragOver, onDragLeave, onDrop },
53
+ };
54
+ };
@@ -0,0 +1,40 @@
1
+ import type { RefObject } from 'preact';
2
+ export type UseChatGesturesOptions = {
3
+ /**
4
+ * Ref to the panel that is being dragged (the mobile secondary panel).
5
+ */
6
+ panelRef: RefObject<HTMLDivElement>;
7
+ /**
8
+ * Whether the side chat is currently visible. Used to reset state when it toggles.
9
+ */
10
+ shouldShowSideChat: boolean;
11
+ /**
12
+ * Active message id. Used to reset state when the user navigates to a different message.
13
+ */
14
+ activeMessageId: string | undefined;
15
+ /**
16
+ * Called when the swipe gesture passes the dismiss threshold and finishes animating out.
17
+ */
18
+ onDismiss: () => void;
19
+ };
20
+ export type UseChatGesturesResult = {
21
+ /** Current vertical offset in pixels. */
22
+ swipeOffset: number;
23
+ /** Whether a snap-back / dismiss animation is currently running. */
24
+ swipeAnimating: boolean;
25
+ /** Spread these onto the panel: `onTouchStart`, `onTouchMove`, `onTouchEnd`. */
26
+ swipeHandlers: {
27
+ onTouchStart: (e: any) => void;
28
+ onTouchMove: (e: any) => void;
29
+ onTouchEnd: () => void;
30
+ };
31
+ };
32
+ /**
33
+ * Drag-down-to-dismiss gesture for the mobile secondary chat panel.
34
+ *
35
+ * Tracks vertical touch movement and applies a translateY offset until the user releases.
36
+ * If the user passes a distance or velocity threshold the panel animates the rest of the way
37
+ * out and `onDismiss` fires; otherwise it snaps back to zero.
38
+ */
39
+ export declare const useChatGestures: ({ panelRef, shouldShowSideChat, activeMessageId, onDismiss }: UseChatGesturesOptions) => UseChatGesturesResult;
40
+ //# sourceMappingURL=useChatGestures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatGestures.d.ts","sourceRoot":"","sources":["../../../../../../../../components/src/components/Organisms/Chat/hooks/useChatGestures.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACpC;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,cAAc,EAAE,OAAO,CAAC;IACxB,gFAAgF;IAChF,aAAa,EAAE;QACd,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,IAAI,CAAC;KACvB,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,iEAAkE,sBAAsB,KAAG,qBA6EtH,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { useEffect, useRef, useState } from 'preact/hooks';
2
+ /**
3
+ * Drag-down-to-dismiss gesture for the mobile secondary chat panel.
4
+ *
5
+ * Tracks vertical touch movement and applies a translateY offset until the user releases.
6
+ * If the user passes a distance or velocity threshold the panel animates the rest of the way
7
+ * out and `onDismiss` fires; otherwise it snaps back to zero.
8
+ */
9
+ export const useChatGestures = ({ panelRef, shouldShowSideChat, activeMessageId, onDismiss }) => {
10
+ const swipeStartY = useRef(0);
11
+ const swipeStartTime = useRef(0);
12
+ const swipeActive = useRef(false);
13
+ const swipeOffsetRef = useRef(0);
14
+ const [swipeOffset, setSwipeOffsetRaw] = useState(0);
15
+ const [swipeAnimating, setSwipeAnimating] = useState(false);
16
+ const updateSwipeOffset = (value) => {
17
+ swipeOffsetRef.current = value;
18
+ setSwipeOffsetRaw(value);
19
+ };
20
+ // Reset swipe state when secondary panel opens/closes or active message changes
21
+ useEffect(() => {
22
+ updateSwipeOffset(0);
23
+ setSwipeAnimating(false);
24
+ swipeActive.current = false;
25
+ }, [shouldShowSideChat, activeMessageId]);
26
+ const onTouchStart = (e) => {
27
+ swipeStartY.current = e.touches[0].clientY;
28
+ swipeStartTime.current = Date.now();
29
+ swipeActive.current = false; // only activate after dead-zone threshold
30
+ setSwipeAnimating(false);
31
+ };
32
+ const onTouchMove = (e) => {
33
+ const diff = e.touches[0].clientY - swipeStartY.current;
34
+ // Require a minimum drag distance before activating the swipe,
35
+ // so taps on buttons (e.g. close) still fire their click events.
36
+ if (!swipeActive.current) {
37
+ if (Math.abs(diff) < 8)
38
+ return; // still within dead-zone
39
+ swipeActive.current = true;
40
+ }
41
+ if (diff > 0) {
42
+ e.preventDefault();
43
+ updateSwipeOffset(diff);
44
+ }
45
+ else {
46
+ updateSwipeOffset(0);
47
+ }
48
+ };
49
+ const onTouchEnd = () => {
50
+ if (!swipeActive.current)
51
+ return;
52
+ swipeActive.current = false;
53
+ const offset = swipeOffsetRef.current;
54
+ const height = panelRef.current?.offsetHeight || 400;
55
+ const elapsed = Date.now() - swipeStartTime.current;
56
+ const velocity = offset / (elapsed || 1); // px per ms
57
+ // Dismiss if dragged past 25% threshold OR a quick flick (>0.5 px/ms with >50px travel)
58
+ const shouldDismiss = offset > height * 0.25 || (velocity > 0.5 && offset > 50);
59
+ if (shouldDismiss) {
60
+ // Animate out then dismiss
61
+ setSwipeAnimating(true);
62
+ updateSwipeOffset(height);
63
+ setTimeout(() => {
64
+ onDismiss();
65
+ updateSwipeOffset(0);
66
+ setSwipeAnimating(false);
67
+ }, 300);
68
+ }
69
+ else {
70
+ // Snap back
71
+ setSwipeAnimating(true);
72
+ updateSwipeOffset(0);
73
+ setTimeout(() => setSwipeAnimating(false), 300);
74
+ }
75
+ };
76
+ return {
77
+ swipeOffset,
78
+ swipeAnimating,
79
+ swipeHandlers: { onTouchStart, onTouchMove, onTouchEnd },
80
+ };
81
+ };
@@ -0,0 +1,44 @@
1
+ import type { RefObject } from 'preact';
2
+ export type UseChatOverflowOptions = {
3
+ messagesContainerRef: RefObject<HTMLDivElement>;
4
+ headerRef: RefObject<HTMLDivElement>;
5
+ /**
6
+ * Whether the chat panel is open. State resets on toggle.
7
+ */
8
+ open: boolean;
9
+ /**
10
+ * Whether the controller is currently loading. Triggers a scroll-to-bottom when it flips on.
11
+ */
12
+ loading: boolean;
13
+ /**
14
+ * Length of the visible chat. Drives the new-message popup + auto-scroll behavior.
15
+ */
16
+ visibleChatLength: number;
17
+ /**
18
+ * The last visible message — needed to differentiate auto-scroll for user vs assistant messages.
19
+ */
20
+ lastVisibleMessage: {
21
+ messageType?: string;
22
+ } | undefined;
23
+ };
24
+ export type UseChatOverflowResult = {
25
+ /** True when there are messages off-screen below the current scroll position. */
26
+ showNewMessages: boolean;
27
+ /** Imperative dismiss for the "New messages" popup. */
28
+ setShowNewMessages: (value: boolean) => void;
29
+ /** True when the messages container is overflowing (used to switch comparison tray between in-flow and overlay). */
30
+ messagesOverflow: boolean;
31
+ /** Live ref tracking whether the user is currently near the bottom. */
32
+ isNearBottomRef: RefObject<boolean>;
33
+ /** Imperatively scroll the messages container to the bottom (smooth). */
34
+ scrollToBottom: () => void;
35
+ /** Conditional scroll: only scrolls if the user is already near the bottom. */
36
+ scrollToBottomIfNear: () => void;
37
+ };
38
+ /**
39
+ * Manages the auto-scroll, "new message" indicator, and overflow detection for the
40
+ * chat message list. Owns all scroll listeners and ResizeObservers so the host
41
+ * component just consumes the derived state.
42
+ */
43
+ export declare const useChatOverflow: ({ messagesContainerRef, headerRef, open, loading, visibleChatLength, lastVisibleMessage, }: UseChatOverflowOptions) => UseChatOverflowResult;
44
+ //# sourceMappingURL=useChatOverflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatOverflow.d.ts","sourceRoot":"","sources":["../../../../../../../../components/src/components/Organisms/Chat/hooks/useChatOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG;IACpC,oBAAoB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAChD,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACrC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,kBAAkB,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,oHAAoH;IACpH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,yEAAyE;IACzE,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,+FAOzB,sBAAsB,KAAG,qBAyG3B,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { useEffect, useRef, useState } from 'preact/hooks';
2
+ /**
3
+ * Manages the auto-scroll, "new message" indicator, and overflow detection for the
4
+ * chat message list. Owns all scroll listeners and ResizeObservers so the host
5
+ * component just consumes the derived state.
6
+ */
7
+ export const useChatOverflow = ({ messagesContainerRef, headerRef, open, loading, visibleChatLength, lastVisibleMessage, }) => {
8
+ const [showNewMessages, setShowNewMessages] = useState(false);
9
+ const [messagesOverflow, setMessagesOverflow] = useState(false);
10
+ const isNearBottomRef = useRef(true);
11
+ const scrollToBottom = () => {
12
+ // Scroll the messages container directly (instead of scrollIntoView on the
13
+ // bottom anchor) so the browser never walks up the ancestor chain. On small
14
+ // viewports a smooth scrollIntoView could otherwise animate the document /
15
+ // visual viewport and visually push the fixed-position chat off-screen.
16
+ const container = messagesContainerRef.current;
17
+ if (container) {
18
+ container.scrollTo({ top: container.scrollHeight, behavior: 'smooth' });
19
+ }
20
+ };
21
+ // Conditional scroll: only scrolls if the user is already near the bottom.
22
+ const scrollToBottomIfNear = () => {
23
+ if (isNearBottomRef.current) {
24
+ scrollToBottom();
25
+ }
26
+ };
27
+ // Scroll to bottom when chat opens
28
+ useEffect(() => {
29
+ if (open) {
30
+ scrollToBottom();
31
+ setShowNewMessages(false);
32
+ isNearBottomRef.current = true;
33
+ }
34
+ }, [open]);
35
+ // Handle new messages — auto-scroll for user messages, show popup for response messages when scrolled up
36
+ useEffect(() => {
37
+ if (!open || !lastVisibleMessage)
38
+ return;
39
+ if (lastVisibleMessage.messageType === 'user') {
40
+ scrollToBottom();
41
+ setShowNewMessages(false);
42
+ }
43
+ else if (isNearBottomRef.current) {
44
+ scrollToBottom();
45
+ setShowNewMessages(false);
46
+ }
47
+ else {
48
+ setShowNewMessages(true);
49
+ }
50
+ }, [visibleChatLength]);
51
+ // Scroll to show loading indicator when user sends a message
52
+ useEffect(() => {
53
+ if (open && loading) {
54
+ scrollToBottom();
55
+ }
56
+ }, [loading]);
57
+ // Track scroll position to dismiss the "New messages" popup when user scrolls to bottom
58
+ useEffect(() => {
59
+ const container = messagesContainerRef.current;
60
+ if (!container)
61
+ return;
62
+ const handleScroll = () => {
63
+ const threshold = 100;
64
+ const isNearBottom = container.scrollHeight - container.scrollTop - container.clientHeight < threshold;
65
+ isNearBottomRef.current = isNearBottom;
66
+ if (isNearBottom) {
67
+ setShowNewMessages(false);
68
+ }
69
+ };
70
+ container.addEventListener('scroll', handleScroll);
71
+ return () => container.removeEventListener('scroll', handleScroll);
72
+ }, [open]);
73
+ // Track whether the messages container is overflowing so the comparisons header
74
+ // can switch between in-flow (short conversations — top content stays reachable)
75
+ // and overlay (overflowing — avoid layout shift when toggling the tray).
76
+ // Hysteresis: when already in overlay, only return to in-flow if the content
77
+ // would still fit *with* the header re-inserted — otherwise the two states
78
+ // fight each other and the layout flickers.
79
+ useEffect(() => {
80
+ const container = messagesContainerRef.current;
81
+ if (!container || typeof ResizeObserver === 'undefined')
82
+ return;
83
+ const update = () => {
84
+ setMessagesOverflow((prev) => {
85
+ const headerHeight = headerRef.current?.offsetHeight || 0;
86
+ if (prev) {
87
+ // Currently overlay: header isn't taking flow space. Only switch
88
+ // back to in-flow if the content would fit with the header added.
89
+ return container.scrollHeight > container.clientHeight - headerHeight + 1;
90
+ }
91
+ // Currently in-flow: header already takes space — straightforward check.
92
+ return container.scrollHeight > container.clientHeight + 1;
93
+ });
94
+ };
95
+ update();
96
+ const observer = new ResizeObserver(update);
97
+ observer.observe(container);
98
+ if (headerRef.current)
99
+ observer.observe(headerRef.current);
100
+ return () => observer.disconnect();
101
+ }, [open, visibleChatLength]);
102
+ return {
103
+ showNewMessages,
104
+ setShowNewMessages,
105
+ messagesOverflow,
106
+ isNearBottomRef,
107
+ scrollToBottom,
108
+ scrollToBottomIfNear,
109
+ };
110
+ };
@@ -0,0 +1,2 @@
1
+ export * from './Chat';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Organisms/Chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './Chat';
@@ -419,7 +419,7 @@ export const Facet = observer((properties) => {
419
419
  ? ''
420
420
  : 'ss__facet--showing-all'), children: justContent ? (_jsx(FacetContent, { ...facetContentProps, mergedLang: mergedLang })) : (_jsx(Dropdown, { ...subProps.dropdown, open: disableCollapse || !facet?.collapsed, onClick: () => !disableCollapse && facet.toggleCollapse && facet?.toggleCollapse(), disableA11y: true, button: _jsxs("div", { className: "ss__facet__header", ref: (e) => useA11y(e, disableCollapse ? -1 : 0), role: "heading", "aria-level": 3, ...mergedLang.dropdownButton.attributes, children: [_jsxs("span", { className: "ss__facet__header__inner", children: [_jsx("span", { ...mergedLang.dropdownButton.value, children: facet?.label }), showSelectedCount && selectedCount && facet.type !== 'range' ? (_jsx("span", { className: "ss__facet__header__selected-count", children: hideSelectedCountParenthesis ? selectedCount : `(${selectedCount})` })) : null, (mergedLang.clearAllText.value || clearAllIcon) && selectedCount ? (_jsx(Button, { ...subProps.button, internalClassName: "ss__facet__header__clear-all", name: 'reset-facet', onClick: (e) => {
421
421
  e.stopPropagation();
422
- facet?.clear.url.link.onClick();
422
+ facet?.clear.url?.link.onClick();
423
423
  }, icon: clearAllIcon ? clearAllIcon : undefined, children: mergedLang.clearAllText.value && showClearAllText ? _jsx("label", { ...mergedLang.clearAllText.all }) : null })) : (_jsx(_Fragment, {}))] }), !disableCollapse && (_jsx(Icon, { ...subProps.icon, ...(facet?.collapsed
424
424
  ? { ...(typeof iconExpand == 'string' ? { icon: iconExpand } : iconExpand) }
425
425
  : { ...(typeof iconCollapse == 'string' ? { icon: iconCollapse } : iconCollapse) }), name: facet?.collapsed ? 'expand' : 'collapse' }))] }), children: _jsx(FacetContent, { ...facetContentProps, mergedLang: mergedLang }) })) }) })) : null;
@@ -237,7 +237,7 @@ export const FacetsHorizontal = observer((properties) => {
237
237
  }
238
238
  }, button: _jsxs("div", { className: "ss__dropdown__button__heading", ...mergedLang.dropdownButton.attributes, children: [_jsxs("div", { className: "ss__facet__header__inner", children: [_jsx("span", { ...mergedLang.dropdownButton.value, children: facet?.label }), showSelectedCount && selectedCount && facet.type !== 'range' ? (_jsx("span", { className: "ss__facet__header__selected-count", children: hideSelectedCountParenthesis ? selectedCount : `(${selectedCount})` })) : null, (mergedLang.clearAllText.value || clearAllIcon) && selectedCount ? (_jsx(Button, { ...subProps.button, internalClassName: "ss__facet__header__clear-all", name: 'reset-facet', onClick: (e) => {
239
239
  e.stopPropagation();
240
- facet?.clear.url.link.onClick();
240
+ facet?.clear.url?.link.onClick();
241
241
  }, icon: clearAllIcon ? clearAllIcon : undefined, children: mergedLang.clearAllText.value && showClearAllText ? _jsx("label", { ...mergedLang.clearAllText.all }) : null })) : (_jsx(_Fragment, {}))] }), _jsx(Icon, { ...subProps.icon, ...(selectedFacet?.field === facet.field
242
242
  ? { ...(typeof iconExpand == 'string' ? { icon: iconExpand } : iconExpand) }
243
243
  : { ...(typeof iconCollapse == 'string' ? { icon: iconCollapse } : iconCollapse) }) })] }), disableOverlay: false, children: _jsx(Facet, { ...subProps.facet, facet: facet }) }));
@@ -19,7 +19,7 @@ const defaultStyles = ({ gapSize, columns }) => {
19
19
  flexFlow: 'row wrap',
20
20
  gap: gapSize,
21
21
  gridTemplateRows: 'auto',
22
- gridTemplateColumns: `repeat(${columns}, 1fr)`,
22
+ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
23
23
  '& .ss__result, & .ss__result-layout': {
24
24
  boxSizing: 'border-box',
25
25
  flex: '0 1 auto',
@@ -1,7 +1,7 @@
1
1
  import type { AutocompleteController } from '@athoscommerce/snap-controller';
2
2
  import { ComponentProps, JSXComponent } from '../../../types';
3
3
  import { AutocompleteLayoutProps } from '../../Organisms/AutocompleteLayout';
4
- export declare const AutocompleteFixed: ((properties: AutocompleteFixedProps) => import("@emotion/react/jsx-runtime").JSX.Element | null) & {
4
+ export declare const AutocompleteFixed: ((properties: AutocompleteFixedProps) => import("@emotion/react/jsx-runtime").JSX.Element) & {
5
5
  displayName: string;
6
6
  };
7
7
  interface inputBounds {
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteFixed.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AA+CjG,eAAO,MAAM,iBAAiB,gBAAyB,sBAAsB;;CAmN3E,CAAC;AAEH,UAAU,WAAW;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAQD,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,oCAAoC,GACvC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC9C,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"AutocompleteFixed.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AA+CjG,eAAO,MAAM,iBAAiB,gBAAyB,sBAAsB;;CA0N3E,CAAC;AAEH,UAAU,WAAW;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAQD,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,oCAAoC,GACvC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC9C,GAAG,uBAAuB,CAAC"}
@@ -138,6 +138,9 @@ export const AutocompleteFixed = observer((properties) => {
138
138
  closeSearchButton: {
139
139
  onClick: () => reset(),
140
140
  },
141
+ chatButton: {
142
+ onClick: () => controller.openChat(),
143
+ },
141
144
  inputName: inputName,
142
145
  // inherited props
143
146
  ...defined({
@@ -211,5 +214,5 @@ export const AutocompleteFixed = observer((properties) => {
211
214
  delete acProps.style;
212
215
  delete acProps.styleScript;
213
216
  delete acProps.themeStyleScript;
214
- return layout?.length && active ? (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classNames('ss__autocomplete-fixed', className, internalClassName), children: _jsx(Modal, { ...subProps.modal, children: _jsxs("div", { className: "ss__autocomplete-fixed__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx("div", { className: "ss__autocomplete-fixed__inner__layout-wrapper", children: _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` }) })] }) }) }) })) : null;
217
+ return (_jsx(_Fragment, { children: layout?.length && active ? (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classNames('ss__autocomplete-fixed', className, internalClassName), children: _jsx(Modal, { ...subProps.modal, children: _jsxs("div", { className: "ss__autocomplete-fixed__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx("div", { className: "ss__autocomplete-fixed__inner__layout-wrapper", children: _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` }) })] }) }) }) })) : null }));
215
218
  });
@@ -1,7 +1,7 @@
1
1
  import type { AutocompleteController } from '@athoscommerce/snap-controller';
2
2
  import { ComponentProps, JSXComponent } from '../../../types';
3
3
  import { AutocompleteLayoutProps } from '../../Organisms/AutocompleteLayout';
4
- export declare const AutocompleteModal: ((properties: AutocompleteModalProps) => import("@emotion/react/jsx-runtime").JSX.Element | null) & {
4
+ export declare const AutocompleteModal: ((properties: AutocompleteModalProps) => import("@emotion/react/jsx-runtime").JSX.Element) & {
5
5
  displayName: string;
6
6
  };
7
7
  export type AutocompleteModalProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteModal.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteModal/AutocompleteModal.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AA4DjG,eAAO,MAAM,iBAAiB,gBAAyB,sBAAsB;;CA8J3E,CAAC;AAQH,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,oCAAoC,GACvC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"AutocompleteModal.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteModal/AutocompleteModal.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AA4DjG,eAAO,MAAM,iBAAiB,gBAAyB,sBAAsB;;CAqK3E,CAAC;AAQH,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,oCAAoC,GACvC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,uBAAuB,CAAC"}
@@ -149,6 +149,9 @@ export const AutocompleteModal = observer((properties) => {
149
149
  onClick: () => reset(),
150
150
  icon: 'angle-left',
151
151
  },
152
+ chatButton: {
153
+ onClick: () => controller.openChat(),
154
+ },
152
155
  inputName: inputName,
153
156
  // inherited props
154
157
  ...defined({
@@ -180,5 +183,5 @@ export const AutocompleteModal = observer((properties) => {
180
183
  delete acProps.style;
181
184
  delete acProps.styleScript;
182
185
  delete acProps.themeStyleScript;
183
- return layout?.length && active ? (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classNames('ss__autocomplete-modal', className, internalClassName), children: _jsx(Modal, { ...subProps.modal, children: _jsxs("div", { className: "ss__autocomplete-modal__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` })] }) }) }) })) : null;
186
+ return (_jsx(_Fragment, { children: layout?.length && active ? (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classNames('ss__autocomplete-modal', className, internalClassName), children: _jsx(Modal, { ...subProps.modal, children: _jsxs("div", { className: "ss__autocomplete-modal__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} modal` })] }) }) }) })) : null }));
184
187
  });
@@ -2,7 +2,7 @@ import type { AutocompleteController } from '@athoscommerce/snap-controller';
2
2
  import { ComponentProps, JSXComponent } from '../../../types';
3
3
  import { AutocompleteLayoutProps } from '../../Organisms/AutocompleteLayout';
4
4
  import { SlideDirectionType } from '../../Molecules/Slideout';
5
- export declare const AutocompleteSlideout: ((properties: AutocompleteSlideoutProps) => import("@emotion/react/jsx-runtime").JSX.Element | null) & {
5
+ export declare const AutocompleteSlideout: ((properties: AutocompleteSlideoutProps) => import("@emotion/react/jsx-runtime").JSX.Element) & {
6
6
  displayName: string;
7
7
  };
8
8
  export type AutocompleteSlideoutProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteSlideout.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAA2B,MAAM,0BAA0B,CAAC;AAsBvF,eAAO,MAAM,oBAAoB,gBAAyB,yBAAyB;;CAsJjF,CAAC;AAOH,MAAM,MAAM,yBAAyB,GAAG;IACvC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,uCAAuC,GAC1C,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,uCAAuC,GAAG;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"AutocompleteSlideout.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsB,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAA2B,MAAM,0BAA0B,CAAC;AAsBvF,eAAO,MAAM,oBAAoB,gBAAyB,yBAAyB;;CA6JjF,CAAC;AAOH,MAAM,MAAM,yBAAyB,GAAG;IACvC,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;CAC7C,GAAG,uCAAuC,GAC1C,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,MAAM,MAAM,uCAAuC,GAAG;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,uBAAuB,CAAC"}
@@ -100,6 +100,9 @@ export const AutocompleteSlideout = observer((properties) => {
100
100
  onClick: () => reset(),
101
101
  icon: 'angle-left',
102
102
  },
103
+ chatButton: {
104
+ onClick: () => controller.openChat(),
105
+ },
103
106
  // inherited props
104
107
  ...defined({
105
108
  disableStyles,
@@ -134,5 +137,5 @@ export const AutocompleteSlideout = observer((properties) => {
134
137
  delete acProps.styleScript;
135
138
  delete acProps.themeStyleScript;
136
139
  /***************************************/
137
- return layout?.length ? (_jsx(CacheProvider, { children: _jsx(Slideout, { ...styling, ...subProps.slideout, className: classNames('ss__autocomplete-slideout', 'ss__autocomplete-slideout__slideout', className, internalClassName), active: active, children: _jsxs("div", { className: "ss__autocomplete-slideout__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} slideout` })] }) }) })) : null;
140
+ return (_jsx(_Fragment, { children: layout?.length ? (_jsx(CacheProvider, { children: _jsx(Slideout, { ...styling, ...subProps.slideout, className: classNames('ss__autocomplete-slideout', 'ss__autocomplete-slideout__slideout', className, internalClassName), active: active, children: _jsxs("div", { className: "ss__autocomplete-slideout__inner", ref: (e) => useA11y(e, 0, true, reset), children: [renderInput ? (_jsx(SearchInput, { ...subProps.searchInput, value: controller.store.state.input || '', inputRef: renderedInputRef })) : (_jsx(_Fragment, {})), _jsx(AutocompleteLayout, { ...acProps, ...subProps.autocompleteLayout, input: _input, controller: controller, treePath: `${treePath} slideout` })] }) }) })) : null }));
138
141
  });
@@ -0,0 +1,12 @@
1
+ import { ComponentProps } from '../../../types';
2
+ import { ChatTemplatesLegalProps, ChatLang } from '../../Organisms/Chat';
3
+ import type { ChatController } from '@athoscommerce/snap-controller';
4
+ export declare const Chat: ((properties: ChatProps) => JSX.Element) & {
5
+ displayName: string;
6
+ };
7
+ export type ChatProps = {
8
+ controller: ChatController;
9
+ lang?: Partial<ChatLang>;
10
+ } & ChatTemplatesLegalProps & Omit<ComponentProps, 'customComponent'>;
11
+ export type { ChatTemplatesLegalProps, ChatLang };
12
+ //# sourceMappingURL=Chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/Chat/Chat.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAI7D,OAAO,EAAmC,uBAAuB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAUrE,eAAO,MAAM,IAAI,gBAAyB,SAAS,KAAG,GAAG,CAAC,OAAO;;CAsC/D,CAAC;AAMH,MAAM,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE,cAAc,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzB,GAAG,uBAAuB,GAC1B,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
+ import { css } from '@emotion/react';
3
+ import classnames from 'classnames';
4
+ import { observer } from 'mobx-react-lite';
5
+ import { useTheme, CacheProvider, useTreePath } from '../../../providers';
6
+ import { defined, mergeProps, mergeStyles } from '../../../utilities';
7
+ import { useLang } from '../../../hooks';
8
+ import deepmerge from 'deepmerge';
9
+ import { ChatOrganism } from '../../Organisms/Chat';
10
+ const defaultStyles = () => {
11
+ // The template itself is layout-free — the underlying Chat organism handles
12
+ // fixed positioning and sizing. The wrapper exists purely so theme overrides
13
+ // flow through mergeProps('chat', ...) and so the Chat surface can be themed
14
+ // per-template like Search and Recommendation.
15
+ return css({});
16
+ };
17
+ export const Chat = observer((properties) => {
18
+ const globalTheme = useTheme();
19
+ const globalTreePath = useTreePath();
20
+ const defaultProps = {
21
+ treePath: globalTreePath,
22
+ };
23
+ const props = mergeProps('chat', globalTheme, defaultProps, properties);
24
+ const { className, internalClassName, controller, disableStyles, treePath } = props;
25
+ // Lang scaffold — keeps the Template ready for future i18n overrides
26
+ const defaultLang = {};
27
+ const lang = deepmerge(defaultLang, props.lang || {});
28
+ useLang(lang, { controller });
29
+ const subProps = {
30
+ Chat: {
31
+ // inherited props
32
+ ...defined({
33
+ disableStyles,
34
+ }),
35
+ // component theme overrides
36
+ theme: props.theme,
37
+ treePath,
38
+ },
39
+ };
40
+ const styling = mergeStyles(props, defaultStyles);
41
+ return (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classnames('ss__chat', className, internalClassName), children: _jsx(ChatOrganism, { ...subProps.Chat, ...props, controller: controller }) }) }));
42
+ });
@@ -0,0 +1,2 @@
1
+ export * from './Chat';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Templates/Chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './Chat';