@memori.ai/memori-react 9.0.0-alpha.9 → 9.0.0-rc.1

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 (878) hide show
  1. package/CHANGELOG.md +754 -37
  2. package/README.md +430 -171
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  5. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  6. package/dist/components/Auth/Auth.css +14 -7
  7. package/dist/components/Auth/Auth.d.ts +1 -1
  8. package/dist/components/Auth/Auth.js +47 -34
  9. package/dist/components/Auth/Auth.js.map +1 -1
  10. package/dist/components/Avatar/Avatar.js +1 -1
  11. package/dist/components/Avatar/Avatar.js.map +1 -1
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  18. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  19. package/dist/components/ChangeMode/ChangeMode.css +1 -1
  20. package/dist/components/Chat/Chat.css +191 -49
  21. package/dist/components/Chat/Chat.d.ts +2 -0
  22. package/dist/components/Chat/Chat.js +123 -82
  23. package/dist/components/Chat/Chat.js.map +1 -1
  24. package/dist/components/ChatBubble/ChatBubble.css +539 -88
  25. package/dist/components/ChatBubble/ChatBubble.d.ts +2 -0
  26. package/dist/components/ChatBubble/ChatBubble.js +202 -108
  27. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  28. package/dist/components/ChatHistoryDrawer/ChatHistory.css +195 -700
  29. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  30. package/dist/components/ChatHistoryDrawer/ChatHistory.js +235 -613
  31. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  32. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  33. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  34. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -80
  35. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  36. package/dist/components/ChatInputs/ChatInputs.css +181 -166
  37. package/dist/components/ChatInputs/ChatInputs.d.ts +2 -0
  38. package/dist/components/ChatInputs/ChatInputs.js +15 -9
  39. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  40. package/dist/components/ChatTextArea/ChatTextArea.css +30 -19
  41. package/dist/components/ChatTextArea/ChatTextArea.js +0 -17
  42. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  43. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  44. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  45. package/dist/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  46. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +71 -6
  47. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  48. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  49. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  50. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  51. package/dist/components/ContentPreviewModal/index.d.ts +2 -0
  52. package/dist/components/ContentPreviewModal/index.js +5 -1
  53. package/dist/components/ContentPreviewModal/index.js.map +1 -1
  54. package/dist/components/DateSelector/DateSelector.css +93 -7
  55. package/dist/components/DateSelector/DateSelector.js +5 -1
  56. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  57. package/dist/components/DrawerFooter/DrawerFooter.css +39 -39
  58. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  59. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  60. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  61. package/dist/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  62. package/dist/components/FeedbackButtons/FeedbackButtons.css +3 -3
  63. package/dist/components/FeedbackButtons/FeedbackButtons.js +2 -2
  64. package/dist/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  65. package/dist/components/FilePreview/FilePreview.css +123 -223
  66. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  67. package/dist/components/FilePreview/FilePreview.js +37 -86
  68. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  69. package/dist/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  70. package/dist/components/Header/ChatConsumptionDropdown.js +31 -6
  71. package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
  72. package/dist/components/Header/Header.css +216 -53
  73. package/dist/components/Header/Header.d.ts +1 -0
  74. package/dist/components/Header/Header.js +201 -105
  75. package/dist/components/Header/Header.js.map +1 -1
  76. package/dist/components/IconButton/IconButton.css +135 -0
  77. package/dist/components/IconButton/IconButton.d.ts +9 -0
  78. package/dist/components/IconButton/IconButton.js +36 -0
  79. package/dist/components/IconButton/IconButton.js.map +1 -0
  80. package/dist/components/KnownFacts/KnownFacts.css +147 -35
  81. package/dist/components/KnownFacts/KnownFacts.js +184 -182
  82. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  83. package/dist/components/LoginDrawer/LoginDrawer.css +114 -74
  84. package/dist/components/LoginDrawer/LoginDrawer.d.ts +1 -1
  85. package/dist/components/LoginDrawer/LoginDrawer.js +67 -17
  86. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  87. package/dist/components/MediaWidget/MediaItemWidget.css +141 -121
  88. package/dist/components/MediaWidget/MediaItemWidget.js +15 -14
  89. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  90. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  91. package/dist/components/MediaWidget/MediaItemWidget.utils.js +68 -4
  92. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  93. package/dist/components/MediaWidget/MediaPreviewModal.js +12 -19
  94. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  95. package/dist/components/MediaWidget/MediaWidget.css +2 -2
  96. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  97. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  98. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  99. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  100. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  101. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  102. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  103. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +48 -56
  104. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  105. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  106. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +20 -16
  107. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  108. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  109. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +206 -62
  110. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  111. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  112. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +1 -1
  113. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  114. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  115. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  116. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  117. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  118. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  119. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  120. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  121. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  122. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  123. package/dist/components/MemoriWidget/MemoriWidget.css +8 -3
  124. package/dist/components/MemoriWidget/MemoriWidget.d.ts +4 -1
  125. package/dist/components/MemoriWidget/MemoriWidget.js +143 -77
  126. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  127. package/dist/components/MicrophoneButton/MicrophoneButton.css +2 -161
  128. package/dist/components/MicrophoneButton/MicrophoneButton.js +3 -1
  129. package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  130. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  131. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  132. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +75 -113
  133. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  134. package/dist/components/PositionPopover/PositionPopover.css +9 -10
  135. package/dist/components/PositionPopover/PositionPopover.d.ts +2 -0
  136. package/dist/components/PositionPopover/PositionPopover.js +57 -36
  137. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  138. package/dist/components/PoweredBy/PoweredBy.css +1 -8
  139. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  140. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  141. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  142. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  143. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  144. package/dist/components/SettingsDrawer/SettingsDrawer.js +2 -4
  145. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  146. package/dist/components/ShareButton/ShareButton.css +101 -57
  147. package/dist/components/ShareButton/ShareButton.js +10 -9
  148. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  149. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  150. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  151. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  152. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  153. package/dist/components/Snippet/Snippet.css +10 -40
  154. package/dist/components/Snippet/Snippet.js +3 -1
  155. package/dist/components/Snippet/Snippet.js.map +1 -1
  156. package/dist/components/StartPanel/StartPanel.css +299 -50
  157. package/dist/components/StartPanel/StartPanel.d.ts +1 -0
  158. package/dist/components/StartPanel/StartPanel.js +45 -30
  159. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  160. package/dist/components/Typing/Typing.js +1 -1
  161. package/dist/components/Typing/Typing.js.map +1 -1
  162. package/dist/components/UploadButton/UploadButton.css +44 -62
  163. package/dist/components/UploadButton/UploadButton.d.ts +1 -0
  164. package/dist/components/UploadButton/UploadButton.js +17 -21
  165. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  166. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  167. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +23 -144
  168. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  169. package/dist/components/UploadButton/UploadImages/UploadImages.js +2 -8
  170. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  171. package/dist/components/VenueWidget/VenueWidget.css +6 -6
  172. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  173. package/dist/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  174. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +169 -20
  175. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  176. package/dist/components/layouts/Chat.js +66 -73
  177. package/dist/components/layouts/Chat.js.map +1 -1
  178. package/dist/components/layouts/FullPage.js +160 -39
  179. package/dist/components/layouts/FullPage.js.map +1 -1
  180. package/dist/components/layouts/HiddenChat.js +24 -7
  181. package/dist/components/layouts/HiddenChat.js.map +1 -1
  182. package/dist/components/layouts/Totem.js +10 -1
  183. package/dist/components/layouts/Totem.js.map +1 -1
  184. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +88 -8
  185. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  186. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +142 -39
  187. package/dist/components/layouts/ZoomedFullBody.js +158 -39
  188. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  189. package/dist/components/layouts/chat.css +231 -59
  190. package/dist/components/layouts/fullpage.css +283 -81
  191. package/dist/components/layouts/hidden-chat.css +116 -96
  192. package/dist/components/layouts/totem.css +194 -51
  193. package/dist/components/layouts/zoomed-full-body.css +276 -77
  194. package/dist/helpers/artifactPanel.d.ts +6 -0
  195. package/dist/helpers/artifactPanel.js +42 -0
  196. package/dist/helpers/artifactPanel.js.map +1 -0
  197. package/dist/helpers/chatScroll.d.ts +12 -0
  198. package/dist/helpers/chatScroll.js +14 -0
  199. package/dist/helpers/chatScroll.js.map +1 -0
  200. package/dist/helpers/constants.d.ts +3 -1
  201. package/dist/helpers/constants.js +25 -3
  202. package/dist/helpers/constants.js.map +1 -1
  203. package/dist/helpers/conversationHistory.d.ts +16 -0
  204. package/dist/helpers/conversationHistory.js +89 -0
  205. package/dist/helpers/conversationHistory.js.map +1 -0
  206. package/dist/helpers/conversationTitle.d.ts +8 -0
  207. package/dist/helpers/conversationTitle.js +27 -0
  208. package/dist/helpers/conversationTitle.js.map +1 -0
  209. package/dist/helpers/convertDocument.d.ts +1 -0
  210. package/dist/helpers/convertDocument.js +24 -0
  211. package/dist/helpers/convertDocument.js.map +1 -0
  212. package/dist/helpers/error.js +2 -1
  213. package/dist/helpers/error.js.map +1 -1
  214. package/dist/helpers/highlightMatches.d.ts +2 -0
  215. package/dist/helpers/highlightMatches.js +54 -0
  216. package/dist/helpers/highlightMatches.js.map +1 -0
  217. package/dist/helpers/media.js +18 -3
  218. package/dist/helpers/media.js.map +1 -1
  219. package/dist/helpers/message.js +5 -1
  220. package/dist/helpers/message.js.map +1 -1
  221. package/dist/helpers/nats/getNatsConfig.js.map +1 -1
  222. package/dist/helpers/nats/useNats.d.ts +2 -1
  223. package/dist/helpers/nats/useNats.js +87 -20
  224. package/dist/helpers/nats/useNats.js.map +1 -1
  225. package/dist/helpers/nats/useNatsSession.d.ts +6 -1
  226. package/dist/helpers/nats/useNatsSession.js +48 -7
  227. package/dist/helpers/nats/useNatsSession.js.map +1 -1
  228. package/dist/helpers/positionPopover.d.ts +3 -1
  229. package/dist/helpers/positionPopover.js +17 -2
  230. package/dist/helpers/positionPopover.js.map +1 -1
  231. package/dist/helpers/reasoning.d.ts +7 -0
  232. package/dist/helpers/reasoning.js +43 -0
  233. package/dist/helpers/reasoning.js.map +1 -0
  234. package/dist/helpers/relativeTime.d.ts +3 -0
  235. package/dist/helpers/relativeTime.js +56 -0
  236. package/dist/helpers/relativeTime.js.map +1 -0
  237. package/dist/helpers/sourcesCount.d.ts +2 -0
  238. package/dist/helpers/sourcesCount.js +22 -0
  239. package/dist/helpers/sourcesCount.js.map +1 -0
  240. package/dist/helpers/tts/muteSpeaker.d.ts +13 -0
  241. package/dist/helpers/tts/muteSpeaker.js +26 -0
  242. package/dist/helpers/tts/muteSpeaker.js.map +1 -0
  243. package/dist/helpers/tts/useTTS.js +18 -9
  244. package/dist/helpers/tts/useTTS.js.map +1 -1
  245. package/dist/helpers/usePressTooltip.d.ts +6 -1
  246. package/dist/helpers/usePressTooltip.js +16 -1
  247. package/dist/helpers/usePressTooltip.js.map +1 -1
  248. package/dist/helpers/utils.d.ts +3 -1
  249. package/dist/helpers/utils.js +20 -6
  250. package/dist/helpers/utils.js.map +1 -1
  251. package/dist/icons/MemoriIcon.js +1 -1
  252. package/dist/icons/MemoriIcon.js.map +1 -1
  253. package/dist/index.js +17 -17
  254. package/dist/index.js.map +1 -1
  255. package/dist/locales/de.json +82 -8
  256. package/dist/locales/en.json +80 -11
  257. package/dist/locales/es.json +79 -9
  258. package/dist/locales/fr.json +79 -9
  259. package/dist/locales/it.json +80 -11
  260. package/dist/styles/motion.css +25 -0
  261. package/dist/styles.css +1 -1
  262. package/dist/version.d.ts +1 -1
  263. package/dist/version.js +1 -1
  264. package/dist/version.js.map +1 -1
  265. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  266. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  267. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  268. package/esm/components/Auth/Auth.css +14 -7
  269. package/esm/components/Auth/Auth.d.ts +1 -1
  270. package/esm/components/Auth/Auth.js +48 -35
  271. package/esm/components/Auth/Auth.js.map +1 -1
  272. package/esm/components/Avatar/Avatar.js +1 -1
  273. package/esm/components/Avatar/Avatar.js.map +1 -1
  274. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  275. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  276. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  277. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  278. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  279. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  280. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  281. package/esm/components/ChangeMode/ChangeMode.css +1 -1
  282. package/esm/components/Chat/Chat.css +191 -49
  283. package/esm/components/Chat/Chat.d.ts +2 -0
  284. package/esm/components/Chat/Chat.js +125 -84
  285. package/esm/components/Chat/Chat.js.map +1 -1
  286. package/esm/components/ChatBubble/ChatBubble.css +539 -88
  287. package/esm/components/ChatBubble/ChatBubble.d.ts +2 -0
  288. package/esm/components/ChatBubble/ChatBubble.js +204 -110
  289. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  290. package/esm/components/ChatHistoryDrawer/ChatHistory.css +195 -700
  291. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  292. package/esm/components/ChatHistoryDrawer/ChatHistory.js +239 -617
  293. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  294. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  295. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  296. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -82
  297. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  298. package/esm/components/ChatInputs/ChatInputs.css +181 -166
  299. package/esm/components/ChatInputs/ChatInputs.d.ts +2 -0
  300. package/esm/components/ChatInputs/ChatInputs.js +16 -10
  301. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  302. package/esm/components/ChatTextArea/ChatTextArea.css +30 -19
  303. package/esm/components/ChatTextArea/ChatTextArea.js +0 -17
  304. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  305. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  306. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  307. package/esm/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  308. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +72 -7
  309. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  310. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  311. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  312. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  313. package/esm/components/ContentPreviewModal/index.d.ts +2 -0
  314. package/esm/components/ContentPreviewModal/index.js +2 -0
  315. package/esm/components/ContentPreviewModal/index.js.map +1 -1
  316. package/esm/components/DateSelector/DateSelector.css +93 -7
  317. package/esm/components/DateSelector/DateSelector.js +5 -1
  318. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  319. package/esm/components/DrawerFooter/DrawerFooter.css +39 -39
  320. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  321. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  322. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  323. package/esm/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  324. package/esm/components/FeedbackButtons/FeedbackButtons.css +3 -3
  325. package/esm/components/FeedbackButtons/FeedbackButtons.js +2 -2
  326. package/esm/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  327. package/esm/components/FilePreview/FilePreview.css +123 -223
  328. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  329. package/esm/components/FilePreview/FilePreview.js +39 -88
  330. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  331. package/esm/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  332. package/esm/components/Header/ChatConsumptionDropdown.js +33 -8
  333. package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
  334. package/esm/components/Header/Header.css +216 -53
  335. package/esm/components/Header/Header.d.ts +1 -0
  336. package/esm/components/Header/Header.js +202 -106
  337. package/esm/components/Header/Header.js.map +1 -1
  338. package/esm/components/IconButton/IconButton.css +135 -0
  339. package/esm/components/IconButton/IconButton.d.ts +9 -0
  340. package/esm/components/IconButton/IconButton.js +33 -0
  341. package/esm/components/IconButton/IconButton.js.map +1 -0
  342. package/esm/components/KnownFacts/KnownFacts.css +147 -35
  343. package/esm/components/KnownFacts/KnownFacts.js +185 -184
  344. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  345. package/esm/components/LoginDrawer/LoginDrawer.css +114 -74
  346. package/esm/components/LoginDrawer/LoginDrawer.d.ts +1 -1
  347. package/esm/components/LoginDrawer/LoginDrawer.js +68 -18
  348. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  349. package/esm/components/MediaWidget/MediaItemWidget.css +141 -121
  350. package/esm/components/MediaWidget/MediaItemWidget.js +16 -15
  351. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  352. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  353. package/esm/components/MediaWidget/MediaItemWidget.utils.js +65 -4
  354. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  355. package/esm/components/MediaWidget/MediaPreviewModal.js +13 -20
  356. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  357. package/esm/components/MediaWidget/MediaWidget.css +2 -2
  358. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  359. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  360. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  361. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  362. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  363. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  364. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  365. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +50 -58
  366. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  367. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  368. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +21 -18
  369. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  370. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  371. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +208 -64
  372. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  373. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  374. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +2 -2
  375. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  376. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  377. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  378. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  379. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  380. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  381. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  382. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  383. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  384. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  385. package/esm/components/MemoriWidget/MemoriWidget.css +8 -3
  386. package/esm/components/MemoriWidget/MemoriWidget.d.ts +4 -1
  387. package/esm/components/MemoriWidget/MemoriWidget.js +145 -80
  388. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  389. package/esm/components/MicrophoneButton/MicrophoneButton.css +2 -161
  390. package/esm/components/MicrophoneButton/MicrophoneButton.js +3 -2
  391. package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  392. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  393. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  394. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +76 -114
  395. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  396. package/esm/components/PositionPopover/PositionPopover.css +9 -10
  397. package/esm/components/PositionPopover/PositionPopover.d.ts +2 -0
  398. package/esm/components/PositionPopover/PositionPopover.js +58 -37
  399. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  400. package/esm/components/PoweredBy/PoweredBy.css +1 -8
  401. package/esm/components/ReasoningBlock/ReasoningBlock.css +156 -0
  402. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  403. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  404. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  405. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  406. package/esm/components/SettingsDrawer/SettingsDrawer.js +2 -4
  407. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  408. package/esm/components/ShareButton/ShareButton.css +101 -57
  409. package/esm/components/ShareButton/ShareButton.js +11 -10
  410. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  411. package/esm/components/SideDrawer/SideDrawer.css +112 -0
  412. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  413. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  414. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  415. package/esm/components/Snippet/Snippet.css +10 -40
  416. package/esm/components/Snippet/Snippet.js +4 -2
  417. package/esm/components/Snippet/Snippet.js.map +1 -1
  418. package/esm/components/StartPanel/StartPanel.css +299 -50
  419. package/esm/components/StartPanel/StartPanel.d.ts +1 -0
  420. package/esm/components/StartPanel/StartPanel.js +46 -31
  421. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  422. package/esm/components/Typing/Typing.js +1 -1
  423. package/esm/components/Typing/Typing.js.map +1 -1
  424. package/esm/components/UploadButton/UploadButton.css +44 -62
  425. package/esm/components/UploadButton/UploadButton.d.ts +1 -0
  426. package/esm/components/UploadButton/UploadButton.js +18 -22
  427. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  428. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  429. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +25 -146
  430. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  431. package/esm/components/UploadButton/UploadImages/UploadImages.js +2 -8
  432. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  433. package/esm/components/VenueWidget/VenueWidget.css +6 -6
  434. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  435. package/esm/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  436. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +172 -23
  437. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  438. package/esm/components/layouts/Chat.js +69 -76
  439. package/esm/components/layouts/Chat.js.map +1 -1
  440. package/esm/components/layouts/FullPage.js +162 -41
  441. package/esm/components/layouts/FullPage.js.map +1 -1
  442. package/esm/components/layouts/HiddenChat.js +24 -7
  443. package/esm/components/layouts/HiddenChat.js.map +1 -1
  444. package/esm/components/layouts/Totem.js +10 -1
  445. package/esm/components/layouts/Totem.js.map +1 -1
  446. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +89 -9
  447. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  448. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +142 -39
  449. package/esm/components/layouts/ZoomedFullBody.js +160 -41
  450. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  451. package/esm/components/layouts/chat.css +231 -59
  452. package/esm/components/layouts/fullpage.css +283 -81
  453. package/esm/components/layouts/hidden-chat.css +116 -96
  454. package/esm/components/layouts/totem.css +194 -51
  455. package/esm/components/layouts/zoomed-full-body.css +276 -77
  456. package/esm/helpers/artifactPanel.d.ts +6 -0
  457. package/esm/helpers/artifactPanel.js +37 -0
  458. package/esm/helpers/artifactPanel.js.map +1 -0
  459. package/esm/helpers/chatScroll.d.ts +12 -0
  460. package/esm/helpers/chatScroll.js +9 -0
  461. package/esm/helpers/chatScroll.js.map +1 -0
  462. package/esm/helpers/constants.d.ts +3 -1
  463. package/esm/helpers/constants.js +24 -2
  464. package/esm/helpers/constants.js.map +1 -1
  465. package/esm/helpers/conversationHistory.d.ts +16 -0
  466. package/esm/helpers/conversationHistory.js +82 -0
  467. package/esm/helpers/conversationHistory.js.map +1 -0
  468. package/esm/helpers/conversationTitle.d.ts +8 -0
  469. package/esm/helpers/conversationTitle.js +23 -0
  470. package/esm/helpers/conversationTitle.js.map +1 -0
  471. package/esm/helpers/convertDocument.d.ts +1 -0
  472. package/esm/helpers/convertDocument.js +20 -0
  473. package/esm/helpers/convertDocument.js.map +1 -0
  474. package/esm/helpers/error.js +2 -1
  475. package/esm/helpers/error.js.map +1 -1
  476. package/esm/helpers/highlightMatches.d.ts +2 -0
  477. package/esm/helpers/highlightMatches.js +49 -0
  478. package/esm/helpers/highlightMatches.js.map +1 -0
  479. package/esm/helpers/media.js +18 -3
  480. package/esm/helpers/media.js.map +1 -1
  481. package/esm/helpers/message.js +6 -2
  482. package/esm/helpers/message.js.map +1 -1
  483. package/esm/helpers/nats/getNatsConfig.js.map +1 -1
  484. package/esm/helpers/nats/useNats.d.ts +2 -1
  485. package/esm/helpers/nats/useNats.js +87 -20
  486. package/esm/helpers/nats/useNats.js.map +1 -1
  487. package/esm/helpers/nats/useNatsSession.d.ts +6 -1
  488. package/esm/helpers/nats/useNatsSession.js +48 -8
  489. package/esm/helpers/nats/useNatsSession.js.map +1 -1
  490. package/esm/helpers/positionPopover.d.ts +3 -1
  491. package/esm/helpers/positionPopover.js +15 -2
  492. package/esm/helpers/positionPopover.js.map +1 -1
  493. package/esm/helpers/reasoning.d.ts +7 -0
  494. package/esm/helpers/reasoning.js +39 -0
  495. package/esm/helpers/reasoning.js.map +1 -0
  496. package/esm/helpers/relativeTime.d.ts +3 -0
  497. package/esm/helpers/relativeTime.js +50 -0
  498. package/esm/helpers/relativeTime.js.map +1 -0
  499. package/esm/helpers/sourcesCount.d.ts +2 -0
  500. package/esm/helpers/sourcesCount.js +18 -0
  501. package/esm/helpers/sourcesCount.js.map +1 -0
  502. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  503. package/esm/helpers/tts/muteSpeaker.js +21 -0
  504. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  505. package/esm/helpers/tts/useTTS.js +18 -9
  506. package/esm/helpers/tts/useTTS.js.map +1 -1
  507. package/esm/helpers/usePressTooltip.d.ts +6 -1
  508. package/esm/helpers/usePressTooltip.js +17 -2
  509. package/esm/helpers/usePressTooltip.js.map +1 -1
  510. package/esm/helpers/utils.d.ts +3 -1
  511. package/esm/helpers/utils.js +18 -6
  512. package/esm/helpers/utils.js.map +1 -1
  513. package/esm/icons/MemoriIcon.js +1 -1
  514. package/esm/icons/MemoriIcon.js.map +1 -1
  515. package/esm/index.js +18 -18
  516. package/esm/index.js.map +1 -1
  517. package/esm/locales/de.json +82 -8
  518. package/esm/locales/en.json +80 -11
  519. package/esm/locales/es.json +79 -9
  520. package/esm/locales/fr.json +79 -9
  521. package/esm/locales/it.json +80 -11
  522. package/esm/styles/motion.css +25 -0
  523. package/esm/styles.css +1 -1
  524. package/esm/version.d.ts +1 -1
  525. package/esm/version.js +1 -1
  526. package/esm/version.js.map +1 -1
  527. package/package.json +15 -55
  528. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  529. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -64
  530. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  531. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  532. package/dist/context/widgetSurfaceContext.js +0 -11
  533. package/dist/context/widgetSurfaceContext.js.map +0 -1
  534. package/dist/testUtils.d.ts +0 -5
  535. package/dist/testUtils.js +0 -18
  536. package/dist/testUtils.js.map +0 -1
  537. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  538. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -62
  539. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  540. package/esm/context/widgetSurfaceContext.d.ts +0 -3
  541. package/esm/context/widgetSurfaceContext.js +0 -7
  542. package/esm/context/widgetSurfaceContext.js.map +0 -1
  543. package/esm/testUtils.d.ts +0 -5
  544. package/esm/testUtils.js +0 -15
  545. package/esm/testUtils.js.map +0 -1
  546. package/src/I18nWrapper.tsx +0 -13
  547. package/src/Showcase.stories.tsx +0 -641
  548. package/src/__snapshots__/index.test.tsx.snap +0 -126
  549. package/src/components/AgeVerificationModal/AgeVerificationModal.css +0 -118
  550. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +0 -49
  551. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +0 -34
  552. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -125
  553. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +0 -43
  554. package/src/components/Auth/Auth.css +0 -61
  555. package/src/components/Auth/Auth.stories.tsx +0 -90
  556. package/src/components/Auth/Auth.test.tsx +0 -63
  557. package/src/components/Auth/Auth.tsx +0 -216
  558. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +0 -199
  559. package/src/components/Avatar/Avatar.css +0 -151
  560. package/src/components/Avatar/Avatar.stories.tsx +0 -160
  561. package/src/components/Avatar/Avatar.test.tsx +0 -158
  562. package/src/components/Avatar/Avatar.tsx +0 -248
  563. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +0 -103
  564. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -105
  565. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -338
  566. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +0 -44
  567. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -1091
  568. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +0 -83
  569. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +0 -301
  570. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +0 -100
  571. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +0 -152
  572. package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +0 -31
  573. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +0 -141
  574. package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +0 -145
  575. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +0 -111
  576. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +0 -199
  577. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +0 -254
  578. package/src/components/Avatar/AvatarView/index.tsx +0 -194
  579. package/src/components/Avatar/AvatarView/utils/hideHands.ts +0 -11
  580. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +0 -100
  581. package/src/components/Avatar/AvatarView/utils/useHeadMovement.ts +0 -72
  582. package/src/components/Avatar/AvatarView/utils/useLoadingMorphAnim.ts +0 -38
  583. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +0 -93
  584. package/src/components/Avatar/AvatarView/utils/useSmile.ts +0 -39
  585. package/src/components/Avatar/AvatarView/utils/utils.ts +0 -55
  586. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -284
  587. package/src/components/Blob/Blob.css +0 -288
  588. package/src/components/Blob/Blob.stories.tsx +0 -53
  589. package/src/components/Blob/Blob.test.tsx +0 -18
  590. package/src/components/Blob/Blob.tsx +0 -26
  591. package/src/components/Blob/__snapshots__/Blob.test.tsx.snap +0 -80
  592. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +0 -40
  593. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +0 -58
  594. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.test.tsx +0 -53
  595. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +0 -74
  596. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +0 -226
  597. package/src/components/ChangeMode/ChangeMode.css +0 -24
  598. package/src/components/ChangeMode/ChangeMode.stories.tsx +0 -50
  599. package/src/components/ChangeMode/ChangeMode.test.tsx +0 -24
  600. package/src/components/ChangeMode/ChangeMode.tsx +0 -52
  601. package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +0 -77
  602. package/src/components/Chat/Chat.css +0 -402
  603. package/src/components/Chat/Chat.stories.tsx +0 -1687
  604. package/src/components/Chat/Chat.test.tsx +0 -381
  605. package/src/components/Chat/Chat.tsx +0 -779
  606. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +0 -10134
  607. package/src/components/ChatBubble/ChatBubble.css +0 -570
  608. package/src/components/ChatBubble/ChatBubble.stories.tsx +0 -1185
  609. package/src/components/ChatBubble/ChatBubble.test.tsx +0 -486
  610. package/src/components/ChatBubble/ChatBubble.tsx +0 -887
  611. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +0 -9849
  612. package/src/components/ChatHistoryDrawer/ChatHistory.css +0 -848
  613. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +0 -449
  614. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +0 -116
  615. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -1295
  616. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +0 -367
  617. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +0 -295
  618. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +0 -24
  619. package/src/components/ChatInputs/ChatInputs.css +0 -490
  620. package/src/components/ChatInputs/ChatInputs.stories.tsx +0 -254
  621. package/src/components/ChatInputs/ChatInputs.tsx +0 -510
  622. package/src/components/ChatTextArea/ChatTextArea.css +0 -233
  623. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  624. package/src/components/ChatTextArea/ChatTextArea.test.tsx +0 -28
  625. package/src/components/ChatTextArea/ChatTextArea.tsx +0 -175
  626. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +0 -74
  627. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +0 -36
  628. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +0 -296
  629. package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +0 -31
  630. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +0 -230
  631. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +0 -111
  632. package/src/components/ContentPreviewModal/ContentPreviewModal.css +0 -173
  633. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -71
  634. package/src/components/ContentPreviewModal/index.ts +0 -2
  635. package/src/components/CustomGLBModelViewer/ModelViewer.css +0 -11
  636. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  637. package/src/components/CustomGLBModelViewer/ModelViewer.test.tsx +0 -13
  638. package/src/components/CustomGLBModelViewer/ModelViewer.tsx +0 -37
  639. package/src/components/CustomGLBModelViewer/__snapshots__/ModelViewer.test.tsx.snap +0 -20
  640. package/src/components/DateSelector/DateSelector.css +0 -156
  641. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  642. package/src/components/DateSelector/DateSelector.test.tsx +0 -149
  643. package/src/components/DateSelector/DateSelector.tsx +0 -258
  644. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +0 -1954
  645. package/src/components/DrawerFooter/DrawerFooter.css +0 -62
  646. package/src/components/DrawerFooter/DrawerFooter.tsx +0 -58
  647. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -54
  648. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -64
  649. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +0 -54
  650. package/src/components/ExpertsDrawer/ExpertsDrawer.test.tsx +0 -53
  651. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -72
  652. package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +0 -10
  653. package/src/components/ExportHistoryButton/ExportHistoryButton.css +0 -22
  654. package/src/components/FeedbackButtons/FeedbackButtons.css +0 -109
  655. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +0 -55
  656. package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +0 -11
  657. package/src/components/FeedbackButtons/FeedbackButtons.tsx +0 -179
  658. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +0 -55
  659. package/src/components/FilePreview/FilePreview.css +0 -374
  660. package/src/components/FilePreview/FilePreview.stories.tsx +0 -66
  661. package/src/components/FilePreview/FilePreview.test.tsx +0 -26
  662. package/src/components/FilePreview/FilePreview.tsx +0 -286
  663. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +0 -254
  664. package/src/components/Header/ChatConsumptionDropdown.test.tsx +0 -154
  665. package/src/components/Header/ChatConsumptionDropdown.tsx +0 -353
  666. package/src/components/Header/Header.css +0 -746
  667. package/src/components/Header/Header.stories.tsx +0 -404
  668. package/src/components/Header/Header.test.tsx +0 -399
  669. package/src/components/Header/Header.tsx +0 -1235
  670. package/src/components/Header/__snapshots__/Header.test.tsx.snap +0 -2016
  671. package/src/components/KnownFacts/KnownFacts.css +0 -58
  672. package/src/components/KnownFacts/KnownFacts.stories.tsx +0 -83
  673. package/src/components/KnownFacts/KnownFacts.test.tsx +0 -57
  674. package/src/components/KnownFacts/KnownFacts.tsx +0 -394
  675. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +0 -43
  676. package/src/components/LoginDrawer/LoginDrawer.css +0 -1741
  677. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -105
  678. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -199
  679. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -781
  680. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +0 -169
  681. package/src/components/MediaWidget/DocumentCard.test.tsx +0 -45
  682. package/src/components/MediaWidget/DocumentCard.tsx +0 -19
  683. package/src/components/MediaWidget/MediaItemWidget.css +0 -1444
  684. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +0 -423
  685. package/src/components/MediaWidget/MediaItemWidget.test.tsx +0 -248
  686. package/src/components/MediaWidget/MediaItemWidget.tsx +0 -983
  687. package/src/components/MediaWidget/MediaItemWidget.types.ts +0 -65
  688. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +0 -367
  689. package/src/components/MediaWidget/MediaItemWidget.utils.ts +0 -227
  690. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +0 -271
  691. package/src/components/MediaWidget/MediaPreviewModal.tsx +0 -425
  692. package/src/components/MediaWidget/MediaWidget.css +0 -131
  693. package/src/components/MediaWidget/MediaWidget.stories.tsx +0 -319
  694. package/src/components/MediaWidget/MediaWidget.test.tsx +0 -41
  695. package/src/components/MediaWidget/MediaWidget.tsx +0 -97
  696. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +0 -24
  697. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +0 -608
  698. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +0 -140
  699. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  700. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +0 -159
  701. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +0 -240
  702. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +0 -30
  703. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +0 -464
  704. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +0 -91
  705. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +0 -620
  706. package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +0 -9
  707. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +0 -500
  708. package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +0 -90
  709. package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +0 -73
  710. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +0 -454
  711. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +0 -1100
  712. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -440
  713. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +0 -20
  714. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +0 -63
  715. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +0 -283
  716. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +0 -397
  717. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +0 -354
  718. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +0 -159
  719. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +0 -80
  720. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +0 -18
  721. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +0 -308
  722. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +0 -384
  723. package/src/components/MemoriWidget/MemoriWidget.css +0 -165
  724. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +0 -295
  725. package/src/components/MemoriWidget/MemoriWidget.tsx +0 -4059
  726. package/src/components/MicrophoneButton/MicrophoneButton.css +0 -194
  727. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +0 -52
  728. package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -135
  729. package/src/components/MobileSessionPanel/MobileSessionPanel.css +0 -437
  730. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +0 -808
  731. package/src/components/PositionPopover/PositionPopover.css +0 -219
  732. package/src/components/PositionPopover/PositionPopover.stories.tsx +0 -37
  733. package/src/components/PositionPopover/PositionPopover.tsx +0 -367
  734. package/src/components/PoweredBy/PoweredBy.css +0 -57
  735. package/src/components/PoweredBy/PoweredBy.stories.tsx +0 -75
  736. package/src/components/PoweredBy/PoweredBy.test.tsx +0 -15
  737. package/src/components/PoweredBy/PoweredBy.tsx +0 -36
  738. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +0 -287
  739. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +0 -47
  740. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +0 -58
  741. package/src/components/SendOnEnterMenu/SendOnEnterMenu.test.tsx +0 -17
  742. package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +0 -48
  743. package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +0 -105
  744. package/src/components/SettingsDrawer/SettingsDrawer.css +0 -24
  745. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +0 -94
  746. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +0 -202
  747. package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -247
  748. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +0 -52
  749. package/src/components/ShareButton/ShareButton.css +0 -319
  750. package/src/components/ShareButton/ShareButton.stories.tsx +0 -103
  751. package/src/components/ShareButton/ShareButton.test.tsx +0 -53
  752. package/src/components/ShareButton/ShareButton.tsx +0 -749
  753. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +0 -739
  754. package/src/components/Snippet/Snippet.css +0 -178
  755. package/src/components/Snippet/Snippet.stories.tsx +0 -286
  756. package/src/components/Snippet/Snippet.test.tsx +0 -176
  757. package/src/components/Snippet/Snippet.tsx +0 -148
  758. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +0 -619
  759. package/src/components/StartPanel/StartPanel.css +0 -896
  760. package/src/components/StartPanel/StartPanel.stories.tsx +0 -394
  761. package/src/components/StartPanel/StartPanel.test.tsx +0 -371
  762. package/src/components/StartPanel/StartPanel.tsx +0 -745
  763. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +0 -3347
  764. package/src/components/Typing/Typing.stories.tsx +0 -130
  765. package/src/components/Typing/Typing.test.tsx +0 -62
  766. package/src/components/Typing/Typing.tsx +0 -232
  767. package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +0 -173
  768. package/src/components/UploadButton/UploadButton.css +0 -573
  769. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  770. package/src/components/UploadButton/UploadButton.test.tsx +0 -14
  771. package/src/components/UploadButton/UploadButton.tsx +0 -705
  772. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -585
  773. package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -554
  774. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +0 -160
  775. package/src/components/VenueWidget/VenueWidget.css +0 -223
  776. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  777. package/src/components/VenueWidget/VenueWidget.test.tsx +0 -49
  778. package/src/components/VenueWidget/VenueWidget.tsx +0 -578
  779. package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +0 -776
  780. package/src/components/WhyThisAnswer/WhyThisAnswer.css +0 -171
  781. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +0 -288
  782. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +0 -245
  783. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -245
  784. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +0 -57
  785. package/src/components/icons/GasStation.tsx +0 -36
  786. package/src/components/layouts/Chat.test.tsx +0 -41
  787. package/src/components/layouts/Chat.tsx +0 -428
  788. package/src/components/layouts/FullBody/FullBody.stories.tsx +0 -110
  789. package/src/components/layouts/FullPage.test.tsx +0 -66
  790. package/src/components/layouts/FullPage.tsx +0 -382
  791. package/src/components/layouts/HiddenChat.test.tsx +0 -41
  792. package/src/components/layouts/HiddenChat.tsx +0 -366
  793. package/src/components/layouts/Totem/Totem.stories.tsx +0 -131
  794. package/src/components/layouts/Totem.test.tsx +0 -41
  795. package/src/components/layouts/Totem.tsx +0 -53
  796. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
  797. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.test.tsx +0 -43
  798. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +0 -194
  799. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -80
  800. package/src/components/layouts/WebsiteAssistant/website-assistant.css +0 -793
  801. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +0 -131
  802. package/src/components/layouts/ZoomedFullBody.test.tsx +0 -41
  803. package/src/components/layouts/ZoomedFullBody.tsx +0 -381
  804. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +0 -753
  805. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +0 -1487
  806. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +0 -700
  807. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +0 -797
  808. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +0 -744
  809. package/src/components/layouts/chat.css +0 -658
  810. package/src/components/layouts/fullpage.css +0 -426
  811. package/src/components/layouts/hidden-chat.css +0 -636
  812. package/src/components/layouts/layouts.stories.tsx +0 -232
  813. package/src/components/layouts/totem.css +0 -230
  814. package/src/components/layouts/zoomed-full-body.css +0 -374
  815. package/src/context/visemeContext.tsx +0 -384
  816. package/src/context/widgetSurfaceContext.tsx +0 -14
  817. package/src/helpers/chatPdfExport.ts +0 -547
  818. package/src/helpers/configuration.ts +0 -42
  819. package/src/helpers/constants.ts +0 -244
  820. package/src/helpers/credits.ts +0 -54
  821. package/src/helpers/error.test.ts +0 -29
  822. package/src/helpers/error.ts +0 -278
  823. package/src/helpers/imageCompression.ts +0 -230
  824. package/src/helpers/llmUsage.ts +0 -328
  825. package/src/helpers/markedExtendedTables.js +0 -217
  826. package/src/helpers/media.test.ts +0 -133
  827. package/src/helpers/media.ts +0 -54
  828. package/src/helpers/message.test.ts +0 -126
  829. package/src/helpers/message.ts +0 -204
  830. package/src/helpers/nats/getNatsConfig.ts +0 -145
  831. package/src/helpers/nats/isSessionExpiredError.test.ts +0 -38
  832. package/src/helpers/nats/isSessionExpiredError.ts +0 -51
  833. package/src/helpers/nats/useNats.ts +0 -124
  834. package/src/helpers/nats/useNatsSession.ts +0 -394
  835. package/src/helpers/piiDetection.test.ts +0 -186
  836. package/src/helpers/piiDetection.ts +0 -91
  837. package/src/helpers/positionPopover.test.ts +0 -33
  838. package/src/helpers/positionPopover.ts +0 -13
  839. package/src/helpers/sanitizer.ts +0 -17
  840. package/src/helpers/statistics.ts +0 -58
  841. package/src/helpers/stt/useSTT.ts +0 -515
  842. package/src/helpers/translations.ts +0 -39
  843. package/src/helpers/tts/ttsVoiceUtility.ts +0 -275
  844. package/src/helpers/tts/useTTS.ts +0 -621
  845. package/src/helpers/usePressTooltip.ts +0 -29
  846. package/src/helpers/utils.test.ts +0 -321
  847. package/src/helpers/utils.ts +0 -588
  848. package/src/helpers/venue.ts +0 -36
  849. package/src/i18n.ts +0 -41
  850. package/src/icons/FacebookIcon.tsx +0 -23
  851. package/src/icons/LinkedinIcon.tsx +0 -23
  852. package/src/icons/MemoriIcon.tsx +0 -80
  853. package/src/icons/TelegramIcon.tsx +0 -19
  854. package/src/icons/TwitterIcon.tsx +0 -8
  855. package/src/icons/WhatsappIcon.tsx +0 -23
  856. package/src/icons/artifacts/DocumentIcon.tsx +0 -19
  857. package/src/icons/artifacts/HtmlIcon.tsx +0 -38
  858. package/src/icons/artifacts/JavascriptIcon.tsx +0 -19
  859. package/src/icons/artifacts/MarkdownIcon.tsx +0 -19
  860. package/src/icons/artifacts/PythonIcon.tsx +0 -17
  861. package/src/icons/artifacts/SvgIcon.tsx +0 -34
  862. package/src/icons/artifacts/XmlIcon.tsx +0 -34
  863. package/src/icons/artifacts/cssIcon.tsx +0 -34
  864. package/src/index.stories.tsx +0 -226
  865. package/src/index.test.tsx +0 -156
  866. package/src/index.tsx +0 -595
  867. package/src/locales/de.json +0 -738
  868. package/src/locales/en.json +0 -812
  869. package/src/locales/es.json +0 -739
  870. package/src/locales/fr.json +0 -740
  871. package/src/locales/it.json +0 -808
  872. package/src/mocks/data.ts +0 -790
  873. package/src/styles.css +0 -244
  874. package/src/testUtils.tsx +0 -42
  875. package/src/types/integration.test.ts +0 -32
  876. package/src/types/integration.ts +0 -31
  877. package/src/types/layout.ts +0 -50
  878. package/src/version.ts +0 -2
package/README.md CHANGED
@@ -6,9 +6,58 @@
6
6
 
7
7
  Library to integrate an Agent from [Memori](https://memori.ai) in a React app.
8
8
 
9
- Web Platform: [AIsuru](https://aisuru.com)
10
-
11
- ## Installation
9
+ - Web Platform: [AIsuru](https://aisuru.com)
10
+ - Storybook (live demo of components and layouts): [memori-ai.github.io/memori-react](https://memori-ai.github.io/memori-react/)
11
+
12
+ <p>
13
+ <img alt="Full page layout, light theme" src="./docs/fullpage.png" width="49%" />
14
+ <img alt="Full page layout, dark theme" src="./docs/fullpage-dark.png" width="49%" />
15
+ </p>
16
+
17
+ ## Table of contents
18
+
19
+ - [Getting started](#getting-started)
20
+ - [Requirements](#requirements)
21
+ - [Installation](#installation)
22
+ - [Quick start](#quick-start)
23
+ - [Configuration](#configuration)
24
+ - [Props](#props)
25
+ - [Integration config](#integration-config)
26
+ - [Layouts](#layouts)
27
+ - [FULLPAGE](#fullpage)
28
+ - [CHAT](#chat)
29
+ - [WEBSITE_ASSISTANT](#website_assistant)
30
+ - [HIDDEN_CHAT](#hidden_chat)
31
+ - [TOTEM](#totem)
32
+ - [ZOOMED_FULL_BODY](#zoomed_full_body)
33
+ - [Mobile](#mobile)
34
+ - [Customization](#customization)
35
+ - [Styling](#styling)
36
+ - [Custom layout](#custom-layout)
37
+ - [Component overrides](#component-overrides)
38
+ - [Custom media renderer](#custom-media-renderer)
39
+ - [Features](#features)
40
+ - [Chat history](#chat-history)
41
+ - [Artifacts](#artifacts)
42
+ - [PII detection](#pii-detection)
43
+ - [JavaScript API](#javascript-api)
44
+ - [Conversation state](#conversation-state)
45
+ - [Send messages programmatically](#send-messages-programmatically)
46
+ - [DOM events](#dom-events)
47
+ - [Artifact API](#artifact-api)
48
+ - [Development](#development)
49
+ - [See also](#see-also)
50
+ - [License](#license)
51
+
52
+ ## Getting started
53
+
54
+ ### Requirements
55
+
56
+ - React `>=16` (peer dependency)
57
+ - TypeScript `>=4.8` (peer dependency, optional)
58
+ - Node `>=16` for local development
59
+
60
+ ### Installation
12
61
 
13
62
  ```bash
14
63
  yarn add @memori.ai/memori-react
@@ -18,17 +67,12 @@ yarn add @memori.ai/memori-react
18
67
  npm install @memori.ai/memori-react
19
68
  ```
20
69
 
21
- ## Usage
70
+ ### Quick start
22
71
 
23
- Import the component:
72
+ Import the component and the CSS:
24
73
 
25
74
  ```tsx
26
75
  import Memori from '@memori.ai/memori-react';
27
- ```
28
-
29
- Import the CSS:
30
-
31
- ```tsx
32
76
  import '@memori.ai/memori-react/dist/styles.css';
33
77
  ```
34
78
 
@@ -51,6 +95,8 @@ const App = () => (
51
95
  );
52
96
  ```
53
97
 
98
+ ## Configuration
99
+
54
100
  ### Props
55
101
 
56
102
  | Prop | Required | Type | Default | Description |
@@ -63,165 +109,284 @@ const App = () => (
63
109
  | `sessionID` | | `string` | | Initial Session ID, UUID which refers to the session to the Memori and identifies a conversation and its permissions (giver, receiver, anonymous). A session would be started autonomously with the params set, but if you have an existing and valid sessionID you can pass it as already opened one. Use this at your risk, as session recovery might break or start session as anon user. In most cases, you shoudn't use this prop. |
64
110
  | `authToken` | | `string` | | Authentication token from user login, needed for giver sessions to upload assets |
65
111
  | `integrationID` | | `string` | | Integration ID, UUID which refers to the public page layout |
66
- | `integration` | | `Integration` | | Integration object |
112
+ | `integration` | | `Integration` | | Integration object, see [Integration config](#integration-config) |
67
113
  | `secretToken` | | `string` | | Secret token, the password of a private or secret Memori |
68
- | `height` | | `string` | "100%" | Height of the Memori |
114
+ | `height` | | `string \| number` | "100%" | Height of the Memori. Pass `"100vh"` for a full-page fallback when the host has no definite height. |
115
+ | `layout` | | `string` | | Layout of the Memori: `"FULLPAGE"` (default, alias `"DEFAULT"`), `"CHAT"`, `"WEBSITE_ASSISTANT"`, `"TOTEM"`, `"HIDDEN_CHAT"`, or `"ZOOMED_FULL_BODY"`. See [Layouts](#layouts). |
116
+ | `customLayout` | | `React.FC<LayoutProps>` | | Custom layout component, see [Custom layout](#custom-layout) |
117
+ | `avatar3dHidden` | | `boolean` | `true` for `WEBSITE_ASSISTANT` | Hide the 3D avatar. Defaults to `true` for the `WEBSITE_ASSISTANT` layout (expanded panel); set to `false` to show it there. |
69
118
  | `showShare` | | `bool` | `true` | Show the share button |
70
119
  | `showCopyButton` | | `bool` | `true` | Show the copy button on messages |
71
120
  | `showTranslationOriginal` | | `bool` | `false` | Show button to see original text when translated |
72
121
  | `showSettings` | | `bool` | `true` | Show the settings panel button |
122
+ | `showChatHistory` | | `bool` | `true` | Show the chat history drawer button (past sessions), see [Chat history](#chat-history). Can also be set via integration config. |
73
123
  | `showTypingText` | | `bool` | `false` | Show default sentences while loading text (see: Typing stories) |
74
124
  | `showLogin` | | `bool` | `true` | Show the login button |
75
125
  | `showClear` | | `bool` | `false` | Show clear chat history button |
76
126
  | `showOnlyLastMessages` | | `bool` | `true` or `false` \* | Show only last 2 messages. (\*) Defaults to `true` for `TOTEM` and `WEBSITE_ASSISTANT` layouts, `false` otherwise |
127
+ | `showInputs` | | `bool` | `true` | Show the chat inputs (textarea, send and microphone buttons). Set to `false` for read-only / scripted conversations driven by `typeMessage`. |
128
+ | `showDates` | | `bool` | `false` | Show the timestamp on the Agent's messages |
129
+ | `showContextPerLine` | | `bool` | `false` | Show the context variables active for each message |
130
+ | `showMessageConsumption` | | `bool` | `false` | Show the AI consumption (LLM usage) per message. Can also be set via integration config. |
77
131
  | `showUpload` | | `bool` | `true` | Show the upload button within the chat |
78
- | `maxTotalMessagePayload` | | `number` | 300000 | Max **per-document** content length (character count). Kept for backward compatibility: it no longer applies to the sum of all attached documents. |
79
- | `disablePastedText` | | `boolean` | `false` | When true, pasted text is not added as a document attachment; only normal textarea paste occurs. |
80
- | `maxTextareaCharacters` | | `number` | | Max characters allowed in the chat textarea. When set, shows a counter (e.g. "0 / 500") above the textarea, enforces the limit, and disables paste-as-attachment by default. |
81
132
  | `showReasoning` | | `bool` | `false` | Show reasoning output |
133
+ | `maxTotalMessagePayload` | | `number` | 300000 | Max **per-document** content length (character count). Kept for backward compatibility: it no longer applies to the sum of all attached documents. |
134
+ | `maxTextareaCharacters` | | `number` | | Max characters allowed in the chat textarea. When set, shows a counter (e.g. "0 / 500") above the textarea, enforces the limit, and disables paste-as-attachment by default. |
82
135
  | `baseURL` | | `string` | | Base URL of the Memori, example: "https://aisuru.com" |
83
136
  | `apiURL` | | `string` | "https://backend.memori.ai" | URL of the Memori Backend API |
84
137
  | `engineURL` | | `string` | "https://engine.memori.ai" | URL of the Memori Engine API |
85
138
  | `tag` | | `string` | | Tag of the person opening the session to the Memori, could be the giver or a receiver |
86
139
  | `pin` | | `string` | | PIN of the person opening the session to the Memori, could be the giver or a receiver |
87
- | `context` | | `string` | | Initial context of the conversation, dictionary with "key: value" pairs as context variables |
140
+ | `context` | | `{ [key: string]: string }` | | Initial context of the conversation, object of context variables, example: `{ SOURCE: 'website' }`. If omitted, `contextVars` from the integration config is used. |
88
141
  | `initialQuestion` | | `string` | | Initial question to ask to the Memori, starts the conversation as this would be sent to the Memori |
89
- | `uiLang` | | `'en' \| 'it' \| 'es' \| 'fr' \| 'de'` | "en" | Language of the UI, es: "en" or "it" |
142
+ | `additionalInfo` | | `{ [key: string]: string }` | | Additional info sent when opening the session (`additionalInfo` of the Engine `openSession` call). A `loginToken` key here takes precedence over `authToken`. |
143
+ | `autoStart` | | `boolean` | `false` \*\* | Automatically start the conversation when the component is mounted. (\*\*) Defaults to `true` for `HIDDEN_CHAT`; always `false` for `WEBSITE_ASSISTANT`. |
144
+ | `uiLang` | | `'en' \| 'it' \| 'es' \| 'fr' \| 'de'` | browser language | Language of the UI, es: "en" or "it". Uppercase variants (`'IT'`, `'EN'`, ...) are accepted. Falls back to the browser language, then `"en"`. |
90
145
  | `multilingual` | | `bool` | `false` | Enable multilingual mode, if enabled the user can switch between spoken languages |
91
146
  | `spokenLang` | | `string` | | Language of the spoken text, as defaults to user selection. Example: "en" or "it" |
92
- | `onStateChange` | | `function` | | Callback function called when the state of the Memori changes |
93
147
  | `enableAudio` | | `boolean` | `true` | Enable audio output. Defaults to true if otherwise indicated by props or integration config. |
94
148
  | `defaultSpeakerActive` | | `boolean` | `true` | Default value for the speaker activation |
95
- | `disableTextEnteredEvents` | | `boolean` | `false` | Disable MemoriTextEntered events listeners for `typeMessage` functions, useful to avoid issues with multiple widgets in page. |
96
149
  | `useMathFormatting` | | `boolean` | `false` | Apply math formatting to the messages, defaults to false if otherwise indicated by props or integration config. |
97
- | `layout` | | `string` | | Layout of the Memori: `"FULLPAGE"` (default), `"CHAT"`, `"WEBSITE_ASSISTANT"`, `"TOTEM"`, `"HIDDEN_CHAT"`, or `"ZOOMED_FULL_BODY"`. [PII detection](#pii-detection) is only available via integration config, not as a prop. See [Layouts](#layouts). |
98
- | `customLayout` | | `React.FC<LayoutProps>` | | Custom layout component, see [below](#custom-layout) |
99
- | `customMediaRenderer` | | `(mimeType: string) => JSX.Element \| null` | | Custom media renderer, see [below](#custom-media-renderer) |
150
+ | `onStateChange` | | `function` | | Callback function called when the state of the Memori changes, see [Conversation state](#conversation-state) |
151
+ | `disableTextEnteredEvents` | | `boolean` | `false` | Disable MemoriTextEntered events listeners for `typeMessage` functions, useful to avoid issues with multiple widgets in page. |
152
+ | `customMediaRenderer` | | `(mimeType: string) => JSX.Element \| null` | | Custom media renderer, see [Custom media renderer](#custom-media-renderer) |
100
153
  | `additionalSettings` | | `JSX.Element` | | Custom JSX or component to render within the settings drawer |
101
- | `userAvatar` | | `string` | | Custom URL or React element to use as user avatar |
102
- | `autoStart` | | `boolean` | `false` | Automatically start the conversation when the component is mounted. |
154
+ | `userAvatar` | | `string \| JSX.Element` | | Custom URL or React element to use as user avatar |
155
+ | `applyVarsToRoot` | | `boolean` | `false` | Also apply the integration CSS variables (brand color, etc.) to `:root`, not only to the widget scopes. Useful when rendering Memori UI elements outside the widget container. |
103
156
 
104
157
  \*: one of these pairs is required: `memoriName` + `ownerUserName`, `memoriID` + `ownerUserID`
105
158
 
106
- ### Layouts
107
-
108
- The Memori can be displayed in six layouts: `FULLPAGE`, `CHAT`, `WEBSITE_ASSISTANT`, `TOTEM`, `HIDDEN_CHAT`, and `ZOOMED_FULL_BODY`.
109
- If you don't specify a layout (via the `layout` prop or via integration config), the default is `FULLPAGE`.
110
-
111
- **As a prop** (string only, takes precedence over integration):
159
+ ### Integration config
160
+
161
+ An **integration** is the configuration of a public page / landing experience created from the Memori backend. You can pass it explicitly with the `integration` prop, or select one of the Memori's integrations with `integrationID` (if neither is set, the published `LANDING_EXPERIENCE` integration is used, when present).
162
+
163
+ The integration object has a `customData` string containing JSON. The keys read by the widget are:
164
+
165
+ | Key | Type | Description |
166
+ | ------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
167
+ | `layout` | `string \| { name, piiDetection? }` | Layout name, or an object with `name` and a [PII detection](#pii-detection) config |
168
+ | `theme` | `'light' \| 'dark'` | Widget theme, see [Dark theme](#dark-theme). Default `light` |
169
+ | `lang` | `string` | Default conversation language, used when the `spokenLang` prop is not set |
170
+ | `uiLang` | `string` | Fallback conversation language, after `lang` |
171
+ | `buttonBgColor` | `string` | Brand primary color, injected as `--memori-primary-color`, see [Styling](#styling) |
172
+ | `buttonTextColor` | `string` | Text color on primary backgrounds, injected as `--memori-primary-content` |
173
+ | `globalBackground` | `string` | URL of a background image for the chat |
174
+ | `blurBackground` | `boolean` | Blur the global background behind the chat. Default `true` |
175
+ | `contextVars` | `string` | Initial context variables as `"KEY: value, KEY2: value2"`, used when the `context` prop is not set |
176
+ | `initialQuestion` | `string` | Initial question, used when the `initialQuestion` prop is not set |
177
+ | `showChatHistory` | `boolean` | Same as the prop |
178
+ | `showUpload` | `boolean` | Same as the prop |
179
+ | `showReasoning` | `boolean` | Same as the prop |
180
+ | `showMessageConsumption` | `boolean` | Same as the prop |
181
+ | `avatar_3d_hidden` | `boolean` | Same as the `avatar3dHidden` prop |
182
+ | `totemContentMaxWidth` | `number \| string` | `TOTEM` only: max-width of the content axis (avatar + panel + status), px or CSS length |
183
+ | `whiteListedDomains` | `string[]` | Regex list of hostnames allowed to render the widget (tenant name and aliases are always allowed). The widget renders nothing elsewhere |
184
+ | `ignoreClientAttributes` | `boolean` | When `true`, the `show*`, `multilingual`, `enableAudio`, `defaultSpeakerActive`, `useMathFormatting`, `context`, `initialQuestion` and `tag`/`pin` props are ignored in favour of the integration values |
112
185
 
113
186
  ```tsx
114
- <Memori layout="FULLPAGE" ... />
115
- ```
116
-
117
- **Via the `integration` prop:** the integration object must have a `customData` string containing JSON. That JSON can include a `layout` field: either a **string** (layout name) or an **object** `{ name: LayoutName, piiDetection?: PiiDetectionConfig }` to enable [PII detection](#pii-detection). Used when you use a public page / landing experience from the backend.
118
-
119
- ```tsx
120
- // Integration with layout name only
121
187
  const integration = {
122
188
  integrationID: '...',
123
189
  customData: JSON.stringify({
124
190
  layout: 'FULLPAGE',
191
+ theme: 'dark',
125
192
  lang: 'it',
126
- // ...other integration options
193
+ buttonBgColor: '#6667ab',
194
+ buttonTextColor: '#ffffff',
127
195
  }),
128
196
  };
197
+
129
198
  <Memori integration={integration} ... />
199
+ ```
200
+
201
+ When a prop and the corresponding integration key are both set, the **prop wins** (unless `ignoreClientAttributes` is `true`).
202
+
203
+ ## Layouts
130
204
 
131
- // Integration with layout + PII detection (PII is only configurable here, not as a layout prop)
205
+ The Memori can be displayed in six layouts: `FULLPAGE`, `CHAT`, `WEBSITE_ASSISTANT`, `HIDDEN_CHAT`, `TOTEM`, and `ZOOMED_FULL_BODY`. If you don't specify a layout (via the `layout` prop or via integration config), the default is `FULLPAGE`.
206
+
207
+ ```tsx
208
+ // As a prop (takes precedence over the integration)
209
+ <Memori layout="CHAT" ... />
210
+
211
+ // Via integration config
132
212
  const integration = {
133
213
  integrationID: '...',
134
- customData: JSON.stringify({
135
- layout: {
136
- name: 'FULLPAGE',
137
- piiDetection: {
138
- enabled: true,
139
- rules: [
140
- {
141
- id: 'email',
142
- label: 'Email',
143
- pattern: '\\b[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,}\\b',
144
- message: { it: 'Contiene email.', en: 'Contains email.' },
145
- },
146
- ],
147
- errorMessage: { it: 'Dati sensibili.', en: 'Sensitive data.' },
148
- },
149
- },
150
- lang: 'it',
151
- }),
214
+ customData: JSON.stringify({ layout: 'CHAT' }),
152
215
  };
153
216
  <Memori integration={integration} ... />
154
217
  ```
155
218
 
156
- If both the `layout` prop and `integration.customData.layout` are provided, the **`layout` prop** (string) wins for the layout name. **PII detection is only read from integration config** (when `customData.layout` is an object with `piiDetection`).
219
+ All layouts support the light and dark [theme](#dark-theme).
157
220
 
158
- #### PII detection
221
+ ### FULLPAGE
159
222
 
160
- PII detection is **only available via integration config**: pass an integration whose `customData` JSON has `layout` as an object with `name` and `piiDetection` (see above). It is not configurable via the `layout` prop.
223
+ Two-column layout: 3D avatar on the left, start panel / chat on the right, with a branded header.
161
224
 
162
- When enabled, the widget checks each message (including attached document text) against the configured regex **rules** before sending. If any rule matches, the message is **not** sent and a single red error bubble is shown with the main `errorMessage` plus the matched rules’ messages, in the chat’s selected language (when `multilingual` is enabled).
225
+ <p>
226
+ <img alt="Full page layout, light theme" src="./docs/fullpage.png" width="49%" />
227
+ <img alt="Full page layout, dark theme" src="./docs/fullpage-dark.png" width="49%" />
228
+ </p>
163
229
 
164
- **Config shape** (inside `integration.customData.layout.piiDetection`):
230
+ ### CHAT
165
231
 
166
- | Field | Type | Description |
167
- | ----- | ------ | ------------ |
168
- | `enabled` | `boolean` | When `true`, PII check runs before sending. |
169
- | `rules` | `array` | List of `{ id, label, pattern, message }`. `pattern` is a regex string; `message` is `{ [lang]: string }` (e.g. `{ it: "...", en: "..." }`). Rules with the same `id` are deduplicated in the error text. |
170
- | `errorMessage` | `object` | Main line shown in the bubble: `{ [lang]: string }`. |
232
+ Chat only, no avatar. Header with chat history, fullscreen, audio, location, share and login controls; start panel as a central card.
171
233
 
172
- **Example** (inside `customData`):
234
+ <p>
235
+ <img alt="Chat layout, light theme" src="./docs/chat.png" width="49%" />
236
+ <img alt="Chat layout, dark theme" src="./docs/chat-dark.png" width="49%" />
237
+ </p>
173
238
 
174
- ```ts
175
- layout: {
176
- name: 'FULLPAGE',
177
- piiDetection: {
178
- enabled: true,
179
- rules: [
180
- {
181
- id: 'email',
182
- label: 'Email',
183
- pattern: '\\b[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,}\\b',
184
- message: { it: 'Contiene email.', en: 'Contains email.' },
185
- },
186
- ],
187
- errorMessage: { it: 'Dati sensibili.', en: 'Sensitive data.' },
188
- },
239
+ ### WEBSITE_ASSISTANT
240
+
241
+ Floating launcher on the host page; the widget opens as a side panel with the start panel and the chat. The 3D avatar is hidden by default (`avatar3dHidden`). `autoStart` is always `false` and `showOnlyLastMessages` defaults to `true`.
242
+
243
+ <p>
244
+ <img alt="Website assistant layout, light theme" src="./docs/website-assistant.png" width="49%" />
245
+ <img alt="Website assistant layout, dark theme" src="./docs/website-assistant-dark.png" width="49%" />
246
+ </p>
247
+
248
+ ### HIDDEN_CHAT
249
+
250
+ Only the launcher is visible; the chat opens on demand as a compact sidebar. `autoStart` defaults to `true`.
251
+
252
+ <p>
253
+ <img alt="Hidden chat layout, light theme" src="./docs/hidden-chat.png" width="24%" />
254
+ <img alt="Hidden chat layout, dark theme" src="./docs/hidden-chat-dark.png" width="24%" />
255
+ </p>
256
+
257
+ ### TOTEM
258
+
259
+ Kiosk layout: full-body avatar with the start panel / chat card overlaid at the bottom and a vertical control bar. `showOnlyLastMessages` defaults to `true`. Use `totemContentMaxWidth` (integration config) to fit vertical screens.
260
+
261
+ <p>
262
+ <img alt="Totem layout, light theme" src="./docs/totem.png" width="58%" />
263
+ <img alt="Totem layout, dark theme" src="./docs/totem-dark.png" width="30%" />
264
+ </p>
265
+
266
+ ### ZOOMED_FULL_BODY
267
+
268
+ Full-body avatar zoomed in, chat overlaid.
269
+
270
+ <img alt="Zoomed full body layout" src="./docs/zoomed-avatar.png" width="600" />
271
+
272
+ ### Mobile
273
+
274
+ On small screens the header collapses to a compact bar (mute + menu); the menu opens a side panel with user info, session details and the navigation items (chat history, fullscreen, share, exit).
275
+
276
+ <img alt="Mobile layout" src="./docs/mobile-header.png" width="240" />
277
+
278
+ ## Customization
279
+
280
+ ### Styling
281
+
282
+ The widget is built on the [@memori.ai/ui](https://www.npmjs.com/package/@memori.ai/ui) design system and its CSS is organized in cascade layers, in this order: `memori.theme` < `memori.components` < `memori.overrides`. Your own overrides should live in `@layer memori.overrides` (or outside any layer, which always wins over layered styles).
283
+
284
+ #### Brand color
285
+
286
+ The main brand hook is `--memori-primary-color`. All primary-derived tokens (`hover`, `active`, `disabled`, `subtle`, borders, focus ring, shadows) are computed from it with `color-mix()`, so you usually only need to set this one:
287
+
288
+ ```css
289
+ memori-client,
290
+ .memori-widget,
291
+ #headlessui-portal-root {
292
+ --memori-primary-color: rgb(102, 103, 171);
293
+ --memori-primary-content: #fff; /* text/icon color on primary backgrounds */
189
294
  }
190
295
  ```
191
296
 
192
- Invalid or empty regex patterns are skipped; missing translations fall back to `en` then the first available value.
297
+ Set it on the widget scopes (`.memori-widget`, `memori-client`, portal roots), not only on `:root`: derived tokens are resolved where they are declared, so a `:root`-only override would leave disabled/subtle UI on the default brand. When an integration is passed, the widget already injects `buttonBgColor` / `buttonTextColor` from `customData` as these two variables (see `applyVarsToRoot` to also apply them to `:root`).
193
298
 
194
- #### FULLPAGE
299
+ #### Design tokens
195
300
 
196
- <img alt="Full page layout" src="./docs/fullpage.png" width="300" />
301
+ The most commonly used tokens you may override:
197
302
 
198
- #### TOTEM
303
+ ```css
304
+ .memori-widget {
305
+ /* Brand */
306
+ --memori-primary-color: rgb(130 70 175);
307
+ --memori-primary-content: #fff;
308
+
309
+ /* Surfaces & text */
310
+ --memori-main-background: oklch(97.1% 0 0deg);
311
+ --memori-secondary-background: oklch(100% 0 0deg);
312
+ --memori-text-color: oklch(20% 0.05 240deg);
313
+ --memori-border-color: color-mix(in oklch, oklch(45% 0.05 240deg), transparent 84%);
314
+
315
+ /* Typography */
316
+ --memori-font-family: 'Lexend Deca', sans-serif;
317
+ --memori-text-size-sm: 0.875rem;
318
+ --memori-text-size-md: 1rem;
319
+
320
+ /* Shape & spacing */
321
+ --memori-radius-control: 0.75rem; /* buttons, inputs */
322
+ --memori-radius-surface: 1.25rem; /* cards, bubbles, drawers */
323
+ --memori-spacing-xs: 4px;
324
+ --memori-spacing-sm: 8px;
325
+ --memori-spacing-md: 16px;
326
+ --memori-spacing-lg: 24px;
327
+
328
+ /* Layout */
329
+ --memori-layout-max-width: 1280px;
330
+ --memori-conversation-max-width: 48rem;
331
+ --memori-conversation-inline-padding: var(--memori-spacing-md);
332
+
333
+ /* Motion */
334
+ --memori-motion-duration-fast: 0.15s;
335
+ --memori-motion-duration-normal: 0.2s;
336
+ --memori-motion-ease-out: cubic-bezier(0.33, 1, 0.68, 1);
337
+ }
338
+ ```
199
339
 
200
- <img alt="Totem layout" src="./docs/totem.png" width="300" />
340
+ Values shown are the light-theme defaults.
201
341
 
202
- #### CHAT
342
+ Derived tokens that are rebound automatically from `--memori-primary-color` (override only if you need a specific value): `--memori-primary`, `--memori-primary-hover`, `--memori-primary-active`, `--memori-primary-disabled`, `--memori-primary-subtle`, `--memori-primary-subtle-hover`, `--memori-primary-alpha`, `--memori-border-primary`, `--memori-border-primary-hover`, `--memori-focus-ring-color`, `--memori-focus-ring`, `--memori-shadow-primary`.
203
343
 
204
- <img alt="Chat only layout" src="./docs/chat.png" width="300" />
344
+ Semantic colors from `@memori.ai/ui`: `--memori-error`, `--memori-success`, `--memori-info`, `--memori-neutral`, `--memori-secondary`.
205
345
 
206
- #### WEBSITE_ASSISTANT
346
+ #### Dark theme
207
347
 
208
- <img alt="Website assistant layout" src="./docs/website-assistant.png" width="300" />
348
+ The theme is resolved from the integration config (`customData.theme: 'light' | 'dark'`, default `light`) and stamped as `data-theme` on the widget root and on portaled popups. You can also force it from the host:
209
349
 
210
- #### HIDDEN_CHAT
350
+ ```html
351
+ <div data-theme="dark">
352
+ <!-- Memori widget here -->
353
+ </div>
354
+ ```
211
355
 
212
- <img alt="Hidden Chat" src="./docs/hidden-chat.png" width="300">
356
+ Dark-specific primary-derived tokens are recomputed automatically; override them under `[data-theme='dark'] .memori-widget` if needed.
213
357
 
214
- #### ZOOMED_FULL_BODY
358
+ #### Reference
215
359
 
216
- <img alt="Zoomed Full Body" src="./docs/zoomed-avatar.png" width="300">
360
+ You can review the default styles and the full list of tokens in the [styles.css](https://github.com/memori-ai/memori-react/blob/main/src/styles.css) file and in the `@memori.ai/ui` stylesheet (`node_modules/@memori.ai/ui/dist/memori-ai-ui.css`). Per-component classes follow the `memori-<component>` naming (e.g. `.memori-chat--wrapper`, `.memori-chat--bubble`, `.memori-header`, `.memori--start-panel`); the widget root also gets `memori-layout-<layout>` and `memori-controls-<position>` modifiers.
217
361
 
218
- #### Custom layout
362
+ ### Custom layout
219
363
 
220
364
  You can override the default layout by passing a custom layout component to the `customLayout` prop.
221
365
 
222
- The custom layout component must be a React functional component that accepts a [LayoutProps](https://github.com/memori-ai/memori-react/blob/a6e0de73f3610f763bcd8e28deb7626fea91f0d1/src/components/MemoriWidget/MemoriWidget.tsx#LL148C21-L148C21) object as props.
366
+ The custom layout component must be a React functional component that accepts a [LayoutProps](https://github.com/memori-ai/memori-react/blob/main/src/components/MemoriWidget/MemoriWidget.tsx) object as props (search for `export interface LayoutProps`).
367
+
368
+ Available `LayoutProps`:
369
+
370
+ | Prop | Type | Description |
371
+ | -------------------------------- | --------------------------- | --------------------------------------------------------------------------------------- |
372
+ | `Header` / `headerProps` | component / props | Header with share, settings, chat history, login buttons |
373
+ | `Avatar` / `avatarProps` | component / props | 2D/3D avatar |
374
+ | `Chat` / `chatProps` | component / props | Chat (history, inputs, attachments) |
375
+ | `StartPanel` / `startPanelProps` | component / props | Panel shown before the session starts |
376
+ | `integrationStyle` | `JSX.Element \| null` | `<style>` element with integration CSS variables, render it once |
377
+ | `integrationBackground` | `JSX.Element \| null` | Background element from integration config |
378
+ | `poweredBy` | `JSX.Element \| null` | "Powered by" badge |
379
+ | `sessionId` | `string` | Current session ID, `undefined` before the session starts |
380
+ | `hasUserActivatedSpeak` | `boolean` | `true` once the user has started the conversation |
381
+ | `showUpload` | `boolean` | Whether the upload button is enabled |
382
+ | `loading` | `boolean` | Widget is loading (session opening, memori loading) |
383
+ | `autoStart` | `boolean` | Resolved `autoStart` value |
384
+ | `onSidebarToggle` | `(isOpen: boolean) => void` | Callback to notify the widget when a sidebar is opened/closed |
385
+ | `avatar3dHidden` | `boolean \| string` | Resolved `avatar3dHidden` value |
386
+ | `totemContentMaxWidth` | `number \| string` | `TOTEM` only: max-width of the content axis (avatar + panel + status), px or CSS length |
223
387
 
224
388
  ```tsx
389
+ import { Spin } from '@memori.ai/ui';
225
390
  import { LayoutProps } from '@memori.ai/memori-react/dist/components/MemoriWidget/MemoriWidget';
226
391
 
227
392
  const MyCustomLayout: React.FC<LayoutProps> = ({
@@ -235,8 +400,6 @@ const MyCustomLayout: React.FC<LayoutProps> = ({
235
400
  startPanelProps,
236
401
  integrationStyle,
237
402
  integrationBackground,
238
- ChangeMode,
239
- changeModeProps,
240
403
  sessionId,
241
404
  hasUserActivatedSpeak,
242
405
  loading = false,
@@ -264,46 +427,13 @@ const MyCustomLayout: React.FC<LayoutProps> = ({
264
427
  And then pass it to the `customLayout` prop:
265
428
 
266
429
  ```tsx
267
- <Memori
268
- ...
269
- customLayout={MyCustomLayout}
270
- />
271
- ```
272
-
273
- ## Styling
274
-
275
- You can override the default styles of the Memori by customizing the following CSS custom properties:
276
-
277
- ```css
278
- memori-client,
279
- #headlessui-portal-root,
280
- .memori-widget {
281
- --memori-primary: rgb(102, 103, 171);
282
- --memori-primary-text: #fff;
283
- --memori-inner-content-pad: 1rem;
284
- --memori-inner-bg: transparent;
285
- --memori-chat-bubble-bg: #ffffff60;
286
- --memori-text-color: #000;
287
- --memori-button-bg: #fff;
288
- --memori-button-text: #000;
289
- --memori-button-padding: 0.5rem 1.5rem;
290
- --memori-button-border-color: #d9d9d9;
291
- --memori-button-radius: 5px;
292
- --memori-button-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02);
293
- --memori-blur-background: 0px;
294
- --memori-drawer--width: 100%;
295
- --memori-drawer--width--md: 80%;
296
- --memori-drawer--width--lg: 60%;
297
- --memori-modal--width: 100%;
298
- --memori-modal--width--md: 80%;
299
- --memori-error-color: #ff4d4f;
300
- --memori-button-disabled-bg: #f9f9f9;
301
- }
430
+ <Memori
431
+ ...
432
+ customLayout={MyCustomLayout}
433
+ />
302
434
  ```
303
435
 
304
- You can review the default styles in the [styles.css](https://github.com/memori-ai/memori-react/blob/main/src/styles.css) file.
305
-
306
- ## Component overrides
436
+ ### Component overrides
307
437
 
308
438
  When using the `customLayout` prop, you can also override the default components used by the client.
309
439
 
@@ -348,7 +478,7 @@ const CustomLayout: React.FC<LayoutProps> = ({
348
478
  );
349
479
  ```
350
480
 
351
- ## Custom media renderer
481
+ ### Custom media renderer
352
482
 
353
483
  You can override the default media renderer by passing a custom function to the `customMediaRenderer` prop.
354
484
  This can override the default media renderer for all media types or just for a specific one.
@@ -368,11 +498,94 @@ You can also use this to extend the default media renderer with additional media
368
498
  />
369
499
  ```
370
500
 
371
- ## Global utilities
501
+ ## Features
502
+
503
+ ### Chat history
504
+
505
+ When `showChatHistory` is enabled (default), a side drawer lists the user's past conversations with the Agent, with filters, message count and attachments per chat. Selecting one resumes it in the chat.
506
+
507
+ <img alt="Chat history drawer" src="./docs/chat-history.png" width="600" />
508
+
509
+ ### Artifacts
510
+
511
+ When the Agent's answer contains an `<output>` element (code, HTML, markdown, JSON, ...), the widget renders it as an **artifact**: a card in the chat that opens in a dedicated drawer with preview, copy and download actions. On desktop the drawer is a resizable side column next to the chat; on mobile it takes the full width. Multiple versions of the same artifact are tracked together.
372
512
 
373
- When rendered, the Memori widget exposes some global functions that can be used to interact with the Agent.
513
+ <img alt="Artifacts list" src="./docs/artifacts.png" width="400" />
374
514
 
375
- ### Get the state of the conversation
515
+ Artifacts can also be created from the host page, see [Artifact API](#artifact-api).
516
+
517
+ ### PII detection
518
+
519
+ PII detection is **only available via integration config**: pass an integration whose `customData` JSON has `layout` as an object with `name` and `piiDetection`. It is not configurable via the `layout` prop.
520
+
521
+ When enabled, the widget checks each message (including attached document text) against the configured regex **rules** before sending. If any rule matches, the message is **not** sent and a single red error bubble is shown with the main `errorMessage` plus the matched rules' messages, in the chat's selected language (when `multilingual` is enabled).
522
+
523
+ **Config shape** (inside `integration.customData.layout.piiDetection`):
524
+
525
+ | Field | Type | Description |
526
+ | -------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
527
+ | `enabled` | `boolean` | When `true`, PII check runs before sending. |
528
+ | `rules` | `array` | List of `{ id, label, pattern, message }`. `pattern` is a regex string; `message` is `{ [lang]: string }` (e.g. `{ it: "...", en: "..." }`). Rules with the same `id` are deduplicated in the error text. |
529
+ | `errorMessage` | `object` | Main line shown in the bubble: `{ [lang]: string }`. |
530
+
531
+ **Example**:
532
+
533
+ ```tsx
534
+ const integration = {
535
+ integrationID: '...',
536
+ customData: JSON.stringify({
537
+ layout: {
538
+ name: 'FULLPAGE',
539
+ piiDetection: {
540
+ enabled: true,
541
+ rules: [
542
+ {
543
+ id: 'email',
544
+ label: 'Email',
545
+ pattern: '\\b[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,}\\b',
546
+ message: { it: 'Contiene email.', en: 'Contains email.' },
547
+ },
548
+ ],
549
+ errorMessage: { it: 'Dati sensibili.', en: 'Sensitive data.' },
550
+ },
551
+ },
552
+ lang: 'it',
553
+ }),
554
+ };
555
+
556
+ <Memori integration={integration} ... />
557
+ ```
558
+
559
+ If both the `layout` prop and `integration.customData.layout` are provided, the `layout` prop wins for the layout name, while PII detection is still read from the integration.
560
+
561
+ Invalid or empty regex patterns are skipped; missing translations fall back to `en` then the first available value.
562
+
563
+ ## JavaScript API
564
+
565
+ When rendered, the Memori widget exposes some global functions and DOM events that can be used to interact with the Agent from outside React.
566
+
567
+ ### Conversation state
568
+
569
+ The `onStateChange` prop is called at every state change of the conversation:
570
+
571
+ ```jsx
572
+ <Memori
573
+ ...
574
+ onStateChange={(state) => {
575
+ console.log('Memori state changed:', state);
576
+ }}
577
+ />
578
+ ```
579
+
580
+ The same state is dispatched as the `MemoriNewDialogState` event on `document` (useful when working with [memori-webcomponent](https://github.com/memori-ai/memori-webcomponent)):
581
+
582
+ ```js
583
+ document.addEventListener('MemoriNewDialogState', e => {
584
+ console.log('Memori state changed:', e.detail);
585
+ });
586
+ ```
587
+
588
+ You can also read the current state at any time:
376
589
 
377
590
  ```js
378
591
  let dialogState = getMemoriState();
@@ -380,7 +593,7 @@ let sessionID = getMemoriState().sessionID;
380
593
  let dialogState = getMemoriState(myWidgetIntegrationId); // in case you have multiple widgets on the same page
381
594
  ```
382
595
 
383
- Otherwise, you can achieve the same result manually by reading from the HTML code of the widget the attribute data-memori-engine-state.
596
+ Or manually, from the `data-memori-engine-state` attribute in the widget HTML:
384
597
 
385
598
  ```js
386
599
  let dialogState = JSON.parse(
@@ -389,9 +602,9 @@ let dialogState = JSON.parse(
389
602
  );
390
603
  ```
391
604
 
392
- ### Write and send a message to the Agent
605
+ ### Send messages programmatically
393
606
 
394
- Write and send a message to the agent. You can use this method to send a message, such as to continue a conversation with a specific message or following an action.
607
+ Write and send a message to the Agent, such as to continue a conversation with a specific message or following an action:
395
608
 
396
609
  ```js
397
610
  typeMessage('Hello World!');
@@ -403,24 +616,59 @@ Additional parameters:
403
616
  const waitForPrevious = true; // waits for previous message to be read, default: true
404
617
  const hidden = true; // message is not visible to the user, only the response is, default: false
405
618
  const typingText = "Asking the unicorns' opinion..."; // text to show in the loader while the Agent is answering, defaults to none
406
- typeMessage('Hello World!', waitForPrevious, hidden, typingText);
619
+ const useLoaderTextAsMsg = false; // when true, the Agent's answer is replaced in the chat by typingText (useful for hidden "action" messages), default: false
620
+ typeMessage('Hello World!', waitForPrevious, hidden, typingText, useLoaderTextAsMsg);
407
621
  ```
408
622
 
409
623
  There is also an alias function that does not show the message sent to the user, but only the Agent's response:
410
624
 
411
625
  ```js
412
626
  const waitForPrevious = true; // waits for previous message to be read, default: true
413
- typeMessageHidden('Hello World!', waitForPrevious);
627
+ typeMessageHidden('Hello World!', waitForPrevious, typingText, useLoaderTextAsMsg);
414
628
 
415
629
  // alias to
416
- typeMessage('Hello World!', waitForPrevious, true);
630
+ typeMessage('Hello World!', waitForPrevious, true, typingText, useLoaderTextAsMsg);
631
+ ```
632
+
633
+ `typeBatchMessages` sends a sequence of messages one after the other, waiting for the Agent to finish answering (and speaking) each one before sending the next. Chat inputs are disabled while the batch is running:
634
+
635
+ ```js
636
+ typeBatchMessages([
637
+ { message: 'Hello!', waitForPrevious: true },
638
+ { message: 'Tell me about yourself', hidden: true, typingText: 'Thinking...' },
639
+ { message: 'Thanks', useLoaderTextAsMsg: false },
640
+ ]);
417
641
  ```
418
642
 
419
- ## Artifact API
643
+ Each item accepts the same options as `typeMessage`: `message`, `waitForPrevious`, `hidden`, `typingText`, `useLoaderTextAsMsg`.
644
+
645
+ Set the `disableTextEnteredEvents` prop to `true` on widgets that should ignore these calls (e.g. when multiple widgets are on the same page).
646
+
647
+ ### DOM events
648
+
649
+ The widget dispatches and listens to the following `CustomEvent`s on `document`:
650
+
651
+ | Event | Direction | `event.detail` | Description |
652
+ | ---------------------- | ------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
653
+ | `MemoriNewDialogState` | widget → host | `DialogState` | Fired at every state change of the conversation, see [Conversation state](#conversation-state) |
654
+ | `MemoriEndSpeak` | widget → host | none | Fired when the Agent has finished answering (and speaking, if audio is enabled) |
655
+ | `artifactCreated` | widget → host | `{ artifact: ArtifactData, message: Message }` | Fired when an artifact is generated from an Agent message, see [Artifact API](#artifact-api) |
656
+ | `MemoriTextEntered` | host → widget | `{ text, waitForPrevious, hidden, typingText, useLoaderTextAsMsg, hasBatchQueued }` | Sends a message to the Agent. This is what `typeMessage` dispatches under the hood |
657
+ | `MemoriResetUIEffects` | host → widget | none | Stops TTS playback and resets pending UI timers |
658
+
659
+ ```js
660
+ document.addEventListener('MemoriEndSpeak', () => {
661
+ console.log('Agent finished speaking');
662
+ });
663
+
664
+ document.addEventListener('artifactCreated', e => {
665
+ console.log('New artifact:', e.detail.artifact);
666
+ });
667
+ ```
420
668
 
421
- The Memori widget exposes a global `window.MemoriArtifactAPI` that allows you to programmatically create and control artifacts from external JavaScript code. This is particularly useful for integrating with WebSockets, Action Cable, or any scenario where you need to inject and display artifacts dynamically.
669
+ ### Artifact API
422
670
 
423
- ### Quick Example
671
+ The Memori widget exposes a global `window.MemoriArtifactAPI` that allows you to programmatically create and control [artifacts](#artifacts) from external JavaScript code. This is particularly useful for integrating with WebSockets, Action Cable, or any scenario where you need to inject and display artifacts dynamically.
424
672
 
425
673
  ```javascript
426
674
  // Create and open a simple artifact
@@ -435,39 +683,50 @@ const state = window.MemoriArtifactAPI.getState();
435
683
  console.log('Drawer open?', state.isDrawerOpen);
436
684
  ```
437
685
 
438
- ### Available Methods
686
+ Available methods:
439
687
 
440
688
  - `createAndOpenArtifact(content, mimeType?, title?)` - Create and open an artifact with simple parameters
441
- - `openArtifact(artifact)` - Open an artifact with a complete ArtifactData object
442
- - `createFromOutputElement(outputElement)` - Process a single `<output>` element from DOM
689
+ - `openArtifact(artifact)` - Open an artifact with a complete `ArtifactData` object
690
+ - `createFromOutputElement(outputElement)` - Process a single `<output>` element from DOM, returns the artifact id
443
691
  - `closeArtifact()` - Close the current artifact drawer
444
692
  - `toggleFullscreen()` - Toggle fullscreen mode
445
- - `getState()` - Get the current state of the artifact system
446
-
447
- ## Conversation state change event
693
+ - `getState()` - Get the current state of the artifact system: `{ currentArtifact, isDrawerOpen, isFullscreen, isChatLogPanelPresentation }`
448
694
 
449
- The `onStateChange` prop allows you to listen to state changes in the Memori widget.
695
+ `ArtifactData` shape:
450
696
 
451
- ```jsx
452
- <Memori
453
- ...
454
- onStateChange={(state) => {
455
- console.log('Memori state changed:', state);
456
- }}
457
- />
697
+ ```ts
698
+ interface ArtifactData {
699
+ id: string; // unique id of this version
700
+ artifactId: string; // stable id across versions of the same artifact
701
+ content: string;
702
+ mimeType: string; // e.g. 'html', 'markdown', 'javascript', 'json', ...
703
+ title: string;
704
+ timestamp: Date;
705
+ size: number;
706
+ }
458
707
  ```
459
708
 
460
- Or, you can listen to the `MemoriNewDialogState` event on the document:
709
+ ## Development
461
710
 
462
- ```js
463
- document.addEventListener('MemoriNewDialogState', e => {
464
- console.log('Memori state changed:', e.detail);
465
- });
711
+ ```bash
712
+ corepack enable && yarn install --immutable
713
+
714
+ yarn storybook # run Storybook on http://localhost:6006
715
+ yarn test # run tests in watch mode
716
+ yarn test:ci # run tests once (CI)
717
+ yarn lint # eslint + stylelint
718
+ yarn typecheck # tsc --noEmit
719
+ yarn build # build dist/ (CJS) and esm/ (ESM) + styles.css
466
720
  ```
467
721
 
468
- where `e.details` is the new state of the Memori. This is useful to use when working with [memori-webcomponent](https://github.com/memori-ai/memori-webcomponent).
722
+ Commits follow the [Conventional Commits](https://www.conventionalcommits.org/) spec (enforced by commitlint via husky); the [CHANGELOG](./CHANGELOG.md) is generated from them with release-it.
469
723
 
470
724
  ## See also
471
725
 
472
726
  - [memori-api-client](https://github.com/memori-ai/memori-api-client) - API client for Memori
473
727
  - [memori-webcomponent](https://github.com/memori-ai/memori-webcomponent) - Web component for Memori, uses this library
728
+ - [@memori.ai/ui](https://www.npmjs.com/package/@memori.ai/ui) - Design system used by this library
729
+
730
+ ## License
731
+
732
+ [Apache-2.0](./LICENSE) © Memori Srl