@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,5 +1,5 @@
1
1
  import { Venue } from '@memori.ai/memori-api-client/dist/types';
2
- import { Button, Popover } from '@memori.ai/ui';
2
+ import { Button, Popover, Tooltip } from '@memori.ai/ui';
3
3
  import IconButton from '../IconButton/IconButton';
4
4
  import { MapPin, Pencil } from 'lucide-react';
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
@@ -14,6 +14,8 @@ import {
14
14
  } from '../VenueWidget/VenueWidget';
15
15
  import cx from 'classnames';
16
16
 
17
+ const GEOCODE_TIMEOUT_MS = 8000;
18
+
17
19
  function hasShareableCoords(v?: Venue): boolean {
18
20
  return !!(v?.latitude && v?.longitude);
19
21
  }
@@ -113,39 +115,56 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
113
115
  const gen = ++geoGenRef.current;
114
116
  setPermissionDeniedMessage(null);
115
117
  setGeocodingError(null);
118
+
119
+ if (!navigator.geolocation) {
120
+ setGeolocationLoading(false);
121
+ setPermissionDeniedMessage(String(t('widget.positionUnavailableManual')));
122
+ setEditingLocation(true);
123
+ return;
124
+ }
125
+
116
126
  setGeolocationLoading(true);
117
127
 
118
128
  navigator.geolocation.getCurrentPosition(
119
- async pos => {
129
+ pos => {
120
130
  if (gen !== geoGenRef.current) return;
121
- let next: Venue = {
131
+ const next: Venue = {
122
132
  latitude: pos.coords.latitude,
123
133
  longitude: pos.coords.longitude,
124
134
  placeName: '',
125
135
  uncertainty: pos.coords.accuracy / 1000,
126
136
  };
127
- try {
128
- const result = await fetch(
129
- `https://nominatim.openstreetmap.org/reverse?lat=${pos.coords.latitude}&lon=${pos.coords.longitude}&format=jsonv2&addressdetails=1`
130
- );
131
- const response = (await result.json()) as NominatimItem;
132
- const placeName = getPlaceName(response);
133
- next = {
134
- latitude: pos.coords.latitude,
135
- longitude: pos.coords.longitude,
136
- placeName,
137
- uncertainty: pos.coords.accuracy / 1000,
138
- };
139
- setVenue(next);
140
- } catch (e) {
141
- console.error('[PositionPopover] reverse geocode failed', e);
142
- setGeocodingError(String(t('widget.geocodingFailed')));
143
- setVenue(next);
144
- } finally {
145
- if (gen === geoGenRef.current) {
146
- setGeolocationLoading(false);
137
+ setVenue(next);
138
+ setGeolocationLoading(false);
139
+
140
+ const controller = new AbortController();
141
+ const timeoutId = window.setTimeout(
142
+ () => controller.abort(),
143
+ GEOCODE_TIMEOUT_MS
144
+ );
145
+
146
+ void (async () => {
147
+ try {
148
+ const result = await fetch(
149
+ `https://nominatim.openstreetmap.org/reverse?lat=${pos.coords.latitude}&lon=${pos.coords.longitude}&format=jsonv2&addressdetails=1`,
150
+ { signal: controller.signal }
151
+ );
152
+ if (gen !== geoGenRef.current) return;
153
+ const response = (await result.json()) as NominatimItem;
154
+ const placeName = getPlaceName(response);
155
+ setVenue({
156
+ ...next,
157
+ placeName,
158
+ });
159
+ } catch (e) {
160
+ if (gen !== geoGenRef.current) return;
161
+ if ((e as { name?: string }).name === 'AbortError') return;
162
+ console.error('[PositionPopover] reverse geocode failed', e);
163
+ setGeocodingError(String(t('widget.geocodingFailed')));
164
+ } finally {
165
+ window.clearTimeout(timeoutId);
147
166
  }
148
- }
167
+ })();
149
168
  },
150
169
  err => {
151
170
  if (gen !== geoGenRef.current) return;
@@ -213,6 +232,8 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
213
232
  }, [editingLocation]);
214
233
 
215
234
  const inlineError = permissionDeniedMessage || geocodingError;
235
+ const shareLocationHint =
236
+ t('widget.shareLocationHint') || 'Get answers tailored to where you are';
216
237
 
217
238
  return (
218
239
  <>
@@ -231,10 +252,11 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
231
252
  <span className="memori-dropdown--auth-title">
232
253
  {t('widget.shareLocation') || 'Share my location'}
233
254
  </span>
234
- <span className="memori-dropdown--auth-subtitle">
235
- {t('widget.shareLocationHint') ||
236
- 'Get answers tailored to where you are'}
237
- </span>
255
+ <Tooltip title={shareLocationHint} placement="top">
256
+ <span className="memori-dropdown--auth-subtitle">
257
+ {shareLocationHint}
258
+ </span>
259
+ </Tooltip>
238
260
  </span>
239
261
  <span
240
262
  className={cx(
@@ -4,7 +4,7 @@ import PoweredBy, { Props } from './PoweredBy';
4
4
  import './PoweredBy.css';
5
5
 
6
6
  const meta: Meta = {
7
- title: 'Powered by',
7
+ title: 'Internals/Powered by',
8
8
  component: PoweredBy,
9
9
  argTypes: {},
10
10
  parameters: {
@@ -20,56 +20,3 @@ export const Default = Template.bind({});
20
20
  Default.args = {
21
21
  userLang: 'en',
22
22
  };
23
-
24
- export const Italian = Template.bind({});
25
- Italian.args = {
26
- userLang: 'it',
27
- };
28
-
29
- export const MemoryTwin = Template.bind({});
30
- MemoryTwin.args = {
31
- tenant: {
32
- id: 'memorytwin',
33
- theme: 'memorytwin',
34
- config: {
35
- name: 'MemoryTwin',
36
- showNewUser: true,
37
- requirePosition: false,
38
- feedbackURL: '',
39
- },
40
- },
41
- };
42
-
43
- export const TwinCreator = Template.bind({});
44
- TwinCreator.args = {
45
- tenant: {
46
- id: 'twincreator',
47
- theme: 'twincreator',
48
- config: {
49
- name: 'twincreator',
50
- showNewUser: true,
51
- requirePosition: false,
52
- feedbackURL: '',
53
- },
54
- },
55
- };
56
-
57
- export const AIsuru = Template.bind({});
58
- AIsuru.args = {
59
- tenant: {
60
- id: 'AIsuru',
61
- theme: 'aisuru',
62
- config: {
63
- name: 'AIsuru',
64
- showNewUser: true,
65
- requirePosition: false,
66
- feedbackURL: '',
67
- },
68
- },
69
- };
70
-
71
- export const WithData = Template.bind({});
72
- WithData.args = {
73
- integrationID: 'abc',
74
- memoriHash: 'tenant-owner-memori',
75
- };
@@ -27,7 +27,7 @@ exports[`renders PoweredBy unchanged 1`] = `
27
27
  }
28
28
 
29
29
  .cls-2 {
30
- fill: var(--memori-logo-text-color, '#744c99');
30
+ fill: var(--memori-text-color, '#744c99');
31
31
  }
32
32
 
33
33
  </style>
@@ -170,7 +170,7 @@ exports[`renders PoweredBy with data unchanged 1`] = `
170
170
  }
171
171
 
172
172
  .cls-2 {
173
- fill: var(--memori-logo-text-color, '#744c99');
173
+ fill: var(--memori-text-color, '#744c99');
174
174
  }
175
175
 
176
176
  </style>
@@ -6,7 +6,7 @@ import SendOnEnterMenu, { Props } from './SendOnEnterMenu';
6
6
  import './SendOnEnterMenu.css';
7
7
 
8
8
  const meta: Meta = {
9
- title: 'Widget/Send On Enter Menu',
9
+ title: 'Internals/Send On Enter Menu',
10
10
  component: SendOnEnterMenu,
11
11
  argTypes: {
12
12
  sendOnEnter: {
@@ -5,7 +5,7 @@ import SettingsDrawer, { Props } from './SettingsDrawer';
5
5
  import './SettingsDrawer.css';
6
6
 
7
7
  const meta: Meta = {
8
- title: 'Widget/SettingsDrawer',
8
+ title: 'Surfaces/SettingsDrawer',
9
9
  component: SettingsDrawer,
10
10
  argTypes: {
11
11
  open: {
@@ -8,7 +8,7 @@ import './ShareButton.css';
8
8
  import { AlertProvider } from '@memori.ai/ui';
9
9
 
10
10
  const meta: Meta = {
11
- title: 'Share Button',
11
+ title: 'Compositions/Share Button',
12
12
  component: ShareButton,
13
13
  argTypes: {
14
14
  url: {
@@ -105,36 +105,22 @@ pre[class*='language-'] {
105
105
  display: flex;
106
106
  align-items: center;
107
107
  padding: 0.5rem;
108
- border: 1px solid rgba(0, 0, 0, 0.1);
109
108
  border-radius: 0.5rem;
110
- border-radius: var(--memori-radius-box);
111
- -webkit-backdrop-filter: blur(10px);
112
- backdrop-filter: blur(10px);
113
- background: rgba(0, 0, 0, 0.05);
114
- background-color: color-mix(in oklch, var(--memori-main-background) 38%, transparent);
115
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
116
109
  gap: var(--memori-spacing-sm);
117
110
  }
118
111
 
119
112
  button.memori-snippet--copy-button {
120
- width: 32px !important;
121
- height: 32px !important;
113
+ /* width: 32px !important;
114
+ height: 32px !important; */
122
115
  padding: 0;
123
116
  border: 1px solid rgba(0, 0, 0, 0.1);
124
117
  border-radius: 0.5rem !important;
125
- background: rgba(0, 0, 0, 0.05);
118
+ background: var(--memori-secondary-background);
126
119
  transition: all 0.2s ease;
127
120
  }
128
121
 
129
- button.memori-snippet--copy-button:hover,
130
- button.memori-snippet--copy-button:focus {
131
- border-color: rgba(0, 0, 0, 0.2);
132
- background: rgba(0, 0, 0, 0.1);
133
- transform: scale(1.05);
134
- }
135
-
136
122
  button.memori-snippet--copy-button:active {
137
- background: rgba(0, 0, 0, 0.15);
123
+ /* background: rgba(0, 0, 0, 0.15); */
138
124
  transform: scale(0.95);
139
125
  }
140
126
 
@@ -144,24 +130,8 @@ button.memori-snippet--copy-button svg {
144
130
  color: var(--memori-text-color);
145
131
  }
146
132
 
147
- .memori-snippet--copied-text {
148
- animation: fadeInOut 0.3s ease;
149
- color: var(--memori-text-color);
150
- font-size: 0.75rem;
151
- font-weight: var(--memori-text-weight-semibold);
152
- letter-spacing: 0.05em;
153
- text-transform: uppercase;
154
- }
155
-
156
- @keyframes fadeInOut {
157
- 0% {
158
- opacity: 0;
159
- transform: translateX(-4px);
160
- }
161
- 100% {
162
- opacity: 1;
163
- transform: translateX(0);
164
- }
133
+ .memori-snippet button.memori-snippet--copy-button--copied svg {
134
+ color: var(--memori-success, #22c55e);
165
135
  }
166
136
 
167
137
  .memori-snippet--caption {
@@ -51,7 +51,7 @@ export default Snippet;
51
51
  `;
52
52
 
53
53
  const meta: Meta = {
54
- title: 'Snippet',
54
+ title: 'Internals/Snippet',
55
55
  component: Snippet,
56
56
  argTypes: {
57
57
  mimeType: {
@@ -1,7 +1,7 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { Medium } from '@memori.ai/memori-api-client/dist/types';
3
3
  import { Button } from '@memori.ai/ui';
4
- import { Copy } from 'lucide-react';
4
+ import { Check, Copy } from 'lucide-react';
5
5
  import { prismSyntaxLangs } from '../../helpers/constants';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import cx from 'classnames';
@@ -127,15 +127,14 @@ const Snippet = ({
127
127
 
128
128
  {showCopyButton && (
129
129
  <div className="memori-snippet--copy-wrapper">
130
- {copied && (
131
- <span className="memori-snippet--copied-text">{t('copied') || 'Copied!'}</span>
132
- )}
133
130
  <Button
134
131
  variant="ghost"
135
132
  shape="circle"
136
- className="memori-snippet--copy-button"
137
- title={t('copy') || 'Copy'}
138
- icon={<Copy />}
133
+ className={cx('memori-snippet--copy-button', {
134
+ 'memori-snippet--copy-button--copied': copied,
135
+ })}
136
+ title={copied ? t('copied') || 'Copied' : t('copy') || 'Copy'}
137
+ icon={copied ? <Check /> : <Copy />}
139
138
  onMouseDown={handleCopy}
140
139
  />
141
140
  </div>
@@ -151,6 +151,23 @@
151
151
  white-space: nowrap;
152
152
  }
153
153
 
154
+ .memori--title-row {
155
+ display: inline-flex;
156
+ min-width: 0;
157
+ max-width: 100%;
158
+ align-items: center;
159
+ margin-bottom: var(--memori-spacing-sm);
160
+ gap: var(--memori-spacing-sm);
161
+ }
162
+
163
+ .memori--title-row .memori--title {
164
+ margin-bottom: 0;
165
+ }
166
+
167
+ .memori--title-row .blocked-memori-badge--wrapper {
168
+ flex-shrink: 0;
169
+ }
170
+
154
171
  .memori--description,
155
172
  .memori--needsLogin,
156
173
  .memori--needsPosition {
@@ -182,6 +199,84 @@
182
199
  line-height: var(--memori-text-line-tight);
183
200
  overflow-wrap: break-word;
184
201
  overflow-x: hidden;
202
+ padding-inline-end: 8px;
203
+ }
204
+
205
+ @supports not selector(::-webkit-scrollbar) {
206
+ .memori--start-panel,
207
+ .memori--description-text,
208
+ .memori-chat-layout--start-panel-wrap {
209
+ scrollbar-color: color-mix(in oklch, var(--memori-text-color) 14%, transparent) transparent;
210
+ scrollbar-width: thin;
211
+ }
212
+
213
+ .memori--start-panel:hover,
214
+ .memori--start-panel:focus-within,
215
+ .memori--start-panel:active,
216
+ .memori--description-text:hover,
217
+ .memori--description-text:focus-within,
218
+ .memori--description-text:active,
219
+ .memori-chat-layout--start-panel-wrap:hover,
220
+ .memori-chat-layout--start-panel-wrap:focus-within,
221
+ .memori-chat-layout--start-panel-wrap:active {
222
+ scrollbar-color: color-mix(in oklch, var(--memori-text-color) 38%, transparent) transparent;
223
+ }
224
+ }
225
+
226
+ .memori--start-panel::-webkit-scrollbar,
227
+ .memori--description-text::-webkit-scrollbar,
228
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar {
229
+ width: 5px;
230
+ height: 5px;
231
+ }
232
+
233
+ .memori--start-panel::-webkit-scrollbar-track,
234
+ .memori--description-text::-webkit-scrollbar-track,
235
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar-track {
236
+ margin: 4px 0;
237
+ background: transparent;
238
+ }
239
+
240
+ .memori--start-panel::-webkit-scrollbar-thumb,
241
+ .memori--description-text::-webkit-scrollbar-thumb,
242
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar-thumb {
243
+ border-radius: 999px;
244
+ background-color: color-mix(in oklch, var(--memori-text-color) 14%, transparent);
245
+ }
246
+
247
+ .memori--start-panel:hover::-webkit-scrollbar-thumb,
248
+ .memori--start-panel:focus-within::-webkit-scrollbar-thumb,
249
+ .memori--start-panel:active::-webkit-scrollbar-thumb,
250
+ .memori--description-text:hover::-webkit-scrollbar-thumb,
251
+ .memori--description-text:focus-within::-webkit-scrollbar-thumb,
252
+ .memori--description-text:active::-webkit-scrollbar-thumb,
253
+ .memori-chat-layout--start-panel-wrap:hover::-webkit-scrollbar-thumb,
254
+ .memori-chat-layout--start-panel-wrap:focus-within::-webkit-scrollbar-thumb,
255
+ .memori-chat-layout--start-panel-wrap:active::-webkit-scrollbar-thumb,
256
+ .memori--start-panel::-webkit-scrollbar-thumb:hover,
257
+ .memori--description-text::-webkit-scrollbar-thumb:hover,
258
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar-thumb:hover {
259
+ background-color: color-mix(in oklch, var(--memori-text-color) 38%, transparent);
260
+ }
261
+
262
+ .memori--start-panel::-webkit-scrollbar-thumb:active,
263
+ .memori--description-text::-webkit-scrollbar-thumb:active,
264
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar-thumb:active {
265
+ background-color: color-mix(in oklch, var(--memori-text-color) 52%, transparent);
266
+ }
267
+
268
+ @media (hover: none) {
269
+ .memori--start-panel,
270
+ .memori--description-text,
271
+ .memori-chat-layout--start-panel-wrap {
272
+ scrollbar-color: color-mix(in oklch, var(--memori-text-color) 28%, transparent) transparent;
273
+ }
274
+
275
+ .memori--start-panel::-webkit-scrollbar-thumb,
276
+ .memori--description-text::-webkit-scrollbar-thumb,
277
+ .memori-chat-layout--start-panel-wrap::-webkit-scrollbar-thumb {
278
+ background-color: color-mix(in oklch, var(--memori-text-color) 28%, transparent);
279
+ }
185
280
  }
186
281
 
187
282
  .memori--description-text--full {
@@ -473,6 +568,12 @@
473
568
  text-align: left;
474
569
  }
475
570
 
571
+ .memori--description-text--expand-symbol,
572
+ .memori--description-text--collapse-symbol {
573
+ width: 100%;
574
+ justify-content: space-between;
575
+ }
576
+
476
577
  .memori--description-text > button svg,
477
578
  .memori--description-text .memori-expandable__button svg {
478
579
  margin-left: auto;
@@ -525,6 +626,16 @@
525
626
  text-align: left;
526
627
  }
527
628
 
629
+ .memori--title-container__content
630
+ .memori--description-text--collapsible:has(.memori--description-text--expand-symbol)
631
+ .memori-expandable__inner {
632
+ display: -webkit-box;
633
+ overflow: hidden;
634
+ -webkit-box-orient: vertical;
635
+ -webkit-line-clamp: 3;
636
+ text-overflow: ellipsis;
637
+ }
638
+
528
639
  .memori--description-text--expand-symbol,
529
640
  .memori--description-text--collapse-symbol {
530
641
  display: inline-flex;
@@ -532,9 +643,21 @@
532
643
  color: var(--memori-primary);
533
644
  font-size: 0.8rem;
534
645
  font-weight: var(--memori-text-weight-medium);
646
+ gap: var(--memori-spacing-xs);
535
647
  line-height: 1.2;
536
648
  }
537
649
 
650
+ .memori--description-text--toggle-chevron {
651
+ width: 0.85rem;
652
+ height: 0.85rem;
653
+ flex-shrink: 0;
654
+ transition: transform 0.2s ease;
655
+ }
656
+
657
+ .memori--description-text--toggle-chevron--up {
658
+ transform: rotate(180deg);
659
+ }
660
+
538
661
  /* The Expandable toggle is a memori-button ghost, which inherits a global
539
662
  `transform: scale(1.015)` on hover from @memori.ai/ui. Disable it here. */
540
663
  .memori-expandable.memori--description-text--collapsible .memori-button:hover:not(:disabled, .memori-button--disabled),
@@ -838,11 +961,10 @@
838
961
  outline-offset: var(--memori-focus-ring-offset);
839
962
  }
840
963
 
841
- /* Portal renders on document.body; website-assistant layout uses z-index up to 2^31-1 for the
842
- fixed panel/trigger — without this, the popover stays underneath and looks “missing”. */
964
+ /* Portal on widget root; tooltip/popover library z-index is 1300. */
843
965
  .memori--privacy-popover-positioner,
844
966
  .memori--deep-thought-helper-tooltip-positioner {
845
- z-index: 2147483647;
967
+ z-index: 1300;
846
968
  }
847
969
 
848
970
  .memori--privacy-popover-popup {
@@ -9,7 +9,7 @@ import '../../i18n';
9
9
  import './StartPanel.css';
10
10
 
11
11
  const meta: Meta = {
12
- title: 'Widget/Start panel',
12
+ title: 'Compositions/Start panel',
13
13
  component: StartPanel,
14
14
  argTypes: {
15
15
  showShare: {
@@ -38,7 +38,7 @@ const integrationProperties = getChatStyles(integrationConfig);
38
38
 
39
39
  const integrationStylesheet =
40
40
  Object.keys(integrationProperties).length > 0
41
- ? `@layer integration {
41
+ ? `@layer memori.overrides {
42
42
  #root, .memori-widget {
43
43
  ${Object.entries(integrationProperties)
44
44
  .map(([key, value]) => `${key}: ${value};`)
@@ -84,6 +84,26 @@ Default.args = {
84
84
  onClickStart: () => {},
85
85
  };
86
86
 
87
+ export const WithLongDescription = Template.bind({});
88
+ WithLongDescription.args = {
89
+ memori: {
90
+ ...memori,
91
+ enableCompletions: false,
92
+ description:
93
+ 'Un agente conversazionale pensato per accogliere visitatori, rispondere alle domande più frequenti e accompagnare le persone nella scoperta di contenuti, servizi e storie. La descrizione è volutamente lunga così da verificare il troncamento a tre righe, l’ellipsis e il toggle Espandi/Riduci.',
94
+ },
95
+ tenant,
96
+ language: 'it',
97
+ userLang: 'it',
98
+ setUserLang: () => {},
99
+ setVenue: () => {},
100
+ openPositionPopover: () => {},
101
+ instruct: false,
102
+ sessionId: sessionID,
103
+ clickedStart: false,
104
+ onClickStart: () => {},
105
+ };
106
+
87
107
  export const WithExistingSession = Template.bind({});
88
108
  WithExistingSession.args = {
89
109
  memori: {
@@ -30,15 +30,6 @@ import { Expandable } from '@memori.ai/ui';
30
30
  import { usePressTooltip } from '../../helpers/usePressTooltip';
31
31
  import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
32
32
 
33
- /**
34
- * Sentinel values used as non-selectable section headers in the language
35
- * Combobox. We render a flat list with disabled "header" items instead of
36
- * the Combobox.Group API because @memori.ai/ui's grouped mode renders the
37
- * group's original items and bypasses the built-in search filter.
38
- */
39
- const LANG_COMBO_GROUP_POPULAR = '__memori_lang_group_popular__';
40
- const LANG_COMBO_GROUP_ALL = '__memori_lang_group_all__';
41
-
42
33
  interface Memori extends MemoriOriginal {
43
34
  requireLoginToken?: boolean;
44
35
  }
@@ -121,23 +112,19 @@ const StartPanel: React.FC<Props> = ({
121
112
  const { popular, all } = getGroupedChatLanguages();
122
113
  return [
123
114
  {
124
- value: LANG_COMBO_GROUP_POPULAR,
125
- label: String(t('popularLanguages') || 'Popular'),
126
- disabled: true,
115
+ groupLabel: String(t('popularLanguages') || 'Popular'),
116
+ options: popular.map(lang => ({
117
+ label: lang.label,
118
+ value: lang.value,
119
+ })),
127
120
  },
128
- ...popular.map(lang => ({
129
- label: lang.label,
130
- value: lang.value,
131
- })),
132
121
  {
133
- value: LANG_COMBO_GROUP_ALL,
134
- label: String(t('allLanguages') || 'All Languages'),
135
- disabled: true,
122
+ groupLabel: String(t('allLanguages') || 'All Languages'),
123
+ options: all.map(lang => ({
124
+ label: lang.label,
125
+ value: lang.value,
126
+ })),
136
127
  },
137
- ...all.map(lang => ({
138
- label: lang.label,
139
- value: lang.value,
140
- })),
141
128
  ];
142
129
  }, [t]);
143
130
 
@@ -289,7 +276,18 @@ const StartPanel: React.FC<Props> = ({
289
276
  />
290
277
  </picture>
291
278
  <div className="memori--title-container__content">
292
- <h2 className="memori--title">{memori.name}</h2>
279
+ <div className="memori--title-row">
280
+ <h2 className="memori--title">{memori.name}</h2>
281
+ {(memori.blockedUntil || notEnoughCredits) && (
282
+ <BlockedMemoriBadge
283
+ memoriName={memori.name}
284
+ blockedUntil={memori.blockedUntil}
285
+ notEnoughCredits={notEnoughCredits}
286
+ showGiverInfo={memori.isGiver}
287
+ showTitle
288
+ />
289
+ )}
290
+ </div>
293
291
  <>
294
292
  {isMobile && showFullDescriptionOnMobile ? (
295
293
  <p className="memori--description-text memori--description-text--full">
@@ -304,11 +302,19 @@ const StartPanel: React.FC<Props> = ({
304
302
  expandSymbol={_lang => (
305
303
  <span className="memori--description-text--expand-symbol">
306
304
  {t('expand')}
305
+ <ChevronDown
306
+ className="memori--description-text--toggle-chevron"
307
+ aria-hidden
308
+ />
307
309
  </span>
308
310
  )}
309
311
  collapseSymbol={_lang => (
310
312
  <span className="memori--description-text--collapse-symbol">
311
313
  {t('collapse')}
314
+ <ChevronDown
315
+ className="memori--description-text--toggle-chevron memori--description-text--toggle-chevron--up"
316
+ aria-hidden
317
+ />
312
318
  </span>
313
319
  )}
314
320
  >
@@ -664,17 +670,6 @@ const StartPanel: React.FC<Props> = ({
664
670
  </Tooltip>
665
671
  )} */}
666
672
  </div>
667
-
668
- {(memori.blockedUntil || notEnoughCredits) && (
669
- <BlockedMemoriBadge
670
- memoriName={memori.name}
671
- blockedUntil={memori.blockedUntil}
672
- notEnoughCredits={notEnoughCredits}
673
- showGiverInfo={memori.isGiver}
674
- showTitle
675
- marginLeft
676
- />
677
- )}
678
673
  </div>
679
674
  )}
680
675
  </div>