@memori.ai/memori-react 8.45.1 → 8.45.4

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