@memori.ai/memori-react 8.38.4 → 9.0.0-alpha.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 (921) hide show
  1. package/CHANGELOG.md +1836 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +35 -12
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.d.ts +0 -1
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +22 -10
  5. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  6. package/dist/components/Auth/Auth.css +13 -9
  7. package/dist/components/Auth/Auth.d.ts +0 -1
  8. package/dist/components/Auth/Auth.js +14 -10
  9. package/dist/components/Auth/Auth.js.map +1 -1
  10. package/dist/components/Avatar/Avatar.css +2 -2
  11. package/dist/components/Avatar/Avatar.js +7 -7
  12. package/dist/components/Avatar/Avatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +0 -1
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +1 -1
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +0 -1
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +0 -1
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -2
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js +1 -1
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.js.map +1 -1
  23. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -1
  24. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js.map +1 -1
  25. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  26. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +0 -1
  27. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +1 -1
  28. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  29. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +0 -1
  30. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js +2 -3
  31. package/dist/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -1
  32. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +21 -21
  33. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +0 -1
  34. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +8 -10
  35. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -1
  36. package/dist/components/Avatar/AvatarView/index.js +1 -1
  37. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  38. package/dist/components/Avatar/AvatarView/utils/hideHands.js.map +1 -1
  39. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js +1 -2
  40. package/dist/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  41. package/dist/components/Avatar/AvatarView/utils/useHeadMovement.js +1 -1
  42. package/dist/components/Avatar/AvatarView/utils/useHeadMovement.js.map +1 -1
  43. package/dist/components/Avatar/AvatarView/utils/useLoadingMorphAnim.js +1 -1
  44. package/dist/components/Avatar/AvatarView/utils/useLoadingMorphAnim.js.map +1 -1
  45. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js +1 -2
  46. package/dist/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -1
  47. package/dist/components/Avatar/AvatarView/utils/useSmile.js +1 -1
  48. package/dist/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  49. package/dist/components/Avatar/AvatarView/utils/utils.js.map +1 -1
  50. package/dist/components/Blob/Blob.css +14 -12
  51. package/dist/components/Blob/Blob.d.ts +0 -1
  52. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +4 -4
  53. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.d.ts +0 -1
  54. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.js +4 -5
  55. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.js.map +1 -1
  56. package/dist/components/ChangeMode/ChangeMode.css +4 -2
  57. package/dist/components/ChangeMode/ChangeMode.js +8 -3
  58. package/dist/components/ChangeMode/ChangeMode.js.map +1 -1
  59. package/dist/components/Chat/Chat.css +114 -38
  60. package/dist/components/Chat/Chat.js +39 -53
  61. package/dist/components/Chat/Chat.js.map +1 -1
  62. package/dist/components/ChatBubble/ChatBubble.css +206 -68
  63. package/dist/components/ChatBubble/ChatBubble.d.ts +5 -0
  64. package/dist/components/ChatBubble/ChatBubble.js +223 -164
  65. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  66. package/dist/components/ChatHistoryDrawer/ChatHistory.css +417 -156
  67. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +0 -1
  68. package/dist/components/ChatHistoryDrawer/ChatHistory.js +252 -151
  69. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  70. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +12 -3
  71. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +18 -7
  72. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  73. package/dist/components/ChatInputs/ChatInputs.css +68 -51
  74. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  75. package/dist/components/ChatInputs/ChatInputs.js +51 -28
  76. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  77. package/dist/components/ChatTextArea/ChatTextArea.css +38 -12
  78. package/dist/components/ChatTextArea/ChatTextArea.js +1 -1
  79. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  80. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +5 -5
  81. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +0 -1
  82. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +8 -11
  83. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  84. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +129 -84
  85. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +5 -4
  86. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  87. package/dist/components/ContentPreviewModal/index.js +2 -4
  88. package/dist/components/ContentPreviewModal/index.js.map +1 -1
  89. package/dist/components/CustomGLBModelViewer/ModelViewer.d.ts +0 -1
  90. package/dist/components/DateSelector/DateSelector.css +22 -24
  91. package/dist/components/DateSelector/DateSelector.d.ts +0 -1
  92. package/dist/components/DateSelector/DateSelector.js +2 -2
  93. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  94. package/dist/components/DrawerFooter/DrawerFooter.js +1 -1
  95. package/dist/components/DrawerFooter/DrawerFooter.js.map +1 -1
  96. package/dist/components/ErrorBoundary/ErrorBoundary.js +3 -4
  97. package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
  98. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +6 -9
  99. package/dist/components/ExpertsDrawer/ExpertsDrawer.d.ts +0 -1
  100. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +2 -3
  101. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  102. package/dist/components/ExportHistoryButton/ExportHistoryButton.css +3 -3
  103. package/dist/components/FeedbackButtons/FeedbackButtons.css +17 -15
  104. package/dist/components/FeedbackButtons/FeedbackButtons.d.ts +0 -1
  105. package/dist/components/FeedbackButtons/FeedbackButtons.js +32 -12
  106. package/dist/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  107. package/dist/components/FilePreview/FilePreview.css +56 -40
  108. package/dist/components/FilePreview/FilePreview.d.ts +0 -1
  109. package/dist/components/FilePreview/FilePreview.js +11 -12
  110. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  111. package/dist/components/Header/ChatConsumptionDropdown.d.ts +10 -2
  112. package/dist/components/Header/ChatConsumptionDropdown.js +36 -10
  113. package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
  114. package/dist/components/Header/Header.css +525 -62
  115. package/dist/components/Header/Header.d.ts +7 -1
  116. package/dist/components/Header/Header.js +357 -69
  117. package/dist/components/Header/Header.js.map +1 -1
  118. package/dist/components/KnownFacts/KnownFacts.css +52 -13
  119. package/dist/components/KnownFacts/KnownFacts.d.ts +2 -2
  120. package/dist/components/KnownFacts/KnownFacts.js +183 -128
  121. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  122. package/dist/components/LoginDrawer/LoginDrawer.css +377 -252
  123. package/dist/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  124. package/dist/components/LoginDrawer/LoginDrawer.js +140 -32
  125. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  126. package/dist/components/MediaWidget/DocumentCard.js +1 -2
  127. package/dist/components/MediaWidget/DocumentCard.js.map +1 -1
  128. package/dist/components/MediaWidget/MediaItemWidget.css +222 -176
  129. package/dist/components/MediaWidget/MediaItemWidget.js +23 -26
  130. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  131. package/dist/components/MediaWidget/MediaItemWidget.types.d.ts +0 -1
  132. package/dist/components/MediaWidget/MediaItemWidget.utils.js +11 -11
  133. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  134. package/dist/components/MediaWidget/MediaPreviewModal.d.ts +1 -1
  135. package/dist/components/MediaWidget/MediaPreviewModal.js +2 -3
  136. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  137. package/dist/components/MediaWidget/MediaWidget.css +5 -5
  138. package/dist/components/MediaWidget/MediaWidget.js +3 -4
  139. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  140. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +83 -87
  141. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +4 -9
  142. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  143. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +25 -28
  144. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  145. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +5 -8
  146. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  147. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js +8 -7
  148. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js.map +1 -1
  149. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +287 -277
  150. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js +5 -5
  151. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js.map +1 -1
  152. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +117 -142
  153. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +47 -45
  154. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  155. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +4 -134
  156. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +10 -16
  157. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  158. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +196 -166
  159. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +41 -29
  160. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  161. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +204 -205
  162. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  163. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +4 -1
  164. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +5 -1
  165. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  166. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +1 -0
  167. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +15 -4
  168. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  169. package/dist/components/MemoriWidget/MemoriWidget.css +16 -71
  170. package/dist/components/MemoriWidget/MemoriWidget.d.ts +16 -10
  171. package/dist/components/MemoriWidget/MemoriWidget.js +198 -105
  172. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  173. package/dist/components/MicrophoneButton/MicrophoneButton.css +25 -5
  174. package/dist/components/MicrophoneButton/MicrophoneButton.d.ts +2 -2
  175. package/dist/components/MicrophoneButton/MicrophoneButton.js +16 -13
  176. package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  177. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +48 -4
  178. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +5 -1
  179. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +177 -57
  180. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  181. package/dist/components/PositionPopover/PositionPopover.js +2 -1
  182. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  183. package/dist/components/PoweredBy/PoweredBy.css +29 -27
  184. package/dist/components/PoweredBy/PoweredBy.d.ts +1 -2
  185. package/dist/components/PoweredBy/PoweredBy.js +5 -7
  186. package/dist/components/PoweredBy/PoweredBy.js.map +1 -1
  187. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  188. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.js +3 -9
  189. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.js.map +1 -1
  190. package/dist/components/SettingsDrawer/SettingsDrawer.css +2 -2
  191. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +0 -1
  192. package/dist/components/SettingsDrawer/SettingsDrawer.js +19 -17
  193. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  194. package/dist/components/ShareButton/ShareButton.css +254 -8
  195. package/dist/components/ShareButton/ShareButton.d.ts +6 -1
  196. package/dist/components/ShareButton/ShareButton.js +199 -41
  197. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  198. package/dist/components/Snippet/Snippet.css +53 -17
  199. package/dist/components/Snippet/Snippet.d.ts +0 -1
  200. package/dist/components/Snippet/Snippet.js +3 -3
  201. package/dist/components/Snippet/Snippet.js.map +1 -1
  202. package/dist/components/StartPanel/StartPanel.css +733 -110
  203. package/dist/components/StartPanel/StartPanel.d.ts +5 -1
  204. package/dist/components/StartPanel/StartPanel.js +152 -64
  205. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  206. package/dist/components/Typing/Typing.d.ts +8 -2
  207. package/dist/components/Typing/Typing.js +41 -2
  208. package/dist/components/Typing/Typing.js.map +1 -1
  209. package/dist/components/UploadButton/UploadButton.css +357 -326
  210. package/dist/components/UploadButton/UploadButton.d.ts +1 -0
  211. package/dist/components/UploadButton/UploadButton.js +60 -27
  212. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  213. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +0 -2
  214. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +13 -27
  215. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  216. package/dist/components/UploadButton/UploadImages/UploadImages.js +22 -16
  217. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  218. package/dist/components/VenueWidget/VenueWidget.css +101 -41
  219. package/dist/components/VenueWidget/VenueWidget.d.ts +19 -1
  220. package/dist/components/VenueWidget/VenueWidget.js +140 -59
  221. package/dist/components/VenueWidget/VenueWidget.js.map +1 -1
  222. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +20 -20
  223. package/dist/components/WhyThisAnswer/WhyThisAnswer.d.ts +0 -1
  224. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +11 -8
  225. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  226. package/dist/components/icons/GasStation.d.ts +2 -3
  227. package/dist/components/layouts/Chat.js +194 -4
  228. package/dist/components/layouts/Chat.js.map +1 -1
  229. package/dist/components/layouts/FullPage.js +186 -4
  230. package/dist/components/layouts/FullPage.js.map +1 -1
  231. package/dist/components/layouts/HiddenChat.js +289 -12
  232. package/dist/components/layouts/HiddenChat.js.map +1 -1
  233. package/dist/components/layouts/Totem.js +2 -3
  234. package/dist/components/layouts/Totem.js.map +1 -1
  235. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +1 -1
  236. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  237. package/dist/components/layouts/ZoomedFullBody.js +185 -3
  238. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  239. package/dist/components/layouts/chat.css +273 -71
  240. package/dist/components/layouts/fullpage.css +25 -8
  241. package/dist/components/layouts/hidden-chat.css +329 -84
  242. package/dist/components/layouts/totem.css +23 -15
  243. package/dist/components/layouts/zoomed-full-body.css +144 -6
  244. package/dist/components/ui/Tooltip.js +3 -3
  245. package/dist/components/ui/Tooltip.js.map +1 -1
  246. package/dist/context/visemeContext.js.map +1 -1
  247. package/dist/helpers/chatPdfExport.js +15 -12
  248. package/dist/helpers/chatPdfExport.js.map +1 -1
  249. package/dist/helpers/configuration.js.map +1 -1
  250. package/dist/helpers/constants.js +25 -25
  251. package/dist/helpers/constants.js.map +1 -1
  252. package/dist/helpers/credits.d.ts +3 -3
  253. package/dist/helpers/credits.js.map +1 -1
  254. package/dist/helpers/error.js.map +1 -1
  255. package/dist/helpers/imageCompression.js.map +1 -1
  256. package/dist/helpers/llmUsage.js.map +1 -1
  257. package/dist/helpers/markedExtendedTables.js +1 -1
  258. package/dist/helpers/markedExtendedTables.js.map +1 -1
  259. package/dist/helpers/media.js.map +1 -1
  260. package/dist/helpers/message.js.map +1 -1
  261. package/dist/helpers/piiDetection.js +1 -2
  262. package/dist/helpers/piiDetection.js.map +1 -1
  263. package/dist/helpers/sanitizer.js +1 -2
  264. package/dist/helpers/sanitizer.js.map +1 -1
  265. package/dist/helpers/statistics.js.map +1 -1
  266. package/dist/helpers/stt/useSTT.d.ts +0 -1
  267. package/dist/helpers/stt/useSTT.js +1 -2
  268. package/dist/helpers/stt/useSTT.js.map +1 -1
  269. package/dist/helpers/tts/ttsVoiceUtility.js +8 -8
  270. package/dist/helpers/tts/ttsVoiceUtility.js.map +1 -1
  271. package/dist/helpers/tts/useTTS.d.ts +0 -1
  272. package/dist/helpers/tts/useTTS.js +1 -2
  273. package/dist/helpers/tts/useTTS.js.map +1 -1
  274. package/dist/helpers/utils.d.ts +2 -1
  275. package/dist/helpers/utils.js +8 -7
  276. package/dist/helpers/utils.js.map +1 -1
  277. package/dist/i18n.js +2 -0
  278. package/dist/i18n.js.map +1 -1
  279. package/dist/index.js +17 -17
  280. package/dist/index.js.map +1 -1
  281. package/dist/locales/de.json +67 -6
  282. package/dist/locales/en.json +67 -6
  283. package/dist/locales/es.json +67 -7
  284. package/dist/locales/fr.json +68 -7
  285. package/dist/locales/it.json +68 -7
  286. package/dist/styles.css +87 -52
  287. package/dist/version.d.ts +1 -1
  288. package/dist/version.js +1 -1
  289. package/dist/version.js.map +1 -1
  290. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +35 -12
  291. package/esm/components/AgeVerificationModal/AgeVerificationModal.d.ts +0 -1
  292. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +22 -10
  293. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  294. package/esm/components/Auth/Auth.css +13 -9
  295. package/esm/components/Auth/Auth.d.ts +0 -1
  296. package/esm/components/Auth/Auth.js +14 -9
  297. package/esm/components/Auth/Auth.js.map +1 -1
  298. package/esm/components/Avatar/Avatar.css +2 -2
  299. package/esm/components/Avatar/Avatar.js +7 -7
  300. package/esm/components/Avatar/Avatar.js.map +1 -1
  301. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +0 -1
  302. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +1 -1
  303. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
  304. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +0 -1
  305. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  306. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +0 -1
  307. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  308. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -1
  309. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.js.map +1 -1
  310. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  311. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +0 -1
  312. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  313. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.d.ts +0 -1
  314. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js +1 -1
  315. package/esm/components/Avatar/AvatarView/AvatarComponent/components/loader.js.map +1 -1
  316. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +21 -21
  317. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +0 -1
  318. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +8 -9
  319. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -1
  320. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  321. package/esm/components/Avatar/AvatarView/utils/hideHands.js.map +1 -1
  322. package/esm/components/Avatar/AvatarView/utils/useEyeBlink.js.map +1 -1
  323. package/esm/components/Avatar/AvatarView/utils/useHeadMovement.js.map +1 -1
  324. package/esm/components/Avatar/AvatarView/utils/useLoadingMorphAnim.js.map +1 -1
  325. package/esm/components/Avatar/AvatarView/utils/useMouthAnimation.js.map +1 -1
  326. package/esm/components/Avatar/AvatarView/utils/useSmile.js.map +1 -1
  327. package/esm/components/Avatar/AvatarView/utils/utils.js.map +1 -1
  328. package/esm/components/Blob/Blob.css +14 -12
  329. package/esm/components/Blob/Blob.d.ts +0 -1
  330. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +4 -4
  331. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.d.ts +0 -1
  332. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.js +3 -3
  333. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.js.map +1 -1
  334. package/esm/components/ChangeMode/ChangeMode.css +4 -2
  335. package/esm/components/ChangeMode/ChangeMode.js +8 -3
  336. package/esm/components/ChangeMode/ChangeMode.js.map +1 -1
  337. package/esm/components/Chat/Chat.css +114 -38
  338. package/esm/components/Chat/Chat.js +35 -49
  339. package/esm/components/Chat/Chat.js.map +1 -1
  340. package/esm/components/ChatBubble/ChatBubble.css +206 -68
  341. package/esm/components/ChatBubble/ChatBubble.d.ts +5 -0
  342. package/esm/components/ChatBubble/ChatBubble.js +223 -164
  343. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  344. package/esm/components/ChatHistoryDrawer/ChatHistory.css +417 -156
  345. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +0 -1
  346. package/esm/components/ChatHistoryDrawer/ChatHistory.js +252 -151
  347. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  348. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +12 -3
  349. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +18 -7
  350. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  351. package/esm/components/ChatInputs/ChatInputs.css +68 -51
  352. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  353. package/esm/components/ChatInputs/ChatInputs.js +51 -28
  354. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  355. package/esm/components/ChatTextArea/ChatTextArea.css +38 -12
  356. package/esm/components/ChatTextArea/ChatTextArea.js +1 -1
  357. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  358. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +5 -5
  359. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.d.ts +0 -1
  360. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +5 -7
  361. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  362. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +129 -84
  363. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +5 -4
  364. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  365. package/esm/components/CustomGLBModelViewer/ModelViewer.d.ts +0 -1
  366. package/esm/components/DateSelector/DateSelector.css +22 -24
  367. package/esm/components/DateSelector/DateSelector.d.ts +0 -1
  368. package/esm/components/DateSelector/DateSelector.js +2 -2
  369. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  370. package/esm/components/DrawerFooter/DrawerFooter.js +1 -1
  371. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -1
  372. package/esm/components/ErrorBoundary/ErrorBoundary.js +3 -3
  373. package/esm/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
  374. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +6 -9
  375. package/esm/components/ExpertsDrawer/ExpertsDrawer.d.ts +0 -1
  376. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -1
  377. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  378. package/esm/components/ExportHistoryButton/ExportHistoryButton.css +3 -3
  379. package/esm/components/FeedbackButtons/FeedbackButtons.css +17 -15
  380. package/esm/components/FeedbackButtons/FeedbackButtons.d.ts +0 -1
  381. package/esm/components/FeedbackButtons/FeedbackButtons.js +32 -11
  382. package/esm/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  383. package/esm/components/FilePreview/FilePreview.css +56 -40
  384. package/esm/components/FilePreview/FilePreview.d.ts +0 -1
  385. package/esm/components/FilePreview/FilePreview.js +11 -12
  386. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  387. package/esm/components/Header/ChatConsumptionDropdown.d.ts +10 -2
  388. package/esm/components/Header/ChatConsumptionDropdown.js +34 -10
  389. package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
  390. package/esm/components/Header/Header.css +525 -62
  391. package/esm/components/Header/Header.d.ts +7 -1
  392. package/esm/components/Header/Header.js +359 -71
  393. package/esm/components/Header/Header.js.map +1 -1
  394. package/esm/components/KnownFacts/KnownFacts.css +52 -13
  395. package/esm/components/KnownFacts/KnownFacts.d.ts +2 -2
  396. package/esm/components/KnownFacts/KnownFacts.js +185 -129
  397. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  398. package/esm/components/LoginDrawer/LoginDrawer.css +377 -252
  399. package/esm/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  400. package/esm/components/LoginDrawer/LoginDrawer.js +140 -32
  401. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  402. package/esm/components/MediaWidget/MediaItemWidget.css +222 -176
  403. package/esm/components/MediaWidget/MediaItemWidget.js +14 -17
  404. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  405. package/esm/components/MediaWidget/MediaItemWidget.types.d.ts +0 -1
  406. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  407. package/esm/components/MediaWidget/MediaPreviewModal.d.ts +1 -1
  408. package/esm/components/MediaWidget/MediaPreviewModal.js +1 -1
  409. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  410. package/esm/components/MediaWidget/MediaWidget.css +5 -5
  411. package/esm/components/MediaWidget/MediaWidget.js +2 -3
  412. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  413. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +83 -87
  414. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +4 -8
  415. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  416. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +23 -26
  417. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  418. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +3 -6
  419. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  420. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js +8 -7
  421. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.js.map +1 -1
  422. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +287 -277
  423. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js +5 -5
  424. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.js.map +1 -1
  425. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +117 -142
  426. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +47 -45
  427. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  428. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +4 -134
  429. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +9 -14
  430. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  431. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +196 -166
  432. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +41 -29
  433. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  434. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +204 -205
  435. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  436. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +4 -1
  437. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +5 -1
  438. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  439. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +1 -0
  440. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +15 -4
  441. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  442. package/esm/components/MemoriWidget/MemoriWidget.css +16 -71
  443. package/esm/components/MemoriWidget/MemoriWidget.d.ts +16 -10
  444. package/esm/components/MemoriWidget/MemoriWidget.js +197 -105
  445. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  446. package/esm/components/MicrophoneButton/MicrophoneButton.css +25 -5
  447. package/esm/components/MicrophoneButton/MicrophoneButton.d.ts +2 -2
  448. package/esm/components/MicrophoneButton/MicrophoneButton.js +16 -12
  449. package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  450. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +48 -4
  451. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +5 -1
  452. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +178 -59
  453. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  454. package/esm/components/PositionPopover/PositionPopover.js +2 -1
  455. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  456. package/esm/components/PoweredBy/PoweredBy.css +29 -27
  457. package/esm/components/PoweredBy/PoweredBy.d.ts +1 -2
  458. package/esm/components/PoweredBy/PoweredBy.js +4 -7
  459. package/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  460. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  461. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.js +3 -8
  462. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.js.map +1 -1
  463. package/esm/components/SettingsDrawer/SettingsDrawer.css +2 -2
  464. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +0 -1
  465. package/esm/components/SettingsDrawer/SettingsDrawer.js +19 -16
  466. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  467. package/esm/components/ShareButton/ShareButton.css +254 -8
  468. package/esm/components/ShareButton/ShareButton.d.ts +6 -1
  469. package/esm/components/ShareButton/ShareButton.js +200 -42
  470. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  471. package/esm/components/Snippet/Snippet.css +53 -17
  472. package/esm/components/Snippet/Snippet.d.ts +0 -1
  473. package/esm/components/Snippet/Snippet.js +3 -3
  474. package/esm/components/Snippet/Snippet.js.map +1 -1
  475. package/esm/components/StartPanel/StartPanel.css +733 -110
  476. package/esm/components/StartPanel/StartPanel.d.ts +5 -1
  477. package/esm/components/StartPanel/StartPanel.js +154 -66
  478. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  479. package/esm/components/Typing/Typing.d.ts +8 -2
  480. package/esm/components/Typing/Typing.js +41 -2
  481. package/esm/components/Typing/Typing.js.map +1 -1
  482. package/esm/components/UploadButton/UploadButton.css +357 -326
  483. package/esm/components/UploadButton/UploadButton.d.ts +1 -0
  484. package/esm/components/UploadButton/UploadButton.js +61 -28
  485. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  486. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +0 -2
  487. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +13 -27
  488. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  489. package/esm/components/UploadButton/UploadImages/UploadImages.js +22 -16
  490. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  491. package/esm/components/VenueWidget/VenueWidget.css +101 -41
  492. package/esm/components/VenueWidget/VenueWidget.d.ts +19 -1
  493. package/esm/components/VenueWidget/VenueWidget.js +138 -61
  494. package/esm/components/VenueWidget/VenueWidget.js.map +1 -1
  495. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +20 -20
  496. package/esm/components/WhyThisAnswer/WhyThisAnswer.d.ts +0 -1
  497. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +10 -7
  498. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  499. package/esm/components/icons/GasStation.d.ts +2 -3
  500. package/esm/components/layouts/Chat.js +194 -4
  501. package/esm/components/layouts/Chat.js.map +1 -1
  502. package/esm/components/layouts/FullPage.js +186 -4
  503. package/esm/components/layouts/FullPage.js.map +1 -1
  504. package/esm/components/layouts/HiddenChat.js +290 -13
  505. package/esm/components/layouts/HiddenChat.js.map +1 -1
  506. package/esm/components/layouts/Totem.js +2 -2
  507. package/esm/components/layouts/Totem.js.map +1 -1
  508. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +1 -1
  509. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  510. package/esm/components/layouts/ZoomedFullBody.js +185 -3
  511. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  512. package/esm/components/layouts/chat.css +273 -71
  513. package/esm/components/layouts/fullpage.css +25 -8
  514. package/esm/components/layouts/hidden-chat.css +329 -84
  515. package/esm/components/layouts/totem.css +23 -15
  516. package/esm/components/layouts/zoomed-full-body.css +144 -6
  517. package/esm/components/ui/Tooltip.js +3 -3
  518. package/esm/components/ui/Tooltip.js.map +1 -1
  519. package/esm/context/visemeContext.js.map +1 -1
  520. package/esm/helpers/chatPdfExport.js +15 -12
  521. package/esm/helpers/chatPdfExport.js.map +1 -1
  522. package/esm/helpers/configuration.js.map +1 -1
  523. package/esm/helpers/constants.js +25 -25
  524. package/esm/helpers/constants.js.map +1 -1
  525. package/esm/helpers/credits.d.ts +3 -3
  526. package/esm/helpers/credits.js.map +1 -1
  527. package/esm/helpers/error.js.map +1 -1
  528. package/esm/helpers/imageCompression.js.map +1 -1
  529. package/esm/helpers/llmUsage.js.map +1 -1
  530. package/esm/helpers/markedExtendedTables.js.map +1 -1
  531. package/esm/helpers/media.js.map +1 -1
  532. package/esm/helpers/message.js.map +1 -1
  533. package/esm/helpers/piiDetection.js.map +1 -1
  534. package/esm/helpers/statistics.js.map +1 -1
  535. package/esm/helpers/stt/useSTT.d.ts +0 -1
  536. package/esm/helpers/stt/useSTT.js.map +1 -1
  537. package/esm/helpers/tts/ttsVoiceUtility.js.map +1 -1
  538. package/esm/helpers/tts/useTTS.d.ts +0 -1
  539. package/esm/helpers/tts/useTTS.js.map +1 -1
  540. package/esm/helpers/utils.d.ts +2 -1
  541. package/esm/helpers/utils.js +1 -0
  542. package/esm/helpers/utils.js.map +1 -1
  543. package/esm/i18n.js +2 -0
  544. package/esm/i18n.js.map +1 -1
  545. package/esm/index.js +17 -17
  546. package/esm/index.js.map +1 -1
  547. package/esm/locales/de.json +67 -6
  548. package/esm/locales/en.json +67 -6
  549. package/esm/locales/es.json +67 -7
  550. package/esm/locales/fr.json +68 -7
  551. package/esm/locales/it.json +68 -7
  552. package/esm/styles.css +87 -52
  553. package/esm/version.d.ts +1 -1
  554. package/esm/version.js +1 -1
  555. package/esm/version.js.map +1 -1
  556. package/package.json +15 -11
  557. package/src/Showcase.stories.tsx +641 -0
  558. package/src/__snapshots__/index.test.tsx.snap +40 -10
  559. package/src/components/AgeVerificationModal/AgeVerificationModal.css +35 -12
  560. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +4 -1
  561. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +2 -1
  562. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +59 -39
  563. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +27 -3
  564. package/src/components/Auth/Auth.css +13 -9
  565. package/src/components/Auth/Auth.tsx +30 -18
  566. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +91 -35
  567. package/src/components/Avatar/Avatar.css +2 -2
  568. package/src/components/Avatar/Avatar.tsx +11 -8
  569. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +1 -1
  570. package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +1 -1
  571. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +21 -21
  572. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +12 -14
  573. package/src/components/Blob/Blob.css +14 -12
  574. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +4 -4
  575. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +3 -3
  576. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +115 -70
  577. package/src/components/ChangeMode/ChangeMode.css +4 -2
  578. package/src/components/ChangeMode/ChangeMode.tsx +29 -28
  579. package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +50 -80
  580. package/src/components/Chat/Chat.css +114 -38
  581. package/src/components/Chat/Chat.stories.tsx +15 -12
  582. package/src/components/Chat/Chat.test.tsx +11 -2
  583. package/src/components/Chat/Chat.tsx +136 -173
  584. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +8260 -4942
  585. package/src/components/ChatBubble/ChatBubble.css +206 -68
  586. package/src/components/ChatBubble/ChatBubble.stories.tsx +13 -20
  587. package/src/components/ChatBubble/ChatBubble.test.tsx +5 -0
  588. package/src/components/ChatBubble/ChatBubble.tsx +505 -401
  589. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +7753 -6638
  590. package/src/components/ChatHistoryDrawer/ChatHistory.css +417 -156
  591. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +121 -82
  592. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +65 -56
  593. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +507 -513
  594. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +367 -0
  595. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +296 -0
  596. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +12 -15
  597. package/src/components/ChatInputs/ChatInputs.css +68 -51
  598. package/src/components/ChatInputs/ChatInputs.stories.tsx +13 -10
  599. package/src/components/ChatInputs/ChatInputs.tsx +80 -54
  600. package/src/components/ChatTextArea/ChatTextArea.css +38 -12
  601. package/src/components/ChatTextArea/ChatTextArea.tsx +7 -3
  602. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +6 -0
  603. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +5 -5
  604. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +5 -7
  605. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +63 -48
  606. package/src/components/ContentPreviewModal/ContentPreviewModal.css +129 -84
  607. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +4 -3
  608. package/src/components/DateSelector/DateSelector.css +22 -24
  609. package/src/components/DateSelector/DateSelector.tsx +11 -4
  610. package/src/components/DrawerFooter/DrawerFooter.css +62 -0
  611. package/src/components/DrawerFooter/DrawerFooter.tsx +58 -0
  612. package/src/components/ErrorBoundary/ErrorBoundary.tsx +3 -3
  613. package/src/components/ExpertsDrawer/ExpertsDrawer.css +6 -9
  614. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +1 -1
  615. package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +4 -5
  616. package/src/components/ExportHistoryButton/ExportHistoryButton.css +3 -3
  617. package/src/components/FeedbackButtons/FeedbackButtons.css +17 -15
  618. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +4 -1
  619. package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +1 -1
  620. package/src/components/FeedbackButtons/FeedbackButtons.tsx +104 -77
  621. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +30 -17
  622. package/src/components/FilePreview/FilePreview.css +56 -40
  623. package/src/components/FilePreview/FilePreview.tsx +36 -27
  624. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +165 -96
  625. package/src/components/Header/ChatConsumptionDropdown.test.tsx +41 -4
  626. package/src/components/Header/ChatConsumptionDropdown.tsx +190 -123
  627. package/src/components/Header/Header.css +525 -62
  628. package/src/components/Header/Header.stories.tsx +123 -57
  629. package/src/components/Header/Header.test.tsx +43 -15
  630. package/src/components/Header/Header.tsx +1037 -250
  631. package/src/components/Header/__snapshots__/Header.test.tsx.snap +1752 -700
  632. package/src/components/KnownFacts/KnownFacts.css +52 -13
  633. package/src/components/KnownFacts/KnownFacts.stories.tsx +11 -8
  634. package/src/components/KnownFacts/KnownFacts.test.tsx +1 -1
  635. package/src/components/KnownFacts/KnownFacts.tsx +327 -316
  636. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +27 -3
  637. package/src/components/LoginDrawer/LoginDrawer.css +377 -252
  638. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +3 -0
  639. package/src/components/LoginDrawer/LoginDrawer.test.tsx +1 -1
  640. package/src/components/LoginDrawer/LoginDrawer.tsx +301 -123
  641. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +90 -12
  642. package/src/components/MediaWidget/DocumentCard.test.tsx +1 -1
  643. package/src/components/MediaWidget/MediaItemWidget.css +222 -176
  644. package/src/components/MediaWidget/MediaItemWidget.tsx +17 -31
  645. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +1 -1
  646. package/src/components/MediaWidget/MediaPreviewModal.tsx +1 -1
  647. package/src/components/MediaWidget/MediaWidget.css +5 -5
  648. package/src/components/MediaWidget/MediaWidget.tsx +6 -16
  649. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +280 -463
  650. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +31 -45
  651. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +17 -17
  652. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +83 -87
  653. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +32 -42
  654. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +81 -84
  655. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +8 -6
  656. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +8 -7
  657. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +287 -277
  658. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +5 -5
  659. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +117 -142
  660. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +144 -155
  661. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +4 -134
  662. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +29 -45
  663. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +196 -166
  664. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +53 -27
  665. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +204 -205
  666. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +2 -3
  667. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +21 -10
  668. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +2 -0
  669. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +2 -1
  670. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +15 -4
  671. package/src/components/MemoriWidget/MemoriWidget.css +16 -71
  672. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +29 -8
  673. package/src/components/MemoriWidget/MemoriWidget.tsx +247 -131
  674. package/src/components/MicrophoneButton/MicrophoneButton.css +25 -5
  675. package/src/components/MicrophoneButton/MicrophoneButton.tsx +31 -24
  676. package/src/components/MobileSessionPanel/MobileSessionPanel.css +437 -0
  677. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +795 -0
  678. package/src/components/PositionPopover/PositionPopover.css +219 -0
  679. package/src/components/PositionPopover/PositionPopover.stories.tsx +37 -0
  680. package/src/components/PositionPopover/PositionPopover.tsx +367 -0
  681. package/src/components/PoweredBy/PoweredBy.css +29 -27
  682. package/src/components/PoweredBy/PoweredBy.tsx +11 -19
  683. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +248 -16
  684. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +3 -3
  685. package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +30 -64
  686. package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +74 -26
  687. package/src/components/SettingsDrawer/SettingsDrawer.css +2 -2
  688. package/src/components/SettingsDrawer/SettingsDrawer.tsx +54 -65
  689. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +28 -35
  690. package/src/components/ShareButton/ShareButton.css +254 -8
  691. package/src/components/ShareButton/ShareButton.stories.tsx +9 -4
  692. package/src/components/ShareButton/ShareButton.test.tsx +1 -1
  693. package/src/components/ShareButton/ShareButton.tsx +496 -142
  694. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +639 -216
  695. package/src/components/Snippet/Snippet.css +53 -17
  696. package/src/components/Snippet/Snippet.tsx +5 -5
  697. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +64 -48
  698. package/src/components/StartPanel/StartPanel.css +733 -110
  699. package/src/components/StartPanel/StartPanel.stories.tsx +54 -65
  700. package/src/components/StartPanel/StartPanel.test.tsx +26 -13
  701. package/src/components/StartPanel/StartPanel.tsx +555 -262
  702. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +2602 -1346
  703. package/src/components/Typing/Typing.tsx +85 -7
  704. package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +102 -62
  705. package/src/components/UploadButton/UploadButton.css +357 -326
  706. package/src/components/UploadButton/UploadButton.stories.tsx +221 -87
  707. package/src/components/UploadButton/UploadButton.test.tsx +4 -1
  708. package/src/components/UploadButton/UploadButton.tsx +220 -167
  709. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +14 -38
  710. package/src/components/UploadButton/UploadImages/UploadImages.tsx +76 -63
  711. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +70 -75
  712. package/src/components/VenueWidget/VenueWidget.css +101 -41
  713. package/src/components/VenueWidget/VenueWidget.stories.tsx +4 -1
  714. package/src/components/VenueWidget/VenueWidget.test.tsx +1 -1
  715. package/src/components/VenueWidget/VenueWidget.tsx +311 -191
  716. package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +498 -92
  717. package/src/components/WhyThisAnswer/WhyThisAnswer.css +20 -20
  718. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +21 -18
  719. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +1 -1
  720. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +20 -11
  721. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +34 -4
  722. package/src/components/layouts/Chat.test.tsx +2 -1
  723. package/src/components/layouts/Chat.tsx +379 -17
  724. package/src/components/layouts/FullPage.test.tsx +2 -1
  725. package/src/components/layouts/FullPage.tsx +307 -14
  726. package/src/components/layouts/HiddenChat.test.tsx +2 -1
  727. package/src/components/layouts/HiddenChat.tsx +569 -44
  728. package/src/components/layouts/Totem.test.tsx +2 -1
  729. package/src/components/layouts/Totem.tsx +7 -3
  730. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +115 -0
  731. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.test.tsx +43 -0
  732. package/src/components/layouts/{WebsiteAssistant.tsx → WebsiteAssistant/WebsiteAssistant.tsx} +29 -23
  733. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +76 -0
  734. package/src/components/layouts/{website-assistant.css → WebsiteAssistant/website-assistant.css} +74 -58
  735. package/src/components/layouts/ZoomedFullBody.test.tsx +2 -1
  736. package/src/components/layouts/ZoomedFullBody.tsx +304 -14
  737. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +663 -365
  738. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +1170 -740
  739. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +476 -339
  740. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +624 -392
  741. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +571 -356
  742. package/src/components/layouts/chat.css +273 -71
  743. package/src/components/layouts/fullpage.css +362 -0
  744. package/src/components/layouts/hidden-chat.css +329 -84
  745. package/src/components/layouts/layouts.stories.tsx +14 -146
  746. package/src/components/layouts/totem.css +23 -15
  747. package/src/components/layouts/zoomed-full-body.css +144 -6
  748. package/src/helpers/chatPdfExport.ts +15 -12
  749. package/src/helpers/constants.ts +28 -27
  750. package/src/helpers/utils.ts +2 -0
  751. package/src/i18n.ts +2 -0
  752. package/src/icons/FacebookIcon.tsx +23 -0
  753. package/src/icons/LinkedinIcon.tsx +23 -0
  754. package/src/icons/MemoriIcon.tsx +80 -0
  755. package/src/icons/TelegramIcon.tsx +19 -0
  756. package/src/icons/TwitterIcon.tsx +8 -0
  757. package/src/icons/WhatsappIcon.tsx +23 -0
  758. package/src/icons/artifacts/DocumentIcon.tsx +19 -0
  759. package/src/icons/artifacts/HtmlIcon.tsx +38 -0
  760. package/src/icons/artifacts/JavascriptIcon.tsx +19 -0
  761. package/src/icons/artifacts/MarkdownIcon.tsx +19 -0
  762. package/src/icons/artifacts/PythonIcon.tsx +17 -0
  763. package/src/icons/artifacts/SvgIcon.tsx +34 -0
  764. package/src/icons/artifacts/XmlIcon.tsx +34 -0
  765. package/src/icons/artifacts/cssIcon.tsx +34 -0
  766. package/src/index.stories.tsx +11 -5
  767. package/src/index.tsx +75 -72
  768. package/src/locales/de.json +67 -6
  769. package/src/locales/en.json +67 -6
  770. package/src/locales/es.json +67 -7
  771. package/src/locales/fr.json +68 -7
  772. package/src/locales/it.json +68 -7
  773. package/src/mocks/data.ts +5 -5
  774. package/src/styles.css +87 -52
  775. package/src/testUtils.tsx +42 -0
  776. package/src/version.ts +1 -1
  777. package/dist/helpers/userMessage.d.ts +0 -2
  778. package/dist/helpers/userMessage.js +0 -23
  779. package/dist/helpers/userMessage.js.map +0 -1
  780. package/esm/helpers/userMessage.d.ts +0 -2
  781. package/esm/helpers/userMessage.js +0 -18
  782. package/esm/helpers/userMessage.js.map +0 -1
  783. package/src/components/PositionDrawer/PositionDrawer.stories.tsx +0 -51
  784. package/src/components/PositionDrawer/PositionDrawer.test.tsx +0 -39
  785. package/src/components/PositionDrawer/PositionDrawer.tsx +0 -50
  786. package/src/components/PositionDrawer/__snapshots__/PositionDrawer.test.tsx.snap +0 -17
  787. package/src/components/icons/AI.tsx +0 -34
  788. package/src/components/icons/Alert.tsx +0 -31
  789. package/src/components/icons/ArrowUp.tsx +0 -28
  790. package/src/components/icons/Bug.tsx +0 -81
  791. package/src/components/icons/Chat.tsx +0 -30
  792. package/src/components/icons/ChevronDown.tsx +0 -26
  793. package/src/components/icons/ChevronLeft.tsx +0 -28
  794. package/src/components/icons/ChevronRight.tsx +0 -28
  795. package/src/components/icons/ChevronUp.tsx +0 -24
  796. package/src/components/icons/Clear.tsx +0 -23
  797. package/src/components/icons/Close.tsx +0 -30
  798. package/src/components/icons/Code.tsx +0 -24
  799. package/src/components/icons/Copy.tsx +0 -23
  800. package/src/components/icons/DeepThought.tsx +0 -38
  801. package/src/components/icons/Delete.tsx +0 -23
  802. package/src/components/icons/Document.tsx +0 -50
  803. package/src/components/icons/Download.tsx +0 -23
  804. package/src/components/icons/Edit.tsx +0 -17
  805. package/src/components/icons/Expand.tsx +0 -23
  806. package/src/components/icons/Eye.tsx +0 -17
  807. package/src/components/icons/EyeInvisible.tsx +0 -24
  808. package/src/components/icons/Facebook.tsx +0 -23
  809. package/src/components/icons/Feedback.tsx +0 -24
  810. package/src/components/icons/File.tsx +0 -17
  811. package/src/components/icons/FileExcel.tsx +0 -23
  812. package/src/components/icons/FilePdf.tsx +0 -23
  813. package/src/components/icons/FileWord.tsx +0 -23
  814. package/src/components/icons/Fullscreen.tsx +0 -23
  815. package/src/components/icons/FullscreenExit.tsx +0 -23
  816. package/src/components/icons/Group.tsx +0 -30
  817. package/src/components/icons/History.tsx +0 -33
  818. package/src/components/icons/Image.tsx +0 -37
  819. package/src/components/icons/Info.tsx +0 -31
  820. package/src/components/icons/Link.tsx +0 -17
  821. package/src/components/icons/Linkedin.tsx +0 -23
  822. package/src/components/icons/Loading.tsx +0 -28
  823. package/src/components/icons/Logout.tsx +0 -27
  824. package/src/components/icons/Mail.tsx +0 -17
  825. package/src/components/icons/MapMarker.tsx +0 -26
  826. package/src/components/icons/MenuHorizontal.tsx +0 -29
  827. package/src/components/icons/MenuVertical.tsx +0 -29
  828. package/src/components/icons/Message.tsx +0 -23
  829. package/src/components/icons/Microphone.tsx +0 -23
  830. package/src/components/icons/Minus.tsx +0 -23
  831. package/src/components/icons/MinusCircle.tsx +0 -24
  832. package/src/components/icons/PaperClip.tsx +0 -23
  833. package/src/components/icons/Picture.tsx +0 -23
  834. package/src/components/icons/Plus.tsx +0 -18
  835. package/src/components/icons/Preview.tsx +0 -29
  836. package/src/components/icons/Print.tsx +0 -34
  837. package/src/components/icons/QuestionHelp.tsx +0 -30
  838. package/src/components/icons/Refresh.tsx +0 -30
  839. package/src/components/icons/SelectIcon.tsx +0 -28
  840. package/src/components/icons/Send.tsx +0 -17
  841. package/src/components/icons/Setting.tsx +0 -23
  842. package/src/components/icons/Share.tsx +0 -23
  843. package/src/components/icons/Sound.tsx +0 -23
  844. package/src/components/icons/SoundDeactivated.tsx +0 -27
  845. package/src/components/icons/Telegram.tsx +0 -26
  846. package/src/components/icons/ThumbDown.tsx +0 -29
  847. package/src/components/icons/ThumbUp.tsx +0 -29
  848. package/src/components/icons/Translation.tsx +0 -24
  849. package/src/components/icons/Twitter.tsx +0 -23
  850. package/src/components/icons/Upload.tsx +0 -34
  851. package/src/components/icons/User.tsx +0 -17
  852. package/src/components/icons/Warning.tsx +0 -24
  853. package/src/components/icons/WhatsApp.tsx +0 -24
  854. package/src/components/icons/icons.stories.css +0 -5
  855. package/src/components/icons/icons.stories.tsx +0 -81
  856. package/src/components/icons/loading.css +0 -14
  857. package/src/components/layouts/WebsiteAssistant.test.tsx +0 -40
  858. package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -59
  859. package/src/components/ui/Alert.css +0 -93
  860. package/src/components/ui/Alert.stories.tsx +0 -137
  861. package/src/components/ui/Alert.test.tsx +0 -129
  862. package/src/components/ui/Alert.tsx +0 -123
  863. package/src/components/ui/Button.css +0 -167
  864. package/src/components/ui/Button.stories.tsx +0 -156
  865. package/src/components/ui/Button.test.tsx +0 -74
  866. package/src/components/ui/Button.tsx +0 -107
  867. package/src/components/ui/Card.css +0 -65
  868. package/src/components/ui/Card.stories.tsx +0 -95
  869. package/src/components/ui/Card.test.tsx +0 -47
  870. package/src/components/ui/Card.tsx +0 -48
  871. package/src/components/ui/Checkbox.css +0 -116
  872. package/src/components/ui/Checkbox.stories.tsx +0 -74
  873. package/src/components/ui/Checkbox.test.tsx +0 -28
  874. package/src/components/ui/Checkbox.tsx +0 -58
  875. package/src/components/ui/ConfirmDialog.css +0 -42
  876. package/src/components/ui/ConfirmDialog.stories.tsx +0 -216
  877. package/src/components/ui/ConfirmDialog.test.tsx +0 -124
  878. package/src/components/ui/ConfirmDialog.tsx +0 -58
  879. package/src/components/ui/Details.css +0 -66
  880. package/src/components/ui/Drawer.css +0 -270
  881. package/src/components/ui/Drawer.stories.tsx +0 -267
  882. package/src/components/ui/Drawer.test.tsx +0 -130
  883. package/src/components/ui/Drawer.tsx +0 -293
  884. package/src/components/ui/Dropdown.css +0 -173
  885. package/src/components/ui/Dropdown.tsx +0 -63
  886. package/src/components/ui/Expandable.css +0 -15
  887. package/src/components/ui/Expandable.stories.tsx +0 -180
  888. package/src/components/ui/Expandable.test.tsx +0 -107
  889. package/src/components/ui/Expandable.tsx +0 -121
  890. package/src/components/ui/Modal.css +0 -98
  891. package/src/components/ui/Modal.stories.tsx +0 -171
  892. package/src/components/ui/Modal.test.tsx +0 -111
  893. package/src/components/ui/Modal.tsx +0 -117
  894. package/src/components/ui/Select.css +0 -138
  895. package/src/components/ui/Select.stories.tsx +0 -79
  896. package/src/components/ui/Select.test.tsx +0 -84
  897. package/src/components/ui/Select.tsx +0 -79
  898. package/src/components/ui/Slider.css +0 -192
  899. package/src/components/ui/Slider.stories.tsx +0 -63
  900. package/src/components/ui/Slider.tsx +0 -142
  901. package/src/components/ui/Spin.css +0 -31
  902. package/src/components/ui/Spin.stories.tsx +0 -64
  903. package/src/components/ui/Spin.test.tsx +0 -41
  904. package/src/components/ui/Spin.tsx +0 -31
  905. package/src/components/ui/Table.css +0 -132
  906. package/src/components/ui/Tooltip.css +0 -171
  907. package/src/components/ui/Tooltip.stories.tsx +0 -109
  908. package/src/components/ui/Tooltip.test.tsx +0 -102
  909. package/src/components/ui/Tooltip.tsx +0 -162
  910. package/src/components/ui/__snapshots__/Alert.test.tsx.snap +0 -59
  911. package/src/components/ui/__snapshots__/Button.test.tsx.snap +0 -204
  912. package/src/components/ui/__snapshots__/Card.test.tsx.snap +0 -321
  913. package/src/components/ui/__snapshots__/Checkbox.test.tsx.snap +0 -131
  914. package/src/components/ui/__snapshots__/ConfirmDialog.test.tsx.snap +0 -35
  915. package/src/components/ui/__snapshots__/Drawer.test.tsx.snap +0 -67
  916. package/src/components/ui/__snapshots__/Expandable.test.tsx.snap +0 -159
  917. package/src/components/ui/__snapshots__/Modal.test.tsx.snap +0 -59
  918. package/src/components/ui/__snapshots__/Select.test.tsx.snap +0 -254
  919. package/src/components/ui/__snapshots__/Spin.test.tsx.snap +0 -193
  920. package/src/components/ui/__snapshots__/Tooltip.test.tsx.snap +0 -113
  921. package/src/components/ui/definitions.stories.tsx +0 -139
@@ -2,25 +2,28 @@ import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
2
2
  import cx from 'classnames';
3
3
  import {
4
4
  ExpertReference,
5
+ Medium,
5
6
  Memori,
6
7
  Message,
7
8
  Tenant,
8
9
  User,
9
10
  } from '@memori.ai/memori-api-client/dist/types';
10
11
  import { Props as MemoriProps } from '../MemoriWidget/MemoriWidget';
11
- import { Transition } from '@headlessui/react';
12
12
  import { getResourceUrl } from '../../helpers/media';
13
- import UserIcon from '../icons/User';
14
- import AI from '../icons/AI';
15
- import Translation from '../icons/Translation';
16
- import Tooltip from '../ui/Tooltip';
13
+ import {
14
+ User as UserIcon,
15
+ Bot,
16
+ Languages,
17
+ HelpCircle,
18
+ Copy,
19
+ Code,
20
+ Bug,
21
+ Check,
22
+ } from 'lucide-react';
23
+ import { Tooltip } from '@memori.ai/ui';
17
24
  import FeedbackButtons from '../FeedbackButtons/FeedbackButtons';
18
25
  import { useTranslation } from 'react-i18next';
19
- import Button from '../ui/Button';
20
- import QuestionHelp from '../icons/QuestionHelp';
21
- import Copy from '../icons/Copy';
22
- import Code from '../icons/Code';
23
- import Bug from '../icons/Bug';
26
+ import { Button } from '@memori.ai/ui';
24
27
  import WhyThisAnswer from '../WhyThisAnswer/WhyThisAnswer';
25
28
  import { stripHTML, stripOutputTags } from '../../helpers/utils';
26
29
  import {
@@ -30,12 +33,29 @@ import {
30
33
  stripAllInternalTags,
31
34
  truncateMessage,
32
35
  } from '../../helpers/message';
33
- import Expandable from '../ui/Expandable';
34
- import Modal from '../ui/Modal';
36
+ import { Expandable, Modal } from '@memori.ai/ui';
35
37
  import memoriApiClient from '@memori.ai/memori-api-client';
38
+ const ASSET_URL_PATTERN = /https?:\/\/\S*\/api\/v\d+\/asset\/\S+/gi;
39
+
40
+ const sanitizeRawCopyText = (text: string) =>
41
+ sanitizeMsg(
42
+ stripAttachmentTags(text)
43
+ .replace(/<\/?documents?\b[^>]*>/gi, '')
44
+ .replace(/<documents?\b[^>]*\/>/gi, '')
45
+ .replace(/<\/?attachments?\b[^>]*>/gi, '')
46
+ .replace(/<attachments?\b[^>]*\/>/gi, '')
47
+ .replace(ASSET_URL_PATTERN, '')
48
+ .trim()
49
+ );
50
+ import ArtifactHandler from '../MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler';
51
+
52
+ /** Same reset window as ShareButton copy feedback */
53
+ const COPY_FEEDBACK_MS = 2500;
36
54
 
37
55
  // Always import and load MathJax
38
56
  import { installMathJax } from '../../helpers/utils';
57
+ import MediaWidget from '../MediaWidget/MediaWidget';
58
+ import { Props as MediaWidgetProps } from '../MediaWidget/MediaWidget';
39
59
 
40
60
  // Import MathJax types
41
61
  declare global {
@@ -68,6 +88,10 @@ export interface Props {
68
88
  showFunctionCache?: boolean;
69
89
  showReasoning?: boolean;
70
90
  usageHtml?: string;
91
+ isChatlogPanel?: boolean;
92
+ codeMimeTypes?: string[];
93
+ translateTo?: string;
94
+ customMediaRenderer?: MediaWidgetProps['customMediaRenderer'];
71
95
  }
72
96
 
73
97
  const ChatBubble: React.FC<Props> = ({
@@ -84,7 +108,6 @@ const ChatBubble: React.FC<Props> = ({
84
108
  showTranslationOriginal = false,
85
109
  simulateUserPrompt,
86
110
  showAIicon = true,
87
- isFirst = false,
88
111
  useMathFormatting = false,
89
112
  user,
90
113
  userAvatar,
@@ -92,16 +115,20 @@ const ChatBubble: React.FC<Props> = ({
92
115
  showFunctionCache = false,
93
116
  showReasoning = false,
94
117
  usageHtml = '',
118
+ isChatlogPanel = false,
119
+ codeMimeTypes = [],
120
+ translateTo,
121
+ customMediaRenderer,
95
122
  }) => {
96
123
  const { t, i18n } = useTranslation();
97
124
  const lang = i18n.language || 'en';
98
125
  const [showingWhyThisAnswer, setShowingWhyThisAnswer] = useState(false);
99
126
  const [openFunctionCache, setOpenFunctionCache] = useState(false);
100
- const [copyFeedback, setCopyFeedback] = useState({
101
- plain: false,
102
- raw: false,
103
- });
104
- const copyFeedbackTimers = useRef<{
127
+ const [copyStatus, setCopyStatus] = useState<{
128
+ plain: 'idle' | 'success' | 'error';
129
+ raw: 'idle' | 'success' | 'error';
130
+ }>({ plain: 'idle', raw: 'idle' });
131
+ const copyResetTimers = useRef<{
105
132
  plain: ReturnType<typeof setTimeout> | null;
106
133
  raw: ReturnType<typeof setTimeout> | null;
107
134
  }>({
@@ -141,6 +168,31 @@ const ChatBubble: React.FC<Props> = ({
141
168
  )
142
169
  );
143
170
  const copiedLabel = t('copied') || 'Copied';
171
+ const formattedTimestamp = message.timestamp
172
+ ? (() => {
173
+ const date = new Date(
174
+ message.timestamp.endsWith('Z')
175
+ ? message.timestamp
176
+ : `${message.timestamp}Z`
177
+ );
178
+ const now = new Date();
179
+ const isToday =
180
+ date.getFullYear() === now.getFullYear() &&
181
+ date.getMonth() === now.getMonth() &&
182
+ date.getDate() === now.getDate();
183
+ return new Intl.DateTimeFormat(i18n.language || 'it', {
184
+ ...(isToday
185
+ ? {}
186
+ : {
187
+ day: '2-digit',
188
+ month: '2-digit',
189
+ year: 'numeric',
190
+ }),
191
+ hour: '2-digit',
192
+ minute: '2-digit',
193
+ }).format(date);
194
+ })()
195
+ : null;
144
196
 
145
197
  // Format function cache content
146
198
  const functionCacheData = message.media?.filter(
@@ -190,52 +242,144 @@ const ChatBubble: React.FC<Props> = ({
190
242
 
191
243
  useEffect(() => {
192
244
  return () => {
193
- (
194
- Object.keys(copyFeedbackTimers.current) as Array<'plain' | 'raw'>
195
- ).forEach(key => {
196
- const timer = copyFeedbackTimers.current[key];
197
- if (timer) {
198
- clearTimeout(timer);
199
- copyFeedbackTimers.current[key] = null;
245
+ (Object.keys(copyResetTimers.current) as Array<'plain' | 'raw'>).forEach(
246
+ key => {
247
+ const timer = copyResetTimers.current[key];
248
+ if (timer) {
249
+ clearTimeout(timer);
250
+ copyResetTimers.current[key] = null;
251
+ }
200
252
  }
201
- });
253
+ );
202
254
  };
203
255
  }, []);
204
256
 
205
- const triggerCopyFeedback = (type: 'plain' | 'raw') => {
206
- setCopyFeedback(prev => ({ ...prev, [type]: true }));
207
- if (copyFeedbackTimers.current[type]) {
208
- clearTimeout(copyFeedbackTimers.current[type]!);
257
+ const clearCopyReset = (type: 'plain' | 'raw') => {
258
+ if (copyResetTimers.current[type]) {
259
+ clearTimeout(copyResetTimers.current[type]!);
260
+ copyResetTimers.current[type] = null;
209
261
  }
210
- copyFeedbackTimers.current[type] = setTimeout(() => {
211
- setCopyFeedback(prev => ({ ...prev, [type]: false }));
212
- copyFeedbackTimers.current[type] = null;
213
- }, 1500);
214
262
  };
215
263
 
216
- const handleCopyClick = (type: 'plain' | 'raw', text: string) => {
264
+ const scheduleCopyReset = (type: 'plain' | 'raw') => {
265
+ clearCopyReset(type);
266
+ copyResetTimers.current[type] = setTimeout(() => {
267
+ setCopyStatus(prev => ({ ...prev, [type]: 'idle' }));
268
+ copyResetTimers.current[type] = null;
269
+ }, COPY_FEEDBACK_MS);
270
+ };
271
+
272
+ const handleCopyClick = async (type: 'plain' | 'raw', text: string) => {
217
273
  if (!text?.length) return;
218
- if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
219
- navigator.clipboard
220
- .writeText(text)
221
- .then(() => triggerCopyFeedback(type))
222
- .catch(err => {
223
- console.error('Copy failed', err);
224
- });
225
- } else {
226
- triggerCopyFeedback(type);
274
+ try {
275
+ if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
276
+ await navigator.clipboard.writeText(text);
277
+ } else {
278
+ throw new Error('Clipboard unavailable');
279
+ }
280
+ setCopyStatus(prev => ({ ...prev, [type]: 'success' }));
281
+ scheduleCopyReset(type);
282
+ } catch (err) {
283
+ console.error('Copy failed', err);
284
+ setCopyStatus(prev => ({ ...prev, [type]: 'error' }));
285
+ scheduleCopyReset(type);
227
286
  }
228
287
  };
229
288
 
230
289
  // Check if initial is a string (status message) or boolean (legacy)
231
290
  const initialStatus =
232
291
  typeof message.initial === 'string' ? message.initial : null;
233
- const showInitialDivider =
234
- (message.initial === true || isFirst) && !initialStatus;
292
+ const showInitialDivider = message.initial === true && !initialStatus;
235
293
 
236
294
  // Check if this is a system error message
237
295
  const isSystemError = message.emitter === 'system';
238
296
 
297
+ const renderAssistantAvatar = () => (
298
+ <picture
299
+ className="memori-chat--bubble-avatar"
300
+ title={
301
+ !!message.emitter?.length && !!memori.enableBoardOfExperts
302
+ ? message.emitter
303
+ : memori.name
304
+ }
305
+ >
306
+ <img
307
+ className="memori-chat--bubble-avatar-img"
308
+ alt={
309
+ !!message.emitter?.length && !!memori.enableBoardOfExperts
310
+ ? message.emitter
311
+ : memori.name
312
+ }
313
+ src={
314
+ !!message.emitter?.length &&
315
+ !!memori.enableBoardOfExperts &&
316
+ experts?.find(e => e.name === message.emitter)
317
+ ? `${new URL(apiUrl ?? '/').origin}/api/v1/memoriai/memori/avatar/${
318
+ experts.find(e => e.name === message.emitter)?.expertMemoriID
319
+ }`
320
+ : memori.avatarURL && memori.avatarURL.length > 0
321
+ ? getResourceUrl({
322
+ type: 'avatar',
323
+ tenantID: tenant?.name,
324
+ resourceURI: memori.avatarURL,
325
+ baseURL: baseUrl,
326
+ apiURL: apiUrl,
327
+ })
328
+ : getResourceUrl({
329
+ tenantID: tenant?.name,
330
+ type: 'avatar',
331
+ baseURL: baseUrl || 'https://www.aisuru.com',
332
+ apiURL: apiUrl,
333
+ })
334
+ }
335
+ onError={e => {
336
+ e.currentTarget.src =
337
+ memori.avatarURL && memori.avatarURL.length > 0
338
+ ? getResourceUrl({
339
+ type: 'avatar',
340
+ tenantID: tenant?.name,
341
+ resourceURI: memori.avatarURL,
342
+ baseURL: baseUrl,
343
+ })
344
+ : getResourceUrl({
345
+ tenantID: tenant?.name,
346
+ type: 'avatar',
347
+ baseURL: baseUrl,
348
+ });
349
+
350
+ e.currentTarget.onerror = null;
351
+ }}
352
+ />
353
+ </picture>
354
+ );
355
+
356
+ const renderUserAvatar = () => {
357
+ if (
358
+ (!!userAvatar && typeof userAvatar === 'string') ||
359
+ (!userAvatar && !!user?.avatarURL?.length)
360
+ ) {
361
+ return (
362
+ <picture className="memori-chat--bubble-avatar">
363
+ <img
364
+ className="memori-chat--bubble-avatar-img"
365
+ alt={user?.userName ?? 'User'}
366
+ src={userAvatar ?? user?.avatarURL}
367
+ />
368
+ </picture>
369
+ );
370
+ }
371
+
372
+ if (userAvatar) {
373
+ return <div className="memori-chat--bubble-avatar">{userAvatar}</div>;
374
+ }
375
+
376
+ return (
377
+ <div className="memori-chat--bubble-avatar">
378
+ <UserIcon />
379
+ </div>
380
+ );
381
+ };
382
+
239
383
  if (initialStatus) {
240
384
  return (
241
385
  <div className="memori-chat--bubble-status-message">
@@ -249,302 +393,303 @@ const ChatBubble: React.FC<Props> = ({
249
393
  // Render system error messages as red warning messages
250
394
  if (isSystemError) {
251
395
  return (
252
- <Transition
253
- show
254
- appear
255
- as="div"
396
+ <div
256
397
  className={cx('memori-chat--bubble-container memori-chat-scroll-item', {
257
398
  'memori-chat--bubble-from-user': false,
258
399
  })}
259
400
  >
260
- <Transition.Child
261
- as="picture"
262
- className="memori-chat--bubble-avatar"
263
- enter="transition ease-in-out duration-300"
264
- enterFrom={`opacity-0 scale-075 translate-x--15`}
265
- enterTo="opacity-1 scale-1 translate-x-0"
266
- leave="transition ease-in-out duration-300"
267
- leaveFrom="opacity-1 scale-1 translate-x-0"
268
- leaveTo={`opacity-0 scale-075 translate-x--15`}
269
- title={
270
- !!message.emitter?.length && !!memori.enableBoardOfExperts
271
- ? message.emitter
272
- : memori.name
273
- }
274
- >
275
- <img
276
- className="memori-chat--bubble-avatar-img"
277
- alt={
278
- !!message.emitter?.length && !!memori.enableBoardOfExperts
279
- ? message.emitter
280
- : memori.name
281
- }
282
- src={
283
- !!message.emitter?.length &&
284
- !!memori.enableBoardOfExperts &&
285
- experts?.find(e => e.name === message.emitter)
286
- ? `${
287
- new URL(apiUrl ?? '/').origin
288
- }/api/v1/memoriai/memori/avatar/${
289
- experts.find(e => e.name === message.emitter)
290
- ?.expertMemoriID
291
- }`
292
- : memori.avatarURL && memori.avatarURL.length > 0
293
- ? getResourceUrl({
294
- type: 'avatar',
295
- tenantID: tenant?.name,
296
- resourceURI: memori.avatarURL,
297
- baseURL: baseUrl,
298
- apiURL: apiUrl,
299
- })
300
- : getResourceUrl({
301
- tenantID: tenant?.name,
302
- type: 'avatar',
303
- baseURL: baseUrl || 'https://www.aisuru.com',
304
- apiURL: apiUrl,
305
- })
306
- }
307
- onError={e => {
308
- // Fallback image handling if primary source fails
309
- e.currentTarget.src =
310
- memori.avatarURL && memori.avatarURL.length > 0
311
- ? getResourceUrl({
312
- type: 'avatar',
313
- tenantID: tenant?.name,
314
- resourceURI: memori.avatarURL,
315
- baseURL: baseUrl,
316
- })
317
- : getResourceUrl({
318
- tenantID: tenant?.name,
319
- type: 'avatar',
320
- baseURL: baseUrl,
321
- });
322
-
323
- e.currentTarget.onerror = null;
324
- }}
325
- />
326
- </Transition.Child>
401
+ {renderAssistantAvatar()}
327
402
  <div className="memori-chat--bubble memori-chat--bubble-status-message-error">
328
403
  <div className="memori-chat--bubble-message ">
329
404
  {sanitizeMsg(cleanText)}
330
405
  </div>
331
406
  </div>
332
- </Transition>
407
+ </div>
333
408
  );
334
409
  }
335
410
 
411
+ const shouldShowTimestampInAddon =
412
+ !!formattedTimestamp && (!message.fromUser || isChatlogPanel);
413
+ const shouldShowBubbleAddon =
414
+ shouldShowTimestampInAddon ||
415
+ shouldShowCopyButtons ||
416
+ (message.generatedByAI && showAIicon) ||
417
+ (showFeedback && simulateUserPrompt) ||
418
+ (showTranslationOriginal &&
419
+ message.translatedText &&
420
+ message.translatedText !== message.text) ||
421
+ (!message.fromUser &&
422
+ message.questionAnswered &&
423
+ apiUrl &&
424
+ showWhyThisAnswer);
425
+
426
+ const topMediaWidgetLinks = (message?.media
427
+ ?.filter(m => !m.properties?.functionSignature)
428
+ ?.filter(m => m.mimeType === 'text/html' && !!m.url) || []) as Medium[];
429
+
430
+ const topMediaWidgetMedia = [
431
+ ...(message?.media
432
+ ?.filter(m => !m.properties?.functionSignature)
433
+ ?.filter(
434
+ m =>
435
+ !(
436
+ codeMimeTypes.includes(m.mimeType) ||
437
+ (m.mimeType === 'text/html' && !!m.url)
438
+ )
439
+ ) || []),
440
+ ...(() => {
441
+ const text = message.translatedText || message.text;
442
+ const documentAttachmentRegex =
443
+ /<document_attachment filename="([^"]+)" type="([^"]+)">([\s\S]*?)<\/document_attachment>/g;
444
+ const attachments: (Medium & { type?: string })[] = [];
445
+ let match;
446
+ let attachmentIndex = 0;
447
+
448
+ while ((match = documentAttachmentRegex.exec(text)) !== null) {
449
+ const [, filename, type, content] = match;
450
+ attachments.push({
451
+ mediumID: `doc_${Date.now()}_${attachmentIndex}_${Math.random()
452
+ .toString(36)
453
+ .substr(2, 9)}`,
454
+ url: '',
455
+ mimeType: type,
456
+ title: filename,
457
+ content: content.trim(),
458
+ properties: { isDocumentAttachment: true },
459
+ type: 'document',
460
+ });
461
+ attachmentIndex++;
462
+ }
463
+
464
+ return attachments;
465
+ })(),
466
+ ];
467
+
468
+ const codeMediaWidgetMedia =
469
+ message?.media
470
+ ?.filter(m => !m.properties?.functionSignature)
471
+ ?.filter(m => codeMimeTypes.includes(m.mimeType)) || [];
472
+
473
+ const hasAddonAfterTimestamp =
474
+ shouldShowCopyButtons ||
475
+ (message.generatedByAI && showAIicon) ||
476
+ (showFeedback && simulateUserPrompt) ||
477
+ (showTranslationOriginal &&
478
+ message.translatedText &&
479
+ message.translatedText !== message.text) ||
480
+ (!message.fromUser &&
481
+ message.questionAnswered &&
482
+ apiUrl &&
483
+ showWhyThisAnswer);
484
+
336
485
  return (
337
486
  <>
338
487
  {showInitialDivider && <div className="memori-chat--bubble-initial" />}
339
- <Transition
340
- show
341
- appear
342
- as="div"
488
+ <div
343
489
  className={cx('memori-chat--bubble-container memori-chat-scroll-item', {
344
490
  'memori-chat--bubble-from-user': !!message.fromUser,
345
- 'memori-chat--with-addon':
346
- (message.generatedByAI && showAIicon) ||
347
- (showFeedback && simulateUserPrompt),
491
+ 'memori-chat--with-addon': shouldShowBubbleAddon,
348
492
  })}
349
493
  >
350
- {!message.fromUser && (
351
- <Transition.Child
352
- as="picture"
353
- className="memori-chat--bubble-avatar"
354
- enter="transition ease-in-out duration-300"
355
- enterFrom={`opacity-0 scale-075 ${
356
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
357
- }`}
358
- enterTo="opacity-1 scale-1 translate-x-0"
359
- leave="transition ease-in-out duration-300"
360
- leaveFrom="opacity-1 scale-1 translate-x-0"
361
- leaveTo={`opacity-0 scale-075 ${
362
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
363
- }`}
364
- title={
365
- !!message.emitter?.length && !!memori.enableBoardOfExperts
366
- ? message.emitter
367
- : memori.name
368
- }
494
+ <MediaWidget
495
+ simulateUserPrompt={simulateUserPrompt}
496
+ links={topMediaWidgetLinks}
497
+ media={topMediaWidgetMedia}
498
+ sessionID={sessionID}
499
+ baseUrl={baseUrl}
500
+ apiUrl={apiUrl}
501
+ translateTo={translateTo}
502
+ customMediaRenderer={customMediaRenderer}
503
+ fromUser={message.fromUser}
504
+ />
505
+
506
+ <div className="memori-chat--bubble-message-row">
507
+ {!message.fromUser && renderAssistantAvatar()}
508
+
509
+ <div
510
+ className={cx('memori-chat--bubble-shell', {
511
+ 'memori-chat--bubble-shell--from-user': !!message.fromUser,
512
+ 'memori-chat--bubble-shell--has-addon': shouldShowBubbleAddon,
513
+ })}
369
514
  >
370
- <img
371
- className="memori-chat--bubble-avatar-img"
372
- alt={
373
- !!message.emitter?.length && !!memori.enableBoardOfExperts
374
- ? message.emitter
375
- : memori.name
376
- }
377
- src={
378
- !!message.emitter?.length &&
379
- !!memori.enableBoardOfExperts &&
380
- experts?.find(e => e.name === message.emitter)
381
- ? `${
382
- new URL(apiUrl ?? '/').origin
383
- }/api/v1/memoriai/memori/avatar/${
384
- experts.find(e => e.name === message.emitter)
385
- ?.expertMemoriID
386
- }`
387
- : memori.avatarURL && memori.avatarURL.length > 0
388
- ? getResourceUrl({
389
- type: 'avatar',
390
- tenantID: tenant?.name,
391
- resourceURI: memori.avatarURL,
392
- baseURL: baseUrl,
393
- apiURL: apiUrl,
394
- })
395
- : getResourceUrl({
396
- tenantID: tenant?.name,
397
- type: 'avatar',
398
- baseURL: baseUrl || 'https://www.aisuru.com',
399
- apiURL: apiUrl,
400
- })
401
- }
402
- onError={e => {
403
- // Fallback image handling if primary source fails
404
- e.currentTarget.src =
405
- memori.avatarURL && memori.avatarURL.length > 0
406
- ? getResourceUrl({
407
- type: 'avatar',
408
- tenantID: tenant?.name,
409
- resourceURI: memori.avatarURL,
410
- baseURL: baseUrl,
411
- })
412
- : getResourceUrl({
413
- tenantID: tenant?.name,
414
- type: 'avatar',
415
- baseURL: baseUrl,
416
- });
417
-
418
- e.currentTarget.onerror = null;
419
- }}
420
- />
421
- </Transition.Child>
422
- )}
423
-
424
- <Transition.Child
425
- as="div"
426
- className={cx('memori-chat--bubble', {
427
- 'memori-chat--user-bubble': !!message.fromUser,
428
- 'memori-chat--with-addon':
429
- shouldShowCopyButtons ||
430
- (message.generatedByAI && showAIicon) ||
431
- (showFeedback && simulateUserPrompt),
432
- 'memori-chat--ai-generated': message.generatedByAI && showAIicon,
433
- 'memori-chat--with-feedback': showFeedback,
434
- })}
435
- enter="transition ease-in-out duration-300"
436
- enterFrom={`opacity-0 scale-09 translate-x-${
437
- message.fromUser ? '30' : '-30'
438
- }`}
439
- enterTo="opacity-1 scale-1 translate-x-0"
440
- leave="transition ease-in-out duration-300"
441
- leaveFrom="opacity-1 scale-1 translate-x-0"
442
- leaveTo={`opacity-0 scale-09 translate-x-${
443
- message.fromUser ? '30' : '-30'
444
- }`}
445
- >
446
- {message.fromUser ? (
447
- <Expandable
448
- className="memori-chat--bubble-content"
449
- mode="characters"
450
- >
515
+ <div
516
+ className={cx('memori-chat--bubble', {
517
+ 'memori-chat--user-bubble': !!message.fromUser,
518
+ 'memori-chat--with-addon':
519
+ shouldShowCopyButtons || (showFeedback && simulateUserPrompt),
520
+ 'memori-chat--ai-generated': message.generatedByAI,
521
+ 'memori-chat--with-feedback': showFeedback,
522
+ })}
523
+ >
524
+ {message.fromUser ? (
525
+ <Expandable
526
+ className="memori-chat--bubble-content"
527
+ mode="characters"
528
+ >
529
+ <div
530
+ dir="auto"
531
+ className="memori-chat--bubble-content"
532
+ dangerouslySetInnerHTML={{ __html: sanitizeMsg(cleanText) }}
533
+ />
534
+ </Expandable>
535
+ ) : (
451
536
  <div
452
537
  dir="auto"
453
538
  className="memori-chat--bubble-content"
454
- dangerouslySetInnerHTML={{ __html: sanitizeMsg(cleanText) }}
539
+ dangerouslySetInnerHTML={{ __html: renderedText }}
455
540
  />
456
- </Expandable>
457
- ) : (
458
- <div
459
- dir="auto"
460
- className="memori-chat--bubble-content"
461
- dangerouslySetInnerHTML={{ __html: renderedText }}
462
- />
463
- )}
541
+ )}
542
+
543
+ {!!usageHtml && (
544
+ <div
545
+ className="memori-chat--usage-inside-bubble"
546
+ dangerouslySetInnerHTML={{ __html: usageHtml }}
547
+ />
548
+ )}
549
+ </div>
464
550
 
465
- {!!usageHtml && (
551
+ {!message.fromUser && (
466
552
  <div
467
- className="memori-chat--usage-inside-bubble"
468
- dangerouslySetInnerHTML={{ __html: usageHtml }}
469
- />
553
+ className={cx('memori-chat--artifact-block', {
554
+ 'memori-chat--artifact-block--chatlog': isChatlogPanel,
555
+ })}
556
+ >
557
+ <ArtifactHandler
558
+ isChatlogPanel={isChatlogPanel}
559
+ message={message}
560
+ />
561
+ </div>
470
562
  )}
471
563
 
472
- {(shouldShowCopyButtons ||
473
- (message.generatedByAI && showAIicon) ||
474
- (message.generatedByAI && showFunctionCache) ||
475
- (showFeedback && simulateUserPrompt)) && (
564
+ <MediaWidget
565
+ simulateUserPrompt={simulateUserPrompt}
566
+ media={codeMediaWidgetMedia}
567
+ sessionID={sessionID}
568
+ baseUrl={baseUrl}
569
+ apiUrl={apiUrl}
570
+ translateTo={translateTo}
571
+ customMediaRenderer={customMediaRenderer}
572
+ fromUser={message.fromUser}
573
+ />
574
+
575
+ {shouldShowBubbleAddon && (
476
576
  <div className="memori-chat--bubble-addon">
577
+ {shouldShowTimestampInAddon && (
578
+ <div className="memori-chat--bubble-timestamp-container">
579
+ <p className="memori-chat--bubble-timestamp">
580
+ {formattedTimestamp}
581
+ </p>
582
+ {hasAddonAfterTimestamp && (
583
+ <span className="memori-chat--bubble-timestamp-separator">
584
+
585
+ </span>
586
+ )}
587
+ </div>
588
+ )}
477
589
  {shouldShowCopyButtons && (
478
- <Button
479
- ghost
480
- shape="circle"
481
- title={copyFeedback.plain ? copiedLabel : t('copy') || 'Copy'}
482
- className={cx('memori-chat--bubble-action-icon', {
483
- 'memori-chat--bubble-action-icon--from-user':
484
- message.fromUser,
485
- 'memori-chat--bubble-action-icon--copied':
486
- copyFeedback.plain,
487
- })}
488
- icon={
489
- <Copy
590
+ <Tooltip
591
+ placement="bottom"
592
+ content={
593
+ copyStatus.plain === 'success'
594
+ ? copiedLabel
595
+ : copyStatus.plain === 'error'
596
+ ? t('copyFailed')
597
+ : t('copy') || 'Copy'
598
+ }
599
+ >
600
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
601
+ <Button
602
+ variant="ghost"
603
+ shape="circle"
604
+ type="button"
490
605
  aria-label={
491
- copyFeedback.plain ? copiedLabel : t('copy') || 'Copy'
606
+ copyStatus.plain === 'success'
607
+ ? String(copiedLabel)
608
+ : copyStatus.plain === 'error'
609
+ ? String(t('copyFailed'))
610
+ : String(t('copy') || 'Copy')
611
+ }
612
+ className={cx(
613
+ 'memori-chat--bubble-action-button',
614
+ 'memori-share-button--copy-item',
615
+ {
616
+ 'memori-share-button--copy-item--success':
617
+ copyStatus.plain === 'success',
618
+ 'memori-share-button--copy-item--error':
619
+ copyStatus.plain === 'error',
620
+ }
621
+ )}
622
+ icon={
623
+ copyStatus.plain === 'success' ? (
624
+ <Check
625
+ className="memori-share-button--copy-icon"
626
+ aria-hidden
627
+ strokeWidth={2.5}
628
+ />
629
+ ) : (
630
+ <Copy
631
+ className="memori-share-button--copy-icon"
632
+ aria-hidden
633
+ />
634
+ )
492
635
  }
636
+ onClick={() => handleCopyClick('plain', copyText)}
493
637
  />
494
- }
495
- onClick={() => handleCopyClick('plain', copyText)}
496
- />
497
- )}
498
- {copyFeedback.plain && (
499
- <span
500
- role="status"
501
- aria-live="polite"
502
- className={cx('memori-chat--bubble-action-feedback', {
503
- 'memori-chat--bubble-action-feedback--from-user':
504
- message.fromUser,
505
- })}
506
- >
507
- {copiedLabel}
508
- </span>
638
+ </span>
639
+ </Tooltip>
509
640
  )}
510
641
 
511
642
  {shouldShowCopyRawButton && (
512
- <Button
513
- ghost
514
- shape="circle"
515
- title={
516
- copyFeedback.raw
643
+ <Tooltip
644
+ placement="bottom"
645
+ content={
646
+ copyStatus.raw === 'success'
517
647
  ? copiedLabel
648
+ : copyStatus.raw === 'error'
649
+ ? t('copyFailed')
518
650
  : t('copyRawCode') || 'Copy raw code'
519
651
  }
520
- className={cx('memori-chat--bubble-action-icon', {
521
- 'memori-chat--bubble-action-icon--from-user':
522
- message.fromUser,
523
- 'memori-chat--bubble-action-icon--copied': copyFeedback.raw,
524
- })}
525
- icon={
526
- <Code
652
+ >
653
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
654
+ <Button
655
+ variant="ghost"
656
+ shape="circle"
657
+ type="button"
527
658
  aria-label={
528
- copyFeedback.raw
529
- ? copiedLabel
530
- : t('copyRawCode') || 'Copy raw code'
659
+ copyStatus.raw === 'success'
660
+ ? String(copiedLabel)
661
+ : copyStatus.raw === 'error'
662
+ ? String(t('copyFailed'))
663
+ : String(t('copyRawCode') || 'Copy raw code')
664
+ }
665
+ className={cx(
666
+ 'memori-chat--bubble-action-button',
667
+ 'memori-share-button--copy-item',
668
+ {
669
+ 'memori-share-button--copy-item--success':
670
+ copyStatus.raw === 'success',
671
+ 'memori-share-button--copy-item--error':
672
+ copyStatus.raw === 'error',
673
+ }
674
+ )}
675
+ icon={
676
+ copyStatus.raw === 'success' ? (
677
+ <Check
678
+ className="memori-share-button--copy-icon"
679
+ aria-hidden
680
+ strokeWidth={2.5}
681
+ />
682
+ ) : (
683
+ <Code
684
+ className="memori-share-button--copy-icon"
685
+ aria-hidden
686
+ />
687
+ )
531
688
  }
689
+ onClick={() => handleCopyClick('raw', rawMessageText)}
532
690
  />
533
- }
534
- onClick={() => handleCopyClick('raw', rawMessageText)}
535
- />
536
- )}
537
- {copyFeedback.raw && (
538
- <span
539
- role="status"
540
- aria-live="polite"
541
- className={cx('memori-chat--bubble-action-feedback', {
542
- 'memori-chat--bubble-action-feedback--from-user':
543
- message.fromUser,
544
- })}
545
- >
546
- {copiedLabel}
547
- </span>
691
+ </span>
692
+ </Tooltip>
548
693
  )}
549
694
 
550
695
  {!message.fromUser &&
@@ -554,14 +699,25 @@ const ChatBubble: React.FC<Props> = ({
554
699
  Boolean(m.properties?.functionCache) ||
555
700
  m.properties?.functionCache === 'true'
556
701
  ) && (
557
- <Button
558
- ghost
559
- shape="circle"
560
- title="Debug"
702
+ <Tooltip
703
+ placement="bottom"
704
+ content={t('functionCache') || 'Function cache'}
561
705
  className="memori-chat--bubble-action-icon memori-chat--bubble-action-icon--debug"
562
- icon={<Bug aria-label="Debug" />}
563
- onClick={() => setOpenFunctionCache(true)}
564
- />
706
+ >
707
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
708
+ <Button
709
+ variant="ghost"
710
+ shape="circle"
711
+ className="memori-chat--bubble-action-button"
712
+ icon={
713
+ <Bug
714
+ aria-label={t('functionCache') || 'Function cache'}
715
+ />
716
+ }
717
+ onClick={() => setOpenFunctionCache(true)}
718
+ />
719
+ </span>
720
+ </Tooltip>
565
721
  )}
566
722
 
567
723
  {showFeedback && !!simulateUserPrompt && (
@@ -577,23 +733,18 @@ const ChatBubble: React.FC<Props> = ({
577
733
 
578
734
  {message.generatedByAI && showAIicon && (
579
735
  <Tooltip
580
- align="right"
581
- content={
582
- t('generatedByAI') ||
583
- (lang === 'it'
584
- ? 'Risposta generata da IA, può talvolta generare informazioni non corrette'
585
- : 'Answer generated by AI, may occasionally generate incorrect informations')
586
- }
736
+ placement="bottom"
737
+ content={t('generatedByAI')}
587
738
  className="memori-chat--bubble-action-icon memori-chat--bubble-action-icon--ai"
588
739
  >
589
- <span>
590
- <AI
591
- title={
592
- t('generatedByAI') ||
593
- (lang === 'it'
594
- ? 'Risposta generata da IA, può talvolta generare informazioni non corrette'
595
- : 'Answer generated by AI, may occasionally generate incorrect informations')
596
- }
740
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
741
+ <Button
742
+ variant="ghost"
743
+ shape="circle"
744
+ type="button"
745
+ className="memori-chat--bubble-action-button"
746
+ aria-label={String(t('generatedByAI'))}
747
+ icon={<Bot aria-hidden />}
597
748
  />
598
749
  </span>
599
750
  </Tooltip>
@@ -603,17 +754,22 @@ const ChatBubble: React.FC<Props> = ({
603
754
  message.translatedText &&
604
755
  message.translatedText !== message.text && (
605
756
  <Tooltip
606
- align="right"
757
+ placement="bottom"
607
758
  content={`${
608
759
  lang === 'it' ? 'Testo originale' : 'Original text'
609
760
  }: ${stripAllInternalTags(message.text)}`}
610
761
  className="memori-chat--bubble-action-icon memori-chat--bubble-action-icon--ai"
611
762
  >
612
- <span>
613
- <Translation
763
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
764
+ <Button
765
+ variant="ghost"
766
+ shape="circle"
767
+ type="button"
768
+ className="memori-chat--bubble-action-button"
614
769
  aria-label={
615
770
  lang === 'it' ? 'Testo originale' : 'Original text'
616
771
  }
772
+ icon={<Languages aria-hidden />}
617
773
  />
618
774
  </span>
619
775
  </Tooltip>
@@ -623,84 +779,30 @@ const ChatBubble: React.FC<Props> = ({
623
779
  message.questionAnswered &&
624
780
  apiUrl &&
625
781
  showWhyThisAnswer && (
626
- <Button
627
- ghost
628
- shape="circle"
629
- title={t('whyThisAnswer') || undefined}
630
- className="memori-chat--bubble-action-icon"
631
- onClick={() => setShowingWhyThisAnswer(true)}
632
- disabled={showingWhyThisAnswer}
633
- icon={
634
- <QuestionHelp title={t('whyThisAnswer') || undefined} />
635
- }
636
- />
782
+ <Tooltip
783
+ placement="bottom"
784
+ content={t('whyThisAnswer') || 'Why this answer?'}
785
+ >
786
+ <span className="memori-chat--bubble-addon-tooltip-trigger">
787
+ <Button
788
+ variant="ghost"
789
+ shape="circle"
790
+ className="memori-chat--bubble-action-button"
791
+ onClick={() => setShowingWhyThisAnswer(true)}
792
+ disabled={showingWhyThisAnswer}
793
+ aria-label={t('whyThisAnswer') || 'Why this answer?'}
794
+ icon={<HelpCircle aria-hidden />}
795
+ />
796
+ </span>
797
+ </Tooltip>
637
798
  )}
638
799
  </div>
639
800
  )}
640
- </Transition.Child>
641
-
642
- {message.fromUser && (
643
- <>
644
- {(!!userAvatar && typeof userAvatar === 'string') ||
645
- (!userAvatar && !!user?.avatarURL?.length) ? (
646
- <Transition.Child
647
- as="picture"
648
- className="memori-chat--bubble-avatar"
649
- enter="transition ease-in-out duration-300"
650
- enterFrom={`opacity-0 scale-075 ${
651
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
652
- }`}
653
- enterTo="opacity-1 scale-1 translate-x-0"
654
- leave="transition ease-in-out duration-300"
655
- leaveFrom="opacity-1 scale-1 translate-x-0"
656
- leaveTo={`opacity-0 scale-075 ${
657
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
658
- }`}
659
- >
660
- <img
661
- className="memori-chat--bubble-avatar-img"
662
- alt={user?.userName ?? 'User'}
663
- src={userAvatar ?? user?.avatarURL}
664
- />
665
- </Transition.Child>
666
- ) : !!userAvatar ? (
667
- <Transition.Child
668
- as="div"
669
- className="memori-chat--bubble-avatar"
670
- enter="transition ease-in-out duration-300"
671
- enterFrom={`opacity-0 scale-075 ${
672
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
673
- }`}
674
- enterTo="opacity-1 scale-1 translate-x-0"
675
- leave="transition ease-in-out duration-300"
676
- leaveFrom="opacity-1 scale-1 translate-x-0"
677
- leaveTo={`opacity-0 scale-075 ${
678
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
679
- }`}
680
- >
681
- {userAvatar}
682
- </Transition.Child>
683
- ) : (
684
- <Transition.Child
685
- as="div"
686
- className="memori-chat--bubble-avatar"
687
- enter="transition ease-in-out duration-300"
688
- enterFrom={`opacity-0 scale-075 ${
689
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
690
- }`}
691
- enterTo="opacity-1 scale-1 translate-x-0"
692
- leave="transition ease-in-out duration-300"
693
- leaveFrom="opacity-1 scale-1 translate-x-0"
694
- leaveTo={`opacity-0 scale-075 ${
695
- message.fromUser ? 'translate-x-15' : 'translate-x--15'
696
- }`}
697
- >
698
- <UserIcon />
699
- </Transition.Child>
700
- )}
701
- </>
702
- )}
703
- </Transition>
801
+ </div>
802
+
803
+ {message.fromUser && renderUserAvatar()}
804
+ </div>
805
+ </div>
704
806
 
705
807
  {/* Document attachments are extracted and passed to Chat.tsx for rendering */}
706
808
 
@@ -716,8 +818,10 @@ const ChatBubble: React.FC<Props> = ({
716
818
 
717
819
  <Modal
718
820
  open={openFunctionCache}
719
- onClose={() => setOpenFunctionCache(false)}
720
821
  className="memori-chat--function-cache-modal"
822
+ title={t('functionCache') || 'Function Cache'}
823
+ closable={true}
824
+ onOpenChange={setOpenFunctionCache}
721
825
  >
722
826
  {functionCacheData?.map((f, i) => (
723
827
  <div