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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (875) hide show
  1. package/CHANGELOG.md +736 -37
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +14 -7
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -34
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/Avatar/Avatar.js +1 -1
  10. package/dist/components/Avatar/Avatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  17. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  18. package/dist/components/ChangeMode/ChangeMode.css +1 -1
  19. package/dist/components/Chat/Chat.css +191 -49
  20. package/dist/components/Chat/Chat.d.ts +2 -0
  21. package/dist/components/Chat/Chat.js +123 -82
  22. package/dist/components/Chat/Chat.js.map +1 -1
  23. package/dist/components/ChatBubble/ChatBubble.css +387 -79
  24. package/dist/components/ChatBubble/ChatBubble.d.ts +2 -0
  25. package/dist/components/ChatBubble/ChatBubble.js +199 -97
  26. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  27. package/dist/components/ChatHistoryDrawer/ChatHistory.css +180 -706
  28. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  29. package/dist/components/ChatHistoryDrawer/ChatHistory.js +229 -613
  30. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  31. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  32. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  33. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -80
  34. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  35. package/dist/components/ChatInputs/ChatInputs.css +181 -166
  36. package/dist/components/ChatInputs/ChatInputs.d.ts +2 -0
  37. package/dist/components/ChatInputs/ChatInputs.js +15 -9
  38. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  39. package/dist/components/ChatTextArea/ChatTextArea.css +30 -19
  40. package/dist/components/ChatTextArea/ChatTextArea.js +0 -17
  41. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  42. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  43. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  44. package/dist/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  45. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +71 -6
  46. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  47. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  48. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  49. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  50. package/dist/components/ContentPreviewModal/index.d.ts +2 -0
  51. package/dist/components/ContentPreviewModal/index.js +5 -1
  52. package/dist/components/ContentPreviewModal/index.js.map +1 -1
  53. package/dist/components/DateSelector/DateSelector.css +93 -7
  54. package/dist/components/DateSelector/DateSelector.js +5 -1
  55. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  56. package/dist/components/DrawerFooter/DrawerFooter.css +39 -39
  57. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  58. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  59. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  60. package/dist/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  61. package/dist/components/FeedbackButtons/FeedbackButtons.css +3 -3
  62. package/dist/components/FeedbackButtons/FeedbackButtons.js +2 -2
  63. package/dist/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  64. package/dist/components/FilePreview/FilePreview.css +123 -223
  65. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  66. package/dist/components/FilePreview/FilePreview.js +37 -86
  67. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  68. package/dist/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  69. package/dist/components/Header/ChatConsumptionDropdown.js +31 -6
  70. package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
  71. package/dist/components/Header/Header.css +216 -53
  72. package/dist/components/Header/Header.d.ts +1 -0
  73. package/dist/components/Header/Header.js +201 -105
  74. package/dist/components/Header/Header.js.map +1 -1
  75. package/dist/components/IconButton/IconButton.css +135 -0
  76. package/dist/components/IconButton/IconButton.d.ts +9 -0
  77. package/dist/components/IconButton/IconButton.js +36 -0
  78. package/dist/components/IconButton/IconButton.js.map +1 -0
  79. package/dist/components/KnownFacts/KnownFacts.css +132 -35
  80. package/dist/components/KnownFacts/KnownFacts.js +184 -182
  81. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  82. package/dist/components/LoginDrawer/LoginDrawer.css +114 -74
  83. package/dist/components/LoginDrawer/LoginDrawer.js +66 -16
  84. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  85. package/dist/components/MediaWidget/MediaItemWidget.css +141 -121
  86. package/dist/components/MediaWidget/MediaItemWidget.js +15 -14
  87. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  88. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  89. package/dist/components/MediaWidget/MediaItemWidget.utils.js +68 -4
  90. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  91. package/dist/components/MediaWidget/MediaPreviewModal.js +12 -19
  92. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  93. package/dist/components/MediaWidget/MediaWidget.css +2 -2
  94. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  95. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  96. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  97. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  98. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  99. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  100. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  101. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +48 -56
  102. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  103. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  104. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +20 -16
  105. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  106. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  107. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +206 -62
  108. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  109. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  110. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +1 -1
  111. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  112. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  113. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  114. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  115. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  116. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  117. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  118. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  119. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  120. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  121. package/dist/components/MemoriWidget/MemoriWidget.css +8 -3
  122. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  123. package/dist/components/MemoriWidget/MemoriWidget.js +140 -77
  124. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  125. package/dist/components/MicrophoneButton/MicrophoneButton.css +2 -161
  126. package/dist/components/MicrophoneButton/MicrophoneButton.js +3 -1
  127. package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  128. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  129. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  130. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +75 -113
  131. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  132. package/dist/components/PositionPopover/PositionPopover.css +9 -10
  133. package/dist/components/PositionPopover/PositionPopover.d.ts +2 -0
  134. package/dist/components/PositionPopover/PositionPopover.js +57 -36
  135. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  136. package/dist/components/PoweredBy/PoweredBy.css +1 -8
  137. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  138. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  139. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  140. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  141. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  142. package/dist/components/SettingsDrawer/SettingsDrawer.js +2 -4
  143. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  144. package/dist/components/ShareButton/ShareButton.css +101 -57
  145. package/dist/components/ShareButton/ShareButton.js +10 -9
  146. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  147. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  148. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  149. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  150. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  151. package/dist/components/Snippet/Snippet.css +10 -40
  152. package/dist/components/Snippet/Snippet.js +3 -1
  153. package/dist/components/Snippet/Snippet.js.map +1 -1
  154. package/dist/components/StartPanel/StartPanel.css +297 -49
  155. package/dist/components/StartPanel/StartPanel.d.ts +1 -0
  156. package/dist/components/StartPanel/StartPanel.js +45 -30
  157. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  158. package/dist/components/Typing/Typing.js +1 -1
  159. package/dist/components/Typing/Typing.js.map +1 -1
  160. package/dist/components/UploadButton/UploadButton.css +44 -62
  161. package/dist/components/UploadButton/UploadButton.d.ts +1 -0
  162. package/dist/components/UploadButton/UploadButton.js +17 -21
  163. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  164. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  165. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +23 -144
  166. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  167. package/dist/components/UploadButton/UploadImages/UploadImages.js +2 -8
  168. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  169. package/dist/components/VenueWidget/VenueWidget.css +6 -6
  170. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  171. package/dist/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  172. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +169 -20
  173. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  174. package/dist/components/layouts/Chat.js +66 -73
  175. package/dist/components/layouts/Chat.js.map +1 -1
  176. package/dist/components/layouts/FullPage.js +160 -39
  177. package/dist/components/layouts/FullPage.js.map +1 -1
  178. package/dist/components/layouts/HiddenChat.js +24 -7
  179. package/dist/components/layouts/HiddenChat.js.map +1 -1
  180. package/dist/components/layouts/Totem.js +10 -1
  181. package/dist/components/layouts/Totem.js.map +1 -1
  182. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +85 -6
  183. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  184. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +87 -37
  185. package/dist/components/layouts/ZoomedFullBody.js +158 -39
  186. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  187. package/dist/components/layouts/chat.css +231 -59
  188. package/dist/components/layouts/fullpage.css +282 -80
  189. package/dist/components/layouts/hidden-chat.css +115 -96
  190. package/dist/components/layouts/totem.css +194 -51
  191. package/dist/components/layouts/zoomed-full-body.css +275 -76
  192. package/dist/helpers/artifactPanel.d.ts +6 -0
  193. package/dist/helpers/artifactPanel.js +42 -0
  194. package/dist/helpers/artifactPanel.js.map +1 -0
  195. package/dist/helpers/chatScroll.d.ts +12 -0
  196. package/dist/helpers/chatScroll.js +14 -0
  197. package/dist/helpers/chatScroll.js.map +1 -0
  198. package/dist/helpers/constants.d.ts +3 -1
  199. package/dist/helpers/constants.js +25 -3
  200. package/dist/helpers/constants.js.map +1 -1
  201. package/dist/helpers/conversationHistory.d.ts +16 -0
  202. package/dist/helpers/conversationHistory.js +89 -0
  203. package/dist/helpers/conversationHistory.js.map +1 -0
  204. package/dist/helpers/conversationTitle.d.ts +8 -0
  205. package/dist/helpers/conversationTitle.js +27 -0
  206. package/dist/helpers/conversationTitle.js.map +1 -0
  207. package/dist/helpers/convertDocument.d.ts +1 -0
  208. package/dist/helpers/convertDocument.js +24 -0
  209. package/dist/helpers/convertDocument.js.map +1 -0
  210. package/dist/helpers/error.js +2 -1
  211. package/dist/helpers/error.js.map +1 -1
  212. package/dist/helpers/highlightMatches.d.ts +2 -0
  213. package/dist/helpers/highlightMatches.js +54 -0
  214. package/dist/helpers/highlightMatches.js.map +1 -0
  215. package/dist/helpers/media.js +18 -3
  216. package/dist/helpers/media.js.map +1 -1
  217. package/dist/helpers/message.js +4 -1
  218. package/dist/helpers/message.js.map +1 -1
  219. package/dist/helpers/nats/getNatsConfig.js.map +1 -1
  220. package/dist/helpers/nats/useNats.d.ts +2 -1
  221. package/dist/helpers/nats/useNats.js +87 -20
  222. package/dist/helpers/nats/useNats.js.map +1 -1
  223. package/dist/helpers/nats/useNatsSession.d.ts +6 -1
  224. package/dist/helpers/nats/useNatsSession.js +48 -7
  225. package/dist/helpers/nats/useNatsSession.js.map +1 -1
  226. package/dist/helpers/positionPopover.d.ts +3 -1
  227. package/dist/helpers/positionPopover.js +17 -2
  228. package/dist/helpers/positionPopover.js.map +1 -1
  229. package/dist/helpers/reasoning.d.ts +7 -0
  230. package/dist/helpers/reasoning.js +43 -0
  231. package/dist/helpers/reasoning.js.map +1 -0
  232. package/dist/helpers/relativeTime.d.ts +3 -0
  233. package/dist/helpers/relativeTime.js +56 -0
  234. package/dist/helpers/relativeTime.js.map +1 -0
  235. package/dist/helpers/sourcesCount.d.ts +2 -0
  236. package/dist/helpers/sourcesCount.js +22 -0
  237. package/dist/helpers/sourcesCount.js.map +1 -0
  238. package/dist/helpers/tts/muteSpeaker.d.ts +13 -0
  239. package/dist/helpers/tts/muteSpeaker.js +26 -0
  240. package/dist/helpers/tts/muteSpeaker.js.map +1 -0
  241. package/dist/helpers/tts/useTTS.js +18 -9
  242. package/dist/helpers/tts/useTTS.js.map +1 -1
  243. package/dist/helpers/usePressTooltip.d.ts +6 -1
  244. package/dist/helpers/usePressTooltip.js +16 -1
  245. package/dist/helpers/usePressTooltip.js.map +1 -1
  246. package/dist/helpers/utils.d.ts +3 -1
  247. package/dist/helpers/utils.js +20 -6
  248. package/dist/helpers/utils.js.map +1 -1
  249. package/dist/icons/MemoriIcon.js +1 -1
  250. package/dist/icons/MemoriIcon.js.map +1 -1
  251. package/dist/index.js +17 -17
  252. package/dist/index.js.map +1 -1
  253. package/dist/locales/de.json +81 -8
  254. package/dist/locales/en.json +79 -11
  255. package/dist/locales/es.json +78 -9
  256. package/dist/locales/fr.json +78 -9
  257. package/dist/locales/it.json +79 -11
  258. package/dist/styles/motion.css +25 -0
  259. package/dist/styles.css +1 -1
  260. package/dist/version.d.ts +1 -1
  261. package/dist/version.js +1 -1
  262. package/dist/version.js.map +1 -1
  263. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  264. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  265. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  266. package/esm/components/Auth/Auth.css +14 -7
  267. package/esm/components/Auth/Auth.d.ts +1 -1
  268. package/esm/components/Auth/Auth.js +47 -35
  269. package/esm/components/Auth/Auth.js.map +1 -1
  270. package/esm/components/Avatar/Avatar.js +1 -1
  271. package/esm/components/Avatar/Avatar.js.map +1 -1
  272. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  273. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  274. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  275. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  276. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  277. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  278. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  279. package/esm/components/ChangeMode/ChangeMode.css +1 -1
  280. package/esm/components/Chat/Chat.css +191 -49
  281. package/esm/components/Chat/Chat.d.ts +2 -0
  282. package/esm/components/Chat/Chat.js +125 -84
  283. package/esm/components/Chat/Chat.js.map +1 -1
  284. package/esm/components/ChatBubble/ChatBubble.css +387 -79
  285. package/esm/components/ChatBubble/ChatBubble.d.ts +2 -0
  286. package/esm/components/ChatBubble/ChatBubble.js +200 -98
  287. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  288. package/esm/components/ChatHistoryDrawer/ChatHistory.css +180 -706
  289. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  290. package/esm/components/ChatHistoryDrawer/ChatHistory.js +233 -617
  291. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  292. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  293. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  294. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -82
  295. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  296. package/esm/components/ChatInputs/ChatInputs.css +181 -166
  297. package/esm/components/ChatInputs/ChatInputs.d.ts +2 -0
  298. package/esm/components/ChatInputs/ChatInputs.js +16 -10
  299. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  300. package/esm/components/ChatTextArea/ChatTextArea.css +30 -19
  301. package/esm/components/ChatTextArea/ChatTextArea.js +0 -17
  302. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  303. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  304. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  305. package/esm/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  306. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +72 -7
  307. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  308. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  309. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  310. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  311. package/esm/components/ContentPreviewModal/index.d.ts +2 -0
  312. package/esm/components/ContentPreviewModal/index.js +2 -0
  313. package/esm/components/ContentPreviewModal/index.js.map +1 -1
  314. package/esm/components/DateSelector/DateSelector.css +93 -7
  315. package/esm/components/DateSelector/DateSelector.js +5 -1
  316. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  317. package/esm/components/DrawerFooter/DrawerFooter.css +39 -39
  318. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  319. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  320. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  321. package/esm/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  322. package/esm/components/FeedbackButtons/FeedbackButtons.css +3 -3
  323. package/esm/components/FeedbackButtons/FeedbackButtons.js +2 -2
  324. package/esm/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  325. package/esm/components/FilePreview/FilePreview.css +123 -223
  326. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  327. package/esm/components/FilePreview/FilePreview.js +39 -88
  328. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  329. package/esm/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  330. package/esm/components/Header/ChatConsumptionDropdown.js +33 -8
  331. package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
  332. package/esm/components/Header/Header.css +216 -53
  333. package/esm/components/Header/Header.d.ts +1 -0
  334. package/esm/components/Header/Header.js +202 -106
  335. package/esm/components/Header/Header.js.map +1 -1
  336. package/esm/components/IconButton/IconButton.css +135 -0
  337. package/esm/components/IconButton/IconButton.d.ts +9 -0
  338. package/esm/components/IconButton/IconButton.js +33 -0
  339. package/esm/components/IconButton/IconButton.js.map +1 -0
  340. package/esm/components/KnownFacts/KnownFacts.css +132 -35
  341. package/esm/components/KnownFacts/KnownFacts.js +185 -184
  342. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  343. package/esm/components/LoginDrawer/LoginDrawer.css +114 -74
  344. package/esm/components/LoginDrawer/LoginDrawer.js +67 -17
  345. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  346. package/esm/components/MediaWidget/MediaItemWidget.css +141 -121
  347. package/esm/components/MediaWidget/MediaItemWidget.js +16 -15
  348. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  349. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  350. package/esm/components/MediaWidget/MediaItemWidget.utils.js +65 -4
  351. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  352. package/esm/components/MediaWidget/MediaPreviewModal.js +13 -20
  353. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  354. package/esm/components/MediaWidget/MediaWidget.css +2 -2
  355. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  356. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  357. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  358. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  359. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  360. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  361. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  362. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +50 -58
  363. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  364. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  365. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +21 -18
  366. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  367. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  368. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +208 -64
  369. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  370. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  371. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +2 -2
  372. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  373. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  374. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  375. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  376. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  377. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  378. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  379. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  380. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  381. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  382. package/esm/components/MemoriWidget/MemoriWidget.css +8 -3
  383. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  384. package/esm/components/MemoriWidget/MemoriWidget.js +142 -80
  385. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  386. package/esm/components/MicrophoneButton/MicrophoneButton.css +2 -161
  387. package/esm/components/MicrophoneButton/MicrophoneButton.js +3 -2
  388. package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  389. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  390. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  391. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +76 -114
  392. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  393. package/esm/components/PositionPopover/PositionPopover.css +9 -10
  394. package/esm/components/PositionPopover/PositionPopover.d.ts +2 -0
  395. package/esm/components/PositionPopover/PositionPopover.js +58 -37
  396. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  397. package/esm/components/PoweredBy/PoweredBy.css +1 -8
  398. package/esm/components/ReasoningBlock/ReasoningBlock.css +156 -0
  399. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  400. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  401. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  402. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  403. package/esm/components/SettingsDrawer/SettingsDrawer.js +2 -4
  404. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  405. package/esm/components/ShareButton/ShareButton.css +101 -57
  406. package/esm/components/ShareButton/ShareButton.js +11 -10
  407. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  408. package/esm/components/SideDrawer/SideDrawer.css +112 -0
  409. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  410. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  411. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  412. package/esm/components/Snippet/Snippet.css +10 -40
  413. package/esm/components/Snippet/Snippet.js +4 -2
  414. package/esm/components/Snippet/Snippet.js.map +1 -1
  415. package/esm/components/StartPanel/StartPanel.css +297 -49
  416. package/esm/components/StartPanel/StartPanel.d.ts +1 -0
  417. package/esm/components/StartPanel/StartPanel.js +46 -31
  418. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  419. package/esm/components/Typing/Typing.js +1 -1
  420. package/esm/components/Typing/Typing.js.map +1 -1
  421. package/esm/components/UploadButton/UploadButton.css +44 -62
  422. package/esm/components/UploadButton/UploadButton.d.ts +1 -0
  423. package/esm/components/UploadButton/UploadButton.js +18 -22
  424. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  425. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  426. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +25 -146
  427. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  428. package/esm/components/UploadButton/UploadImages/UploadImages.js +2 -8
  429. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  430. package/esm/components/VenueWidget/VenueWidget.css +6 -6
  431. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  432. package/esm/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  433. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +172 -23
  434. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  435. package/esm/components/layouts/Chat.js +69 -76
  436. package/esm/components/layouts/Chat.js.map +1 -1
  437. package/esm/components/layouts/FullPage.js +162 -41
  438. package/esm/components/layouts/FullPage.js.map +1 -1
  439. package/esm/components/layouts/HiddenChat.js +24 -7
  440. package/esm/components/layouts/HiddenChat.js.map +1 -1
  441. package/esm/components/layouts/Totem.js +10 -1
  442. package/esm/components/layouts/Totem.js.map +1 -1
  443. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +86 -7
  444. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  445. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +87 -37
  446. package/esm/components/layouts/ZoomedFullBody.js +160 -41
  447. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  448. package/esm/components/layouts/chat.css +231 -59
  449. package/esm/components/layouts/fullpage.css +282 -80
  450. package/esm/components/layouts/hidden-chat.css +115 -96
  451. package/esm/components/layouts/totem.css +194 -51
  452. package/esm/components/layouts/zoomed-full-body.css +275 -76
  453. package/esm/helpers/artifactPanel.d.ts +6 -0
  454. package/esm/helpers/artifactPanel.js +37 -0
  455. package/esm/helpers/artifactPanel.js.map +1 -0
  456. package/esm/helpers/chatScroll.d.ts +12 -0
  457. package/esm/helpers/chatScroll.js +9 -0
  458. package/esm/helpers/chatScroll.js.map +1 -0
  459. package/esm/helpers/constants.d.ts +3 -1
  460. package/esm/helpers/constants.js +24 -2
  461. package/esm/helpers/constants.js.map +1 -1
  462. package/esm/helpers/conversationHistory.d.ts +16 -0
  463. package/esm/helpers/conversationHistory.js +82 -0
  464. package/esm/helpers/conversationHistory.js.map +1 -0
  465. package/esm/helpers/conversationTitle.d.ts +8 -0
  466. package/esm/helpers/conversationTitle.js +23 -0
  467. package/esm/helpers/conversationTitle.js.map +1 -0
  468. package/esm/helpers/convertDocument.d.ts +1 -0
  469. package/esm/helpers/convertDocument.js +20 -0
  470. package/esm/helpers/convertDocument.js.map +1 -0
  471. package/esm/helpers/error.js +2 -1
  472. package/esm/helpers/error.js.map +1 -1
  473. package/esm/helpers/highlightMatches.d.ts +2 -0
  474. package/esm/helpers/highlightMatches.js +49 -0
  475. package/esm/helpers/highlightMatches.js.map +1 -0
  476. package/esm/helpers/media.js +18 -3
  477. package/esm/helpers/media.js.map +1 -1
  478. package/esm/helpers/message.js +5 -2
  479. package/esm/helpers/message.js.map +1 -1
  480. package/esm/helpers/nats/getNatsConfig.js.map +1 -1
  481. package/esm/helpers/nats/useNats.d.ts +2 -1
  482. package/esm/helpers/nats/useNats.js +87 -20
  483. package/esm/helpers/nats/useNats.js.map +1 -1
  484. package/esm/helpers/nats/useNatsSession.d.ts +6 -1
  485. package/esm/helpers/nats/useNatsSession.js +48 -8
  486. package/esm/helpers/nats/useNatsSession.js.map +1 -1
  487. package/esm/helpers/positionPopover.d.ts +3 -1
  488. package/esm/helpers/positionPopover.js +15 -2
  489. package/esm/helpers/positionPopover.js.map +1 -1
  490. package/esm/helpers/reasoning.d.ts +7 -0
  491. package/esm/helpers/reasoning.js +39 -0
  492. package/esm/helpers/reasoning.js.map +1 -0
  493. package/esm/helpers/relativeTime.d.ts +3 -0
  494. package/esm/helpers/relativeTime.js +50 -0
  495. package/esm/helpers/relativeTime.js.map +1 -0
  496. package/esm/helpers/sourcesCount.d.ts +2 -0
  497. package/esm/helpers/sourcesCount.js +18 -0
  498. package/esm/helpers/sourcesCount.js.map +1 -0
  499. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  500. package/esm/helpers/tts/muteSpeaker.js +21 -0
  501. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  502. package/esm/helpers/tts/useTTS.js +18 -9
  503. package/esm/helpers/tts/useTTS.js.map +1 -1
  504. package/esm/helpers/usePressTooltip.d.ts +6 -1
  505. package/esm/helpers/usePressTooltip.js +17 -2
  506. package/esm/helpers/usePressTooltip.js.map +1 -1
  507. package/esm/helpers/utils.d.ts +3 -1
  508. package/esm/helpers/utils.js +18 -6
  509. package/esm/helpers/utils.js.map +1 -1
  510. package/esm/icons/MemoriIcon.js +1 -1
  511. package/esm/icons/MemoriIcon.js.map +1 -1
  512. package/esm/index.js +18 -18
  513. package/esm/index.js.map +1 -1
  514. package/esm/locales/de.json +81 -8
  515. package/esm/locales/en.json +79 -11
  516. package/esm/locales/es.json +78 -9
  517. package/esm/locales/fr.json +78 -9
  518. package/esm/locales/it.json +79 -11
  519. package/esm/styles/motion.css +25 -0
  520. package/esm/styles.css +1 -1
  521. package/esm/version.d.ts +1 -1
  522. package/esm/version.js +1 -1
  523. package/esm/version.js.map +1 -1
  524. package/package.json +15 -55
  525. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  526. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -64
  527. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  528. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  529. package/dist/context/widgetSurfaceContext.js +0 -11
  530. package/dist/context/widgetSurfaceContext.js.map +0 -1
  531. package/dist/testUtils.d.ts +0 -5
  532. package/dist/testUtils.js +0 -18
  533. package/dist/testUtils.js.map +0 -1
  534. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  535. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -62
  536. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  537. package/esm/context/widgetSurfaceContext.d.ts +0 -3
  538. package/esm/context/widgetSurfaceContext.js +0 -7
  539. package/esm/context/widgetSurfaceContext.js.map +0 -1
  540. package/esm/testUtils.d.ts +0 -5
  541. package/esm/testUtils.js +0 -15
  542. package/esm/testUtils.js.map +0 -1
  543. package/src/I18nWrapper.tsx +0 -13
  544. package/src/Showcase.stories.tsx +0 -641
  545. package/src/__snapshots__/index.test.tsx.snap +0 -126
  546. package/src/components/AgeVerificationModal/AgeVerificationModal.css +0 -118
  547. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +0 -49
  548. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +0 -34
  549. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -125
  550. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +0 -43
  551. package/src/components/Auth/Auth.css +0 -61
  552. package/src/components/Auth/Auth.stories.tsx +0 -90
  553. package/src/components/Auth/Auth.test.tsx +0 -63
  554. package/src/components/Auth/Auth.tsx +0 -216
  555. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +0 -199
  556. package/src/components/Avatar/Avatar.css +0 -151
  557. package/src/components/Avatar/Avatar.stories.tsx +0 -160
  558. package/src/components/Avatar/Avatar.test.tsx +0 -158
  559. package/src/components/Avatar/Avatar.tsx +0 -248
  560. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +0 -103
  561. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -105
  562. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -338
  563. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +0 -44
  564. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -1091
  565. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +0 -83
  566. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +0 -301
  567. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +0 -100
  568. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +0 -152
  569. package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +0 -31
  570. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +0 -141
  571. package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +0 -145
  572. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +0 -111
  573. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +0 -199
  574. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +0 -254
  575. package/src/components/Avatar/AvatarView/index.tsx +0 -194
  576. package/src/components/Avatar/AvatarView/utils/hideHands.ts +0 -11
  577. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +0 -100
  578. package/src/components/Avatar/AvatarView/utils/useHeadMovement.ts +0 -72
  579. package/src/components/Avatar/AvatarView/utils/useLoadingMorphAnim.ts +0 -38
  580. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +0 -93
  581. package/src/components/Avatar/AvatarView/utils/useSmile.ts +0 -39
  582. package/src/components/Avatar/AvatarView/utils/utils.ts +0 -55
  583. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -284
  584. package/src/components/Blob/Blob.css +0 -288
  585. package/src/components/Blob/Blob.stories.tsx +0 -53
  586. package/src/components/Blob/Blob.test.tsx +0 -18
  587. package/src/components/Blob/Blob.tsx +0 -26
  588. package/src/components/Blob/__snapshots__/Blob.test.tsx.snap +0 -80
  589. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +0 -40
  590. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +0 -58
  591. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.test.tsx +0 -53
  592. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +0 -74
  593. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +0 -226
  594. package/src/components/ChangeMode/ChangeMode.css +0 -24
  595. package/src/components/ChangeMode/ChangeMode.stories.tsx +0 -50
  596. package/src/components/ChangeMode/ChangeMode.test.tsx +0 -24
  597. package/src/components/ChangeMode/ChangeMode.tsx +0 -52
  598. package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +0 -77
  599. package/src/components/Chat/Chat.css +0 -402
  600. package/src/components/Chat/Chat.stories.tsx +0 -1687
  601. package/src/components/Chat/Chat.test.tsx +0 -381
  602. package/src/components/Chat/Chat.tsx +0 -779
  603. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +0 -10134
  604. package/src/components/ChatBubble/ChatBubble.css +0 -570
  605. package/src/components/ChatBubble/ChatBubble.stories.tsx +0 -1185
  606. package/src/components/ChatBubble/ChatBubble.test.tsx +0 -486
  607. package/src/components/ChatBubble/ChatBubble.tsx +0 -887
  608. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +0 -9849
  609. package/src/components/ChatHistoryDrawer/ChatHistory.css +0 -848
  610. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +0 -449
  611. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +0 -116
  612. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -1295
  613. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +0 -367
  614. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +0 -295
  615. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +0 -24
  616. package/src/components/ChatInputs/ChatInputs.css +0 -490
  617. package/src/components/ChatInputs/ChatInputs.stories.tsx +0 -254
  618. package/src/components/ChatInputs/ChatInputs.tsx +0 -510
  619. package/src/components/ChatTextArea/ChatTextArea.css +0 -233
  620. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  621. package/src/components/ChatTextArea/ChatTextArea.test.tsx +0 -28
  622. package/src/components/ChatTextArea/ChatTextArea.tsx +0 -175
  623. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +0 -74
  624. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +0 -36
  625. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +0 -296
  626. package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +0 -31
  627. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +0 -230
  628. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +0 -111
  629. package/src/components/ContentPreviewModal/ContentPreviewModal.css +0 -173
  630. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -71
  631. package/src/components/ContentPreviewModal/index.ts +0 -2
  632. package/src/components/CustomGLBModelViewer/ModelViewer.css +0 -11
  633. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  634. package/src/components/CustomGLBModelViewer/ModelViewer.test.tsx +0 -13
  635. package/src/components/CustomGLBModelViewer/ModelViewer.tsx +0 -37
  636. package/src/components/CustomGLBModelViewer/__snapshots__/ModelViewer.test.tsx.snap +0 -20
  637. package/src/components/DateSelector/DateSelector.css +0 -156
  638. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  639. package/src/components/DateSelector/DateSelector.test.tsx +0 -149
  640. package/src/components/DateSelector/DateSelector.tsx +0 -258
  641. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +0 -1954
  642. package/src/components/DrawerFooter/DrawerFooter.css +0 -62
  643. package/src/components/DrawerFooter/DrawerFooter.tsx +0 -58
  644. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -54
  645. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -64
  646. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +0 -54
  647. package/src/components/ExpertsDrawer/ExpertsDrawer.test.tsx +0 -53
  648. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -72
  649. package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +0 -10
  650. package/src/components/ExportHistoryButton/ExportHistoryButton.css +0 -22
  651. package/src/components/FeedbackButtons/FeedbackButtons.css +0 -109
  652. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +0 -55
  653. package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +0 -11
  654. package/src/components/FeedbackButtons/FeedbackButtons.tsx +0 -179
  655. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +0 -55
  656. package/src/components/FilePreview/FilePreview.css +0 -374
  657. package/src/components/FilePreview/FilePreview.stories.tsx +0 -66
  658. package/src/components/FilePreview/FilePreview.test.tsx +0 -26
  659. package/src/components/FilePreview/FilePreview.tsx +0 -286
  660. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +0 -254
  661. package/src/components/Header/ChatConsumptionDropdown.test.tsx +0 -154
  662. package/src/components/Header/ChatConsumptionDropdown.tsx +0 -353
  663. package/src/components/Header/Header.css +0 -746
  664. package/src/components/Header/Header.stories.tsx +0 -404
  665. package/src/components/Header/Header.test.tsx +0 -399
  666. package/src/components/Header/Header.tsx +0 -1235
  667. package/src/components/Header/__snapshots__/Header.test.tsx.snap +0 -2016
  668. package/src/components/KnownFacts/KnownFacts.css +0 -58
  669. package/src/components/KnownFacts/KnownFacts.stories.tsx +0 -83
  670. package/src/components/KnownFacts/KnownFacts.test.tsx +0 -57
  671. package/src/components/KnownFacts/KnownFacts.tsx +0 -394
  672. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +0 -43
  673. package/src/components/LoginDrawer/LoginDrawer.css +0 -1741
  674. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -105
  675. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -199
  676. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -781
  677. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +0 -169
  678. package/src/components/MediaWidget/DocumentCard.test.tsx +0 -45
  679. package/src/components/MediaWidget/DocumentCard.tsx +0 -19
  680. package/src/components/MediaWidget/MediaItemWidget.css +0 -1444
  681. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +0 -423
  682. package/src/components/MediaWidget/MediaItemWidget.test.tsx +0 -248
  683. package/src/components/MediaWidget/MediaItemWidget.tsx +0 -983
  684. package/src/components/MediaWidget/MediaItemWidget.types.ts +0 -65
  685. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +0 -367
  686. package/src/components/MediaWidget/MediaItemWidget.utils.ts +0 -227
  687. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +0 -271
  688. package/src/components/MediaWidget/MediaPreviewModal.tsx +0 -425
  689. package/src/components/MediaWidget/MediaWidget.css +0 -131
  690. package/src/components/MediaWidget/MediaWidget.stories.tsx +0 -319
  691. package/src/components/MediaWidget/MediaWidget.test.tsx +0 -41
  692. package/src/components/MediaWidget/MediaWidget.tsx +0 -97
  693. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +0 -24
  694. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +0 -608
  695. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +0 -140
  696. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  697. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +0 -159
  698. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +0 -240
  699. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +0 -30
  700. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +0 -464
  701. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +0 -91
  702. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +0 -620
  703. package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +0 -9
  704. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +0 -500
  705. package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +0 -90
  706. package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +0 -73
  707. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +0 -454
  708. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +0 -1100
  709. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -440
  710. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +0 -20
  711. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +0 -63
  712. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +0 -283
  713. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +0 -397
  714. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +0 -354
  715. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +0 -159
  716. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +0 -80
  717. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +0 -18
  718. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +0 -308
  719. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +0 -384
  720. package/src/components/MemoriWidget/MemoriWidget.css +0 -165
  721. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +0 -295
  722. package/src/components/MemoriWidget/MemoriWidget.tsx +0 -4059
  723. package/src/components/MicrophoneButton/MicrophoneButton.css +0 -194
  724. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +0 -52
  725. package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -135
  726. package/src/components/MobileSessionPanel/MobileSessionPanel.css +0 -437
  727. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +0 -808
  728. package/src/components/PositionPopover/PositionPopover.css +0 -219
  729. package/src/components/PositionPopover/PositionPopover.stories.tsx +0 -37
  730. package/src/components/PositionPopover/PositionPopover.tsx +0 -367
  731. package/src/components/PoweredBy/PoweredBy.css +0 -57
  732. package/src/components/PoweredBy/PoweredBy.stories.tsx +0 -75
  733. package/src/components/PoweredBy/PoweredBy.test.tsx +0 -15
  734. package/src/components/PoweredBy/PoweredBy.tsx +0 -36
  735. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +0 -287
  736. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +0 -47
  737. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +0 -58
  738. package/src/components/SendOnEnterMenu/SendOnEnterMenu.test.tsx +0 -17
  739. package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +0 -48
  740. package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +0 -105
  741. package/src/components/SettingsDrawer/SettingsDrawer.css +0 -24
  742. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +0 -94
  743. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +0 -202
  744. package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -247
  745. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +0 -52
  746. package/src/components/ShareButton/ShareButton.css +0 -319
  747. package/src/components/ShareButton/ShareButton.stories.tsx +0 -103
  748. package/src/components/ShareButton/ShareButton.test.tsx +0 -53
  749. package/src/components/ShareButton/ShareButton.tsx +0 -749
  750. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +0 -739
  751. package/src/components/Snippet/Snippet.css +0 -178
  752. package/src/components/Snippet/Snippet.stories.tsx +0 -286
  753. package/src/components/Snippet/Snippet.test.tsx +0 -176
  754. package/src/components/Snippet/Snippet.tsx +0 -148
  755. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +0 -619
  756. package/src/components/StartPanel/StartPanel.css +0 -896
  757. package/src/components/StartPanel/StartPanel.stories.tsx +0 -394
  758. package/src/components/StartPanel/StartPanel.test.tsx +0 -371
  759. package/src/components/StartPanel/StartPanel.tsx +0 -745
  760. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +0 -3347
  761. package/src/components/Typing/Typing.stories.tsx +0 -130
  762. package/src/components/Typing/Typing.test.tsx +0 -62
  763. package/src/components/Typing/Typing.tsx +0 -232
  764. package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +0 -173
  765. package/src/components/UploadButton/UploadButton.css +0 -573
  766. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  767. package/src/components/UploadButton/UploadButton.test.tsx +0 -14
  768. package/src/components/UploadButton/UploadButton.tsx +0 -705
  769. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -585
  770. package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -554
  771. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +0 -160
  772. package/src/components/VenueWidget/VenueWidget.css +0 -223
  773. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  774. package/src/components/VenueWidget/VenueWidget.test.tsx +0 -49
  775. package/src/components/VenueWidget/VenueWidget.tsx +0 -578
  776. package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +0 -776
  777. package/src/components/WhyThisAnswer/WhyThisAnswer.css +0 -171
  778. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +0 -288
  779. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +0 -245
  780. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -245
  781. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +0 -57
  782. package/src/components/icons/GasStation.tsx +0 -36
  783. package/src/components/layouts/Chat.test.tsx +0 -41
  784. package/src/components/layouts/Chat.tsx +0 -428
  785. package/src/components/layouts/FullBody/FullBody.stories.tsx +0 -110
  786. package/src/components/layouts/FullPage.test.tsx +0 -66
  787. package/src/components/layouts/FullPage.tsx +0 -382
  788. package/src/components/layouts/HiddenChat.test.tsx +0 -41
  789. package/src/components/layouts/HiddenChat.tsx +0 -366
  790. package/src/components/layouts/Totem/Totem.stories.tsx +0 -131
  791. package/src/components/layouts/Totem.test.tsx +0 -41
  792. package/src/components/layouts/Totem.tsx +0 -53
  793. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
  794. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.test.tsx +0 -43
  795. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +0 -194
  796. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -80
  797. package/src/components/layouts/WebsiteAssistant/website-assistant.css +0 -793
  798. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +0 -131
  799. package/src/components/layouts/ZoomedFullBody.test.tsx +0 -41
  800. package/src/components/layouts/ZoomedFullBody.tsx +0 -381
  801. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +0 -753
  802. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +0 -1487
  803. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +0 -700
  804. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +0 -797
  805. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +0 -744
  806. package/src/components/layouts/chat.css +0 -658
  807. package/src/components/layouts/fullpage.css +0 -426
  808. package/src/components/layouts/hidden-chat.css +0 -636
  809. package/src/components/layouts/layouts.stories.tsx +0 -232
  810. package/src/components/layouts/totem.css +0 -230
  811. package/src/components/layouts/zoomed-full-body.css +0 -374
  812. package/src/context/visemeContext.tsx +0 -384
  813. package/src/context/widgetSurfaceContext.tsx +0 -14
  814. package/src/helpers/chatPdfExport.ts +0 -547
  815. package/src/helpers/configuration.ts +0 -42
  816. package/src/helpers/constants.ts +0 -244
  817. package/src/helpers/credits.ts +0 -54
  818. package/src/helpers/error.test.ts +0 -29
  819. package/src/helpers/error.ts +0 -278
  820. package/src/helpers/imageCompression.ts +0 -230
  821. package/src/helpers/llmUsage.ts +0 -328
  822. package/src/helpers/markedExtendedTables.js +0 -217
  823. package/src/helpers/media.test.ts +0 -133
  824. package/src/helpers/media.ts +0 -54
  825. package/src/helpers/message.test.ts +0 -126
  826. package/src/helpers/message.ts +0 -204
  827. package/src/helpers/nats/getNatsConfig.ts +0 -145
  828. package/src/helpers/nats/isSessionExpiredError.test.ts +0 -38
  829. package/src/helpers/nats/isSessionExpiredError.ts +0 -51
  830. package/src/helpers/nats/useNats.ts +0 -124
  831. package/src/helpers/nats/useNatsSession.ts +0 -394
  832. package/src/helpers/piiDetection.test.ts +0 -186
  833. package/src/helpers/piiDetection.ts +0 -91
  834. package/src/helpers/positionPopover.test.ts +0 -33
  835. package/src/helpers/positionPopover.ts +0 -13
  836. package/src/helpers/sanitizer.ts +0 -17
  837. package/src/helpers/statistics.ts +0 -58
  838. package/src/helpers/stt/useSTT.ts +0 -515
  839. package/src/helpers/translations.ts +0 -39
  840. package/src/helpers/tts/ttsVoiceUtility.ts +0 -275
  841. package/src/helpers/tts/useTTS.ts +0 -621
  842. package/src/helpers/usePressTooltip.ts +0 -29
  843. package/src/helpers/utils.test.ts +0 -321
  844. package/src/helpers/utils.ts +0 -588
  845. package/src/helpers/venue.ts +0 -36
  846. package/src/i18n.ts +0 -41
  847. package/src/icons/FacebookIcon.tsx +0 -23
  848. package/src/icons/LinkedinIcon.tsx +0 -23
  849. package/src/icons/MemoriIcon.tsx +0 -80
  850. package/src/icons/TelegramIcon.tsx +0 -19
  851. package/src/icons/TwitterIcon.tsx +0 -8
  852. package/src/icons/WhatsappIcon.tsx +0 -23
  853. package/src/icons/artifacts/DocumentIcon.tsx +0 -19
  854. package/src/icons/artifacts/HtmlIcon.tsx +0 -38
  855. package/src/icons/artifacts/JavascriptIcon.tsx +0 -19
  856. package/src/icons/artifacts/MarkdownIcon.tsx +0 -19
  857. package/src/icons/artifacts/PythonIcon.tsx +0 -17
  858. package/src/icons/artifacts/SvgIcon.tsx +0 -34
  859. package/src/icons/artifacts/XmlIcon.tsx +0 -34
  860. package/src/icons/artifacts/cssIcon.tsx +0 -34
  861. package/src/index.stories.tsx +0 -226
  862. package/src/index.test.tsx +0 -156
  863. package/src/index.tsx +0 -595
  864. package/src/locales/de.json +0 -738
  865. package/src/locales/en.json +0 -812
  866. package/src/locales/es.json +0 -739
  867. package/src/locales/fr.json +0 -740
  868. package/src/locales/it.json +0 -808
  869. package/src/mocks/data.ts +0 -790
  870. package/src/styles.css +0 -244
  871. package/src/testUtils.tsx +0 -42
  872. package/src/types/integration.test.ts +0 -32
  873. package/src/types/integration.ts +0 -31
  874. package/src/types/layout.ts +0 -50
  875. package/src/version.ts +0 -2
@@ -1,1687 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { Meta, Story } from '@storybook/react';
3
- import {
4
- memori,
5
- tenant,
6
- history,
7
- historyWithMedia,
8
- historyWithAIGeneratedMessages,
9
- historyWithArtifact,
10
- sessionID,
11
- dialogState as dialogStateWithHints,
12
- historyWithExpandable,
13
- historyWithArtifacts,
14
- } from '../../mocks/data';
15
- import I18nWrapper from '../../I18nWrapper';
16
- import Chat, { Props } from './Chat';
17
-
18
- import './Chat.css';
19
- import { ArtifactProvider } from '../MemoriArtifactSystem/context/ArtifactContext';
20
- import { AlertProvider } from '@memori.ai/ui';
21
-
22
- const meta: Meta = {
23
- title: 'Widget/Chat',
24
- component: Chat,
25
- argTypes: {},
26
- parameters: {
27
- controls: { expanded: true },
28
- },
29
- };
30
-
31
- export default meta;
32
-
33
- const dialogState = {
34
- ...dialogStateWithHints,
35
- hints: [],
36
- };
37
-
38
- const Template: Story<Props> = args => {
39
- const [userMessage, setUserMessage] = useState(args.userMessage);
40
-
41
- return (
42
- <I18nWrapper>
43
- <AlertProvider defaultDuration={5000}>
44
- <ArtifactProvider>
45
- <Chat
46
- {...args}
47
- userMessage={userMessage}
48
- onChangeUserMessage={setUserMessage}
49
- />
50
- </ArtifactProvider>
51
- </AlertProvider>
52
- </I18nWrapper>
53
- );
54
- };
55
-
56
- // By passing using the Args format for exported stories, you can control the props for a component for reuse in a test
57
- // https://storybook.js.org/docs/react/workflows/unit-testing
58
- export const Default = Template.bind({});
59
- Default.args = {
60
- memori,
61
- tenant,
62
- sessionID,
63
- history,
64
- dialogState,
65
- layout: 'DEFAULT',
66
- simulateUserPrompt: () => {},
67
- sendMessage: (msg: string) => console.log(msg),
68
- stopListening: () => {},
69
- resetTranscript: () => {},
70
- setAttachmentsMenuOpen: () => {},
71
- setSendOnEnter: () => {},
72
- };
73
-
74
- export const MemoriTyping = Template.bind({});
75
- MemoriTyping.args = {
76
- memori,
77
- tenant,
78
- sessionID,
79
- history,
80
- dialogState,
81
- layout: 'DEFAULT',
82
- simulateUserPrompt: () => {},
83
- memoriTyping: true,
84
- sendMessage: (msg: string) => console.log(msg),
85
- stopListening: () => {},
86
- resetTranscript: () => {},
87
- setAttachmentsMenuOpen: () => {},
88
- setSendOnEnter: () => {},
89
- };
90
-
91
- export const WithArtifactBug = Template.bind({});
92
- WithArtifactBug.args = {
93
- memori,
94
- tenant,
95
- sessionID,
96
- history: historyWithArtifact,
97
- dialogState,
98
- layout: 'DEFAULT',
99
- };
100
-
101
- export const ArtifactTagOnlyInRawText = Template.bind({});
102
- ArtifactTagOnlyInRawText.args = {
103
- memori,
104
- tenant,
105
- sessionID,
106
- history: [
107
- {
108
- text: 'lo voglio in un artifact interattivo',
109
- fromUser: true,
110
- timestamp: '2026-04-27T14:22:12.068937Z',
111
- media: [],
112
- },
113
- {
114
- text: `<output class="memori-artifact" data-mimetype="html" data-title="Battaglia Navale">
115
- <!DOCTYPE html>
116
- <html lang="it">
117
- <head>
118
- <meta charset="UTF-8">
119
- <title>Battaglia Navale</title>
120
- </head>
121
- <body>
122
- <h1>Battaglia Navale</h1>
123
- <p>Artifact should be detected from raw text.</p>
124
- </body>
125
- </html>
126
- </output>`,
127
- // Regression setup: translated text exists but does not contain the <output> tag.
128
- translatedText:
129
- 'Interfaccia pronta! Inserisci le coordinate delle navi e premi Inizia.',
130
- fromUser: false,
131
- timestamp: '2026-04-27T14:22:36.740195Z',
132
- media: [],
133
- },
134
- ],
135
- dialogState,
136
- layout: 'DEFAULT',
137
- simulateUserPrompt: () => {},
138
- sendMessage: (msg: string) => console.log(msg),
139
- stopListening: () => {},
140
- resetTranscript: () => {},
141
- setAttachmentsMenuOpen: () => {},
142
- setSendOnEnter: () => {},
143
- };
144
-
145
- export const ArtifactWithoutClosingTag = Template.bind({});
146
- ArtifactWithoutClosingTag.args = {
147
- memori,
148
- tenant,
149
- sessionID,
150
- history: [
151
- {
152
- text: 'Puoi prepararmi una proposta tecnica in artifact?',
153
- fromUser: true,
154
- timestamp: '2026-04-27T14:18:10.000000Z',
155
- media: [],
156
- },
157
- {
158
- text: `<output class="memori-artifact" data-mimetype="markdown">
159
- # Proposta Tecnica
160
-
161
- ## Sommario
162
- - Piano A: On-premise + Cloud
163
- - Piano B: Solo on-premise
164
-
165
- ## Raccomandazione
166
- Per workload critici, preferire on-premise.
167
-
168
- Questa risposta riproduce il caso reale in cui manca il tag di chiusura`,
169
- fromUser: false,
170
- timestamp: '2026-04-27T14:18:16.846760Z',
171
- media: [],
172
- },
173
- ],
174
- dialogState,
175
- layout: 'DEFAULT',
176
- simulateUserPrompt: () => {},
177
- sendMessage: (msg: string) => console.log(msg),
178
- stopListening: () => {},
179
- resetTranscript: () => {},
180
- setAttachmentsMenuOpen: () => {},
181
- setSendOnEnter: () => {},
182
- };
183
-
184
- export const ArtifactPlainTextMime = Template.bind({});
185
- ArtifactPlainTextMime.args = {
186
- memori,
187
- tenant,
188
- sessionID,
189
- history: [
190
- {
191
- text: 'mostramelo come artifact semplice',
192
- fromUser: true,
193
- timestamp: '2026-04-27T14:30:00.000000Z',
194
- media: [],
195
- },
196
- {
197
- text: `<output class="memori-artifact" data-mimetype="text">
198
- ciao
199
- </output>`,
200
- fromUser: false,
201
- timestamp: '2026-04-27T14:30:05.000000Z',
202
- media: [],
203
- },
204
- ],
205
- dialogState,
206
- layout: 'DEFAULT',
207
- simulateUserPrompt: () => {},
208
- sendMessage: (msg: string) => console.log(msg),
209
- stopListening: () => {},
210
- resetTranscript: () => {},
211
- setAttachmentsMenuOpen: () => {},
212
- setSendOnEnter: () => {},
213
- };
214
-
215
- export const WithHints = Template.bind({});
216
- WithHints.args = {
217
- memori,
218
- tenant,
219
- sessionID,
220
- history,
221
- dialogState: dialogStateWithHints,
222
- layout: 'DEFAULT',
223
- simulateUserPrompt: () => {},
224
- sendMessage: (msg: string) => console.log(msg),
225
- stopListening: () => {},
226
- resetTranscript: () => {},
227
- setAttachmentsMenuOpen: () => {},
228
- setSendOnEnter: () => {},
229
- };
230
-
231
- export const WithMessageConsumption = Template.bind({});
232
- WithMessageConsumption.args = {
233
- memori,
234
- tenant,
235
- sessionID,
236
- dialogState,
237
- layout: 'DEFAULT',
238
- simulateUserPrompt: () => {},
239
- sendMessage: (msg: string) => console.log(msg),
240
- stopListening: () => {},
241
- resetTranscript: () => {},
242
- setAttachmentsMenuOpen: () => {},
243
- setSendOnEnter: () => {},
244
- showMessageConsumption: true,
245
- history: [
246
- ...history.slice(0, Math.max(0, history.length - 2)),
247
- // Add one AI message with llmUsage for the badges
248
- {
249
- ...(history.find(m => !m.fromUser) ?? history[history.length - 1]),
250
- fromUser: false,
251
- text: 'Risposta di esempio con consumo LLM.',
252
- llmUsage: {
253
- provider: 'openai',
254
- model: 'gpt-4.1-mini',
255
- totalInputTokens: 123,
256
- inputCacheReadTokens: 10,
257
- inputCacheWriteTokens: 5,
258
- outputTokens: 456,
259
- durationMs: 2345,
260
- energyImpact: {
261
- energy: 0.00012,
262
- energyUnit: 'kWh',
263
- gwp: 0.00009,
264
- gwpUnit: 'kgCO2eq',
265
- wcf: 0.02,
266
- wcfUnit: 'L',
267
- },
268
- },
269
- } as any,
270
- ],
271
- };
272
-
273
- export const WithArtifacts = Template.bind({});
274
- WithArtifacts.args = {
275
- memori,
276
- tenant,
277
- sessionID,
278
- isChatlogPanel: false,
279
- history: historyWithArtifacts,
280
- dialogState,
281
- layout: 'CHAT',
282
- simulateUserPrompt: () => {},
283
- sendMessage: (msg: string) => console.log(msg),
284
- stopListening: () => {},
285
- resetTranscript: () => {},
286
- setAttachmentsMenuOpen: () => {},
287
- setSendOnEnter: () => {},
288
- };
289
-
290
- export const WithArtifactsInChatlogPanel = Template.bind({});
291
- WithArtifactsInChatlogPanel.args = {
292
- memori,
293
- tenant,
294
- sessionID,
295
- isChatlogPanel: true,
296
- history: historyWithArtifacts,
297
- dialogState,
298
- layout: 'CHAT',
299
- simulateUserPrompt: () => {},
300
- sendMessage: (msg: string) => console.log(msg),
301
- stopListening: () => {},
302
- resetTranscript: () => {},
303
- setAttachmentsMenuOpen: () => {},
304
- setSendOnEnter: () => {},
305
- };
306
-
307
- export const WithMedia = Template.bind({});
308
- WithMedia.args = {
309
- memori,
310
- tenant,
311
- sessionID,
312
- history: historyWithMedia,
313
- dialogState,
314
- layout: 'DEFAULT',
315
- simulateUserPrompt: () => {},
316
- sendMessage: (msg: string) => console.log(msg),
317
- stopListening: () => {},
318
- resetTranscript: () => {},
319
- setAttachmentsMenuOpen: () => {},
320
- setSendOnEnter: () => {},
321
- };
322
-
323
- /** All media types in chat: one message from user, one from agent. Use for manual QA of previews and layout. */
324
- const historyAllMediaExamples = [
325
- {
326
- text: "Here's a message with every media type I can send.",
327
- fromUser: true,
328
- timestamp: '2021-03-01T12:00:00.000Z',
329
- media: [
330
- {
331
- mediumID: 'user-img-1',
332
- mimeType: 'image/png',
333
- title: 'Image',
334
- url: 'https://picsum.photos/200/300',
335
- },
336
- {
337
- mediumID: 'user-link-1',
338
- mimeType: 'text/html',
339
- title: 'Memori',
340
- url: 'https://memori.ai/en',
341
- },
342
- {
343
- mediumID: 'user-code-1',
344
- mimeType: 'text/javascript',
345
- title: 'Code snippet',
346
- content: "console.log('Hello World!');",
347
- },
348
- {
349
- mediumID: 'user-pdf-1',
350
- mimeType: 'application/pdf',
351
- title: 'PDF',
352
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
353
- },
354
- {
355
- mediumID: 'user-video-1',
356
- mimeType: 'video/mp4',
357
- title: 'Video',
358
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
359
- },
360
- {
361
- mediumID: 'user-audio-1',
362
- mimeType: 'audio/mpeg',
363
- title: 'Audio',
364
- url: 'https://www.w3schools.com/html/horse.mp3',
365
- },
366
- {
367
- mediumID: 'user-doc-1',
368
- mimeType: 'application/msword',
369
- title: 'Word doc',
370
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
371
- },
372
- ],
373
- },
374
- {
375
- text: "And here's the same set of media from the agent.",
376
- fromUser: false,
377
- timestamp: '2021-03-01T12:00:01.000Z',
378
- media: [
379
- {
380
- mediumID: 'agent-img-1',
381
- mimeType: 'image/png',
382
- title: 'Image',
383
- url: 'https://picsum.photos/300/200',
384
- },
385
- {
386
- mediumID: 'agent-link-1',
387
- mimeType: 'text/html',
388
- title: 'YouTube',
389
- url: 'https://www.youtube.com/watch?v=feH26j3rBz8',
390
- },
391
- {
392
- mediumID: 'agent-code-1',
393
- mimeType: 'application/json',
394
- title: 'JSON',
395
- content: '{"name": "Test", "value": 42}',
396
- },
397
- {
398
- mediumID: 'agent-pdf-1',
399
- mimeType: 'application/pdf',
400
- title: 'PDF',
401
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
402
- },
403
- {
404
- mediumID: 'agent-video-1',
405
- mimeType: 'video/mp4',
406
- title: 'Video',
407
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
408
- },
409
- {
410
- mediumID: 'agent-audio-1',
411
- mimeType: 'audio/mpeg',
412
- title: 'Audio',
413
- url: 'https://www.w3schools.com/html/horse.mp3',
414
- },
415
- {
416
- mediumID: 'agent-doc-1',
417
- mimeType:
418
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
419
- title: 'Excel',
420
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
421
- },
422
- ],
423
- },
424
- {
425
- text: 'This message has an inline document attachment: <document_attachment filename="note.txt" type="text/plain">Hello from inline attachment.</document_attachment>',
426
- fromUser: true,
427
- timestamp: '2021-03-01T12:00:02.000Z',
428
- },
429
- ];
430
-
431
- export const AllMediaExamples = Template.bind({});
432
- AllMediaExamples.args = {
433
- memori,
434
- tenant,
435
- sessionID,
436
- history: historyAllMediaExamples,
437
- dialogState,
438
- layout: 'DEFAULT',
439
- simulateUserPrompt: () => {},
440
- sendMessage: (msg: string) => console.log(msg),
441
- stopListening: () => {},
442
- resetTranscript: () => {},
443
- setAttachmentsMenuOpen: () => {},
444
- setSendOnEnter: () => {},
445
- };
446
- AllMediaExamples.storyName = 'All media examples (user + agent)';
447
-
448
- export const WithInvalidImages = Template.bind({});
449
- WithInvalidImages.args = {
450
- memori,
451
- tenant,
452
- sessionID,
453
- history: [
454
- {
455
- text: 'Here are some images with invalid URLs to demonstrate fallback:',
456
- timestamp: '2021-03-01T12:00:00.000Z',
457
- media: [
458
- {
459
- mediumID: 'invalid-1',
460
- mimeType: 'image/png',
461
- title: 'Invalid URL',
462
- url: 'not-a-valid-url',
463
- },
464
- {
465
- mediumID: 'invalid-2',
466
- mimeType: 'image/jpeg',
467
- title: 'Invalid content',
468
- content: 'this-is-not-base64',
469
- },
470
- {
471
- mediumID: 'invalid-3',
472
- mimeType: 'image/jpg',
473
- title: 'Missing URL and content',
474
- url: undefined,
475
- content: undefined,
476
- },
477
- {
478
- mediumID: 'valid-1',
479
- mimeType: 'image/png',
480
- title: 'Valid image for comparison',
481
- url: 'https://picsum.photos/200/200',
482
- },
483
- ],
484
- },
485
- ],
486
- dialogState,
487
- layout: 'DEFAULT',
488
- simulateUserPrompt: () => {},
489
- sendMessage: (msg: string) => console.log(msg),
490
- stopListening: () => {},
491
- resetTranscript: () => {},
492
- setAttachmentsMenuOpen: () => {},
493
- setSendOnEnter: () => {},
494
- };
495
-
496
- export const WithDates = Template.bind({});
497
- WithDates.args = {
498
- memori,
499
- tenant,
500
- sessionID,
501
- history,
502
- dialogState,
503
- layout: 'DEFAULT',
504
- simulateUserPrompt: () => {},
505
- sendMessage: (msg: string) => console.log(msg),
506
- stopListening: () => {},
507
- resetTranscript: () => {},
508
- setAttachmentsMenuOpen: () => {},
509
- setSendOnEnter: () => {},
510
- showDates: true,
511
- };
512
-
513
- export const WithContext = Template.bind({});
514
- WithContext.args = {
515
- memori,
516
- tenant,
517
- sessionID,
518
- history,
519
- dialogState,
520
- layout: 'DEFAULT',
521
- simulateUserPrompt: () => {},
522
- sendMessage: (msg: string) => console.log(msg),
523
- stopListening: () => {},
524
- resetTranscript: () => {},
525
- setAttachmentsMenuOpen: () => {},
526
- setSendOnEnter: () => {},
527
- showContextPerLine: true,
528
- };
529
-
530
- export const WithDatesAndContext = Template.bind({});
531
- WithDatesAndContext.args = {
532
- memori,
533
- tenant,
534
- sessionID,
535
- history,
536
- dialogState,
537
- layout: 'DEFAULT',
538
- simulateUserPrompt: () => {},
539
- sendMessage: (msg: string) => console.log(msg),
540
- stopListening: () => {},
541
- resetTranscript: () => {},
542
- setAttachmentsMenuOpen: () => {},
543
- setSendOnEnter: () => {},
544
- showDates: true,
545
- showContextPerLine: true,
546
- };
547
-
548
- export const OnX3State = Template.bind({});
549
- OnX3State.args = {
550
- memori,
551
- tenant,
552
- sessionID,
553
- history,
554
- dialogState: {
555
- ...dialogState,
556
- state: 'X3',
557
- },
558
- layout: 'DEFAULT',
559
- simulateUserPrompt: () => {},
560
- sendMessage: (msg: string) => console.log(msg),
561
- stopListening: () => {},
562
- resetTranscript: () => {},
563
- setAttachmentsMenuOpen: () => {},
564
- setSendOnEnter: () => {},
565
- };
566
-
567
- export const OnX2aState = Template.bind({});
568
- OnX2aState.args = {
569
- memori,
570
- tenant,
571
- sessionID,
572
- history,
573
- dialogState: {
574
- ...dialogState,
575
- state: 'X2a',
576
- },
577
- layout: 'DEFAULT',
578
- simulateUserPrompt: () => {},
579
- sendMessage: (msg: string) => console.log(msg),
580
- stopListening: () => {},
581
- resetTranscript: () => {},
582
- setAttachmentsMenuOpen: () => {},
583
- setSendOnEnter: () => {},
584
- };
585
-
586
- export const AcceptsFeedback = Template.bind({});
587
- AcceptsFeedback.args = {
588
- memori,
589
- tenant,
590
- sessionID,
591
- history,
592
- dialogState: {
593
- ...dialogState,
594
- acceptsFeedback: true,
595
- },
596
- layout: 'DEFAULT',
597
- simulateUserPrompt: () => {},
598
- sendMessage: (msg: string) => console.log(msg),
599
- stopListening: () => {},
600
- resetTranscript: () => {},
601
- setAttachmentsMenuOpen: () => {},
602
- setSendOnEnter: () => {},
603
- };
604
-
605
- export const WithAIGeneratedMessages = Template.bind({});
606
- WithAIGeneratedMessages.args = {
607
- memori,
608
- tenant,
609
- sessionID,
610
- history: historyWithAIGeneratedMessages,
611
- dialogState,
612
- layout: 'DEFAULT',
613
- simulateUserPrompt: () => {},
614
- sendMessage: (msg: string) => console.log(msg),
615
- stopListening: () => {},
616
- resetTranscript: () => {},
617
- setAttachmentsMenuOpen: () => {},
618
- setSendOnEnter: () => {},
619
- };
620
-
621
- export const WithUser = Template.bind({});
622
- WithUser.args = {
623
- user: { avatarURL: 'https://picsum.photos/200' },
624
- memori,
625
- tenant,
626
- sessionID,
627
- history,
628
- dialogState,
629
- layout: 'DEFAULT',
630
- simulateUserPrompt: () => {},
631
- sendMessage: (msg: string) => console.log(msg),
632
- stopListening: () => {},
633
- resetTranscript: () => {},
634
- setAttachmentsMenuOpen: () => {},
635
- setSendOnEnter: () => {},
636
- };
637
-
638
- export const WithCustomUserAvatar = Template.bind({});
639
- WithCustomUserAvatar.args = {
640
- userAvatar: 'https://picsum.photos/200',
641
- memori,
642
- tenant,
643
- sessionID,
644
- history,
645
- dialogState,
646
- layout: 'DEFAULT',
647
- simulateUserPrompt: () => {},
648
- sendMessage: (msg: string) => console.log(msg),
649
- stopListening: () => {},
650
- resetTranscript: () => {},
651
- setAttachmentsMenuOpen: () => {},
652
- setSendOnEnter: () => {},
653
- };
654
-
655
- export const WithCustomUserAvatarAsElement = Template.bind({});
656
- WithCustomUserAvatarAsElement.args = {
657
- userAvatar: <span>USER</span>,
658
- memori,
659
- tenant,
660
- sessionID,
661
- history,
662
- dialogState,
663
- layout: 'DEFAULT',
664
- simulateUserPrompt: () => {},
665
- sendMessage: (msg: string) => console.log(msg),
666
- stopListening: () => {},
667
- resetTranscript: () => {},
668
- setAttachmentsMenuOpen: () => {},
669
- setSendOnEnter: () => {},
670
- };
671
-
672
- export const WithExpandable = Template.bind({});
673
- WithExpandable.args = {
674
- memori,
675
- tenant,
676
- sessionID,
677
- history: historyWithExpandable,
678
- dialogState,
679
- layout: 'DEFAULT',
680
- simulateUserPrompt: () => {},
681
- sendMessage: (msg: string) => console.log(msg),
682
- stopListening: () => {},
683
- resetTranscript: () => {},
684
- };
685
-
686
- export const WithMultipleArtifactsInOneMessage = Template.bind({});
687
- WithMultipleArtifactsInOneMessage.args = {
688
- memori,
689
- tenant,
690
- sessionID,
691
- history: [
692
- {
693
- text: 'Can you help me build a landing page?',
694
- fromUser: true,
695
- timestamp: '2021-03-01T12:00:00.000Z',
696
- },
697
- {
698
- text: `I'll create a complete landing page with HTML, CSS, and JavaScript for you:
699
-
700
- <output class="memori-artifact" data-mimetype="html" data-title="Landing Page HTML">
701
- <!DOCTYPE html>
702
- <html lang="en">
703
- <head>
704
- <meta charset="UTF-8">
705
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
706
- <title>Product Landing Page</title>
707
- </head>
708
- <body>
709
- <header class="hero">
710
- <h1>Welcome to Our Amazing Product</h1>
711
- <p>The solution you've been waiting for</p>
712
- <button id="ctaButton" class="cta-button">Get Started</button>
713
- </header>
714
-
715
- <section class="features">
716
- <div class="feature">
717
- <h3>⚡ Fast</h3>
718
- <p>Lightning-quick performance</p>
719
- </div>
720
- <div class="feature">
721
- <h3>🔒 Secure</h3>
722
- <p>Enterprise-grade security</p>
723
- </div>
724
- <div class="feature">
725
- <h3>📱 Responsive</h3>
726
- <p>Works on all devices</p>
727
- </div>
728
- </section>
729
- </body>
730
- </html>
731
- </output>
732
-
733
- <output class="memori-artifact" data-mimetype="css" data-title="Landing Page Styles">
734
- * {
735
- margin: 0;
736
- padding: 0;
737
- box-sizing: border-box;
738
- }
739
-
740
- body {
741
- font-family: 'Segoe UI', system-ui, sans-serif;
742
- line-height: 1.6;
743
- color: #333;
744
- }
745
-
746
- .hero {
747
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
748
- color: white;
749
- text-align: center;
750
- padding: 100px 20px;
751
- }
752
-
753
- .hero h1 {
754
- font-size: 3rem;
755
- margin-bottom: 20px;
756
- animation: fadeInUp 0.8s ease-out;
757
- }
758
-
759
- .hero p {
760
- font-size: 1.5rem;
761
- margin-bottom: 30px;
762
- opacity: 0.9;
763
- }
764
-
765
- .cta-button {
766
- background: white;
767
- color: #667eea;
768
- border: none;
769
- padding: 15px 40px;
770
- font-size: 1.1rem;
771
- font-weight: 600;
772
- border-radius: .5rem;
773
- cursor: pointer;
774
- transition: all 0.3s ease;
775
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
776
- }
777
-
778
- .cta-button:hover {
779
- transform: translateY(-3px);
780
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
781
- }
782
-
783
- .features {
784
- display: grid;
785
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
786
- gap: 40px;
787
- padding: 80px 20px;
788
- max-width: 1200px;
789
- margin: 0 auto;
790
- }
791
-
792
- .feature {
793
- text-align: center;
794
- padding: 30px;
795
- background: white;
796
- border-radius: .5rem;
797
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08);
798
- transition: transform 0.3s ease;
799
- }
800
-
801
- .feature:hover {
802
- transform: translateY(-5px);
803
- }
804
-
805
- .feature h3 {
806
- font-size: 2rem;
807
- margin-bottom: 15px;
808
- }
809
-
810
- @keyframes fadeInUp {
811
- from {
812
- opacity: 0;
813
- transform: translateY(30px);
814
- }
815
- to {
816
- opacity: 1;
817
- transform: translateY(0);
818
- }
819
- }
820
- </output>
821
-
822
- <output class="memori-artifact" data-mimetype="javascript" data-title="Landing Page Script">
823
- // Add interactivity to the landing page
824
- document.addEventListener('DOMContentLoaded', () => {
825
- const ctaButton = document.getElementById('ctaButton');
826
-
827
- if (ctaButton) {
828
- ctaButton.addEventListener('click', () => {
829
- // Smooth scroll animation
830
- const features = document.querySelector('.features');
831
- if (features) {
832
- features.scrollIntoView({
833
- behavior: 'smooth',
834
- block: 'start'
835
- });
836
- }
837
-
838
- // Show a welcome message
839
- setTimeout(() => {
840
- alert('Welcome! Explore our amazing features below 🚀');
841
- }, 500);
842
- });
843
-
844
- // Add pulse animation on hover
845
- ctaButton.addEventListener('mouseenter', () => {
846
- ctaButton.style.animation = 'pulse 0.5s ease';
847
- });
848
-
849
- ctaButton.addEventListener('animationend', () => {
850
- ctaButton.style.animation = '';
851
- });
852
- }
853
-
854
- // Add scroll reveal effect to features
855
- const features = document.querySelectorAll('.feature');
856
- const observerOptions = {
857
- threshold: 0.2,
858
- rootMargin: '0px 0px -50px 0px'
859
- };
860
-
861
- const observer = new IntersectionObserver((entries) => {
862
- entries.forEach((entry, index) => {
863
- if (entry.isIntersecting) {
864
- setTimeout(() => {
865
- entry.target.style.opacity = '1';
866
- entry.target.style.transform = 'translateY(0)';
867
- }, index * 100);
868
- observer.unobserve(entry.target);
869
- }
870
- });
871
- }, observerOptions);
872
-
873
- features.forEach(feature => {
874
- feature.style.opacity = '0';
875
- feature.style.transform = 'translateY(20px)';
876
- feature.style.transition = 'all 0.6s ease';
877
- observer.observe(feature);
878
- });
879
- });
880
-
881
- // Add dynamic CSS for pulse animation
882
- const style = document.createElement('style');
883
- style.textContent = \`
884
- @keyframes pulse {
885
- 0%, 100% { transform: scale(1); }
886
- 50% { transform: scale(1.05); }
887
- }
888
- \`;
889
- document.head.appendChild(style);
890
- </output>
891
-
892
- I've created three artifacts for you:
893
- 1. **HTML** - The page structure with a hero section and feature cards
894
- 2. **CSS** - Beautiful styling with gradients, animations, and responsive design
895
- 3. **JavaScript** - Interactive features including smooth scrolling and scroll animations
896
-
897
- Click on each card to view and customize the code!`,
898
- timestamp: '2021-03-01T12:01:00.000Z',
899
- },
900
- ],
901
- dialogState,
902
- layout: 'DEFAULT',
903
- simulateUserPrompt: () => {},
904
- sendMessage: (msg: string) => console.log(msg),
905
- stopListening: () => {},
906
- resetTranscript: () => {},
907
- setAttachmentsMenuOpen: () => {},
908
- setSendOnEnter: () => {},
909
- };
910
-
911
- export const WithMultipleArtifactsInChatlogPanel = Template.bind({});
912
- WithMultipleArtifactsInChatlogPanel.args = {
913
- memori,
914
- tenant,
915
- sessionID,
916
- isChatlogPanel: true,
917
- history: [
918
- {
919
- text: 'Show me a React component with its styles and tests',
920
- fromUser: true,
921
- timestamp: '2021-03-01T12:00:00.000Z',
922
- },
923
- {
924
- text: `Here's a complete React component setup with TypeScript, styles, and tests:
925
-
926
- <output class="memori-artifact" data-mimetype="typescript" data-title="Button.tsx">
927
- import React from 'react';
928
- import './Button.css';
929
-
930
- interface ButtonProps {
931
- label: string;
932
- onClick?: () => void;
933
- variant?: 'primary' | 'secondary' | 'danger';
934
- disabled?: boolean;
935
- }
936
-
937
- export const Button: React.FC<ButtonProps> = ({
938
- label,
939
- onClick,
940
- variant = 'primary',
941
- disabled = false,
942
- }) => {
943
- return (
944
- <button
945
- className={\`btn btn-\${variant}\`}
946
- onClick={onClick}
947
- disabled={disabled}
948
- aria-label={label}
949
- >
950
- {label}
951
- </button>
952
- );
953
- };
954
- </output>
955
-
956
- <output class="memori-artifact" data-mimetype="css" data-title="Button.css">
957
- .btn {
958
- padding: 10px 20px;
959
- font-size: 16px;
960
- font-weight: 600;
961
- border: none;
962
- border-radius: .5rem;
963
- cursor: pointer;
964
- transition: all 0.3s ease;
965
- font-family: inherit;
966
- }
967
-
968
- .btn:disabled {
969
- opacity: 0.5;
970
- cursor: not-allowed;
971
- }
972
-
973
- .btn-primary {
974
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
975
- color: white;
976
- }
977
-
978
- .btn-primary:hover:not(:disabled) {
979
- transform: translateY(-2px);
980
- box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
981
- }
982
-
983
- .btn-secondary {
984
- background: #6c757d;
985
- color: white;
986
- }
987
-
988
- .btn-secondary:hover:not(:disabled) {
989
- background: #5a6268;
990
- }
991
-
992
- .btn-danger {
993
- background: #dc3545;
994
- color: white;
995
- }
996
-
997
- .btn-danger:hover:not(:disabled) {
998
- background: #c82333;
999
- }
1000
- </output>
1001
-
1002
- <output class="memori-artifact" data-mimetype="typescript" data-title="Button.test.tsx">
1003
- import { render, screen, fireEvent } from '@testing-library/react';
1004
- import { Button } from './Button';
1005
-
1006
- describe('Button Component', () => {
1007
- it('renders with correct label', () => {
1008
- render(<Button label="Click me" />);
1009
- expect(screen.getByText('Click me')).toBeInTheDocument();
1010
- });
1011
-
1012
- it('calls onClick handler when clicked', () => {
1013
- const handleClick = jest.fn();
1014
- render(<Button label="Click me" onClick={handleClick} />);
1015
-
1016
- fireEvent.click(screen.getByText('Click me'));
1017
- expect(handleClick).toHaveBeenCalledTimes(1);
1018
- });
1019
-
1020
- it('applies correct variant class', () => {
1021
- const { rerender } = render(<Button label="Test" variant="primary" />);
1022
- expect(screen.getByRole('button')).toHaveClass('btn-primary');
1023
-
1024
- rerender(<Button label="Test" variant="secondary" />);
1025
- expect(screen.getByRole('button')).toHaveClass('btn-secondary');
1026
-
1027
- rerender(<Button label="Test" variant="danger" />);
1028
- expect(screen.getByRole('button')).toHaveClass('btn-danger');
1029
- });
1030
-
1031
- it('is disabled when disabled prop is true', () => {
1032
- const handleClick = jest.fn();
1033
- render(<Button label="Click me" onClick={handleClick} disabled />);
1034
-
1035
- const button = screen.getByRole('button');
1036
- expect(button).toBeDisabled();
1037
-
1038
- fireEvent.click(button);
1039
- expect(handleClick).not.toHaveBeenCalled();
1040
- });
1041
-
1042
- it('has correct accessibility attributes', () => {
1043
- render(<Button label="Submit Form" />);
1044
- const button = screen.getByRole('button');
1045
- expect(button).toHaveAttribute('aria-label', 'Submit Form');
1046
- });
1047
- });
1048
- </output>
1049
-
1050
- <output class="memori-artifact" data-mimetype="markdown" data-title="Button Documentation">
1051
- # Button Component
1052
-
1053
- A reusable button component with multiple variants and full TypeScript support.
1054
-
1055
- ## Usage
1056
-
1057
- \`\`\`tsx
1058
- import { Button } from './Button';
1059
-
1060
- function App() {
1061
- return (
1062
- <Button
1063
- label="Click me"
1064
- variant="primary"
1065
- onClick={() => console.log('Clicked!')}
1066
- />
1067
- );
1068
- }
1069
- \`\`\`
1070
-
1071
- ## Props
1072
-
1073
- | Prop | Type | Default | Description |
1074
- |------|------|---------|-------------|
1075
- | label | string | required | Button text content |
1076
- | onClick | function | - | Click handler function |
1077
- | variant | 'primary' \\| 'secondary' \\| 'danger' | 'primary' | Button style variant |
1078
- | disabled | boolean | false | Disabled state |
1079
-
1080
- ## Variants
1081
-
1082
- - **primary**: Main action button with gradient background
1083
- - **secondary**: Secondary actions with gray background
1084
- - **danger**: Destructive actions with red background
1085
-
1086
- ## Accessibility
1087
-
1088
- - Uses semantic \`<button>\` element
1089
- - Includes \`aria-label\` attribute
1090
- - Keyboard accessible
1091
- - Proper disabled state handling
1092
-
1093
- ## Testing
1094
-
1095
- Run tests with:
1096
- \`\`\`bash
1097
- npm test Button.test.tsx
1098
- \`\`\`
1099
- </output>
1100
-
1101
- You now have a complete component with implementation, styles, tests, and documentation! Each artifact can be clicked to view and modify.`,
1102
- timestamp: '2021-03-01T12:01:00.000Z',
1103
- },
1104
- ],
1105
- dialogState,
1106
- layout: 'CHAT',
1107
- simulateUserPrompt: () => {},
1108
- sendMessage: (msg: string) => console.log(msg),
1109
- stopListening: () => {},
1110
- resetTranscript: () => {},
1111
- setAttachmentsMenuOpen: () => {},
1112
- setSendOnEnter: () => {},
1113
- };
1114
-
1115
- export const WithLongHTMLTable = Template.bind({});
1116
- WithLongHTMLTable.args = {
1117
- memori,
1118
- tenant,
1119
- sessionID,
1120
- history,
1121
- dialogState,
1122
- layout: 'DEFAULT',
1123
- };
1124
-
1125
- export const WithUploads = Template.bind({});
1126
- WithUploads.args = {
1127
- memori,
1128
- tenant,
1129
- sessionID,
1130
- history: [
1131
- {
1132
- text: 'Ciao! Sono qui per aiutarti. Puoi condividere con me documenti, immagini o link che vorresti che analizzi.',
1133
- timestamp: '2021-03-01T12:00:00.000Z',
1134
- },
1135
- {
1136
- text: 'Certo! Ti invio alcune immagini e documenti.',
1137
- fromUser: true,
1138
- timestamp: '2021-03-01T12:01:00.000Z',
1139
- media: [
1140
- {
1141
- mediumID: 'user-img-1',
1142
- url: 'https://picsum.photos/400/300?random=1',
1143
- mimeType: 'image/jpeg',
1144
- title: 'Screenshot del progetto',
1145
- },
1146
- {
1147
- mediumID: 'user-img-2',
1148
- url: 'https://picsum.photos/400/300?random=2',
1149
- mimeType: 'image/png',
1150
- title: 'Diagramma architettura',
1151
- },
1152
- {
1153
- mediumID: 'user-doc-1',
1154
- url: 'https://example.com/document.pdf',
1155
- mimeType: 'application/pdf',
1156
- title: 'Specifiche tecniche.pdf',
1157
- },
1158
- {
1159
- mediumID: 'user-link-1',
1160
- url: 'https://github.com/memori-ai/memori-react',
1161
- mimeType: 'text/html',
1162
- title: 'Repository GitHub',
1163
- },
1164
- ],
1165
- },
1166
- {
1167
- text: 'Perfetto! Ho analizzato i tuoi file. Ecco la mia risposta con alcuni documenti correlati.',
1168
- timestamp: '2021-03-01T12:02:00.000Z',
1169
- media: [
1170
- {
1171
- mediumID: 'agent-img-1',
1172
- url: 'https://picsum.photos/400/300?random=10',
1173
- mimeType: 'image/jpeg',
1174
- title: 'Analisi comparativa',
1175
- },
1176
- {
1177
- mediumID: 'agent-img-2',
1178
- url: 'https://picsum.photos/400/300?random=11',
1179
- mimeType: 'image/png',
1180
- title: 'Grafico risultati',
1181
- },
1182
- {
1183
- mediumID: 'agent-doc-1',
1184
- url: 'https://example.com/analysis.pdf',
1185
- mimeType: 'application/pdf',
1186
- title: 'Report analisi.pdf',
1187
- },
1188
- {
1189
- mediumID: 'agent-link-1',
1190
- url: 'https://docs.memori.ai',
1191
- mimeType: 'text/html',
1192
- title: 'Documentazione Memori',
1193
- },
1194
- {
1195
- mediumID: 'agent-link-2',
1196
- url: 'https://stackoverflow.com/questions/tagged/memori',
1197
- mimeType: 'text/html',
1198
- title: 'Domande Stack Overflow',
1199
- },
1200
- ],
1201
- },
1202
- {
1203
- text: 'Grazie! Posso inviarti anche un video tutorial.',
1204
- fromUser: true,
1205
- timestamp: '2021-03-01T12:03:00.000Z',
1206
- media: [
1207
- {
1208
- mediumID: 'user-video-1',
1209
- url: 'https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_1mb.mp4',
1210
- mimeType: 'video/mp4',
1211
- title: 'Tutorial.mp4',
1212
- },
1213
- {
1214
- mediumID: 'user-audio-1',
1215
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav',
1216
- mimeType: 'audio/wav',
1217
- title: 'Notifica.wav',
1218
- },
1219
- ],
1220
- },
1221
- {
1222
- text: 'Eccellente! Ecco la mia risposta con un modello 3D e alcuni snippet di codice.',
1223
- timestamp: '2021-03-01T12:04:00.000Z',
1224
- media: [
1225
- {
1226
- mediumID: 'agent-3d-1',
1227
- url: 'https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb',
1228
- mimeType: 'model/gltf-binary',
1229
- title: 'Modello 3D Robot',
1230
- },
1231
- {
1232
- mediumID: 'agent-code-1',
1233
- content: `function analyzeData(data) {
1234
- const results = data.map(item => ({
1235
- id: item.id,
1236
- score: calculateScore(item),
1237
- category: classifyItem(item)
1238
- }));
1239
-
1240
- return results.filter(result => result.score > 0.8);
1241
- }`,
1242
- mimeType: 'text/javascript',
1243
- title: 'analisi-dati.js',
1244
- properties: {
1245
- executable: 'true',
1246
- },
1247
- },
1248
- {
1249
- mediumID: 'agent-code-2',
1250
- content: `# Analisi dei dati
1251
- import pandas as pd
1252
- import numpy as np
1253
-
1254
- def process_data(df):
1255
- # Pulizia dati
1256
- df = df.dropna()
1257
-
1258
- # Calcolo statistiche
1259
- stats = df.describe()
1260
-
1261
- return stats`,
1262
- mimeType: 'text/x-python',
1263
- title: 'process_data.py',
1264
- },
1265
- ],
1266
- },
1267
- ],
1268
- dialogState,
1269
- layout: 'DEFAULT',
1270
- simulateUserPrompt: () => {},
1271
- sendMessage: (msg: string) => console.log(msg),
1272
- stopListening: () => {},
1273
- resetTranscript: () => {},
1274
- setAttachmentsMenuOpen: () => {},
1275
- setSendOnEnter: () => {},
1276
- };
1277
-
1278
- export const WithTyping = Template.bind({});
1279
- WithTyping.args = {
1280
- memori,
1281
- tenant,
1282
- sessionID,
1283
- history,
1284
- dialogState: {
1285
- state: 'X2a',
1286
- },
1287
- layout: 'DEFAULT',
1288
- memoriTyping: true,
1289
- typingText: 'Sto pensando...',
1290
- };
1291
-
1292
- export const WithAllMediaTypes = Template.bind({});
1293
- WithAllMediaTypes.args = {
1294
- memori,
1295
- tenant,
1296
- sessionID,
1297
- history: [
1298
- {
1299
- text: 'Ciao! Sono qui per aiutarti. Posso gestire molti tipi di file e contenuti multimediali. Dimmi cosa ti serve!',
1300
- timestamp: '2021-03-01T12:00:00.000Z',
1301
- },
1302
- {
1303
- text: 'Perfetto! Ti mostro alcuni esempi di file che posso gestire.',
1304
- fromUser: true,
1305
- timestamp: '2021-03-01T12:01:00.000Z',
1306
- media: [
1307
- {
1308
- mediumID: 'user-img-1',
1309
- url: 'https://picsum.photos/400/300?random=1',
1310
- mimeType: 'image/jpeg',
1311
- title: 'Screenshot del progetto',
1312
- },
1313
- {
1314
- mediumID: 'user-img-2',
1315
- url: 'https://picsum.photos/400/300?random=2',
1316
- mimeType: 'image/png',
1317
- title: 'Diagramma architettura',
1318
- },
1319
- {
1320
- mediumID: 'user-img-3',
1321
- url: 'https://picsum.photos/400/300?random=3',
1322
- mimeType: 'image/gif',
1323
- title: 'Animazione.gif',
1324
- },
1325
- {
1326
- mediumID: 'user-doc-1',
1327
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
1328
- mimeType: 'application/pdf',
1329
- title: 'Specifiche tecniche.pdf',
1330
- },
1331
- {
1332
- mediumID: 'user-doc-2',
1333
- url: 'https://file-examples.com/storage/feaade38c1651bd01984236/2017/10/file-sample_150kB.doc',
1334
- mimeType: 'application/msword',
1335
- title: 'Documento Word.doc',
1336
- },
1337
- {
1338
- mediumID: 'user-doc-3',
1339
- url: 'https://file-examples.com/storage/feaade38c1651bd01984236/2017/10/file_example_XLS_10.xls',
1340
- mimeType: 'application/vnd.ms-excel',
1341
- title: 'Foglio Excel.xls',
1342
- },
1343
- {
1344
- mediumID: 'user-link-1',
1345
- url: 'https://github.com/memori-ai/memori-react',
1346
- mimeType: 'text/html',
1347
- title: 'Repository GitHub',
1348
- },
1349
- {
1350
- mediumID: 'user-link-2',
1351
- url: 'https://stackoverflow.com/questions/tagged/react',
1352
- mimeType: 'text/html',
1353
- title: 'Stack Overflow React',
1354
- },
1355
- {
1356
- mediumID: 'user-video-1',
1357
- url: 'https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_1mb.mp4',
1358
- mimeType: 'video/mp4',
1359
- title: 'Tutorial.mp4',
1360
- },
1361
- {
1362
- mediumID: 'user-audio-1',
1363
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav',
1364
- mimeType: 'audio/wav',
1365
- title: 'Notifica.wav',
1366
- },
1367
- ],
1368
- },
1369
- {
1370
- text: 'Eccellente! Ecco la mia risposta con diversi tipi di contenuti multimediali.',
1371
- timestamp: '2021-03-01T12:02:00.000Z',
1372
- media: [
1373
- {
1374
- mediumID: 'agent-img-1',
1375
- url: 'https://picsum.photos/400/300?random=10',
1376
- mimeType: 'image/jpeg',
1377
- title: 'Analisi comparativa',
1378
- },
1379
- {
1380
- mediumID: 'agent-img-2',
1381
- url: 'https://picsum.photos/400/300?random=11',
1382
- mimeType: 'image/png',
1383
- title: 'Grafico risultati',
1384
- },
1385
- {
1386
- mediumID: 'agent-doc-1',
1387
- url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
1388
- mimeType: 'application/pdf',
1389
- title: 'Report analisi.pdf',
1390
- },
1391
- {
1392
- mediumID: 'agent-link-1',
1393
- url: 'https://docs.memori.ai',
1394
- mimeType: 'text/html',
1395
- title: 'Documentazione Memori',
1396
- },
1397
- {
1398
- mediumID: 'agent-link-2',
1399
- url: 'https://developer.mozilla.org/en-US/docs/Web/API',
1400
- mimeType: 'text/html',
1401
- title: 'MDN Web Docs',
1402
- },
1403
- {
1404
- mediumID: 'agent-3d-1',
1405
- url: 'https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb',
1406
- mimeType: 'model/gltf-binary',
1407
- title: 'Modello 3D Robot',
1408
- },
1409
- {
1410
- mediumID: 'agent-code-1',
1411
- content: `function analyzeData(data) {
1412
- const results = data.map(item => ({
1413
- id: item.id,
1414
- score: calculateScore(item),
1415
- category: classifyItem(item)
1416
- }));
1417
-
1418
- return results.filter(result => result.score > 0.8);
1419
- }
1420
-
1421
- function calculateScore(item) {
1422
- // Complex scoring algorithm
1423
- let score = 0;
1424
- if (item.quality > 0.7) score += 0.3;
1425
- if (item.relevance > 0.8) score += 0.4;
1426
- if (item.freshness > 0.6) score += 0.3;
1427
- return score;
1428
- }`,
1429
- mimeType: 'text/javascript',
1430
- title: 'analisi-dati.js',
1431
- },
1432
- {
1433
- mediumID: 'agent-code-2',
1434
- content: `# Analisi dei dati con Python
1435
- import pandas as pd
1436
- import numpy as np
1437
- import matplotlib.pyplot as plt
1438
-
1439
- def process_data(df):
1440
- """
1441
- Processa i dati e genera statistiche
1442
- """
1443
- # Pulizia dati
1444
- df = df.dropna()
1445
-
1446
- # Calcolo statistiche
1447
- stats = df.describe()
1448
-
1449
- # Visualizzazione
1450
- plt.figure(figsize=(10, 6))
1451
- df.hist(bins=20)
1452
- plt.title('Distribuzione dei dati')
1453
- plt.show()
1454
-
1455
- return stats
1456
-
1457
- # Esempio di utilizzo
1458
- if __name__ == "__main__":
1459
- data = pd.read_csv('data.csv')
1460
- results = process_data(data)
1461
- print(results)`,
1462
- mimeType: 'text/x-python',
1463
- title: 'process_data.py',
1464
- },
1465
- {
1466
- mediumID: 'agent-code-3',
1467
- content: `/* Stili CSS per il componente */
1468
- .media-widget {
1469
- display: grid;
1470
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1471
- gap: 1rem;
1472
- padding: 1rem;
1473
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1474
- border-radius: .5rem;
1475
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
1476
- }
1477
-
1478
- .media-item {
1479
- background: white;
1480
- border-radius: .5rem;
1481
- overflow: hidden;
1482
- transition: transform 0.2s ease;
1483
- }
1484
-
1485
- .media-item:hover {
1486
- transform: translateY(-2px);
1487
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
1488
- }
1489
-
1490
- .media-item img {
1491
- width: 100%;
1492
- height: 150px;
1493
- object-fit: cover;
1494
- }
1495
-
1496
- .media-item-content {
1497
- padding: 1rem;
1498
- }
1499
-
1500
- .media-item-title {
1501
- font-weight: 600;
1502
- margin-bottom: 0.5rem;
1503
- color: #333;
1504
- }`,
1505
- mimeType: 'text/css',
1506
- title: 'media-widget.css',
1507
- },
1508
- {
1509
- mediumID: 'agent-code-4',
1510
- content: `# Configurazione del progetto
1511
- name = "memori-react"
1512
- version = "1.0.0"
1513
- description = "React component library for Memori AI"
1514
-
1515
- [dependencies]
1516
- react = "^18.0.0"
1517
- typescript = "^4.9.0"
1518
- @memori.ai/memori-api-client = "^1.0.0"
1519
-
1520
- [dev-dependencies]
1521
- @types/react = "^18.0.0"
1522
- jest = "^29.0.0"
1523
- storybook = "^6.5.0"
1524
-
1525
- [scripts]
1526
- build = "tsc"
1527
- test = "jest"
1528
- storybook = "start-storybook -p 6006"
1529
- build-storybook = "build-storybook"`,
1530
- mimeType: 'text/x-toml',
1531
- title: 'Cargo.toml',
1532
- },
1533
- ],
1534
- },
1535
- {
1536
- fromUser: true,
1537
- timestamp: '2021-03-01T12:04:00.000Z',
1538
- text: 'E anche file di configurazione e dati strutturati:\n\n<document_attachment filename="database.sql" type="text/sql">-- Schema del database\nCREATE TABLE users (\n id SERIAL PRIMARY KEY,\n username VARCHAR(50) UNIQUE NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE TABLE posts (\n id SERIAL PRIMARY KEY,\n user_id INTEGER REFERENCES users(id),\n title VARCHAR(200) NOT NULL,\n content TEXT,\n published BOOLEAN DEFAULT FALSE,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Indici per performance\nCREATE INDEX idx_posts_user_id ON posts(user_id);\nCREATE INDEX idx_posts_published ON posts(published);</document_attachment>\n\n<document_attachment filename="data.xml" type="text/xml"><?xml version="1.0" encoding="UTF-8"?>\n<root>\n <users>\n <user id="1">\n <name>Mario Rossi</name>\n <email>mario@example.com</email>\n <role>admin</role>\n </user>\n <user id="2">\n <name>Giulia Bianchi</name>\n <email>giulia@example.com</email>\n <role>user</role>\n </user>\n </users>\n <settings>\n <theme>dark</theme>\n <language>it</language>\n <notifications>true</notifications>\n </settings>\n</root></document_attachment>',
1539
- media: [
1540
- {
1541
- mediumID: 'long-2',
1542
- mimeType: 'text/javascript',
1543
- title: 'Long JSON',
1544
- content: `{
1545
- "id": 1,
1546
- "title": "Ciao",
1547
- "description": "I'm a test!",
1548
- "refs": [
1549
- {
1550
- "id": 1,
1551
- "tag": "TEST"
1552
- }
1553
- ]
1554
- }
1555
- `,
1556
- },
1557
- {
1558
- mediumID: 'long-3',
1559
- mimeType: 'text/plain',
1560
- title: 'Long Text',
1561
- content: `{
1562
- "id": 1,
1563
- "title": "Ciao",
1564
- "description": "I'm a test!",
1565
- "refs": [
1566
- {
1567
- "id": 1,
1568
- "tag": "TEST"
1569
- }
1570
- ]
1571
- }`,
1572
- },
1573
- ],
1574
- },
1575
- {
1576
- text: "Perfetto! Come puoi vedere, posso gestire molti tipi di contenuti:\n\n• **Immagini**: JPEG, PNG, GIF\n• **Documenti**: PDF, Word, Excel\n• **Link**: Siti web con preview\n• **Video**: MP4, AVI, QuickTime\n• **Audio**: MP3, WAV\n• **Modelli 3D**: GLB, GLTF\n• **Codice**: JavaScript, Python, CSS, SQL\n• **Dati**: JSON, XML, Markdown\n\nTutti questi contenuti vengono visualizzati in modo appropriato e possono essere interagiti dall'utente!",
1577
- timestamp: '2021-03-01T12:05:00.000Z',
1578
- media: [
1579
- {
1580
- mediumID: 'agent-final-img',
1581
- url: 'https://picsum.photos/400/300?random=99',
1582
- mimeType: 'image/jpeg',
1583
- title: 'Riepilogo funzionalità',
1584
- },
1585
- {
1586
- mediumID: 'agent-final-link',
1587
- url: 'https://github.com/memori-ai/memori-react/blob/main/README.md',
1588
- mimeType: 'text/html',
1589
- title: 'Documentazione completa',
1590
- },
1591
- {
1592
- mediumID: 'long-2',
1593
- mimeType: 'text/javascript',
1594
- title: 'Long JSON',
1595
- content: `{
1596
- "id": 1,
1597
- "title": "Ciao",
1598
- "description": "I'm a test!",
1599
- "refs": [
1600
- {
1601
- "id": 1,
1602
- "tag": "TEST"
1603
- }
1604
- ]
1605
- }
1606
- `,
1607
- },
1608
- {
1609
- mediumID: 'long-3',
1610
- mimeType: 'text/plain',
1611
- title: 'Long Text',
1612
- content: `{
1613
- "id": 1,
1614
- "title": "Ciao",
1615
- "description": "I'm a test!",
1616
- "refs": [
1617
- {
1618
- "id": 1,
1619
- "tag": "TEST"
1620
- }
1621
- ]
1622
- }`,
1623
- },
1624
- ],
1625
- },
1626
- ],
1627
- dialogState,
1628
- layout: 'DEFAULT',
1629
- simulateUserPrompt: () => {},
1630
- sendMessage: (msg: string) => console.log(msg),
1631
- stopListening: () => {},
1632
- resetTranscript: () => {},
1633
- setAttachmentsMenuOpen: () => {},
1634
- setSendOnEnter: () => {},
1635
- };
1636
-
1637
- export const WithBase64Image = Template.bind({});
1638
- WithBase64Image.args = {
1639
- memori,
1640
- tenant,
1641
- sessionID,
1642
- history: [
1643
- {
1644
- text: "Ciao, io sono Aisuru, c'è qualcosa che vorresti chiedermi?",
1645
- timestamp: '2025-11-07T14:28:59.662663Z',
1646
- },
1647
- {
1648
- text: 'Ciao! Sei attivo?',
1649
- fromUser: true,
1650
- timestamp: '2025-11-07T14:28:59.778643Z',
1651
- },
1652
- {
1653
- text: "<think>The user is greeting me in Italian and asking if I'm active/available (\"Sei attivo?\"). This is a simple greeting and question about my availability.\n\nI should respond in Italian in a friendly way, confirming that I'm active and available to help. I'll keep it brief and welcoming since this is just an initial exchange.\n\nI need to stay in character as Aisuru and respond naturally in Italian.</think>Ciao! Sì, sono attivo e disponibile! \n\nCome posso aiutarti oggi? Se hai domande o se c'è qualcosa di cui vorresti parlare, sono qui per te. 😊",
1654
- timestamp: '2025-11-07T14:29:05.936728Z',
1655
- },
1656
- {
1657
- text: 'Ho aggiunto il contenuto.',
1658
- timestamp: '2025-11-07T14:29:27.322888Z',
1659
- },
1660
- {
1661
- text: 'Cosa vedi?',
1662
- fromUser: true,
1663
- timestamp: '2025-11-07T14:29:27.635535Z',
1664
- media: [
1665
- {
1666
- content:
1667
- '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',
1668
- mimeType: 'image/jpeg',
1669
- title: 'User uploaded image',
1670
- properties: {},
1671
- },
1672
- ],
1673
- },
1674
- {
1675
- text: '<think>The user is asking "Cosa vedi?" which means "What do you see?" in Italian, and they\'ve shared an image.\n\nLooking at the image, I can see a panda bear (appears to be a young panda) climbing on a tree. The panda has the characteristic black and white coloring - white face and body with black ears, eye patches, and limbs. It\'s holding onto tree branches in what looks like a natural or zoo habitat setting, with green foliage in the background.\n\nI should describe what I see in Italian, staying in character as Aisuru, and be descriptive but natural in my response.</think>Che tenerezza! 🐼\n\nVedo un adorabile cucciolo di panda gigante che si arrampica su un albero! Il piccolo panda ha il suo caratteristico manto bianco e nero - la faccina bianca con le tipiche macchie nere intorno agli occhi, le orecchie nere, e le zampette nere che usa per aggrapparsi ai rami dell\'albero.\n\nSembra proprio che si stia divertendo mentre si arrampica, tenendosi stretto ai rami con le sue zampe. Lo sfondo è tutto verde con la vegetazione sfocata, che fa risaltare ancora di più questo tenero cucciolo.\n\nI panda sono davvero creature meravigliose! Nonostante il loro aspetto dolce e coccoloso, sono ottimi arrampicatori e passano molto tempo sugli alberi, soprattutto quando sono giovani.\n\nTi piacciono i panda? Questa foto è davvero bellissima! 😊',
1676
- timestamp: '2025-11-07T14:29:55.44797Z',
1677
- },
1678
- ],
1679
- dialogState,
1680
- layout: 'DEFAULT',
1681
- simulateUserPrompt: () => {},
1682
- sendMessage: (msg: string) => console.log(msg),
1683
- stopListening: () => {},
1684
- resetTranscript: () => {},
1685
- setAttachmentsMenuOpen: () => {},
1686
- setSendOnEnter: () => {},
1687
- };