@memori.ai/memori-react 9.0.0-alpha.20 → 9.0.0-alpha.22

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 (343) hide show
  1. package/CHANGELOG.md +456 -1
  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/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  14. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  15. package/dist/components/Chat/Chat.css +1 -0
  16. package/dist/components/Chat/Chat.js +1 -1
  17. package/dist/components/Chat/Chat.js.map +1 -1
  18. package/dist/components/ChatBubble/ChatBubble.css +32 -5
  19. package/dist/components/ChatBubble/ChatBubble.js +2 -4
  20. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  21. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  22. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  23. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  24. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  25. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  26. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
  27. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  28. package/dist/components/ChatInputs/ChatInputs.js +11 -2
  29. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  30. package/dist/components/ChatTextArea/ChatTextArea.css +1 -1
  31. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  32. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  33. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  34. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  35. package/dist/components/FilePreview/FilePreview.css +41 -20
  36. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  37. package/dist/components/FilePreview/FilePreview.js +6 -2
  38. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  39. package/dist/components/Header/Header.css +8 -3
  40. package/dist/components/Header/Header.js +15 -18
  41. package/dist/components/Header/Header.js.map +1 -1
  42. package/dist/components/IconButton/IconButton.d.ts +1 -1
  43. package/dist/components/KnownFacts/KnownFacts.css +1 -1
  44. package/dist/components/KnownFacts/KnownFacts.js +4 -7
  45. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  46. package/dist/components/LoginDrawer/LoginDrawer.css +16 -14
  47. package/dist/components/LoginDrawer/LoginDrawer.js +19 -11
  48. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  49. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  50. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  51. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  52. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  53. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  54. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  55. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  56. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  57. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  58. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +210 -62
  59. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  60. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  61. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  62. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  63. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  64. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  65. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  66. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  67. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  68. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  69. package/dist/components/MemoriWidget/MemoriWidget.css +59 -0
  70. package/dist/components/MemoriWidget/MemoriWidget.js +35 -31
  71. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  72. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  73. package/dist/components/PositionPopover/PositionPopover.css +3 -3
  74. package/dist/components/PositionPopover/PositionPopover.js +38 -25
  75. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  76. package/dist/components/Snippet/Snippet.css +6 -36
  77. package/dist/components/Snippet/Snippet.js +3 -1
  78. package/dist/components/Snippet/Snippet.js.map +1 -1
  79. package/dist/components/StartPanel/StartPanel.css +125 -3
  80. package/dist/components/StartPanel/StartPanel.js +13 -19
  81. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  82. package/dist/components/UploadButton/UploadButton.css +0 -19
  83. package/dist/components/UploadButton/UploadButton.js +1 -3
  84. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  85. package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -1
  86. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  87. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  88. package/dist/components/layouts/chat.css +2 -0
  89. package/dist/components/layouts/totem.css +43 -9
  90. package/dist/components/layouts/zoomed-full-body.css +1 -0
  91. package/dist/helpers/message.js +3 -0
  92. package/dist/helpers/message.js.map +1 -1
  93. package/dist/helpers/positionPopover.d.ts +2 -1
  94. package/dist/helpers/positionPopover.js +10 -2
  95. package/dist/helpers/positionPopover.js.map +1 -1
  96. package/dist/icons/MemoriIcon.js +1 -1
  97. package/dist/icons/MemoriIcon.js.map +1 -1
  98. package/dist/locales/de.json +7 -1
  99. package/dist/locales/en.json +6 -1
  100. package/dist/locales/es.json +6 -1
  101. package/dist/locales/fr.json +6 -1
  102. package/dist/locales/it.json +6 -1
  103. package/dist/styles.css +1 -1
  104. package/dist/version.d.ts +1 -1
  105. package/dist/version.js +1 -1
  106. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  107. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  108. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  109. package/esm/components/Auth/Auth.css +12 -5
  110. package/esm/components/Auth/Auth.d.ts +1 -1
  111. package/esm/components/Auth/Auth.js +47 -33
  112. package/esm/components/Auth/Auth.js.map +1 -1
  113. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  114. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  115. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  116. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  117. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  118. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  119. package/esm/components/Chat/Chat.css +1 -0
  120. package/esm/components/Chat/Chat.js +1 -1
  121. package/esm/components/Chat/Chat.js.map +1 -1
  122. package/esm/components/ChatBubble/ChatBubble.css +32 -5
  123. package/esm/components/ChatBubble/ChatBubble.js +2 -4
  124. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  125. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  126. package/esm/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  127. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  128. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  129. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  130. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -59
  131. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  132. package/esm/components/ChatInputs/ChatInputs.js +12 -3
  133. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  134. package/esm/components/ChatTextArea/ChatTextArea.css +1 -1
  135. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  136. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  137. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  138. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  139. package/esm/components/FilePreview/FilePreview.css +41 -20
  140. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  141. package/esm/components/FilePreview/FilePreview.js +7 -3
  142. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  143. package/esm/components/Header/Header.css +8 -3
  144. package/esm/components/Header/Header.js +15 -18
  145. package/esm/components/Header/Header.js.map +1 -1
  146. package/esm/components/IconButton/IconButton.d.ts +1 -1
  147. package/esm/components/KnownFacts/KnownFacts.css +1 -1
  148. package/esm/components/KnownFacts/KnownFacts.js +4 -7
  149. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  150. package/esm/components/LoginDrawer/LoginDrawer.css +16 -14
  151. package/esm/components/LoginDrawer/LoginDrawer.js +20 -12
  152. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  153. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  154. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  155. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  156. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  157. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  158. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  159. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  160. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  161. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  162. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +211 -63
  163. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  164. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  165. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  166. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  167. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  168. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  169. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  170. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  171. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  172. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  173. package/esm/components/MemoriWidget/MemoriWidget.css +59 -0
  174. package/esm/components/MemoriWidget/MemoriWidget.js +36 -32
  175. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  176. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  177. package/esm/components/PositionPopover/PositionPopover.css +3 -3
  178. package/esm/components/PositionPopover/PositionPopover.js +39 -26
  179. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  180. package/esm/components/Snippet/Snippet.css +6 -36
  181. package/esm/components/Snippet/Snippet.js +4 -2
  182. package/esm/components/Snippet/Snippet.js.map +1 -1
  183. package/esm/components/StartPanel/StartPanel.css +125 -3
  184. package/esm/components/StartPanel/StartPanel.js +14 -20
  185. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  186. package/esm/components/UploadButton/UploadButton.css +0 -19
  187. package/esm/components/UploadButton/UploadButton.js +1 -3
  188. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  189. package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -1
  190. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  191. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  192. package/esm/components/layouts/chat.css +2 -0
  193. package/esm/components/layouts/totem.css +43 -9
  194. package/esm/components/layouts/zoomed-full-body.css +1 -0
  195. package/esm/helpers/message.js +3 -0
  196. package/esm/helpers/message.js.map +1 -1
  197. package/esm/helpers/positionPopover.d.ts +2 -1
  198. package/esm/helpers/positionPopover.js +9 -2
  199. package/esm/helpers/positionPopover.js.map +1 -1
  200. package/esm/icons/MemoriIcon.js +1 -1
  201. package/esm/icons/MemoriIcon.js.map +1 -1
  202. package/esm/locales/de.json +7 -1
  203. package/esm/locales/en.json +6 -1
  204. package/esm/locales/es.json +6 -1
  205. package/esm/locales/fr.json +6 -1
  206. package/esm/locales/it.json +6 -1
  207. package/esm/styles.css +1 -1
  208. package/esm/version.d.ts +1 -1
  209. package/esm/version.js +1 -1
  210. package/package.json +5 -3
  211. package/src/Live/Agents.stories.tsx +49 -0
  212. package/src/Live/KnownFacts.stories.tsx +50 -0
  213. package/src/Showcase.stories.tsx +3 -14
  214. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  215. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +1 -1
  216. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -0
  217. package/src/components/Auth/Auth.css +12 -5
  218. package/src/components/Auth/Auth.stories.tsx +1 -1
  219. package/src/components/Auth/Auth.test.tsx +68 -1
  220. package/src/components/Auth/Auth.tsx +69 -54
  221. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +5 -6
  222. package/src/components/Avatar/Avatar.stories.tsx +1 -18
  223. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +2 -2
  224. package/src/components/Avatar/AvatarView/AvatarComponent/constants.test.ts +19 -0
  225. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +9 -6
  226. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +1 -103
  227. package/src/components/Blob/Blob.stories.tsx +1 -1
  228. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  229. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +1 -1
  230. package/src/components/ChangeMode/ChangeMode.stories.tsx +1 -1
  231. package/src/components/Chat/Chat.css +1 -0
  232. package/src/components/Chat/Chat.stories.tsx +61 -7
  233. package/src/components/Chat/Chat.tsx +1 -0
  234. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +80 -80
  235. package/src/components/ChatBubble/ChatBubble.css +32 -5
  236. package/src/components/ChatBubble/ChatBubble.stories.tsx +13 -2
  237. package/src/components/ChatBubble/ChatBubble.test.tsx +21 -1
  238. package/src/components/ChatBubble/ChatBubble.tsx +7 -13
  239. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +158 -185
  240. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +1 -1
  241. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +6 -0
  242. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  243. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +24 -81
  244. package/src/components/ChatInputs/ChatInputs.stories.tsx +1 -39
  245. package/src/components/ChatInputs/ChatInputs.test.tsx +47 -0
  246. package/src/components/ChatInputs/ChatInputs.tsx +13 -2
  247. package/src/components/ChatTextArea/ChatTextArea.css +1 -1
  248. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  249. package/src/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  250. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +1 -1
  251. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  252. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +1 -1
  253. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +29 -10
  254. package/src/components/FilePreview/FilePreview.css +41 -20
  255. package/src/components/FilePreview/FilePreview.tsx +14 -0
  256. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +14 -0
  257. package/src/components/Header/Header.css +8 -3
  258. package/src/components/Header/Header.stories.tsx +1 -1
  259. package/src/components/Header/Header.tsx +146 -117
  260. package/src/components/KnownFacts/KnownFacts.css +1 -1
  261. package/src/components/KnownFacts/KnownFacts.stories.tsx +1 -23
  262. package/src/components/KnownFacts/KnownFacts.tsx +4 -11
  263. package/src/components/LoginDrawer/LoginDrawer.css +16 -14
  264. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -52
  265. package/src/components/LoginDrawer/LoginDrawer.tsx +51 -39
  266. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +1 -15
  267. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +2 -3
  268. package/src/components/MediaWidget/MediaWidget.stories.tsx +1 -45
  269. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +19 -33
  270. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +1 -1
  271. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +44 -45
  272. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  273. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  274. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +28 -26
  275. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  276. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +357 -148
  277. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +111 -9
  278. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +20 -1
  279. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +33 -28
  280. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +19 -13
  281. package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +85 -0
  282. package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +173 -0
  283. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +55 -0
  284. package/src/components/MemoriWidget/MemoriWidget.css +59 -0
  285. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +55 -77
  286. package/src/components/MemoriWidget/MemoriWidget.tsx +49 -44
  287. package/src/components/MemoriWidget/getChatStyles.test.ts +24 -0
  288. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +1 -1
  289. package/src/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  290. package/src/components/PositionPopover/PositionPopover.css +3 -3
  291. package/src/components/PositionPopover/PositionPopover.stories.tsx +1 -1
  292. package/src/components/PositionPopover/PositionPopover.tsx +50 -28
  293. package/src/components/PoweredBy/PoweredBy.stories.tsx +1 -54
  294. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +2 -2
  295. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +1 -1
  296. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +1 -1
  297. package/src/components/ShareButton/ShareButton.stories.tsx +1 -1
  298. package/src/components/Snippet/Snippet.css +6 -36
  299. package/src/components/Snippet/Snippet.stories.tsx +1 -1
  300. package/src/components/Snippet/Snippet.tsx +6 -7
  301. package/src/components/StartPanel/StartPanel.css +125 -3
  302. package/src/components/StartPanel/StartPanel.stories.tsx +22 -2
  303. package/src/components/StartPanel/StartPanel.tsx +30 -35
  304. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +177 -121
  305. package/src/components/Typing/Typing.stories.tsx +1 -1
  306. package/src/components/UploadButton/UploadButton.css +0 -19
  307. package/src/components/UploadButton/UploadButton.tsx +0 -11
  308. package/src/components/UploadButton/UploadImages/UploadImages.tsx +1 -1
  309. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +22 -44
  310. package/src/components/layouts/FullBody/FullBody.stories.tsx +55 -68
  311. package/src/components/layouts/Totem/Totem.stories.tsx +69 -87
  312. package/src/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  313. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +69 -87
  314. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +19 -41
  315. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +39 -83
  316. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +15 -11
  317. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +116 -42
  318. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +18 -40
  319. package/src/components/layouts/chat.css +2 -0
  320. package/src/components/layouts/layouts.stories.tsx +96 -179
  321. package/src/components/layouts/totem.css +43 -9
  322. package/src/components/layouts/zoomed-full-body.css +1 -0
  323. package/src/helpers/message.ts +15 -0
  324. package/src/helpers/positionPopover.test.ts +36 -1
  325. package/src/helpers/positionPopover.ts +21 -4
  326. package/src/i18n.knownFacts.test.ts +40 -0
  327. package/src/icons/MemoriIcon.tsx +1 -1
  328. package/src/index.stories.tsx +1 -47
  329. package/src/locales/de.json +7 -1
  330. package/src/locales/en.json +6 -1
  331. package/src/locales/es.json +6 -1
  332. package/src/locales/fr.json +6 -1
  333. package/src/locales/it.json +6 -1
  334. package/src/styles.css +13 -27
  335. package/src/version.ts +1 -1
  336. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  337. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  338. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  339. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  340. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  341. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  342. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  343. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
@@ -1,88 +1,115 @@
1
1
  import React from 'react';
2
- import { Meta, Story } from '@storybook/react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
3
  import { Spin } from '@memori.ai/ui';
4
4
  import { memori, tenant, integration } from '../../mocks/data';
5
5
  import Memori, { Props } from '../../index';
6
6
  import { LayoutProps } from '../MemoriWidget/MemoriWidget';
7
- import I18nWrapper from '../../I18nWrapper';
8
- import { VisemeProvider } from '../../context/visemeContext';
9
- import { ArtifactProvider } from '../MemoriArtifactSystem/context/ArtifactContext';
10
-
11
- const meta: Meta = {
12
- title: 'General/Layouts',
13
- component: (args: Props) => <Memori {...args} />,
14
- argTypes: {},
7
+ import { withWidgetProviders } from '../../../.storybook/decorators';
8
+
9
+ /**
10
+ * Canonical layout matrix — one story per LayoutName (plus Custom + HiddenChat note).
11
+ * Live staging/localhost agents live under `Live/` (see Live/Agents.stories.tsx).
12
+ */
13
+ const meta = {
14
+ title: 'Layouts',
15
+ component: Memori,
16
+ decorators: [withWidgetProviders],
15
17
  parameters: {
16
18
  controls: { expanded: true },
17
19
  layout: 'fullscreen',
18
20
  },
19
- };
21
+ } satisfies Meta<typeof Memori>;
20
22
 
21
23
  export default meta;
24
+ type Story = StoryObj<typeof meta>;
22
25
 
23
- const Template: Story<Props> = args => (
24
- <I18nWrapper>
25
- <ArtifactProvider>
26
- <VisemeProvider>
27
- <Memori {...args} />
28
- </VisemeProvider>
29
- </ArtifactProvider>
30
- </I18nWrapper>
31
- );
32
-
33
- const DefaultLayout = Template.bind({});
34
- DefaultLayout.args = {
35
- memoriName: 'Layout Storybook',
36
- ownerUserName: 'Andrea-Patini',
37
- memoriID: 'ae20fc5a-cc15-4db9-b7dd-2cd4a621b85e',
38
- ownerUserID: '91dbc9ba-b684-4fbe-9828-b5980af6cda9',
39
- tenantID: 'aisuru-staging.aclambda.online',
40
- engineURL: 'https://engine-staging.memori.ai/memori/v2',
41
- apiURL: 'https://backend-staging.memori.ai/api/v2',
42
- // baseURL: 'http://localhost:3000',
43
- layout: 'ZOOMED_FULL_BODY',
26
+ /** Fixture-first base — deterministic sidebar entry for each layout. */
27
+ const fixtureBase: Partial<Props> = {
28
+ memori,
29
+ tenant,
30
+ memoriName: memori.name,
31
+ memoriID: memori.memoriID,
32
+ ownerUserName: 'memoridev',
33
+ tenantID: 'www.aisuru.com',
34
+ engineURL: 'https://engine.memori.ai',
35
+ apiURL: 'https://backend.memori.ai',
36
+ baseURL: 'https://www.aisuru.com',
44
37
  uiLang: 'IT',
45
38
  spokenLang: 'IT',
46
- integrationID: '32922e14-24d6-4f5f-a06b-d963da14a658',
47
39
  showSettings: true,
40
+ showShare: true,
48
41
  };
49
42
 
50
- export const Default = Template.bind({});
51
- Default.args = {
52
- ...DefaultLayout.args,
43
+ /** Default layout = FULLPAGE (not Zoomed). */
44
+ export const FullPage: Story = {
45
+ args: {
46
+ ...fixtureBase,
47
+ layout: 'FULLPAGE',
48
+ },
53
49
  };
54
50
 
55
- export const Totem = Template.bind({});
56
- Totem.args = {
57
- ...DefaultLayout.args,
58
- uiLang: 'it',
59
- showShare: true,
60
- showSettings: true,
61
- // memori: memori,
62
- integration: {
63
- ...integration,
51
+ export const Chat: Story = {
52
+ args: {
53
+ ...fixtureBase,
54
+ layout: 'CHAT',
55
+ showUpload: true,
64
56
  },
65
- tenant,
66
- layout: 'TOTEM',
67
57
  };
68
58
 
69
- export const ChatOnly = Template.bind({});
70
- ChatOnly.args = {
71
- ...DefaultLayout.args,
72
- uiLang: 'it',
73
- showShare: true,
74
- showSettings: true,
75
- showUpload: true,
76
- memori: memori,
77
- tenant,
78
- layout: 'CHAT',
59
+ export const Totem: Story = {
60
+ args: {
61
+ ...fixtureBase,
62
+ layout: 'TOTEM',
63
+ integration: { ...integration },
64
+ },
65
+ };
66
+
67
+ export const ZoomedFullBody: Story = {
68
+ args: {
69
+ ...fixtureBase,
70
+ layout: 'ZOOMED_FULL_BODY',
71
+ },
72
+ };
73
+
74
+ export const WebsiteAssistant: Story = {
75
+ args: {
76
+ ...fixtureBase,
77
+ layout: 'WEBSITE_ASSISTANT',
78
+ multilingual: true,
79
+ integration: {
80
+ ...integration,
81
+ customData: JSON.stringify({
82
+ textColor: '#2a2a2a',
83
+ buttonBgColor: '#653165',
84
+ buttonTextColor: '#ffffff',
85
+ blurBackground: true,
86
+ innerBgColor: 'light',
87
+ innerBgAlpha: 0.8,
88
+ multilanguage: true,
89
+ avatar: 'readyplayerme',
90
+ avatarURL:
91
+ 'https://assets.memori.ai/api/v2/asset/b791f77c-1a94-4272-829e-eca82fcc62b7.glb',
92
+ }),
93
+ },
94
+ },
95
+ };
96
+
97
+ export const WebsiteAssistantWithout3DAvatar: Story = {
98
+ args: {
99
+ ...WebsiteAssistant.args,
100
+ avatar3dHidden: true,
101
+ },
102
+ };
103
+
104
+ /** Collapsed / FAB entry point for HIDDEN_CHAT. */
105
+ export const HiddenChat: Story = {
106
+ args: {
107
+ ...fixtureBase,
108
+ layout: 'HIDDEN_CHAT',
109
+ },
79
110
  };
80
111
 
81
112
  const CustomLayout: React.FC<LayoutProps> = ({
82
- Header,
83
- headerProps,
84
- Avatar,
85
- avatarProps,
86
113
  Chat,
87
114
  chatProps,
88
115
  StartPanel,
@@ -97,10 +124,11 @@ const CustomLayout: React.FC<LayoutProps> = ({
97
124
  <>
98
125
  {integrationStyle}
99
126
  {integrationBackground}
100
-
101
- <Spin spinning={loading} className="memori-mycustom-layout">
127
+ <Spin
128
+ spinning={loading}
129
+ className="memori-mycustom-layout"
130
+ >
102
131
  {poweredBy}
103
-
104
132
  <div className="memori-mycustom-layout--controls">
105
133
  {sessionId && hasUserActivatedSpeak && Chat && chatProps ? (
106
134
  <Chat {...chatProps} />
@@ -112,121 +140,10 @@ const CustomLayout: React.FC<LayoutProps> = ({
112
140
  </>
113
141
  );
114
142
 
115
- export const Custom = Template.bind({});
116
- Custom.args = {
117
- ...DefaultLayout.args,
118
- uiLang: 'it',
119
- showShare: true,
120
- showSettings: true,
121
- memori: memori,
122
- tenant,
123
- layout: 'FULLPAGE',
124
- customLayout: CustomLayout,
125
- };
126
-
127
- export const WebsiteAssistant2 = Template.bind({});
128
- WebsiteAssistant2.args = {
129
- memoriName: 'Marconi Express',
130
- ownerUserName: 'exmita',
131
- memoriID: '1755979f-28f1-45d1-8f41-bb34e1f7756b',
132
- ownerUserID: '3194fcd3-040b-4d5e-a925-691911fb1177',
133
- tenantID: 'exmachina.aclambda.online',
134
- engineURL: 'https://engine.memori.ai',
135
- apiURL: 'https://backend.memori.ai',
136
- baseURL: 'https://exmachina.aclambda.online',
137
- uiLang: 'IT',
138
- avatar3dHidden: true,
139
- spokenLang: 'IT',
140
- layout: 'WEBSITE_ASSISTANT',
141
- };
142
-
143
- export const WebsiteAssistant3 = Template.bind({});
144
- WebsiteAssistant3.args = {
145
- memoriName: 'Layout Storybook',
146
- ownerUserName: 'Andrea-Patini',
147
- memoriID: 'ae20fc5a-cc15-4db9-b7dd-2cd4a621b85e',
148
- ownerUserID: '91dbc9ba-b684-4fbe-9828-b5980af6cda9',
149
- tenantID: 'aisuru-staging.aclambda.online',
150
- engineURL: 'https://engine-staging.memori.ai/memori/v2',
151
- apiURL: 'https://backend-staging.memori.ai/api/v2',
152
- baseURL: 'http://localhost:3000',
153
- layout: 'WEBSITE_ASSISTANT',
154
- avatar3dHidden: true,
155
- uiLang: 'IT',
156
- spokenLang: 'IT',
157
- showOnlyLastMessages: true,
158
- integrationID: '716f4728-919c-4015-aae1-88998a081c6f',
159
- };
160
-
161
- export const WebsiteAssistant = Template.bind({});
162
- WebsiteAssistant.args = {
163
- uiLang: 'EN',
164
- showShare: false,
165
- showSettings: true,
166
- memori: memori,
167
- tenant,
168
- layout: 'WEBSITE_ASSISTANT',
169
- memoriName: 'Memori',
170
- memoriID: '25ced51c-3520-41af-8bbe-222d861b8e32',
171
- ownerUserName: 'memoridev',
172
- tenantID: 'www.aisuru.com',
173
- apiURL: 'https://backend.memori.ai',
174
- baseURL: 'https://www.aisuru.com',
175
- spokenLang: 'EN',
176
- context: {
177
- SOURCE: 'WEBSITE',
178
- PATH: '/en/',
179
- },
180
- multilingual: true,
181
- integrationID: 'cb3c4776-7f0b-4f97-a773-c32a5d7a3bf1',
182
- integration: {
183
- ...integration,
184
- customData: JSON.stringify({
185
- textColor: '#2a2a2a',
186
- buttonBgColor: '#653165',
187
- buttonTextColor: '#ffffff',
188
- blurBackground: true,
189
- innerBgColor: 'light',
190
- innerBgAlpha: 0.8,
191
- multilanguage: true,
192
- avatar: 'readyplayerme',
193
- avatarURL:
194
- 'https://assets.memori.ai/api/v2/asset/b791f77c-1a94-4272-829e-eca82fcc62b7.glb',
195
- }),
143
+ export const Custom: Story = {
144
+ args: {
145
+ ...fixtureBase,
146
+ layout: 'FULLPAGE',
147
+ customLayout: CustomLayout,
196
148
  },
197
149
  };
198
-
199
- export const WebsiteAssistantWithout3DAvatar = Template.bind({});
200
- WebsiteAssistantWithout3DAvatar.args = {
201
- ...WebsiteAssistant.args,
202
- avatar3dHidden: true,
203
- };
204
-
205
- export const HiddenChat = Template.bind({});
206
- HiddenChat.args = {
207
- ...DefaultLayout.args,
208
- uiLang: 'it',
209
- showShare: true,
210
- showSettings: true,
211
- memori: memori,
212
- tenant,
213
- layout: 'HIDDEN_CHAT',
214
- };
215
-
216
- export const ZoomedFullBody = Template.bind({});
217
- ZoomedFullBody.args = {
218
- ...DefaultLayout.args,
219
- memoriName: 'Layout Storybook',
220
- ownerUserName: 'Andrea-Patini',
221
- memoriID: 'ae20fc5a-cc15-4db9-b7dd-2cd4a621b85e',
222
- ownerUserID: '91dbc9ba-b684-4fbe-9828-b5980af6cda9',
223
- tenantID: 'aisuru-staging.aclambda.online',
224
- engineURL: 'https://engine-staging.memori.ai/memori/v2',
225
- apiURL: 'https://backend-staging.memori.ai/api/v2',
226
- // baseURL: 'http://localhost:3000',
227
- layout: 'ZOOMED_FULL_BODY',
228
- uiLang: 'IT',
229
- spokenLang: 'IT',
230
- integrationID: '32922e14-24d6-4f5f-a06b-d963da14a658',
231
- showSettings: true,
232
- };
@@ -180,6 +180,11 @@
180
180
  internal scroll instead of pushing the scene up. */
181
181
  .memori-totem-layout--controls {
182
182
  z-index: 100;
183
+ display: flex;
184
+ width: 100%;
185
+ min-height: 0;
186
+ max-height: 48vh;
187
+ flex-direction: column;
183
188
  flex-shrink: 0;
184
189
  }
185
190
 
@@ -187,6 +192,8 @@
187
192
  SECTION 2–3 — Single unified panel + shared alignment axis
188
193
  One container (surface + 1px border + 12px radius). Inner sections have
189
194
  NO border/shadow/width of their own, only 1px dividers between them.
195
+ A definite height (not just max-height) is required so nested overflow-y
196
+ auto actually scrolls instead of clipping.
190
197
  ========================================================================== */
191
198
  .memori-totem-layout--controls .memori-chat--wrapper,
192
199
  .memori-totem-layout--controls .memori--start-panel {
@@ -194,8 +201,11 @@
194
201
  overflow: hidden;
195
202
  width: 100%;
196
203
  max-width: var(--memori-totem-max-width, 600px);
204
+ height: 48vh;
205
+ min-height: 0;
197
206
  max-height: 48vh;
198
207
  box-sizing: border-box;
208
+ flex: 1 1 auto;
199
209
  flex-direction: column;
200
210
  padding: 0;
201
211
  border: 1px solid var(--memori-border-color);
@@ -206,34 +216,53 @@
206
216
 
207
217
  /* Nested conversation column must not add its own axis/padding/surface. */
208
218
  .memori-totem-layout--controls .memori-conversation-column {
219
+ display: flex;
220
+ overflow: hidden;
209
221
  width: 100%;
210
222
  max-width: none;
211
223
  height: auto;
212
224
  min-height: 0;
225
+ flex: 1 1 0%;
226
+ flex-direction: column;
213
227
  padding: 0;
214
228
  margin: 0;
215
229
  }
216
230
 
217
- /* Messages section: height follows content (no empty band), scrolls when capped. */
218
- .memori-totem-layout--controls .memori-chat--history {
219
- height: auto;
231
+ /* Messages section: remaining panel height; children must not size to content. */
232
+ .memori-totem-layout--controls .memori-chat--history,
233
+ .memori-totem-layout--controls .memori-chat--history.memori-chat--history-touch {
234
+ display: flex;
235
+ overflow: hidden;
236
+ height: auto !important;
220
237
  min-height: 0;
221
- flex: 1 1 auto;
238
+ flex: 1 1 0%;
239
+ flex-direction: column;
222
240
  border: none;
223
241
  border-radius: 0;
224
242
  margin: 0;
225
243
  background: transparent;
226
244
  }
227
245
 
228
- .memori-totem-layout--controls .memori-chat--content {
229
- height: auto;
246
+ .memori-totem-layout--controls .memori-chat--content,
247
+ .memori-totem-layout--controls .memori-chat--content.memori-chat--content-touch {
248
+ height: 0;
249
+ min-height: 0;
230
250
  max-height: none;
251
+ flex: 1 1 auto;
231
252
  padding: var(--memori-spacing-md);
232
253
  background: transparent;
254
+ overflow-x: hidden;
255
+ overflow-y: auto;
256
+ overscroll-behavior: contain;
257
+ }
258
+
259
+ .memori-totem-layout--controls .memori-chat--content > * {
260
+ flex-shrink: 0;
233
261
  }
234
262
 
235
263
  /* Input section: 1px divider above, no own surface. */
236
264
  .memori-totem-layout--controls .memori-chat-inputs-wrapper {
265
+ flex-shrink: 0;
237
266
  padding: var(--memori-spacing-md);
238
267
  border-top: 1px solid var(--memori-border-color);
239
268
  background: transparent;
@@ -244,10 +273,15 @@
244
273
  border-radius: 8px;
245
274
  }
246
275
 
276
+ .memori-totem-layout--controls .memori-chat--bubble,
277
+ .memori-totem-layout--controls .memori-chat--bubble.memori-chat--user-bubble {
278
+ font-size: 1.125rem;
279
+ }
280
+
247
281
  /* Start-panel body scrolls internally instead of stretching the panel. */
248
282
  .memori-totem-layout--controls .memori--start-panel__body {
249
283
  min-height: 0;
250
- flex: 1 1 auto;
284
+ flex: 1 1 0%;
251
285
  overflow-y: auto;
252
286
  }
253
287
 
@@ -259,11 +293,11 @@
259
293
  }
260
294
 
261
295
  @media (max-width: 480px) {
262
- .memori-totem-layou .memori-send-on-enter-menu {
296
+ .memori-totem-layout .memori-send-on-enter-menu {
263
297
  display: none;
264
298
  }
265
299
 
266
- .memori-totem-layou .memori-header--button-settings {
300
+ .memori-totem-layout .memori-header--button-settings {
267
301
  display: none;
268
302
  }
269
303
  }
@@ -212,6 +212,7 @@
212
212
  /* Avatar column: its own rounded panel, wider than the chat sidebar it replaced. */
213
213
  .memori-widget.memori-layout-zoomed_full_body .memori--grid-column-left {
214
214
  position: relative;
215
+ z-index: 10;
215
216
  display: flex;
216
217
  overflow: hidden;
217
218
  width: clamp(240px, 34%, 420px);
@@ -114,6 +114,21 @@ export const renderMsg = (
114
114
  /<output\s+class\s*=\s*["\']memori-artifact["\'][^>]*data-mimetype\s*=\s*["\']([^"']+)["\'][^>]*>([\s\S]*?)(?:<\/output>|$)/gi,
115
115
  ''
116
116
  )
117
+ // Preferred: data-action="update" on memori-artifact
118
+ .replaceAll(
119
+ /<output\s+class\s*=\s*["\']memori-artifact["\'][^>]*data-action\s*=\s*["\']update["\'][^>]*>([\s\S]*?)(?:<\/output>|$)/gi,
120
+ ''
121
+ )
122
+ // data-action may appear before class
123
+ .replaceAll(
124
+ /<output\s+[^>]*data-action\s*=\s*["\']update["\'][^>]*class\s*=\s*["\'][^"']*memori-artifact[^"']*["\'][^>]*>([\s\S]*?)(?:<\/output>|$)/gi,
125
+ ''
126
+ )
127
+ // Legacy class name
128
+ .replaceAll(
129
+ /<output\s+class\s*=\s*["\']memori-artifact-update["\'][^>]*>([\s\S]*?)(?:<\/output>|$)/gi,
130
+ ''
131
+ )
117
132
  .replaceAll(/```markdown([^```]+)```/g, '$1')
118
133
  .replaceAll('($', '( $')
119
134
  .replaceAll(':$', ': $')
@@ -1,4 +1,21 @@
1
- import { shouldRestartSessionOnPositionPopoverClose } from './positionPopover';
1
+ import {
2
+ shouldHoldAutoStartForPosition,
3
+ shouldRestartSessionOnPositionPopoverClose,
4
+ } from './positionPopover';
5
+
6
+ describe('shouldHoldAutoStartForPosition', () => {
7
+ it('holds auto-start when position is required and none is stored', () => {
8
+ expect(shouldHoldAutoStartForPosition(true, false)).toBe(true);
9
+ });
10
+
11
+ it('does not hold when a position (or skip) is already stored', () => {
12
+ expect(shouldHoldAutoStartForPosition(true, true)).toBe(false);
13
+ });
14
+
15
+ it('does not hold when the agent does not require a position', () => {
16
+ expect(shouldHoldAutoStartForPosition(false, false)).toBe(false);
17
+ });
18
+ });
2
19
 
3
20
  describe('shouldRestartSessionOnPositionPopoverClose', () => {
4
21
  it('restarts only when closing an open popover with autoStart and no session', () => {
@@ -36,4 +53,22 @@ describe('shouldRestartSessionOnPositionPopoverClose', () => {
36
53
  false
37
54
  );
38
55
  });
56
+
57
+ it('does not restart when closing without a stored position', () => {
58
+ expect(
59
+ shouldRestartSessionOnPositionPopoverClose(
60
+ true,
61
+ false,
62
+ true,
63
+ false,
64
+ false
65
+ )
66
+ ).toBe(false);
67
+ });
68
+
69
+ it('restarts when closing after a position was stored', () => {
70
+ expect(
71
+ shouldRestartSessionOnPositionPopoverClose(true, false, true, false, true)
72
+ ).toBe(true);
73
+ });
39
74
  });
@@ -1,16 +1,33 @@
1
+ /**
2
+ * Auto-start must wait on the start panel when the agent requires a location
3
+ * and none has been stored yet (share or skip). The start panel is the place
4
+ * to collect that preference; do not open the header popover instead.
5
+ */
6
+ export function shouldHoldAutoStartForPosition(
7
+ needsPosition: boolean,
8
+ hasPosition: boolean
9
+ ): boolean {
10
+ return !!needsPosition && !hasPosition;
11
+ }
12
+
1
13
  /**
2
14
  * Whether closing the position popover should re-run autoStart (`onClickStart`).
3
15
  * Only true on a real open → closed transition when a session has not started yet
4
- * (e.g. autostart blocked waiting for position). Closing during an active session
5
- * must not wipe chat history.
16
+ * and a position (or skip) is already stored. Closing during an active session
17
+ * must not wipe chat history. Closing without a position leaves the start panel.
6
18
  */
7
19
  export function shouldRestartSessionOnPositionPopoverClose(
8
20
  wasOpen: boolean,
9
21
  nextOpen: boolean,
10
22
  autoStart: boolean,
11
- sessionAlreadyStarted = false
23
+ sessionAlreadyStarted = false,
24
+ hasPosition = true
12
25
  ): boolean {
13
26
  return (
14
- wasOpen && !nextOpen && !!autoStart && !sessionAlreadyStarted
27
+ wasOpen &&
28
+ !nextOpen &&
29
+ !!autoStart &&
30
+ !sessionAlreadyStarted &&
31
+ hasPosition
15
32
  );
16
33
  }
@@ -0,0 +1,40 @@
1
+ import i18n from './i18n';
2
+
3
+ describe('known facts bulk delete translations', () => {
4
+ afterEach(async () => {
5
+ await i18n.changeLanguage('en');
6
+ });
7
+
8
+ it('keeps the selected-rows count in the same language as the confirm message', async () => {
9
+ await i18n.changeLanguage('it');
10
+
11
+ const selectedRows = i18n.t('knownFacts.selectedRows', { count: 10 });
12
+ const confirm = i18n.t('knownFacts.deleteSelectedConfirmMessage');
13
+ const message = `${selectedRows}. ${confirm}`;
14
+
15
+ expect(selectedRows).toBe('10 righe selezionate');
16
+ expect(message).not.toMatch(/rows selected/i);
17
+ expect(message).toBe(
18
+ '10 righe selezionate. Confermi di voler eliminare i fatti noti selezionati?'
19
+ );
20
+ });
21
+
22
+ it.each([
23
+ ['en', 1, '1 row selected'],
24
+ ['en', 10, '10 rows selected'],
25
+ ['it', 1, '1 riga selezionata'],
26
+ ['it', 10, '10 righe selezionate'],
27
+ ['fr', 1, '1 ligne sélectionnée'],
28
+ ['fr', 10, '10 lignes sélectionnées'],
29
+ ['de', 1, '1 Zeile ausgewählt'],
30
+ ['de', 10, '10 Zeilen ausgewählt'],
31
+ ['es', 1, '1 fila seleccionada'],
32
+ ['es', 10, '10 filas seleccionadas'],
33
+ ] as const)(
34
+ 'translates %s selectedRows for count %i',
35
+ async (lng, count, expected) => {
36
+ await i18n.changeLanguage(lng);
37
+ expect(i18n.t('knownFacts.selectedRows', { count })).toBe(expected);
38
+ }
39
+ );
40
+ });
@@ -12,7 +12,7 @@ const MemoriIcon = (props: React.SVGProps<SVGSVGElement>) => (
12
12
  <defs>
13
13
  <style>
14
14
  {
15
- "\n .cls-1 {\n fill: url(#Sfumatura_senza_nome_6);\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: var(--memori-logo-text-color, '#744c99');\n }\n "
15
+ "\n .cls-1 {\n fill: url(#Sfumatura_senza_nome_6);\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: var(--memori-text-color, '#744c99');\n }\n "
16
16
  }
17
17
  </style>
18
18
  <linearGradient
@@ -3,7 +3,7 @@ import { Meta, Story } from '@storybook/react';
3
3
  import Memori, { Props } from './index';
4
4
 
5
5
  const meta: Meta = {
6
- title: 'General/Functionalities',
6
+ title: 'Live/Functionalities',
7
7
  component: Memori,
8
8
  argTypes: {
9
9
  AZURE_COGNITIVE_SERVICES_TTS_KEY: {
@@ -88,21 +88,6 @@ WithChatHistory.args = {
88
88
  showChatHistory: true,
89
89
  };
90
90
 
91
- export const WithUploadNoTotalPayloadLimit = Template.bind({});
92
- WithUploadNoTotalPayloadLimit.args = {
93
- ownerUserName: 'nzambello',
94
- memoriName: 'Nicola',
95
- tenantID: 'www.aisuru.com',
96
- engineURL: 'https://engine.memori.ai',
97
- apiURL: 'https://backend.memori.ai',
98
- baseURL: 'https://www.aisuru.com',
99
- layout: 'FULLPAGE',
100
- uiLang: 'IT',
101
- spokenLang: 'IT',
102
- enableAudio: true,
103
- showUpload: true,
104
- };
105
-
106
91
  export const WithMaxTextareaCharacters = Template.bind({});
107
92
  WithMaxTextareaCharacters.args = {
108
93
  ownerUserName: 'nzambello',
@@ -193,34 +178,3 @@ WithPiiDetection.args = {
193
178
  },
194
179
  };
195
180
 
196
- export const WithLocalNats = Template.bind({});
197
- WithLocalNats.args = {
198
- memoriName: 'test324',
199
- ownerUserName: 'andrea.patini',
200
- memoriID: 'd661a9ca-e907-4396-a986-5095ccd582d6',
201
- ownerUserID: '69fcc557-9cb6-4e5e-b8ab-140cff975492',
202
- tenantID: 'localhost:3000',
203
- engineURL: 'http://localhost:7778/memori/v2',
204
- apiURL: 'http://localhost:7778/api/v2',
205
- baseURL: 'http://localhost:3000',
206
- layout: 'FULLPAGE',
207
- uiLang: 'IT',
208
- spokenLang: 'IT',
209
- integrationID: 'ee1c3d98-7819-4506-ba28-818e79ba86cb',
210
- };
211
-
212
- export const WithFunctionalities = Template.bind({});
213
- WithFunctionalities.args = {
214
- memoriName: 'test324',
215
- ownerUserName: 'andrea.patini',
216
- memoriID: 'd661a9ca-e907-4396-a986-5095ccd582d6',
217
- ownerUserID: '69fcc557-9cb6-4e5e-b8ab-140cff975492',
218
- tenantID: 'localhost:3000',
219
- engineURL: 'http://localhost:7778/memori/v2',
220
- apiURL: 'http://localhost:7778/api/v2',
221
- baseURL: 'http://localhost:3000',
222
- layout: 'FULLPAGE',
223
- uiLang: 'IT',
224
- spokenLang: 'IT',
225
- integrationID: 'ee1c3d98-7819-4506-ba28-818e79ba86cb',
226
- };