@memori.ai/memori-react 9.0.0-alpha.21 → 9.0.0-alpha.23

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 (283) hide show
  1. package/CHANGELOG.md +453 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +12 -5
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -32
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  10. package/dist/components/Chat/Chat.css +1 -0
  11. package/dist/components/Chat/Chat.js +1 -1
  12. package/dist/components/Chat/Chat.js.map +1 -1
  13. package/dist/components/ChatBubble/ChatBubble.css +32 -5
  14. package/dist/components/ChatBubble/ChatBubble.js +14 -11
  15. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  16. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  17. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  18. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  19. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  20. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  21. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
  22. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  23. package/dist/components/ChatInputs/ChatInputs.js +10 -1
  24. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  25. package/dist/components/ChatTextArea/ChatTextArea.css +1 -1
  26. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  27. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  28. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  29. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  30. package/dist/components/FeedbackButtons/FeedbackButtons.js +2 -2
  31. package/dist/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  32. package/dist/components/Header/Header.css +8 -3
  33. package/dist/components/Header/Header.js +15 -18
  34. package/dist/components/Header/Header.js.map +1 -1
  35. package/dist/components/IconButton/IconButton.d.ts +1 -1
  36. package/dist/components/KnownFacts/KnownFacts.css +1 -1
  37. package/dist/components/KnownFacts/KnownFacts.js +2 -5
  38. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  39. package/dist/components/LoginDrawer/LoginDrawer.css +16 -14
  40. package/dist/components/LoginDrawer/LoginDrawer.js +19 -11
  41. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  42. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  43. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  44. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  45. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  46. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +1 -1
  47. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  48. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -0
  49. package/dist/components/MemoriWidget/MemoriWidget.js +93 -32
  50. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  51. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  52. package/dist/components/PositionPopover/PositionPopover.css +3 -3
  53. package/dist/components/PositionPopover/PositionPopover.js +38 -25
  54. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  55. package/dist/components/Snippet/Snippet.css +1 -1
  56. package/dist/components/StartPanel/StartPanel.css +19 -3
  57. package/dist/components/StartPanel/StartPanel.js +12 -18
  58. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  59. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  60. package/dist/components/layouts/chat.css +5 -2
  61. package/dist/components/layouts/totem.css +43 -9
  62. package/dist/helpers/nats/getNatsConfig.js.map +1 -1
  63. package/dist/helpers/nats/useNats.d.ts +2 -1
  64. package/dist/helpers/nats/useNats.js +87 -20
  65. package/dist/helpers/nats/useNats.js.map +1 -1
  66. package/dist/helpers/nats/useNatsSession.d.ts +6 -1
  67. package/dist/helpers/nats/useNatsSession.js +48 -7
  68. package/dist/helpers/nats/useNatsSession.js.map +1 -1
  69. package/dist/helpers/positionPopover.d.ts +2 -1
  70. package/dist/helpers/positionPopover.js +10 -2
  71. package/dist/helpers/positionPopover.js.map +1 -1
  72. package/dist/icons/MemoriIcon.js +1 -1
  73. package/dist/icons/MemoriIcon.js.map +1 -1
  74. package/dist/locales/de.json +4 -1
  75. package/dist/locales/en.json +3 -1
  76. package/dist/locales/es.json +3 -1
  77. package/dist/locales/fr.json +3 -1
  78. package/dist/locales/it.json +3 -1
  79. package/dist/styles.css +1 -1
  80. package/dist/version.d.ts +1 -1
  81. package/dist/version.js +1 -1
  82. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  83. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  84. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  85. package/esm/components/Auth/Auth.css +12 -5
  86. package/esm/components/Auth/Auth.d.ts +1 -1
  87. package/esm/components/Auth/Auth.js +47 -33
  88. package/esm/components/Auth/Auth.js.map +1 -1
  89. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  90. package/esm/components/Chat/Chat.css +1 -0
  91. package/esm/components/Chat/Chat.js +1 -1
  92. package/esm/components/Chat/Chat.js.map +1 -1
  93. package/esm/components/ChatBubble/ChatBubble.css +32 -5
  94. package/esm/components/ChatBubble/ChatBubble.js +14 -11
  95. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  96. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  97. package/esm/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  98. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  99. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  100. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  101. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -59
  102. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  103. package/esm/components/ChatInputs/ChatInputs.js +11 -2
  104. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  105. package/esm/components/ChatTextArea/ChatTextArea.css +1 -1
  106. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  107. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  108. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  109. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  110. package/esm/components/FeedbackButtons/FeedbackButtons.js +2 -2
  111. package/esm/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  112. package/esm/components/Header/Header.css +8 -3
  113. package/esm/components/Header/Header.js +15 -18
  114. package/esm/components/Header/Header.js.map +1 -1
  115. package/esm/components/IconButton/IconButton.d.ts +1 -1
  116. package/esm/components/KnownFacts/KnownFacts.css +1 -1
  117. package/esm/components/KnownFacts/KnownFacts.js +2 -5
  118. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  119. package/esm/components/LoginDrawer/LoginDrawer.css +16 -14
  120. package/esm/components/LoginDrawer/LoginDrawer.js +20 -12
  121. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  122. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  123. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  124. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  125. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  126. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +1 -1
  127. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  128. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -0
  129. package/esm/components/MemoriWidget/MemoriWidget.js +93 -33
  130. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  131. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  132. package/esm/components/PositionPopover/PositionPopover.css +3 -3
  133. package/esm/components/PositionPopover/PositionPopover.js +39 -26
  134. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  135. package/esm/components/Snippet/Snippet.css +1 -1
  136. package/esm/components/StartPanel/StartPanel.css +19 -3
  137. package/esm/components/StartPanel/StartPanel.js +12 -18
  138. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  139. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  140. package/esm/components/layouts/chat.css +5 -2
  141. package/esm/components/layouts/totem.css +43 -9
  142. package/esm/helpers/nats/getNatsConfig.js.map +1 -1
  143. package/esm/helpers/nats/useNats.d.ts +2 -1
  144. package/esm/helpers/nats/useNats.js +87 -20
  145. package/esm/helpers/nats/useNats.js.map +1 -1
  146. package/esm/helpers/nats/useNatsSession.d.ts +6 -1
  147. package/esm/helpers/nats/useNatsSession.js +48 -8
  148. package/esm/helpers/nats/useNatsSession.js.map +1 -1
  149. package/esm/helpers/positionPopover.d.ts +2 -1
  150. package/esm/helpers/positionPopover.js +9 -2
  151. package/esm/helpers/positionPopover.js.map +1 -1
  152. package/esm/icons/MemoriIcon.js +1 -1
  153. package/esm/icons/MemoriIcon.js.map +1 -1
  154. package/esm/locales/de.json +4 -1
  155. package/esm/locales/en.json +3 -1
  156. package/esm/locales/es.json +3 -1
  157. package/esm/locales/fr.json +3 -1
  158. package/esm/locales/it.json +3 -1
  159. package/esm/styles.css +1 -1
  160. package/esm/version.d.ts +1 -1
  161. package/esm/version.js +1 -1
  162. package/package.json +8 -5
  163. package/src/Live/Agents.stories.tsx +49 -0
  164. package/src/Live/KnownFacts.stories.tsx +50 -0
  165. package/src/Showcase.stories.tsx +3 -14
  166. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  167. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +1 -1
  168. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -0
  169. package/src/components/Auth/Auth.css +12 -5
  170. package/src/components/Auth/Auth.stories.tsx +1 -1
  171. package/src/components/Auth/Auth.test.tsx +68 -1
  172. package/src/components/Auth/Auth.tsx +69 -54
  173. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +5 -6
  174. package/src/components/Avatar/Avatar.stories.tsx +1 -18
  175. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +1 -103
  176. package/src/components/Blob/Blob.stories.tsx +1 -1
  177. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  178. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +1 -1
  179. package/src/components/ChangeMode/ChangeMode.stories.tsx +1 -1
  180. package/src/components/Chat/Chat.css +1 -0
  181. package/src/components/Chat/Chat.stories.tsx +61 -7
  182. package/src/components/Chat/Chat.tsx +1 -0
  183. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +151 -151
  184. package/src/components/ChatBubble/ChatBubble.css +32 -5
  185. package/src/components/ChatBubble/ChatBubble.stories.tsx +24 -2
  186. package/src/components/ChatBubble/ChatBubble.test.tsx +37 -1
  187. package/src/components/ChatBubble/ChatBubble.tsx +308 -299
  188. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +384 -264
  189. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +1 -1
  190. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +6 -0
  191. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  192. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +24 -81
  193. package/src/components/ChatInputs/ChatInputs.stories.tsx +1 -39
  194. package/src/components/ChatInputs/ChatInputs.test.tsx +47 -0
  195. package/src/components/ChatInputs/ChatInputs.tsx +12 -2
  196. package/src/components/ChatTextArea/ChatTextArea.css +1 -1
  197. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  198. package/src/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  199. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +1 -1
  200. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  201. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +1 -1
  202. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +29 -10
  203. package/src/components/FeedbackButtons/FeedbackButtons.tsx +2 -0
  204. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +1 -1
  205. package/src/components/Header/Header.css +8 -3
  206. package/src/components/Header/Header.stories.tsx +1 -1
  207. package/src/components/Header/Header.tsx +146 -117
  208. package/src/components/KnownFacts/KnownFacts.css +1 -1
  209. package/src/components/KnownFacts/KnownFacts.stories.tsx +1 -23
  210. package/src/components/KnownFacts/KnownFacts.tsx +4 -9
  211. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +6 -2
  212. package/src/components/LoginDrawer/LoginDrawer.css +16 -14
  213. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -52
  214. package/src/components/LoginDrawer/LoginDrawer.tsx +51 -39
  215. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +33 -11
  216. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +1 -15
  217. package/src/components/MediaWidget/MediaWidget.stories.tsx +1 -45
  218. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +1 -1
  219. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  220. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  221. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +4 -6
  222. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +1 -1
  223. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +32 -28
  224. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +55 -0
  225. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +55 -77
  226. package/src/components/MemoriWidget/MemoriWidget.tsx +114 -45
  227. package/src/components/MemoriWidget/getChatStyles.test.ts +24 -0
  228. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +1 -1
  229. package/src/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  230. package/src/components/PositionPopover/PositionPopover.css +3 -3
  231. package/src/components/PositionPopover/PositionPopover.stories.tsx +1 -1
  232. package/src/components/PositionPopover/PositionPopover.tsx +50 -28
  233. package/src/components/PoweredBy/PoweredBy.stories.tsx +1 -54
  234. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +2 -2
  235. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +1 -1
  236. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +1 -1
  237. package/src/components/ShareButton/ShareButton.stories.tsx +1 -1
  238. package/src/components/Snippet/Snippet.css +1 -1
  239. package/src/components/Snippet/Snippet.stories.tsx +1 -1
  240. package/src/components/StartPanel/StartPanel.css +19 -3
  241. package/src/components/StartPanel/StartPanel.stories.tsx +2 -2
  242. package/src/components/StartPanel/StartPanel.tsx +22 -35
  243. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +177 -121
  244. package/src/components/Typing/Typing.stories.tsx +1 -1
  245. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +22 -44
  246. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +9 -3
  247. package/src/components/layouts/FullBody/FullBody.stories.tsx +55 -68
  248. package/src/components/layouts/Totem/Totem.stories.tsx +69 -87
  249. package/src/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  250. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +69 -87
  251. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +19 -41
  252. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +39 -83
  253. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +15 -11
  254. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +116 -42
  255. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +18 -40
  256. package/src/components/layouts/chat.css +5 -2
  257. package/src/components/layouts/layouts.stories.tsx +96 -179
  258. package/src/components/layouts/totem.css +43 -9
  259. package/src/helpers/nats/getNatsConfig.ts +4 -1
  260. package/src/helpers/nats/useNats.test.tsx +81 -0
  261. package/src/helpers/nats/useNats.ts +109 -29
  262. package/src/helpers/nats/useNatsSession.test.ts +16 -0
  263. package/src/helpers/nats/useNatsSession.ts +79 -13
  264. package/src/helpers/positionPopover.test.ts +36 -1
  265. package/src/helpers/positionPopover.ts +21 -4
  266. package/src/i18n.knownFacts.test.ts +40 -0
  267. package/src/icons/MemoriIcon.tsx +1 -1
  268. package/src/index.stories.tsx +1 -47
  269. package/src/locales/de.json +4 -1
  270. package/src/locales/en.json +3 -1
  271. package/src/locales/es.json +3 -1
  272. package/src/locales/fr.json +3 -1
  273. package/src/locales/it.json +3 -1
  274. package/src/styles.css +13 -27
  275. package/src/version.ts +1 -1
  276. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  277. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  278. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  279. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  280. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  281. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  282. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  283. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
@@ -426,9 +426,7 @@ const Header: React.FC<Props> = ({
426
426
  const isAuthenticated = !!loginToken && !!user?.userID;
427
427
  const isConversationStarted = Boolean(sessionID && hasUserActivatedSpeak);
428
428
  const showKnownFacts =
429
- !!memori.enableDeepThought &&
430
- !!loginToken &&
431
- !!user?.pAndCUAccepted;
429
+ !!memori.enableDeepThought && !!loginToken && !!user?.pAndCUAccepted;
432
430
  const showSessionInfoMenu =
433
431
  isConversationStarted &&
434
432
  showFullpageDividers &&
@@ -441,8 +439,7 @@ const Header: React.FC<Props> = ({
441
439
  return raw
442
440
  .replace(/<[^>]+>/g, ' ')
443
441
  .replace(/\s+/g, ' ')
444
- .trim()
445
- .slice(0, 140);
442
+ .trim();
446
443
  }, [memori?.description]);
447
444
 
448
445
  const brandAvatarSrc = useMemo(() => {
@@ -497,7 +494,9 @@ const Header: React.FC<Props> = ({
497
494
  const showLoginDivider =
498
495
  showFullpageChromeDividers &&
499
496
  !!showLogin &&
500
- (isAuthenticated ? loggedInSecondaryHasActions : fullpageSecondaryHasContent);
497
+ (isAuthenticated
498
+ ? loggedInSecondaryHasActions
499
+ : fullpageSecondaryHasContent);
501
500
 
502
501
  const chatHistoryNode = showChatHistory && !!loginToken && (
503
502
  <Tooltip
@@ -829,20 +828,20 @@ const Header: React.FC<Props> = ({
829
828
  </Tooltip>
830
829
  )}
831
830
  {showKnownFacts && isConversationStarted && (
832
- <Tooltip
833
- title={t('knownFacts.title') || 'Known facts'}
834
- placement="bottom"
835
- >
836
- <span style={{ display: 'inline-flex' }}>
837
- <IconButton
838
- variant={buttonVariant}
839
- icon={<Brain />}
840
- aria-label={t('knownFacts.title') || 'Known facts'}
841
- onClick={() => setShowKnownFactsDrawer(true)}
842
- />
843
- </span>
844
- </Tooltip>
845
- )}
831
+ <Tooltip
832
+ title={t('knownFacts.title') || 'Known facts'}
833
+ placement="bottom"
834
+ >
835
+ <span style={{ display: 'inline-flex' }}>
836
+ <IconButton
837
+ variant={buttonVariant}
838
+ icon={<Brain />}
839
+ aria-label={t('knownFacts.title') || 'Known facts'}
840
+ onClick={() => setShowKnownFactsDrawer(true)}
841
+ />
842
+ </span>
843
+ </Tooltip>
844
+ )}
846
845
  {memori.enableBoardOfExperts && (
847
846
  <Tooltip
848
847
  title={t('widget.showExpertsInTheBoard') || 'Experts in this board'}
@@ -866,7 +865,13 @@ const Header: React.FC<Props> = ({
866
865
  <span style={{ display: 'inline-flex' }}>
867
866
  <IconButton
868
867
  variant={buttonVariant}
869
- icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
868
+ icon={
869
+ speakerMuted ? (
870
+ <VolumeX size={20} strokeWidth={2.35} aria-hidden />
871
+ ) : (
872
+ <Volume2 size={20} strokeWidth={2} aria-hidden />
873
+ )
874
+ }
870
875
  title={soundLabel}
871
876
  aria-label={soundLabel}
872
877
  onClick={() => setSpeakerMuted(!speakerMuted)}
@@ -974,7 +979,8 @@ const Header: React.FC<Props> = ({
974
979
  {t('knownFacts.title') || 'Known facts'}
975
980
  </span>
976
981
  <span className="memori-dropdown--auth-subtitle">
977
- {t('widget.knownFactsHint') || 'What I remember about you'}
982
+ {t('widget.knownFactsHint') ||
983
+ 'What I remember about you'}
978
984
  </span>
979
985
  </span>
980
986
  {/* <ChevronRight size={16} aria-hidden /> */}
@@ -982,60 +988,60 @@ const Header: React.FC<Props> = ({
982
988
  )}
983
989
  {showMessageConsumption &&
984
990
  (hasChatConsumptionData ? (
985
- <ChatConsumptionDropdown
986
- history={history}
987
- triggerVariant={buttonVariant}
988
- menuAlign="start"
989
- trigger={(triggerProps, { open }) => (
990
- <button
991
- {...triggerProps}
992
- type="button"
993
- className={cx(
994
- 'memori-dropdown--auth-row',
995
- 'memori-dropdown--auth-row--navigable',
996
- open && 'memori-dropdown--auth-row--active',
997
- triggerProps.className
998
- )}
999
- >
1000
- <span className="memori-dropdown--auth-icon-wrap">
1001
- <GasStation />
1002
- </span>
1003
- <span className="memori-dropdown--auth-copy">
1004
- <span className="memori-dropdown--auth-title">
1005
- {t('widget.aiConsumption') || 'AI usage'}
991
+ <ChatConsumptionDropdown
992
+ history={history}
993
+ triggerVariant={buttonVariant}
994
+ menuAlign="start"
995
+ trigger={(triggerProps, { open }) => (
996
+ <button
997
+ {...triggerProps}
998
+ type="button"
999
+ className={cx(
1000
+ 'memori-dropdown--auth-row',
1001
+ 'memori-dropdown--auth-row--navigable',
1002
+ open && 'memori-dropdown--auth-row--active',
1003
+ triggerProps.className
1004
+ )}
1005
+ >
1006
+ <span className="memori-dropdown--auth-icon-wrap">
1007
+ <GasStation />
1006
1008
  </span>
1007
- <span className="memori-dropdown--auth-subtitle">
1008
- {sessionInfoConsumptionSubtitle}
1009
+ <span className="memori-dropdown--auth-copy">
1010
+ <span className="memori-dropdown--auth-title">
1011
+ {t('widget.aiConsumption') || 'AI usage'}
1012
+ </span>
1013
+ <span className="memori-dropdown--auth-subtitle">
1014
+ {sessionInfoConsumptionSubtitle}
1015
+ </span>
1009
1016
  </span>
1010
- </span>
1011
- {open ? (
1012
- <ChevronDown size={16} aria-hidden />
1013
- ) : (
1014
- <ChevronUp size={16} aria-hidden />
1015
- )}
1016
- </button>
1017
- )}
1018
- />
1019
- ) : (
1020
- <button
1021
- type="button"
1022
- disabled
1023
- className="memori-dropdown--auth-row memori-dropdown--auth-row--navigable memori-dropdown--auth-row--disabled"
1024
- >
1025
- <span className="memori-dropdown--auth-icon-wrap">
1026
- <GasStation />
1027
- </span>
1028
- <span className="memori-dropdown--auth-copy">
1029
- <span className="memori-dropdown--auth-title">
1030
- {t('widget.aiConsumption') || 'AI usage'}
1017
+ {open ? (
1018
+ <ChevronDown size={16} aria-hidden />
1019
+ ) : (
1020
+ <ChevronUp size={16} aria-hidden />
1021
+ )}
1022
+ </button>
1023
+ )}
1024
+ />
1025
+ ) : (
1026
+ <button
1027
+ type="button"
1028
+ disabled
1029
+ className="memori-dropdown--auth-row memori-dropdown--auth-row--navigable memori-dropdown--auth-row--disabled"
1030
+ >
1031
+ <span className="memori-dropdown--auth-icon-wrap">
1032
+ <GasStation />
1031
1033
  </span>
1032
- <span className="memori-dropdown--auth-subtitle">
1033
- {sessionInfoConsumptionSubtitle}
1034
+ <span className="memori-dropdown--auth-copy">
1035
+ <span className="memori-dropdown--auth-title">
1036
+ {t('widget.aiConsumption') || 'AI usage'}
1037
+ </span>
1038
+ <span className="memori-dropdown--auth-subtitle">
1039
+ {sessionInfoConsumptionSubtitle}
1040
+ </span>
1034
1041
  </span>
1035
- </span>
1036
- <ChevronUp size={16} aria-hidden />
1037
- </button>
1038
- ))}
1042
+ <ChevronUp size={16} aria-hidden />
1043
+ </button>
1044
+ ))}
1039
1045
  </div>
1040
1046
  }
1041
1047
  >
@@ -1118,7 +1124,13 @@ const Header: React.FC<Props> = ({
1118
1124
  className="memori-header--auth-icon-button"
1119
1125
  title={soundLabel}
1120
1126
  aria-label={soundLabel}
1121
- icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
1127
+ icon={
1128
+ speakerMuted ? (
1129
+ <VolumeX size={20} strokeWidth={2.35} aria-hidden />
1130
+ ) : (
1131
+ <Volume2 size={20} strokeWidth={2} aria-hidden />
1132
+ )
1133
+ }
1122
1134
  onClick={() => setSpeakerMuted(!speakerMuted)}
1123
1135
  />
1124
1136
  </span>
@@ -1170,9 +1182,7 @@ const Header: React.FC<Props> = ({
1170
1182
  </div>
1171
1183
  );
1172
1184
 
1173
- const handleTotemFullscreen = (
1174
- e: React.MouseEvent<HTMLButtonElement>
1175
- ) => {
1185
+ const handleTotemFullscreen = (e: React.MouseEvent<HTMLButtonElement>) => {
1176
1186
  if (fullScreenHandler) {
1177
1187
  fullScreenHandler(e);
1178
1188
  return;
@@ -1194,13 +1204,15 @@ const Header: React.FC<Props> = ({
1194
1204
  const totemResetLabel = t('reload') || 'Restart conversation';
1195
1205
  const totemSettingsLabel = t('widget.settings') || 'Settings';
1196
1206
  const totemKnownFactsLabel = t('knownFacts.title') || 'Known facts';
1207
+ const totemChatHistoryLabel =
1208
+ t('write_and_speak.chatHistory') || 'Chat history';
1197
1209
  const totemShowSettings =
1198
1210
  showSettings && hasSettingsContent(layout, additionalSettings);
1199
1211
  const totemShowKnownFacts = showKnownFacts && isConversationStarted;
1200
1212
 
1201
1213
  // TOTEM rail: two-tier grouping inside one bordered container (section 5).
1202
- // Tier 1 (visible): session utilities — audio, fullscreen, share.
1203
- // Tier 2 (profile menu): account items — reset, settings, user data, logout.
1214
+ // Tier 1 (visible): session utilities — audio, fullscreen, share, reload, settings, history.
1215
+ // Tier 2 (profile menu): account items — user data, logout.
1204
1216
  const totemRail = (
1205
1217
  <div
1206
1218
  className={cx('memori-totem-rail', className)}
@@ -1217,7 +1229,13 @@ const Header: React.FC<Props> = ({
1217
1229
  <IconButton
1218
1230
  variant={buttonVariant}
1219
1231
  className="memori-totem-rail--button"
1220
- icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
1232
+ icon={
1233
+ speakerMuted ? (
1234
+ <VolumeX size={20} strokeWidth={2.35} aria-hidden />
1235
+ ) : (
1236
+ <Volume2 size={20} strokeWidth={2} aria-hidden />
1237
+ )
1238
+ }
1221
1239
  title={soundLabel}
1222
1240
  aria-label={soundLabel}
1223
1241
  aria-pressed={speakerMuted}
@@ -1255,6 +1273,50 @@ const Header: React.FC<Props> = ({
1255
1273
  className="memori-totem-rail--button"
1256
1274
  />
1257
1275
  )}
1276
+ {showReload && (
1277
+ <Tooltip title={totemResetLabel} placement="left">
1278
+ <span style={{ display: 'inline-flex' }}>
1279
+ <IconButton
1280
+ variant={buttonVariant}
1281
+ className="memori-totem-rail--button"
1282
+ icon={<RefreshCw />}
1283
+ title={totemResetLabel}
1284
+ aria-label={totemResetLabel}
1285
+ onClick={() => {
1286
+ window.location.reload();
1287
+ }}
1288
+ />
1289
+ </span>
1290
+ </Tooltip>
1291
+ )}
1292
+ {totemShowSettings && (
1293
+ <Tooltip title={totemSettingsLabel} placement="left">
1294
+ <span style={{ display: 'inline-flex' }}>
1295
+ <IconButton
1296
+ variant={buttonVariant}
1297
+ className="memori-totem-rail--button"
1298
+ icon={<Settings />}
1299
+ title={totemSettingsLabel}
1300
+ aria-label={totemSettingsLabel}
1301
+ onClick={() => setShowSettingsDrawer(true)}
1302
+ />
1303
+ </span>
1304
+ </Tooltip>
1305
+ )}
1306
+ {showChatHistory && !!loginToken && (
1307
+ <Tooltip title={totemChatHistoryLabel} placement="left">
1308
+ <span style={{ display: 'inline-flex' }}>
1309
+ <IconButton
1310
+ variant={buttonVariant}
1311
+ className="memori-totem-rail--button"
1312
+ icon={<MessageCircle />}
1313
+ title={totemChatHistoryLabel}
1314
+ aria-label={totemChatHistoryLabel}
1315
+ onClick={() => setShowChatHistoryDrawer(true)}
1316
+ />
1317
+ </span>
1318
+ </Tooltip>
1319
+ )}
1258
1320
  </div>
1259
1321
 
1260
1322
  <div className="memori-totem-rail--divider" aria-hidden="true" />
@@ -1310,38 +1372,6 @@ const Header: React.FC<Props> = ({
1310
1372
  )}
1311
1373
  </div>
1312
1374
  )}
1313
- {showReload && (
1314
- <Button
1315
- type="button"
1316
- variant="ghost"
1317
- className="memori-totem-rail--menu-item"
1318
- icon={<RefreshCw size={18} aria-hidden />}
1319
- title={totemResetLabel}
1320
- aria-label={totemResetLabel}
1321
- onClick={() => {
1322
- setUserPopoverOpen(false);
1323
- window.location.reload();
1324
- }}
1325
- >
1326
- {totemResetLabel}
1327
- </Button>
1328
- )}
1329
- {totemShowSettings && (
1330
- <Button
1331
- type="button"
1332
- variant="ghost"
1333
- className="memori-totem-rail--menu-item"
1334
- icon={<Settings size={18} aria-hidden />}
1335
- title={totemSettingsLabel}
1336
- aria-label={totemSettingsLabel}
1337
- onClick={() => {
1338
- setUserPopoverOpen(false);
1339
- setShowSettingsDrawer(true);
1340
- }}
1341
- >
1342
- {totemSettingsLabel}
1343
- </Button>
1344
- )}
1345
1375
  {totemShowKnownFacts && (
1346
1376
  <Button
1347
1377
  type="button"
@@ -1506,12 +1536,11 @@ const Header: React.FC<Props> = ({
1506
1536
  </span>
1507
1537
  ) : null}
1508
1538
  {brandRole ? (
1509
- <span
1510
- className="memori-fullpage-header-brand-role"
1511
- title={brandRole}
1512
- >
1513
- {brandRole}
1514
- </span>
1539
+ <Tooltip title={brandRole} placement="bottom">
1540
+ <span className="memori-fullpage-header-brand-role">
1541
+ {brandRole}
1542
+ </span>
1543
+ </Tooltip>
1515
1544
  ) : null}
1516
1545
  </div>
1517
1546
  )}
@@ -21,7 +21,7 @@
21
21
  min-height: 0;
22
22
  flex: 1 1 auto;
23
23
  flex-direction: column;
24
- border: 1px solid var(--memori-color-border, #e2e8f0);
24
+ border: 1px solid var(--memori-border-color, #e2e8f0);
25
25
  border-radius: 8px;
26
26
  }
27
27
 
@@ -9,7 +9,7 @@ import './KnownFacts.css';
9
9
  import { AlertProvider } from '@memori.ai/ui';
10
10
 
11
11
  const meta: Meta = {
12
- title: 'Known Facts',
12
+ title: 'Surfaces/Known Facts',
13
13
  component: KnownFacts,
14
14
  argTypes: {
15
15
  visible: {
@@ -40,8 +40,6 @@ const Template: Story<Props> = args => (
40
40
  </I18nWrapper>
41
41
  );
42
42
 
43
- // By passing using the Args format for exported stories, you can control the props for a component for reuse in a test
44
- // https://storybook.js.org/docs/react/workflows/unit-testing
45
43
  export const Default = Template.bind({});
46
44
  Default.args = {
47
45
  visible: true,
@@ -61,23 +59,3 @@ WithPaginatedData.args = {
61
59
  knownFactID: fact.knownFactID + index,
62
60
  })),
63
61
  };
64
-
65
- export const WithRealDataLocalhost = Template.bind({});
66
- WithRealDataLocalhost.args = {
67
- visible: true,
68
- sessionID: '5841f5f9-3315-4a5a-9b62-33b13d5a27fd',
69
- memori: {
70
- memoriName: 'test memori',
71
- ownerUserName: 'nicola',
72
- memoriID: '1a9c75e8-57aa-4ce3-8ea5-256185fa79a7',
73
- ownerUserID: '04a8cff9-13d6-4367-9cb2-72b9af9ee494',
74
- tenantID: 'app.memorytwin.com',
75
- apiURL: 'http://localhost:7778',
76
- baseURL: 'http://localhost:3000',
77
- uiLang: 'EN',
78
- lang: 'IT',
79
- layout: 'FULLPAGE',
80
- showShare: 'true',
81
- integrationID: '82f017cc-450b-4c47-acf5-47910d336ce9',
82
- },
83
- };
@@ -14,12 +14,9 @@ import {
14
14
  Table,
15
15
  useAlertManager,
16
16
  createAlertOptions,
17
+ type ColumnDef,
17
18
  } from '@memori.ai/ui';
18
- import type {
19
- ColumnDef,
20
- PaginationState,
21
- Updater,
22
- } from '@tanstack/react-table';
19
+ import type { PaginationState, Updater } from '@tanstack/react-table';
23
20
  import { getErrori18nKey } from '../../helpers/error';
24
21
  import { useTranslation } from 'react-i18next';
25
22
  import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
@@ -124,10 +121,6 @@ const KnownFacts = ({
124
121
  () =>
125
122
  t('knownFacts.selectedRows', {
126
123
  count: bulkDeleteIds.length,
127
- defaultValue:
128
- bulkDeleteIds.length === 1
129
- ? '{{count}} row selected'
130
- : '{{count}} rows selected',
131
124
  }),
132
125
  [bulkDeleteIds.length, t]
133
126
  );
@@ -186,6 +179,7 @@ const KnownFacts = ({
186
179
  <Modal
187
180
  container={surfaceEl ?? undefined}
188
181
  className="memori-known-facts-modal"
182
+ stacking="stacked"
189
183
  open={bulkDeleteModalVisible}
190
184
  closable
191
185
  title={
@@ -327,6 +321,7 @@ const KnownFacts = ({
327
321
  <Modal
328
322
  container={surfaceEl ?? undefined}
329
323
  className="memori-known-facts-modal"
324
+ stacking="stacked"
330
325
  open={deleteModalVisibleFor !== undefined}
331
326
  closable
332
327
  title={t('knownFacts.deleteConfirmTitle')}
@@ -15,7 +15,9 @@ exports[`renders KnownFacts hidden unchanged 1`] = `
15
15
  `;
16
16
 
17
17
  exports[`renders KnownFacts visible unchanged 1`] = `
18
- <div>
18
+ <div
19
+ data-base-ui-inert=""
20
+ >
19
21
  <div
20
22
  aria-atomic="false"
21
23
  aria-label="Notifications"
@@ -29,7 +31,9 @@ exports[`renders KnownFacts visible unchanged 1`] = `
29
31
  `;
30
32
 
31
33
  exports[`renders KnownFacts with data unchanged 1`] = `
32
- <div>
34
+ <div
35
+ data-base-ui-inert=""
36
+ >
33
37
  <div
34
38
  aria-atomic="false"
35
39
  aria-label="Notifications"
@@ -1,6 +1,6 @@
1
1
  /* ===== LOGIN DRAWER BASE STYLES ===== */
2
2
  .memori--login-drawer {
3
- z-index: 10000;
3
+ z-index: 1400;
4
4
  }
5
5
 
6
6
  .memori--login-drawer .memori-drawer__body {
@@ -28,21 +28,12 @@
28
28
  }
29
29
 
30
30
  .memori--login-drawer .memori-drawer--panel {
31
- --memori-drawer--width: 100%;
32
- --memori-drawer--width--md: 60%;
33
- --memori-drawer--width--lg: 40%;
34
31
  height: 100vh;
35
32
  border-radius: var(--memori-radius-box) 0 0 var(--memori-radius-box);
36
33
  background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
37
34
  box-shadow: -8px 0 32px rgba(0, 0, 0, 0.1);
38
35
  }
39
36
 
40
- .memori--login-drawer.memori--login-drawer--logged .memori-drawer--panel {
41
- --memori-drawer--width: 100%;
42
- --memori-drawer--width--md: 40%;
43
- --memori-drawer--width--lg: 30%;
44
- }
45
-
46
37
  .memori--login-drawer--title {
47
38
  margin: 0;
48
39
  font-size: inherit;
@@ -632,7 +623,12 @@ p.memori--login-drawer--inline-error {
632
623
 
633
624
  .memori--login-drawer--otp-digit-input.error {
634
625
  border-color: #ef4444;
635
- background: #fff;
626
+ background: color-mix(in srgb, #ef4444 10%, var(--memori-main-background, #fff));
627
+ }
628
+
629
+ [data-theme='dark'] .memori--login-drawer--otp-digit-input.error,
630
+ .memori-widget[data-theme='dark'] .memori--login-drawer--otp-digit-input.error {
631
+ background: color-mix(in srgb, #ef4444 18%, var(--memori-main-background, #1f2937));
636
632
  }
637
633
 
638
634
  .memori--login-drawer--otp-email-input {
@@ -866,13 +862,20 @@ p.memori--login-drawer--inline-error {
866
862
  border-radius: var(--memori-radius-box);
867
863
  margin: var(--memori-spacing-lg) 0;
868
864
  animation: errorSlide 0.3s ease-out;
869
- background: linear-gradient(135deg, #fee2e2, #fecaca);
870
- color: var(--memori-text-color);
865
+ background: #fee2e2;
866
+ color: #991b1b;
871
867
  font-size: 0.95rem;
872
868
  font-weight: var(--memori-text-weight-medium);
873
869
  gap: var(--memori-spacing-sm);
874
870
  }
875
871
 
872
+ [data-theme='dark'] .memori--login-drawer--otp-error,
873
+ .memori-widget[data-theme='dark'] .memori--login-drawer--otp-error {
874
+ border-color: #f87171;
875
+ background: color-mix(in srgb, #ef4444 18%, var(--memori-main-background, #1f2937));
876
+ color: #fecaca;
877
+ }
878
+
876
879
  @keyframes errorSlide {
877
880
  from {
878
881
  opacity: 0;
@@ -959,7 +962,6 @@ p.memori--login-drawer--inline-error {
959
962
  }
960
963
 
961
964
  .memori--login-drawer .memori-drawer--panel {
962
- --memori-drawer--width: 100%;
963
965
  border-radius: 20px 20px 0 0;
964
966
  }
965
967
 
@@ -2,13 +2,13 @@ import React from 'react';
2
2
  import { Meta, Story } from '@storybook/react';
3
3
  import I18nWrapper from '../../I18nWrapper';
4
4
  import LoginDrawer, { Props } from './LoginDrawer';
5
- import { tenant, user } from '../../mocks/data';
5
+ import { tenant } from '../../mocks/data';
6
6
  import memoriApiClient from '@memori.ai/memori-api-client';
7
7
  import './LoginDrawer.css';
8
8
  import { AlertProvider } from '@memori.ai/ui';
9
9
 
10
10
  const meta: Meta = {
11
- title: 'Widget/LoginDrawer',
11
+ title: 'Surfaces/LoginDrawer',
12
12
  component: LoginDrawer,
13
13
  argTypes: {
14
14
  open: {
@@ -53,53 +53,3 @@ NeedsMissingData.args = {
53
53
  open: true,
54
54
  __TEST__needMissingData: true,
55
55
  };
56
-
57
- export const Signup = Template.bind({});
58
- Signup.args = {
59
- open: true,
60
- __TEST__signup: true,
61
- };
62
-
63
- export const SignupWaitingForOtp = Template.bind({});
64
- SignupWaitingForOtp.args = {
65
- open: true,
66
- __TEST__signup: true,
67
- };
68
-
69
- export const ChangePassword = Template.bind({});
70
- ChangePassword.args = {
71
- open: true,
72
- __TEST__changePwd: true,
73
- };
74
-
75
- export const LoggedIn = Template.bind({});
76
- LoggedIn.args = {
77
- open: true,
78
- user,
79
- loginToken: 'token',
80
- };
81
-
82
- export const OtpForm = Template.bind({});
83
- OtpForm.args = {
84
- open: true,
85
- // Note: OTP form is shown by default in the new implementation
86
- // when user is not logged in and not in signup mode
87
- };
88
-
89
- export const OtpFormWithTimer = Template.bind({});
90
- OtpFormWithTimer.args = {
91
- open: true,
92
- // Timer will be shown when OTP form is active
93
- };
94
-
95
- export const OtpFormWithError = Template.bind({});
96
- OtpFormWithError.args = {
97
- open: true,
98
- // Error state would be shown during OTP validation
99
- };
100
-
101
- export const OtpFormLoading = Template.bind({});
102
- OtpFormLoading.args = {
103
- open: true,
104
- // Loading state would be shown during OTP validation
105
- };