@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
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
1
+ import React, { useCallback, useEffect, useState, useMemo } from 'react';
2
2
  import cx from 'classnames';
3
3
  import {
4
4
  Memori,
@@ -7,38 +7,56 @@ import {
7
7
  Venue,
8
8
  User,
9
9
  } from '@memori.ai/memori-api-client/dist/types';
10
- import Button from '../ui/Button';
11
- import Dropdown from '../ui/Dropdown';
12
- import MapMarker from '../icons/MapMarker';
13
- import SoundDeactivated from '../icons/SoundDeactivated';
14
- import Sound from '../icons/Sound';
10
+ import {
11
+ Button,
12
+ Popover,
13
+ Tooltip,
14
+ useAlertManager,
15
+ createAlertOptions,
16
+ } from '@memori.ai/ui';
17
+ import {
18
+ VolumeX,
19
+ Volume2,
20
+ Settings,
21
+ Minimize,
22
+ Maximize,
23
+ MoreVertical,
24
+ RefreshCw,
25
+ X,
26
+ Brain,
27
+ MapPin,
28
+ ChevronDown,
29
+ ChevronRight,
30
+ Users,
31
+ User as UserIcon,
32
+ MessageCircle,
33
+ LogOut,
34
+ Trash2,
35
+ Camera,
36
+ } from 'lucide-react';
15
37
  import { useTranslation } from 'react-i18next';
16
- import Setting from '../icons/Setting';
17
38
  import ShareButton from '../ShareButton/ShareButton';
18
- import FullscreenExit from '../icons/FullscreenExit';
19
- import Fullscreen from '../icons/Fullscreen';
20
- import Refresh from '../icons/Refresh';
21
- import Clear from '../icons/Clear';
22
- import DeepThought from '../icons/DeepThought';
23
- import Group from '../icons/Group';
24
- import UserIcon from '../icons/User';
25
- import MessageIcon from '../icons/Message';
26
- import Logout from '../icons/Logout';
39
+ import PositionPopover from '../PositionPopover/PositionPopover';
40
+ import GasStation from '../icons/GasStation';
27
41
  import { getErrori18nKey } from '../../helpers/error';
28
- import toast from 'react-hot-toast';
29
42
  import memoriApiClient from '@memori.ai/memori-api-client';
30
43
  import { Props as WidgetProps } from '../MemoriWidget/MemoriWidget';
44
+ import { BADGE_EMOJI } from '../../helpers/llmUsage';
31
45
  import ChatConsumptionDropdown from './ChatConsumptionDropdown';
32
-
33
- const imgMimeTypes = ['image/jpeg', 'image/png', 'image/jpg', 'image/gif'];
46
+ import { imgMimeTypes } from '../../helpers/utils';
47
+ import { getResourceUrl } from '../../helpers/media';
34
48
 
35
49
  export interface Props {
36
50
  className?: string;
51
+ /** Variant applied to all header buttons (including share + user/login). */
52
+ buttonVariant?: React.ComponentProps<typeof Button>['variant'];
37
53
  memori: Memori;
38
54
  tenant?: Tenant;
39
55
  history: Message[];
40
56
  position?: Venue;
41
- setShowPositionDrawer: (show: boolean) => void;
57
+ setVenue: (venue?: Venue) => void;
58
+ positionPopoverOpen: boolean;
59
+ setPositionPopoverOpen: (open: boolean) => void;
42
60
  setShowSettingsDrawer: (show: boolean) => void;
43
61
  setShowChatHistoryDrawer: (show: boolean) => void;
44
62
  setShowKnownFactsDrawer: (show: boolean) => void;
@@ -65,15 +83,20 @@ export interface Props {
65
83
  layout?: WidgetProps['layout'];
66
84
  additionalSettings?: WidgetProps['additionalSettings'];
67
85
  showMessageConsumption?: boolean;
86
+ showFullscreen?: boolean;
87
+ extraActions?: React.ReactNode;
68
88
  }
69
89
 
70
90
  const Header: React.FC<Props> = ({
71
91
  className,
92
+ buttonVariant = 'ghost',
72
93
  memori,
73
94
  tenant,
74
95
  history,
75
96
  position,
76
- setShowPositionDrawer,
97
+ setVenue,
98
+ positionPopoverOpen,
99
+ setPositionPopoverOpen,
77
100
  setShowSettingsDrawer,
78
101
  setShowChatHistoryDrawer,
79
102
  setShowKnownFactsDrawer,
@@ -100,32 +123,181 @@ const Header: React.FC<Props> = ({
100
123
  layout,
101
124
  additionalSettings,
102
125
  showMessageConsumption = false,
126
+ showFullscreen = true,
127
+ extraActions,
103
128
  }) => {
104
129
  const { t, i18n } = useTranslation();
130
+ const { add } = useAlertManager();
105
131
  const { uploadAsset, pwlUpdateUser } = apiClient.backend;
106
132
  const [fullScreenAvailable, setFullScreenAvailable] = useState(false);
107
133
  const [fullScreen, setFullScreen] = useState(false);
134
+ const [userPopoverOpen, setUserPopoverOpen] = useState(false);
135
+ const [infoPopoverOpen, setInfoPopoverOpen] = useState(false);
136
+
137
+ type ImpactMetricType = 'energy' | 'co2' | 'water';
138
+
139
+ type LlmUsageEnergyImpact = {
140
+ energy?: number | { source?: string; parsedValue?: number };
141
+ gwp?: number | { source?: string; parsedValue?: number };
142
+ wcf?: number | { source?: string; parsedValue?: number };
143
+ };
144
+
145
+ const getMetricValue = (
146
+ metric?: number | { source?: string; parsedValue?: number }
147
+ ): number | undefined => {
148
+ if (typeof metric === 'number' && Number.isFinite(metric)) return metric;
149
+ if (!metric || typeof metric !== 'object') return undefined;
150
+ if (
151
+ typeof metric.parsedValue === 'number' &&
152
+ Number.isFinite(metric.parsedValue)
153
+ ) {
154
+ return metric.parsedValue;
155
+ }
156
+ if (typeof metric.source === 'string') {
157
+ const parsed = Number(metric.source);
158
+ if (Number.isFinite(parsed)) return parsed;
159
+ }
160
+ return undefined;
161
+ };
162
+
163
+ const formatMetricValue = (value: number, locale: string): string =>
164
+ new Intl.NumberFormat(locale, {
165
+ minimumFractionDigits: 0,
166
+ maximumFractionDigits: Math.abs(value) >= 1 ? 3 : 4,
167
+ }).format(value);
168
+
169
+ const formatImpactInReadableUnit = (
170
+ value: number,
171
+ metricType: ImpactMetricType,
172
+ locale: string
173
+ ): string => {
174
+ const absValue = Math.abs(value);
175
+
176
+ if (metricType === 'energy') {
177
+ if (absValue >= 1) return `${formatMetricValue(value, locale)} kWh`;
178
+ const wh = value * 1000;
179
+ if (Math.abs(wh) >= 1) return `${formatMetricValue(wh, locale)} Wh`;
180
+ return `${formatMetricValue(wh * 1000, locale)} mWh`;
181
+ }
182
+
183
+ if (metricType === 'co2') {
184
+ if (absValue >= 1) return `${formatMetricValue(value, locale)} kg`;
185
+ const g = value * 1000;
186
+ if (Math.abs(g) >= 1) return `${formatMetricValue(g, locale)} g`;
187
+ return `${formatMetricValue(g * 1000, locale)} mg`;
188
+ }
189
+
190
+ if (absValue >= 1) return `${formatMetricValue(value, locale)} L`;
191
+ const ml = value * 1000;
192
+ if (Math.abs(ml) >= 1) return `${formatMetricValue(ml, locale)} mL`;
193
+ return `${formatMetricValue(ml * 1000, locale)} μL`;
194
+ };
195
+
196
+ const currentLocale = i18n.language || navigator.language || 'en';
197
+ const chatLog = useMemo(() => ({ lines: history }), [history]);
198
+ const sustainabilityTotals = useMemo(() => {
199
+ const totals = { energy: 0, gwp: 0, wcf: 0 };
200
+ (chatLog?.lines ?? []).forEach(line => {
201
+ const energyImpact = (
202
+ line as Message & {
203
+ llmUsage?: { energyImpact?: LlmUsageEnergyImpact };
204
+ }
205
+ ).llmUsage?.energyImpact;
206
+ if (!energyImpact) return;
207
+ totals.energy += getMetricValue(energyImpact.energy) ?? 0;
208
+ totals.gwp += getMetricValue(energyImpact.gwp) ?? 0;
209
+ totals.wcf += getMetricValue(energyImpact.wcf) ?? 0;
210
+ });
211
+ return totals;
212
+ }, [chatLog]);
213
+ const hasSustainabilityData = useMemo(
214
+ () =>
215
+ (chatLog?.lines ?? []).some(
216
+ line =>
217
+ !!(
218
+ line as Message & {
219
+ llmUsage?: { energyImpact?: LlmUsageEnergyImpact };
220
+ }
221
+ ).llmUsage?.energyImpact
222
+ ),
223
+ [chatLog]
224
+ );
225
+ const hasChatConsumptionData = useMemo(
226
+ () =>
227
+ (chatLog?.lines ?? []).some(
228
+ line =>
229
+ !!(
230
+ line as Message & {
231
+ llmUsage?: {
232
+ provider?: string;
233
+ model?: string;
234
+ totalInputTokens?: number;
235
+ outputTokens?: number;
236
+ energyImpact?: LlmUsageEnergyImpact;
237
+ };
238
+ }
239
+ ).llmUsage
240
+ ),
241
+ [chatLog]
242
+ );
108
243
  useEffect(() => {
109
244
  if (document.fullscreenEnabled) {
110
245
  setFullScreenAvailable(true);
111
246
  }
112
247
  }, []);
113
248
 
249
+ // Keep local state in sync with ESC / external fullscreen exits,
250
+ // and restore any temporary inline background override.
251
+ useEffect(() => {
252
+ const handleFullscreenChange = () => {
253
+ const isFs = !!document.fullscreenElement;
254
+ setFullScreen(isFs);
255
+
256
+ if (!isFs) {
257
+ const memoriWidget = document.querySelector(
258
+ '.memori-widget'
259
+ ) as HTMLElement | null;
260
+ if (memoriWidget?.dataset?.memoriPrevBgColor !== undefined) {
261
+ memoriWidget.style.backgroundColor =
262
+ memoriWidget.dataset.memoriPrevBgColor;
263
+ delete memoriWidget.dataset.memoriPrevBgColor;
264
+ }
265
+ }
266
+ };
267
+
268
+ document.addEventListener('fullscreenchange', handleFullscreenChange);
269
+ return () =>
270
+ document.removeEventListener('fullscreenchange', handleFullscreenChange);
271
+ }, []);
272
+
273
+ const [showFullpageDividers, setShowFullpageDividers] = useState(() => {
274
+ if (typeof window === 'undefined' || !window.matchMedia) return true;
275
+ return !window.matchMedia('(max-width: 767px)').matches;
276
+ });
277
+
278
+ useEffect(() => {
279
+ if (!window.matchMedia) return;
280
+ const mq = window.matchMedia('(max-width: 767px)');
281
+ const update = () => setShowFullpageDividers(!mq.matches);
282
+ update();
283
+ mq.addEventListener('change', update);
284
+ return () => mq.removeEventListener('change', update);
285
+ }, []);
286
+
114
287
  // Helper function to determine if settings drawer has content
115
- const hasSettingsContent = useCallback((
116
- layout?: WidgetProps['layout'],
117
- additionalSettings?: WidgetProps['additionalSettings']
118
- ): boolean => {
119
- return (
120
- layout === 'TOTEM' ||
121
- (additionalSettings && Object.keys(additionalSettings).length > 0) || false
122
- );
123
- }, [layout, additionalSettings]);
124
-
125
- const hasSpacedButtons =
126
- layout === 'FULLPAGE' ||
127
- layout === 'CHAT' ||
128
- layout === 'ZOOMED_FULL_BODY';
288
+ const hasSettingsContent = useCallback(
289
+ (
290
+ layout?: WidgetProps['layout'],
291
+ additionalSettings?: WidgetProps['additionalSettings']
292
+ ): boolean => {
293
+ return (
294
+ layout === 'TOTEM' ||
295
+ (additionalSettings && Object.keys(additionalSettings).length > 0) ||
296
+ false
297
+ );
298
+ },
299
+ [layout, additionalSettings]
300
+ );
129
301
 
130
302
  const updateAvatar = async (avatar: any) => {
131
303
  if (avatar && loginToken) {
@@ -140,24 +312,51 @@ const Header: React.FC<Props> = ({
140
312
 
141
313
  if (resp.resultCode !== 0) {
142
314
  console.error('[updateAvatar] Upload failed:', resp);
143
- toast.error(t(getErrori18nKey(resp.resultCode)));
315
+ add(
316
+ createAlertOptions({
317
+ description: t(getErrori18nKey(resp.resultCode)),
318
+ severity: 'error',
319
+ })
320
+ );
144
321
  } else if (avatarAsset) {
145
322
  let newUser: Partial<User> = {
146
323
  userID: user?.userID,
147
324
  avatarURL: avatarAsset.assetURL,
148
325
  };
149
326
 
150
- const { user: patchedUser, ...resp } = await pwlUpdateUser(
327
+ const { user: patchedUser, ...updateResp } = await pwlUpdateUser(
151
328
  loginToken ?? '',
152
329
  user?.userID ?? '',
153
330
  newUser
154
331
  );
332
+
333
+ if (updateResp.resultCode !== 0) {
334
+ add(
335
+ createAlertOptions({
336
+ description: t(getErrori18nKey(updateResp.resultCode)),
337
+ severity: 'error',
338
+ })
339
+ );
340
+ } else {
341
+ add(
342
+ createAlertOptions({
343
+ description: t('login.avatarUploadSuccess'),
344
+ severity: 'success',
345
+ })
346
+ );
347
+ }
155
348
  }
156
349
  } catch (e) {
157
350
  let err = e as Error;
158
351
  console.error('[updateAvatar] Error:', err);
159
352
 
160
- if (err?.message) toast.error(err.message);
353
+ if (err?.message)
354
+ add(
355
+ createAlertOptions({
356
+ description: err.message,
357
+ severity: 'error',
358
+ })
359
+ );
161
360
  }
162
361
  };
163
362
  reader.readAsDataURL(avatar as Blob);
@@ -166,149 +365,456 @@ const Header: React.FC<Props> = ({
166
365
  avatar,
167
366
  loginToken,
168
367
  });
169
- toast.error(t('login.avatarUploadError'));
368
+ add(
369
+ createAlertOptions({
370
+ description: t('login.avatarUploadError'),
371
+ severity: 'error',
372
+ })
373
+ );
170
374
  }
171
375
  };
172
376
 
173
- return (
174
- <div className={cx('memori-header', hasSpacedButtons && 'memori-header--spaced', className)}>
175
- {memori.needsPosition && position && (
377
+ const isFullPageChrome = layout === 'FULLPAGE' || layout === 'CHAT';
378
+ const showFullpageChromeDividers = layout !== 'CHAT' && showFullpageDividers;
379
+ const fullpageGuestChrome = layout === 'FULLPAGE' && !loginToken;
380
+ const chatHistoryButtonLabel =
381
+ layout === 'TOTEM'
382
+ ? undefined
383
+ : layout === 'FULLPAGE' || layout === 'CHAT' || layout === 'HIDDEN_CHAT'
384
+ ? t('widget.headerHistory') || t('write_and_speak.chatHistory')
385
+ : t('write_and_speak.chatHistory');
386
+ const fullpageHeaderProfileLabel =
387
+ t('widget.headerProfile') || t('login.user') || 'Profile';
388
+ const fullpageHeaderLoginLabel =
389
+ t('widget.headerLogin') || t('login.login') || 'Login';
390
+ const isAuthenticated = !!loginToken && !!user;
391
+ const isConversationStarted = Boolean(sessionID && hasUserActivatedSpeak);
392
+
393
+ const brandAvatarSrc = useMemo(() => {
394
+ if (!isFullPageChrome || !memori) return undefined;
395
+
396
+ if (memori.avatarURL && memori.avatarURL.length > 0) {
397
+ return getResourceUrl({
398
+ type: 'avatar',
399
+ tenantID: tenant?.name,
400
+ resourceURI: memori.avatarURL,
401
+ baseURL: baseUrl,
402
+ apiURL: '',
403
+ });
404
+ }
405
+
406
+ return getResourceUrl({
407
+ type: 'avatar',
408
+ tenantID: tenant?.name,
409
+ baseURL: baseUrl,
410
+ apiURL: '',
411
+ });
412
+ }, [isFullPageChrome, memori, tenant, baseUrl]);
413
+
414
+ const fullpagePrimaryHasContent =
415
+ (showChatHistory && !!loginToken) || showLogin;
416
+
417
+ const fullpageSecondaryHasContent =
418
+ !!memori.needsPosition ||
419
+ showReload ||
420
+ showClear ||
421
+ showMessageConsumption ||
422
+ (showFullscreen && fullScreenAvailable) ||
423
+ (memori.enableDeepThought &&
424
+ !!loginToken &&
425
+ !!user?.pAndCUAccepted &&
426
+ hasUserActivatedSpeak &&
427
+ !!sessionID) ||
428
+ !!memori.enableBoardOfExperts ||
429
+ enableAudio ||
430
+ !!(showSettings && hasSettingsContent(layout, additionalSettings)) ||
431
+ showShare;
432
+
433
+ const chatHistoryNode = showChatHistory && !!loginToken && (
434
+ <Tooltip
435
+ title={t('write_and_speak.chatHistory') || 'Chat history'}
436
+ placement="bottom"
437
+ >
438
+ <span style={{ display: 'inline-flex' }}>
439
+ <Button
440
+ variant={buttonVariant}
441
+ className="memori-header--chat-history-button"
442
+ disabled={!loginToken}
443
+ aria-label={t('write_and_speak.chatHistory') || 'Chat history'}
444
+ icon={<MessageCircle />}
445
+ onClick={() => setShowChatHistoryDrawer(true)}
446
+ >
447
+ {chatHistoryButtonLabel}
448
+ </Button>
449
+ </span>
450
+ </Tooltip>
451
+ );
452
+
453
+ const loginNode = showLogin && (
454
+ <>
455
+ {loginToken && user ? (
456
+ <Popover
457
+ className="memori-header--dropdown"
458
+ open={userPopoverOpen}
459
+ onOpenChange={open => {
460
+ setUserPopoverOpen(open);
461
+ if (open) {
462
+ setInfoPopoverOpen(false);
463
+ setPositionPopoverOpen(false);
464
+ }
465
+ }}
466
+ placement="bottom-end"
467
+ sideOffset={8}
468
+ closable={false}
469
+ contentClassName="memori-dropdown--menu"
470
+ slotProps={{
471
+ trigger: {
472
+ className: cx(
473
+ 'memori-dropdown--user-trigger',
474
+ isFullPageChrome && 'memori-dropdown--user-trigger--fullpage'
475
+ ),
476
+ render: (props: React.ComponentProps<typeof Button>) => (
477
+ <Tooltip title={t('login.user') || 'User'} placement="bottom">
478
+ <span style={{ display: 'inline-flex' }}>
479
+ <Button
480
+ {...props}
481
+ variant={buttonVariant}
482
+ className={cx(
483
+ 'memori-dropdown--user-trigger-button',
484
+ isFullPageChrome &&
485
+ 'memori-header--fullpage-labeled-trigger',
486
+ userPopoverOpen && 'memori-button--active'
487
+ )}
488
+ aria-label={t('login.user') || 'User'}
489
+ icon={<UserIcon />}
490
+ >
491
+ {isFullPageChrome ? fullpageHeaderProfileLabel : null}
492
+ </Button>
493
+ </span>
494
+ </Tooltip>
495
+ ),
496
+ },
497
+ }}
498
+ content={
499
+ <div className="memori-dropdown--content">
500
+ <div className="memori-dropdown--user-item">
501
+ <div className="memori-dropdown--user-info">
502
+ <div className="memori-dropdown--avatar-wrap">
503
+ {user.avatarURL ? (
504
+ <>
505
+ <img
506
+ src={user.avatarURL}
507
+ alt={user.userName || user.eMail}
508
+ className="memori-dropdown--avatar"
509
+ />
510
+ <span
511
+ className="memori-dropdown--avatar-overlay"
512
+ aria-hidden
513
+ >
514
+ <Camera size={20} strokeWidth={2} />
515
+ </span>
516
+ <label htmlFor="avatar" className="sr-only">
517
+ {t('login.avatarChange')}
518
+ </label>
519
+ <input
520
+ type="file"
521
+ name="avatar"
522
+ id="avatar"
523
+ className="memori-dropdown--avatar-input"
524
+ onChange={e =>
525
+ updateAvatar(
526
+ e.target.files?.[0] ?? (null as unknown as Blob)
527
+ )
528
+ }
529
+ accept={imgMimeTypes.join(', ')}
530
+ />
531
+ </>
532
+ ) : (
533
+ <>
534
+ <div className="memori-dropdown--avatar-placeholder">
535
+ <span className="memori-dropdown--avatar-initial">
536
+ {(user.userName || user.eMail || 'U')
537
+ .charAt(0)
538
+ .toUpperCase()}
539
+ </span>
540
+ <span
541
+ className="memori-dropdown--avatar-overlay"
542
+ aria-hidden
543
+ >
544
+ <Camera size={20} strokeWidth={2} />
545
+ </span>
546
+ <label htmlFor="avatar" className="sr-only">
547
+ {t('login.avatarChange')}
548
+ </label>
549
+ <input
550
+ type="file"
551
+ name="avatar"
552
+ id="avatar"
553
+ className="memori-dropdown--avatar-input"
554
+ onChange={e =>
555
+ updateAvatar(
556
+ e.target.files?.[0] ?? (null as unknown as Blob)
557
+ )
558
+ }
559
+ accept={imgMimeTypes.join(', ')}
560
+ />
561
+ </div>
562
+ </>
563
+ )}
564
+ </div>
565
+ <div className="memori-dropdown--user-details">
566
+ <h3 className="memori-dropdown--user-name">
567
+ {user.userName || t('login.welcomeUser')}
568
+ </h3>
569
+ <p className="memori-dropdown--user-email">{user.eMail}</p>
570
+ <div className="memori-dropdown--user-badge">
571
+ {user.birthDate
572
+ ? new Date(user.birthDate).toLocaleDateString()
573
+ : t('login.notSet')}
574
+ </div>
575
+ </div>
576
+ </div>
577
+ </div>
578
+ <div className="memori-dropdown--separator" />
579
+ <Button
580
+ type="button"
581
+ variant={buttonVariant}
582
+ onClick={onLogout}
583
+ className="memori-dropdown--action-button memori-dropdown--action-button--logout"
584
+ icon={<LogOut size={18} strokeWidth={2} aria-hidden />}
585
+ >
586
+ {t('login.logout') || 'Logout'}
587
+ </Button>
588
+ </div>
589
+ }
590
+ >
591
+ {null}
592
+ </Popover>
593
+ ) : (
594
+ <Tooltip title={t('login.login') || 'Login'} placement="bottom">
595
+ <span style={{ display: 'inline-flex' }}>
596
+ <Button
597
+ variant={buttonVariant}
598
+ className="memori-header--button memori-header--button-login"
599
+ icon={<UserIcon />}
600
+ aria-label={t('login.login') || 'Login'}
601
+ onClick={() => setShowLoginDrawer(true)}
602
+ >
603
+ {isFullPageChrome ? fullpageHeaderLoginLabel : null}
604
+ </Button>
605
+ </span>
606
+ </Tooltip>
607
+ )}
608
+ </>
609
+ );
610
+
611
+ const headerActionsBeforeChatHistory = (
612
+ <>
613
+ {memori.needsPosition && (
176
614
  <div className="memori-header--position">
177
- {position.latitude !== 0 && position.longitude !== 0 && (
178
- <span className="memori-header--position-placeName">
179
- {position.placeName}
180
- </span>
181
- )}
182
- <Button
183
- primary
184
- shape="circle"
185
- className={cx('memori-header--button', 'memori-header--button--position', hasSpacedButtons && 'memori-header--button-spaced')}
615
+ <Tooltip
186
616
  title={t('widget.position') || 'Position'}
187
- icon={<MapMarker />}
188
- onClick={() => setShowPositionDrawer(true)}
189
- />
617
+ placement="bottom"
618
+ >
619
+ <span style={{ display: 'inline-flex' }}>
620
+ <PositionPopover
621
+ venue={position}
622
+ setVenue={setVenue}
623
+ open={positionPopoverOpen}
624
+ onOpenChange={open => {
625
+ setPositionPopoverOpen(open);
626
+ if (open) {
627
+ setInfoPopoverOpen(false);
628
+ setUserPopoverOpen(false);
629
+ }
630
+ }}
631
+ triggerButtonVariant={buttonVariant}
632
+ triggerAriaLabel={t('widget.position') || 'Position'}
633
+ positionerClassName={
634
+ layout === 'WEBSITE_ASSISTANT'
635
+ ? 'memori-position-popover__positioner--website-assistant'
636
+ : undefined
637
+ }
638
+ />
639
+ </span>
640
+ </Tooltip>
190
641
  </div>
191
642
  )}
192
643
  {showReload && (
193
- <Button
194
- primary
195
- shape="circle"
196
- className={cx('memori-header--button', 'memori-header--button--reload', hasSpacedButtons && 'memori-header--button-spaced')}
197
- title={t('reload') || 'Reload'}
198
- icon={<Refresh />}
199
- onClick={() => {
200
- window.location.reload();
201
- }}
202
- />
644
+ <Tooltip title={t('reload') || 'Reload'} placement="bottom">
645
+ <span style={{ display: 'inline-flex' }}>
646
+ <Button
647
+ variant={buttonVariant}
648
+ aria-label={t('reload') || 'Reload'}
649
+ icon={<RefreshCw />}
650
+ onClick={() => {
651
+ window.location.reload();
652
+ }}
653
+ />
654
+ </span>
655
+ </Tooltip>
203
656
  )}
204
657
  {showClear && (
205
- <Button
206
- primary
207
- shape="circle"
208
- className={cx('memori-header--button', 'memori-header--button--clear', hasSpacedButtons && 'memori-header--button-spaced')}
209
- title={t('clearHistory') || 'Clear chat'}
210
- icon={<Clear />}
211
- onClick={clearHistory}
212
- />
213
- )}
214
- {showChatHistory && !!loginToken && (
215
- <Button
216
- primary
217
- disabled={!loginToken}
218
- shape="circle"
219
- className={cx('memori-header--button', 'memori-header--button--chat-history', hasSpacedButtons && 'memori-header--button-spaced')}
220
- title={t('write_and_speak.chatHistory') || 'Chat history'}
221
- icon={<MessageIcon />}
222
- onClick={() => setShowChatHistoryDrawer(true)}
223
- />
658
+ <Tooltip title={t('clearHistory') || 'Clear chat'} placement="bottom">
659
+ <span style={{ display: 'inline-flex' }}>
660
+ <Button
661
+ variant={buttonVariant}
662
+ aria-label={t('clearHistory') || 'Clear chat'}
663
+ icon={<Trash2 />}
664
+ onClick={() => {
665
+ clearHistory();
666
+ add(
667
+ createAlertOptions({
668
+ description: t('clearHistoryDone'),
669
+ severity: 'success',
670
+ })
671
+ );
672
+ }}
673
+ />
674
+ </span>
675
+ </Tooltip>
224
676
  )}
677
+ </>
678
+ );
679
+
680
+ const headerActionsAfterChatHistory = (
681
+ <>
225
682
  {showMessageConsumption && (
226
683
  <ChatConsumptionDropdown
227
684
  history={history}
228
- hasSpacedButtons={hasSpacedButtons}
685
+ triggerVariant={buttonVariant}
229
686
  />
230
687
  )}
231
- {fullScreenAvailable && (
232
- <Button
233
- primary
234
- shape="circle"
235
- className={cx('memori-header--button', 'memori-header--button--fullscreen', hasSpacedButtons && 'memori-header--button-spaced')}
688
+ {showFullscreen && fullScreenAvailable && (
689
+ <Tooltip
236
690
  title={
237
691
  fullScreen
238
692
  ? t('fullscreenExit') || 'Exit fullscreen'
239
693
  : t('fullscreenEnter') || 'Enter fullscreen'
240
694
  }
241
- icon={fullScreen ? <FullscreenExit /> : <Fullscreen />}
242
- onClick={
243
- fullScreenHandler ||
244
- (() => {
245
- if (!document.fullscreenElement) {
246
- const body =
247
- layout !== 'HIDDEN_CHAT' && layout !== 'WEBSITE_ASSISTANT'
248
- ? document.body
249
- : document.querySelector('.memori-widget');
250
- if (body) {
251
- //set the .memori-react div to white backg
252
- const memoriReact = document.querySelector('.memori-widget');
253
- if (memoriReact) {
254
- (memoriReact as HTMLElement).style.backgroundColor =
255
- '#FFFFFF';
695
+ placement="bottom"
696
+ >
697
+ <span style={{ display: 'inline-flex' }}>
698
+ <Button
699
+ variant={buttonVariant}
700
+ aria-label={
701
+ fullScreen
702
+ ? t('fullscreenExit') || 'Exit fullscreen'
703
+ : t('fullscreenEnter') || 'Enter fullscreen'
704
+ }
705
+ icon={fullScreen ? <Maximize /> : <Minimize />}
706
+ onClick={
707
+ fullScreenHandler ||
708
+ (() => {
709
+ if (!document.fullscreenElement) {
710
+ const body =
711
+ layout !== 'HIDDEN_CHAT' && layout !== 'WEBSITE_ASSISTANT'
712
+ ? document.body
713
+ : document.querySelector('.memori-widget');
714
+ if (body) {
715
+ // Don't force a white background in fullscreen; it breaks dark themes.
716
+ // If an inline background was previously set, preserve & clear it.
717
+ const memoriWidget = document.querySelector(
718
+ '.memori-widget'
719
+ ) as HTMLElement | null;
720
+ if (memoriWidget) {
721
+ if (
722
+ memoriWidget.dataset.memoriPrevBgColor === undefined
723
+ )
724
+ memoriWidget.dataset.memoriPrevBgColor =
725
+ memoriWidget.style.backgroundColor ?? '';
726
+ memoriWidget.style.backgroundColor = '';
727
+ }
728
+ body
729
+ .requestFullscreen()
730
+ .then(() => setFullScreen(true))
731
+ .catch(err => {
732
+ console.warn(
733
+ 'Error attempting to enable fullscreen:',
734
+ err
735
+ );
736
+ });
737
+ }
738
+ } else {
739
+ if (document.exitFullscreen) {
740
+ document
741
+ .exitFullscreen()
742
+ .then(() => {
743
+ setFullScreen(false);
744
+ const memoriWidget = document.querySelector(
745
+ '.memori-widget'
746
+ ) as HTMLElement | null;
747
+ if (
748
+ memoriWidget?.dataset?.memoriPrevBgColor !==
749
+ undefined
750
+ ) {
751
+ memoriWidget.style.backgroundColor =
752
+ memoriWidget.dataset.memoriPrevBgColor;
753
+ delete memoriWidget.dataset.memoriPrevBgColor;
754
+ }
755
+ })
756
+ .catch(err => {
757
+ console.warn(
758
+ 'Error attempting to exit fullscreen:',
759
+ err
760
+ );
761
+ });
762
+ }
256
763
  }
257
- body
258
- .requestFullscreen()
259
- .then(() => setFullScreen(true))
260
- .catch(err => {
261
- console.warn(
262
- 'Error attempting to enable fullscreen:',
263
- err
264
- );
265
- });
266
- }
267
- } else {
268
- if (document.exitFullscreen) {
269
- document
270
- .exitFullscreen()
271
- .then(() => setFullScreen(false))
272
- .catch(err => {
273
- console.warn('Error attempting to exit fullscreen:', err);
274
- });
275
- }
764
+ })
276
765
  }
277
- })
278
- }
279
- />
280
- )}
281
- {memori.enableDeepThought && !!loginToken && user?.pAndCUAccepted && (
282
- <Button
283
- primary={!!sessionID && !!hasUserActivatedSpeak}
284
- shape="circle"
285
- icon={<DeepThought />}
286
- className={cx('memori-header--button', 'memori-header--button--knownfacts', hasSpacedButtons && 'memori-header--button-spaced')}
287
- disabled={!hasUserActivatedSpeak || !sessionID}
288
- onClick={() => setShowKnownFactsDrawer(true)}
289
- title={t('knownFacts.title') || 'Known facts'}
290
- />
766
+ />
767
+ </span>
768
+ </Tooltip>
291
769
  )}
770
+ {memori.enableDeepThought &&
771
+ !!loginToken &&
772
+ user?.pAndCUAccepted &&
773
+ hasUserActivatedSpeak &&
774
+ !!sessionID && (
775
+ <Tooltip
776
+ title={t('knownFacts.title') || 'Known facts'}
777
+ placement="bottom"
778
+ >
779
+ <span style={{ display: 'inline-flex' }}>
780
+ <Button
781
+ variant={buttonVariant}
782
+ icon={<Brain />}
783
+ aria-label={t('knownFacts.title') || 'Known facts'}
784
+ onClick={() => setShowKnownFactsDrawer(true)}
785
+ />
786
+ </span>
787
+ </Tooltip>
788
+ )}
292
789
  {memori.enableBoardOfExperts && (
293
- <Button
294
- primary
295
- shape="circle"
296
- icon={<Group />}
297
- className={cx('memori-header--button', 'memori-header--button--experts', hasSpacedButtons && 'memori-header--button-spaced')}
298
- disabled={!hasUserActivatedSpeak || !sessionID}
299
- onClick={() => setShowExpertsDrawer(true)}
790
+ <Tooltip
300
791
  title={t('widget.showExpertsInTheBoard') || 'Experts in this board'}
301
- />
792
+ placement="bottom"
793
+ >
794
+ <span style={{ display: 'inline-flex' }}>
795
+ <Button
796
+ variant={buttonVariant}
797
+ icon={<Users />}
798
+ disabled={!hasUserActivatedSpeak || !sessionID}
799
+ aria-label={
800
+ t('widget.showExpertsInTheBoard') || 'Experts in this board'
801
+ }
802
+ onClick={() => setShowExpertsDrawer(true)}
803
+ />
804
+ </span>
805
+ </Tooltip>
302
806
  )}
303
807
  {enableAudio && (
304
- <Button
305
- primary
306
- shape="circle"
307
- className={cx('memori-header--button', 'memori-header--button--speaker', hasSpacedButtons && 'memori-header--button-spaced', { 'memori-header--button--speaker-muted': speakerMuted })}
308
- icon={speakerMuted ? <SoundDeactivated /> : <Sound />}
309
- onClick={() => setSpeakerMuted(!speakerMuted)}
310
- title={t('widget.sound') || 'Sound'}
311
- />
808
+ <Tooltip title={t('widget.sound') || 'Sound'} placement="bottom">
809
+ <span style={{ display: 'inline-flex' }}>
810
+ <Button
811
+ variant={buttonVariant}
812
+ icon={speakerMuted ? <VolumeX /> : <Volume2 />}
813
+ aria-label={t('widget.sound') || 'Sound'}
814
+ onClick={() => setSpeakerMuted(!speakerMuted)}
815
+ />
816
+ </span>
817
+ </Tooltip>
312
818
  )}
313
819
  {/* <ExportHistoryButton
314
820
  history={history}
@@ -316,20 +822,20 @@ const Header: React.FC<Props> = ({
316
822
  className="memori-header--button memori-header--button--export"
317
823
  disabled={!hasUserActivatedSpeak || history.length === 0}
318
824
  /> */}
319
- {showSettings &&
320
- hasSettingsContent(layout, additionalSettings) && (
321
- <Button
322
- primary
323
- shape="circle"
324
- className={cx('memori-header--button', 'memori-header--button-settings', hasSpacedButtons && 'memori-header--button-spaced')}
325
- icon={<Setting />}
326
- onClick={() => setShowSettingsDrawer(true)}
327
- title={t('widget.settings') || 'Settings'}
328
- />
329
- )}
825
+ {showSettings && hasSettingsContent(layout, additionalSettings) && (
826
+ <Tooltip title={t('widget.settings') || 'Settings'} placement="bottom">
827
+ <span style={{ display: 'inline-flex' }}>
828
+ <Button
829
+ variant={buttonVariant}
830
+ icon={<Settings />}
831
+ aria-label={t('widget.settings') || 'Settings'}
832
+ onClick={() => setShowSettingsDrawer(true)}
833
+ />
834
+ </span>
835
+ </Tooltip>
836
+ )}
330
837
  {showShare && (
331
838
  <ShareButton
332
- className={cx('memori-header--button', 'memori-header--button-share', hasSpacedButtons && 'memori-header--button-spaced')}
333
839
  title={memori.name}
334
840
  memori={memori}
335
841
  sessionID={sessionID}
@@ -338,105 +844,386 @@ const Header: React.FC<Props> = ({
338
844
  align="left"
339
845
  baseUrl={baseUrl}
340
846
  history={history}
847
+ triggerVariant={buttonVariant}
341
848
  />
342
849
  )}
343
- {showLogin && (
344
- <>
345
- {loginToken && user ? (
346
- <Dropdown
347
- placement="bottom-right"
348
- trigger={
349
- <Button
350
- primary
351
- shape="circle"
352
- className={cx('memori-header--button', 'memori-header--button-login', hasSpacedButtons && 'memori-header--button-spaced')}
353
- icon={<UserIcon />}
354
- title={t('login.user') || 'User'}
355
- />
356
- }
357
- >
358
- <div className="memori-dropdown--user-profile">
359
- <div className="memori-dropdown--user-info">
360
- {user.avatarURL ? (
361
- <>
362
- <img
363
- src={user.avatarURL}
364
- alt={user.userName || user.eMail}
365
- className="memori-dropdown--avatar"
366
- />
367
- <input
368
- type="file"
369
- name="avatar"
370
- id="avatar"
371
- className="memori-dropdown--avatar-input"
372
- onChange={e =>
373
- updateAvatar(
374
- e.target.files?.[0] ?? (null as unknown as Blob)
375
- )
376
- }
377
- accept={imgMimeTypes.join(', ')}
378
- />
379
- </>
380
- ) : (
381
- <div className="memori-dropdown--avatar-placeholder">
382
- <span>
383
- {(user.userName || user.eMail || 'U')
384
- .charAt(0)
385
- .toUpperCase()}
386
- </span>
387
- <input
388
- type="file"
389
- name="avatar"
390
- id="avatar"
391
- className="memori-dropdown--avatar-input"
392
- onChange={e =>
393
- updateAvatar(
394
- e.target.files?.[0] ?? (null as unknown as Blob)
395
- )
396
- }
397
- accept={imgMimeTypes.join(', ')}
398
- />
399
- </div>
400
- )}
850
+ </>
851
+ );
401
852
 
402
- <div className="memori-dropdown--user-details">
403
- <h3 className="memori-dropdown--user-name">
404
- {user.userName || t('login.welcomeUser')}
405
- </h3>
406
- <p className="memori-dropdown--user-email">{user.eMail}</p>
407
- <div className="memori-dropdown--user-badge">
408
- {user.birthDate
409
- ? new Date(user.birthDate).toLocaleDateString()
410
- : t('login.notSet')}
411
- </div>
412
- </div>
413
- </div>
414
- </div>
853
+ const sessionInfoConsumptionSubtitle = hasSustainabilityData
854
+ ? `${formatImpactInReadableUnit(
855
+ sustainabilityTotals.energy,
856
+ 'energy',
857
+ currentLocale
858
+ )} • ${formatImpactInReadableUnit(
859
+ sustainabilityTotals.gwp,
860
+ 'co2',
861
+ currentLocale
862
+ )}`
863
+ : t('widget.noData', { defaultValue: 'Nessun dato disponibile' });
415
864
 
416
- <div className="memori-dropdown--actions">
865
+ const loggedInFullpageRightControls = (
866
+ <div className="memori-header--auth-icon-controls">
867
+ {isConversationStarted && showFullpageDividers && (
868
+ <Popover
869
+ className="memori-header--dropdown"
870
+ open={infoPopoverOpen}
871
+ onOpenChange={open => {
872
+ setInfoPopoverOpen(open);
873
+ if (open) {
874
+ setUserPopoverOpen(false);
875
+ setPositionPopoverOpen(false);
876
+ }
877
+ }}
878
+ placement="bottom-end"
879
+ sideOffset={8}
880
+ closable={false}
881
+ contentClassName="memori-dropdown--menu memori-dropdown--auth-menu"
882
+ slotProps={{
883
+ trigger: {
884
+ render: (props: React.ComponentProps<typeof Button>) => (
885
+ <Tooltip title="Info sessione" placement="bottom">
886
+ <span style={{ display: 'inline-flex' }}>
887
+ <Button
888
+ {...props}
889
+ variant={buttonVariant}
890
+ className={cx(
891
+ 'memori-header--auth-icon-button',
892
+ infoPopoverOpen && 'memori-button--active'
893
+ )}
894
+ aria-label="Info sessione"
895
+ icon={<MoreVertical />}
896
+ />
897
+ </span>
898
+ </Tooltip>
899
+ ),
900
+ },
901
+ }}
902
+ content={
903
+ <div className="memori-dropdown--auth-content">
904
+ <button
905
+ type="button"
906
+ className="memori-dropdown--auth-row memori-dropdown--auth-row--navigable"
907
+ onClick={() => {
908
+ setShowKnownFactsDrawer(true);
909
+ setInfoPopoverOpen(false);
910
+ }}
911
+ >
912
+ <span className="memori-dropdown--auth-icon-wrap">
913
+ <Brain size={16} />
914
+ </span>
915
+ <span className="memori-dropdown--auth-copy">
916
+ <span className="memori-dropdown--auth-title">
917
+ {t('knownFacts.title') || 'Known facts'}
918
+ </span>
919
+ <span className="memori-dropdown--auth-subtitle">
920
+ {t('widget.knownFactsHint') || 'What I remember about you'}
921
+ </span>
922
+ </span>
923
+ {/* <ChevronRight size={16} aria-hidden /> */}
924
+ </button>
925
+ {hasChatConsumptionData ? (
926
+ <ChatConsumptionDropdown
927
+ history={history}
928
+ triggerVariant={buttonVariant}
929
+ menuAlign="start"
930
+ trigger={triggerProps => (
931
+ <button
932
+ {...triggerProps}
933
+ type="button"
934
+ className={cx(
935
+ 'memori-dropdown--auth-row',
936
+ 'memori-dropdown--auth-row--navigable',
937
+ triggerProps.className
938
+ )}
939
+ >
940
+ <span className="memori-dropdown--auth-icon-wrap">
941
+ <GasStation />
942
+ </span>
943
+ <span className="memori-dropdown--auth-copy">
944
+ <span className="memori-dropdown--auth-title">
945
+ {t('widget.aiConsumption') || 'AI usage'}
946
+ </span>
947
+ <span className="memori-dropdown--auth-subtitle">
948
+ {sessionInfoConsumptionSubtitle}
949
+ </span>
950
+ </span>
951
+ <ChevronDown size={16} aria-hidden />
952
+ </button>
953
+ )}
954
+ />
955
+ ) : (
417
956
  <button
418
- className="memori-dropdown--action-button memori-dropdown--action-button--logout"
419
- onClick={onLogout}
957
+ type="button"
958
+ disabled
959
+ className="memori-dropdown--auth-row memori-dropdown--auth-row--navigable memori-dropdown--auth-row--disabled"
420
960
  >
421
- <Logout className="memori-dropdown--action-icon" />
422
- {t('login.logout') || 'Logout'}
961
+ <span className="memori-dropdown--auth-icon-wrap">
962
+ <GasStation />
963
+ </span>
964
+ <span className="memori-dropdown--auth-copy">
965
+ <span className="memori-dropdown--auth-title">
966
+ {t('widget.aiConsumption') || 'AI usage'}
967
+ </span>
968
+ <span className="memori-dropdown--auth-subtitle">
969
+ {sessionInfoConsumptionSubtitle}
970
+ </span>
971
+ </span>
972
+ <ChevronDown size={16} aria-hidden />
423
973
  </button>
424
- </div>
425
- </Dropdown>
426
- ) : (
974
+ )}
975
+ </div>
976
+ }
977
+ >
978
+ {null}
979
+ </Popover>
980
+ )}
981
+ {showFullscreen && fullScreenAvailable && (
982
+ <Tooltip
983
+ title={
984
+ fullScreen
985
+ ? t('fullscreenExit') || 'Exit fullscreen'
986
+ : t('fullscreenEnter') || 'Enter fullscreen'
987
+ }
988
+ placement="bottom"
989
+ >
990
+ <span style={{ display: 'inline-flex' }}>
427
991
  <Button
428
- primary
429
- shape="circle"
430
- className={cx('memori-header--button', 'memori-header--button-login', hasSpacedButtons && 'memori-header--button-spaced')}
431
- icon={<UserIcon />}
432
- onClick={() => setShowLoginDrawer(true)}
433
- title={t('login.login') || 'Login'}
992
+ variant={buttonVariant}
993
+ className="memori-header--auth-icon-button"
994
+ aria-label={
995
+ fullScreen
996
+ ? t('fullscreenExit') || 'Exit fullscreen'
997
+ : t('fullscreenEnter') || 'Enter fullscreen'
998
+ }
999
+ icon={fullScreen ? <Minimize /> : <Maximize />}
1000
+ onClick={
1001
+ fullScreenHandler ||
1002
+ (() => {
1003
+ if (!document.fullscreenElement) {
1004
+ const body =
1005
+ layout !== 'HIDDEN_CHAT' && layout !== 'WEBSITE_ASSISTANT'
1006
+ ? document.body
1007
+ : document.querySelector('.memori-widget');
1008
+ if (body) {
1009
+ const memoriWidget = document.querySelector(
1010
+ '.memori-widget'
1011
+ ) as HTMLElement | null;
1012
+ if (memoriWidget) {
1013
+ if (
1014
+ memoriWidget.dataset.memoriPrevBgColor === undefined
1015
+ )
1016
+ memoriWidget.dataset.memoriPrevBgColor =
1017
+ memoriWidget.style.backgroundColor ?? '';
1018
+ memoriWidget.style.backgroundColor = '';
1019
+ }
1020
+ body
1021
+ .requestFullscreen()
1022
+ .then(() => setFullScreen(true))
1023
+ .catch(err => {
1024
+ console.warn(
1025
+ 'Error attempting to enable fullscreen:',
1026
+ err
1027
+ );
1028
+ });
1029
+ }
1030
+ } else if (document.exitFullscreen) {
1031
+ document
1032
+ .exitFullscreen()
1033
+ .then(() => {
1034
+ setFullScreen(false);
1035
+ const memoriWidget = document.querySelector(
1036
+ '.memori-widget'
1037
+ ) as HTMLElement | null;
1038
+ if (
1039
+ memoriWidget?.dataset?.memoriPrevBgColor !== undefined
1040
+ ) {
1041
+ memoriWidget.style.backgroundColor =
1042
+ memoriWidget.dataset.memoriPrevBgColor;
1043
+ delete memoriWidget.dataset.memoriPrevBgColor;
1044
+ }
1045
+ })
1046
+ .catch(err => {
1047
+ console.warn(
1048
+ 'Error attempting to exit fullscreen:',
1049
+ err
1050
+ );
1051
+ });
1052
+ }
1053
+ })
1054
+ }
434
1055
  />
1056
+ </span>
1057
+ </Tooltip>
1058
+ )}
1059
+ {enableAudio && (
1060
+ <Tooltip title={t('widget.sound') || 'Sound'} placement="bottom">
1061
+ <span style={{ display: 'inline-flex' }}>
1062
+ <Button
1063
+ variant={buttonVariant}
1064
+ className="memori-header--auth-icon-button"
1065
+ aria-label={t('widget.sound') || 'Sound'}
1066
+ icon={speakerMuted ? <VolumeX /> : <Volume2 />}
1067
+ onClick={() => setSpeakerMuted(!speakerMuted)}
1068
+ />
1069
+ </span>
1070
+ </Tooltip>
1071
+ )}
1072
+ {memori.needsPosition && (
1073
+ <Tooltip title={t('widget.position') || 'Position'} placement="bottom">
1074
+ <span style={{ display: 'inline-flex' }}>
1075
+ <PositionPopover
1076
+ venue={position}
1077
+ setVenue={setVenue}
1078
+ open={positionPopoverOpen}
1079
+ onOpenChange={open => {
1080
+ setPositionPopoverOpen(open);
1081
+ if (open) {
1082
+ setInfoPopoverOpen(false);
1083
+ setUserPopoverOpen(false);
1084
+ }
1085
+ }}
1086
+ triggerButtonVariant={buttonVariant}
1087
+ triggerClassName="memori-header--auth-icon-button"
1088
+ triggerAriaLabel={t('widget.position') || 'Position'}
1089
+ positionerClassName={
1090
+ layout === 'WEBSITE_ASSISTANT'
1091
+ ? 'memori-position-popover__positioner--website-assistant'
1092
+ : undefined
1093
+ }
1094
+ />
1095
+ </span>
1096
+ </Tooltip>
1097
+ )}
1098
+ {showShare && (
1099
+ <span className="memori-header--auth-share-button-wrap">
1100
+ <ShareButton
1101
+ title={memori.name}
1102
+ memori={memori}
1103
+ sessionID={sessionID}
1104
+ tenant={tenant}
1105
+ showQrCode
1106
+ align="left"
1107
+ baseUrl={baseUrl}
1108
+ history={history}
1109
+ triggerVariant={buttonVariant}
1110
+ className="memori-header--auth-share-button"
1111
+ />
1112
+ </span>
1113
+ )}
1114
+ </div>
1115
+ );
1116
+
1117
+ const headerControls = (
1118
+ <div
1119
+ className={cx(
1120
+ 'memori-header',
1121
+ className,
1122
+ isFullPageChrome && 'memori-header--fullpage',
1123
+ fullpageGuestChrome && 'memori-header--fullpage-guest'
1124
+ )}
1125
+ >
1126
+ {isFullPageChrome && isAuthenticated ? (
1127
+ <>
1128
+ {fullpagePrimaryHasContent && (
1129
+ <div className="memori-header--fullpage-primary">
1130
+ {chatHistoryNode}
1131
+ </div>
435
1132
  )}
1133
+ {fullpagePrimaryHasContent &&
1134
+ showFullpageChromeDividers &&
1135
+ !fullpageGuestChrome && (
1136
+ <div
1137
+ className="memori-header--fullpage-divider"
1138
+ aria-hidden="true"
1139
+ />
1140
+ )}
1141
+ <div className="memori-header--fullpage-secondary">
1142
+ {loggedInFullpageRightControls}
1143
+ {showFullpageChromeDividers && (
1144
+ <div
1145
+ className="memori-header--fullpage-divider"
1146
+ aria-hidden="true"
1147
+ />
1148
+ )}
1149
+ {loginNode}
1150
+ </div>
1151
+ </>
1152
+ ) : isFullPageChrome ? (
1153
+ <>
1154
+ {fullpagePrimaryHasContent && (
1155
+ <div className="memori-header--fullpage-primary">
1156
+ {chatHistoryNode}
1157
+ {/* {loginNode} */}
1158
+ </div>
1159
+ )}
1160
+
1161
+ {fullpagePrimaryHasContent &&
1162
+ fullpageSecondaryHasContent &&
1163
+ showFullpageChromeDividers &&
1164
+ !fullpageGuestChrome && (
1165
+ <div
1166
+ className="memori-header--fullpage-divider"
1167
+ aria-hidden="true"
1168
+ />
1169
+ )}
1170
+ <div className="memori-header--fullpage-secondary">
1171
+ {headerActionsBeforeChatHistory}
1172
+ {headerActionsAfterChatHistory}
1173
+ {fullpagePrimaryHasContent &&
1174
+ fullpageSecondaryHasContent &&
1175
+ showFullpageChromeDividers && (
1176
+ <div
1177
+ className="memori-header--fullpage-divider"
1178
+ aria-hidden="true"
1179
+ />
1180
+ )}
1181
+ {loginNode}
1182
+ </div>
1183
+ </>
1184
+ ) : (
1185
+ <>
1186
+ {headerActionsBeforeChatHistory}
1187
+ {chatHistoryNode}
1188
+ {headerActionsAfterChatHistory}
1189
+ {loginNode}
436
1190
  </>
437
1191
  )}
1192
+ {extraActions}
438
1193
  </div>
439
1194
  );
1195
+
1196
+ if (!isFullPageChrome) {
1197
+ return headerControls;
1198
+ }
1199
+
1200
+ return (
1201
+ <>
1202
+ {memori && (
1203
+ <div className="memori-fullpage-header-brand">
1204
+ {brandAvatarSrc ? (
1205
+ <img
1206
+ className="memori-fullpage-header-brand-icon memori-fullpage-header-brand-icon--avatar"
1207
+ src={brandAvatarSrc}
1208
+ alt=""
1209
+ role="presentation"
1210
+ />
1211
+ ) : (
1212
+ <span className="memori-fullpage-header-brand-icon" aria-hidden />
1213
+ )}
1214
+ {isConversationStarted && (
1215
+ <span
1216
+ className="memori-fullpage-header-brand-name"
1217
+ title={memori.name}
1218
+ >
1219
+ {memori.name}
1220
+ </span>
1221
+ )}
1222
+ </div>
1223
+ )}
1224
+ <div className="memori-fullpage-header-actions">{headerControls}</div>
1225
+ </>
1226
+ );
440
1227
  };
441
1228
 
442
1229
  export default Header;