@memori.ai/memori-react 8.45.2 → 8.45.5

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 (729) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/components/Chat/Chat.d.ts +1 -0
  3. package/dist/components/Chat/Chat.js +6 -3
  4. package/dist/components/Chat/Chat.js.map +1 -1
  5. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +78 -0
  6. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +39 -0
  7. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +43 -0
  8. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  9. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  10. package/dist/components/ChatInputs/ChatInputs.js +2 -2
  11. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  12. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  13. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  14. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  15. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  16. package/dist/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  17. package/dist/components/DrawerFooter/DrawerFooter.js +10 -0
  18. package/dist/components/DrawerFooter/DrawerFooter.js.map +1 -0
  19. package/dist/components/IconButton/IconButton.css +135 -0
  20. package/dist/components/IconButton/IconButton.d.ts +9 -0
  21. package/dist/components/IconButton/IconButton.js +36 -0
  22. package/dist/components/IconButton/IconButton.js.map +1 -0
  23. package/dist/components/LoginModal/LoginModal.css +270 -0
  24. package/dist/components/LoginModal/LoginModal.d.ts +19 -0
  25. package/dist/components/LoginModal/LoginModal.js +355 -0
  26. package/dist/components/LoginModal/LoginModal.js.map +1 -0
  27. package/dist/components/MemoriWidget/MemoriWidget.d.ts +2 -2
  28. package/dist/components/MemoriWidget/MemoriWidget.js +13 -21
  29. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  30. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +540 -0
  31. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +65 -0
  32. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +254 -0
  33. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  34. package/dist/components/PositionPopover/PositionPopover.css +218 -0
  35. package/dist/components/PositionPopover/PositionPopover.d.ts +22 -0
  36. package/dist/components/PositionPopover/PositionPopover.js +208 -0
  37. package/dist/components/PositionPopover/PositionPopover.js.map +1 -0
  38. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  39. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  40. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  41. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  42. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  43. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  44. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  45. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  46. package/dist/components/UploadButton/UploadButton.d.ts +2 -0
  47. package/dist/components/UploadButton/UploadButton.js +2 -2
  48. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  49. package/dist/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  50. package/dist/components/UploadButton/UploadImages/UploadImages.js +7 -1
  51. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  52. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  53. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +144 -0
  54. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  55. package/{src/components/layouts → dist/components/layouts/WebsiteAssistant}/website-assistant.css +298 -86
  56. package/dist/components/layouts/chat.css +27 -4
  57. package/dist/components/layouts/fullpage.css +628 -0
  58. package/dist/helpers/artifactPanel.d.ts +6 -0
  59. package/dist/helpers/artifactPanel.js +42 -0
  60. package/dist/helpers/artifactPanel.js.map +1 -0
  61. package/dist/helpers/chatScroll.d.ts +12 -0
  62. package/dist/helpers/chatScroll.js +14 -0
  63. package/dist/helpers/chatScroll.js.map +1 -0
  64. package/dist/helpers/conversationHistory.d.ts +16 -0
  65. package/dist/helpers/conversationHistory.js +89 -0
  66. package/dist/helpers/conversationHistory.js.map +1 -0
  67. package/dist/helpers/conversationTitle.d.ts +8 -0
  68. package/dist/helpers/conversationTitle.js +27 -0
  69. package/dist/helpers/conversationTitle.js.map +1 -0
  70. package/dist/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  71. package/dist/helpers/enhanceBubbleCodeBlocks.js +97 -0
  72. package/dist/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  73. package/dist/helpers/highlightMatches.d.ts +2 -0
  74. package/dist/helpers/highlightMatches.js +54 -0
  75. package/dist/helpers/highlightMatches.js.map +1 -0
  76. package/dist/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  77. package/dist/helpers/nats/dialogStateCatchUp.js +40 -0
  78. package/dist/helpers/nats/dialogStateCatchUp.js.map +1 -0
  79. package/dist/helpers/positionPopover.d.ts +3 -0
  80. package/dist/helpers/positionPopover.js +22 -0
  81. package/dist/helpers/positionPopover.js.map +1 -0
  82. package/dist/helpers/prism.d.ts +16 -0
  83. package/dist/helpers/prism.js +78 -0
  84. package/dist/helpers/prism.js.map +1 -0
  85. package/dist/helpers/reasoning.d.ts +7 -0
  86. package/dist/helpers/reasoning.js +43 -0
  87. package/dist/helpers/reasoning.js.map +1 -0
  88. package/dist/helpers/relativeTime.d.ts +3 -0
  89. package/dist/helpers/relativeTime.js +56 -0
  90. package/dist/helpers/relativeTime.js.map +1 -0
  91. package/dist/helpers/sourcesCount.d.ts +2 -0
  92. package/dist/helpers/sourcesCount.js +22 -0
  93. package/dist/helpers/sourcesCount.js.map +1 -0
  94. package/dist/helpers/tts/muteSpeaker.d.ts +13 -0
  95. package/dist/helpers/tts/muteSpeaker.js +26 -0
  96. package/dist/helpers/tts/muteSpeaker.js.map +1 -0
  97. package/dist/helpers/usePressTooltip.d.ts +18 -0
  98. package/dist/helpers/usePressTooltip.js +38 -0
  99. package/dist/helpers/usePressTooltip.js.map +1 -0
  100. package/dist/icons/FacebookIcon.d.ts +3 -0
  101. package/dist/icons/FacebookIcon.js +6 -0
  102. package/dist/icons/FacebookIcon.js.map +1 -0
  103. package/dist/icons/LinkedinIcon.d.ts +3 -0
  104. package/dist/icons/LinkedinIcon.js +6 -0
  105. package/dist/icons/LinkedinIcon.js.map +1 -0
  106. package/dist/icons/MemoriIcon.d.ts +3 -0
  107. package/dist/icons/MemoriIcon.js +8 -0
  108. package/dist/icons/MemoriIcon.js.map +1 -0
  109. package/dist/icons/TelegramIcon.d.ts +3 -0
  110. package/dist/icons/TelegramIcon.js +6 -0
  111. package/dist/icons/TelegramIcon.js.map +1 -0
  112. package/dist/icons/TwitterIcon.d.ts +3 -0
  113. package/dist/icons/TwitterIcon.js +6 -0
  114. package/dist/icons/TwitterIcon.js.map +1 -0
  115. package/dist/icons/WhatsappIcon.d.ts +3 -0
  116. package/dist/icons/WhatsappIcon.js +6 -0
  117. package/dist/icons/WhatsappIcon.js.map +1 -0
  118. package/dist/icons/artifacts/DocumentIcon.d.ts +3 -0
  119. package/dist/icons/artifacts/DocumentIcon.js +6 -0
  120. package/dist/icons/artifacts/DocumentIcon.js.map +1 -0
  121. package/dist/icons/artifacts/HtmlIcon.d.ts +3 -0
  122. package/dist/icons/artifacts/HtmlIcon.js +6 -0
  123. package/dist/icons/artifacts/HtmlIcon.js.map +1 -0
  124. package/dist/icons/artifacts/JavascriptIcon.d.ts +3 -0
  125. package/dist/icons/artifacts/JavascriptIcon.js +6 -0
  126. package/dist/icons/artifacts/JavascriptIcon.js.map +1 -0
  127. package/dist/icons/artifacts/MarkdownIcon.d.ts +3 -0
  128. package/dist/icons/artifacts/MarkdownIcon.js +6 -0
  129. package/dist/icons/artifacts/MarkdownIcon.js.map +1 -0
  130. package/dist/icons/artifacts/PythonIcon.d.ts +3 -0
  131. package/dist/icons/artifacts/PythonIcon.js +6 -0
  132. package/dist/icons/artifacts/PythonIcon.js.map +1 -0
  133. package/dist/icons/artifacts/SvgIcon.d.ts +3 -0
  134. package/dist/icons/artifacts/SvgIcon.js +6 -0
  135. package/dist/icons/artifacts/SvgIcon.js.map +1 -0
  136. package/dist/icons/artifacts/XmlIcon.d.ts +3 -0
  137. package/dist/icons/artifacts/XmlIcon.js +6 -0
  138. package/dist/icons/artifacts/XmlIcon.js.map +1 -0
  139. package/dist/icons/artifacts/cssIcon.d.ts +3 -0
  140. package/dist/icons/artifacts/cssIcon.js +6 -0
  141. package/dist/icons/artifacts/cssIcon.js.map +1 -0
  142. package/dist/styles/motion.css +25 -0
  143. package/dist/styles.css +1 -2
  144. package/dist/version.d.ts +1 -1
  145. package/dist/version.js +1 -1
  146. package/esm/components/Chat/Chat.d.ts +1 -0
  147. package/esm/components/Chat/Chat.js +6 -3
  148. package/esm/components/Chat/Chat.js.map +1 -1
  149. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +39 -0
  150. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +40 -0
  151. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  152. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  153. package/esm/components/ChatInputs/ChatInputs.js +2 -2
  154. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  155. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  156. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  157. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  158. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  159. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  160. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  161. package/esm/components/IconButton/IconButton.d.ts +9 -0
  162. package/esm/components/IconButton/IconButton.js +33 -0
  163. package/esm/components/IconButton/IconButton.js.map +1 -0
  164. package/esm/components/LoginModal/LoginModal.d.ts +19 -0
  165. package/esm/components/LoginModal/LoginModal.js +352 -0
  166. package/esm/components/LoginModal/LoginModal.js.map +1 -0
  167. package/esm/components/MemoriWidget/MemoriWidget.d.ts +2 -2
  168. package/esm/components/MemoriWidget/MemoriWidget.js +8 -17
  169. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  170. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +65 -0
  171. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +251 -0
  172. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  173. package/esm/components/PositionPopover/PositionPopover.d.ts +22 -0
  174. package/esm/components/PositionPopover/PositionPopover.js +203 -0
  175. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  176. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  177. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  178. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  179. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  180. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  181. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  182. package/esm/components/UploadButton/UploadButton.d.ts +2 -0
  183. package/esm/components/UploadButton/UploadButton.js +2 -2
  184. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  185. package/esm/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  186. package/esm/components/UploadButton/UploadImages/UploadImages.js +7 -1
  187. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  188. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  189. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +141 -0
  190. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  191. package/esm/components/layouts/chat.css +27 -4
  192. package/esm/helpers/artifactPanel.d.ts +6 -0
  193. package/esm/helpers/artifactPanel.js +37 -0
  194. package/esm/helpers/artifactPanel.js.map +1 -0
  195. package/esm/helpers/chatScroll.d.ts +12 -0
  196. package/esm/helpers/chatScroll.js +9 -0
  197. package/esm/helpers/chatScroll.js.map +1 -0
  198. package/esm/helpers/conversationHistory.d.ts +16 -0
  199. package/esm/helpers/conversationHistory.js +82 -0
  200. package/esm/helpers/conversationHistory.js.map +1 -0
  201. package/esm/helpers/conversationTitle.d.ts +8 -0
  202. package/esm/helpers/conversationTitle.js +23 -0
  203. package/esm/helpers/conversationTitle.js.map +1 -0
  204. package/esm/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  205. package/esm/helpers/enhanceBubbleCodeBlocks.js +94 -0
  206. package/esm/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  207. package/esm/helpers/highlightMatches.d.ts +2 -0
  208. package/esm/helpers/highlightMatches.js +49 -0
  209. package/esm/helpers/highlightMatches.js.map +1 -0
  210. package/esm/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  211. package/esm/helpers/nats/dialogStateCatchUp.js +35 -0
  212. package/esm/helpers/nats/dialogStateCatchUp.js.map +1 -0
  213. package/esm/helpers/positionPopover.d.ts +3 -0
  214. package/esm/helpers/positionPopover.js +17 -0
  215. package/esm/helpers/positionPopover.js.map +1 -0
  216. package/esm/helpers/prism.d.ts +16 -0
  217. package/esm/helpers/prism.js +74 -0
  218. package/esm/helpers/prism.js.map +1 -0
  219. package/esm/helpers/reasoning.d.ts +7 -0
  220. package/esm/helpers/reasoning.js +39 -0
  221. package/esm/helpers/reasoning.js.map +1 -0
  222. package/esm/helpers/relativeTime.d.ts +3 -0
  223. package/esm/helpers/relativeTime.js +50 -0
  224. package/esm/helpers/relativeTime.js.map +1 -0
  225. package/esm/helpers/sourcesCount.d.ts +2 -0
  226. package/esm/helpers/sourcesCount.js +18 -0
  227. package/esm/helpers/sourcesCount.js.map +1 -0
  228. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  229. package/esm/helpers/tts/muteSpeaker.js +21 -0
  230. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  231. package/esm/helpers/usePressTooltip.d.ts +18 -0
  232. package/esm/helpers/usePressTooltip.js +35 -0
  233. package/esm/helpers/usePressTooltip.js.map +1 -0
  234. package/esm/icons/FacebookIcon.d.ts +3 -0
  235. package/esm/icons/FacebookIcon.js +4 -0
  236. package/esm/icons/FacebookIcon.js.map +1 -0
  237. package/esm/icons/LinkedinIcon.d.ts +3 -0
  238. package/esm/icons/LinkedinIcon.js +4 -0
  239. package/esm/icons/LinkedinIcon.js.map +1 -0
  240. package/esm/icons/MemoriIcon.d.ts +3 -0
  241. package/esm/icons/MemoriIcon.js +6 -0
  242. package/esm/icons/MemoriIcon.js.map +1 -0
  243. package/esm/icons/TelegramIcon.d.ts +3 -0
  244. package/esm/icons/TelegramIcon.js +4 -0
  245. package/esm/icons/TelegramIcon.js.map +1 -0
  246. package/esm/icons/TwitterIcon.d.ts +3 -0
  247. package/esm/icons/TwitterIcon.js +4 -0
  248. package/esm/icons/TwitterIcon.js.map +1 -0
  249. package/esm/icons/WhatsappIcon.d.ts +3 -0
  250. package/esm/icons/WhatsappIcon.js +4 -0
  251. package/esm/icons/WhatsappIcon.js.map +1 -0
  252. package/esm/icons/artifacts/DocumentIcon.d.ts +3 -0
  253. package/esm/icons/artifacts/DocumentIcon.js +4 -0
  254. package/esm/icons/artifacts/DocumentIcon.js.map +1 -0
  255. package/esm/icons/artifacts/HtmlIcon.d.ts +3 -0
  256. package/esm/icons/artifacts/HtmlIcon.js +4 -0
  257. package/esm/icons/artifacts/HtmlIcon.js.map +1 -0
  258. package/esm/icons/artifacts/JavascriptIcon.d.ts +3 -0
  259. package/esm/icons/artifacts/JavascriptIcon.js +4 -0
  260. package/esm/icons/artifacts/JavascriptIcon.js.map +1 -0
  261. package/esm/icons/artifacts/MarkdownIcon.d.ts +3 -0
  262. package/esm/icons/artifacts/MarkdownIcon.js +4 -0
  263. package/esm/icons/artifacts/MarkdownIcon.js.map +1 -0
  264. package/esm/icons/artifacts/PythonIcon.d.ts +3 -0
  265. package/esm/icons/artifacts/PythonIcon.js +4 -0
  266. package/esm/icons/artifacts/PythonIcon.js.map +1 -0
  267. package/esm/icons/artifacts/SvgIcon.d.ts +3 -0
  268. package/esm/icons/artifacts/SvgIcon.js +4 -0
  269. package/esm/icons/artifacts/SvgIcon.js.map +1 -0
  270. package/esm/icons/artifacts/XmlIcon.d.ts +3 -0
  271. package/esm/icons/artifacts/XmlIcon.js +4 -0
  272. package/esm/icons/artifacts/XmlIcon.js.map +1 -0
  273. package/esm/icons/artifacts/cssIcon.d.ts +3 -0
  274. package/esm/icons/artifacts/cssIcon.js +4 -0
  275. package/esm/icons/artifacts/cssIcon.js.map +1 -0
  276. package/esm/styles.css +1 -2
  277. package/esm/version.d.ts +1 -1
  278. package/esm/version.js +1 -1
  279. package/package.json +7 -7
  280. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  281. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -64
  282. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  283. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  284. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -62
  285. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  286. package/src/I18nWrapper.tsx +0 -13
  287. package/src/__snapshots__/index.test.tsx.snap +0 -96
  288. package/src/components/AgeVerificationModal/AgeVerificationModal.css +0 -95
  289. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +0 -46
  290. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +0 -33
  291. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -99
  292. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +0 -19
  293. package/src/components/Auth/Auth.css +0 -57
  294. package/src/components/Auth/Auth.stories.tsx +0 -90
  295. package/src/components/Auth/Auth.test.tsx +0 -63
  296. package/src/components/Auth/Auth.tsx +0 -201
  297. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +0 -143
  298. package/src/components/Avatar/Avatar.css +0 -151
  299. package/src/components/Avatar/Avatar.stories.tsx +0 -160
  300. package/src/components/Avatar/Avatar.test.tsx +0 -158
  301. package/src/components/Avatar/Avatar.tsx +0 -245
  302. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +0 -103
  303. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -105
  304. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -338
  305. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +0 -44
  306. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -1091
  307. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +0 -83
  308. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +0 -301
  309. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +0 -100
  310. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +0 -152
  311. package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +0 -31
  312. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +0 -141
  313. package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +0 -145
  314. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +0 -111
  315. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +0 -201
  316. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +0 -254
  317. package/src/components/Avatar/AvatarView/index.tsx +0 -194
  318. package/src/components/Avatar/AvatarView/utils/hideHands.ts +0 -11
  319. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +0 -100
  320. package/src/components/Avatar/AvatarView/utils/useHeadMovement.ts +0 -72
  321. package/src/components/Avatar/AvatarView/utils/useLoadingMorphAnim.ts +0 -38
  322. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +0 -93
  323. package/src/components/Avatar/AvatarView/utils/useSmile.ts +0 -39
  324. package/src/components/Avatar/AvatarView/utils/utils.ts +0 -55
  325. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -246
  326. package/src/components/Blob/Blob.css +0 -286
  327. package/src/components/Blob/Blob.stories.tsx +0 -53
  328. package/src/components/Blob/Blob.test.tsx +0 -18
  329. package/src/components/Blob/Blob.tsx +0 -26
  330. package/src/components/Blob/__snapshots__/Blob.test.tsx.snap +0 -80
  331. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +0 -40
  332. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +0 -58
  333. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.test.tsx +0 -53
  334. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +0 -74
  335. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +0 -181
  336. package/src/components/ChangeMode/ChangeMode.css +0 -22
  337. package/src/components/ChangeMode/ChangeMode.stories.tsx +0 -50
  338. package/src/components/ChangeMode/ChangeMode.test.tsx +0 -24
  339. package/src/components/ChangeMode/ChangeMode.tsx +0 -51
  340. package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +0 -107
  341. package/src/components/Chat/Chat.css +0 -285
  342. package/src/components/Chat/Chat.stories.tsx +0 -1684
  343. package/src/components/Chat/Chat.test.tsx +0 -372
  344. package/src/components/Chat/Chat.tsx +0 -778
  345. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +0 -6816
  346. package/src/components/ChatBubble/ChatBubble.css +0 -430
  347. package/src/components/ChatBubble/ChatBubble.stories.tsx +0 -1192
  348. package/src/components/ChatBubble/ChatBubble.test.tsx +0 -481
  349. package/src/components/ChatBubble/ChatBubble.tsx +0 -776
  350. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +0 -8734
  351. package/src/components/ChatHistoryDrawer/ChatHistory.css +0 -587
  352. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +0 -410
  353. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +0 -107
  354. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -1298
  355. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +0 -27
  356. package/src/components/ChatInputs/ChatInputs.css +0 -340
  357. package/src/components/ChatInputs/ChatInputs.stories.tsx +0 -251
  358. package/src/components/ChatInputs/ChatInputs.tsx +0 -487
  359. package/src/components/ChatTextArea/ChatTextArea.css +0 -185
  360. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  361. package/src/components/ChatTextArea/ChatTextArea.test.tsx +0 -28
  362. package/src/components/ChatTextArea/ChatTextArea.tsx +0 -171
  363. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +0 -68
  364. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +0 -36
  365. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +0 -296
  366. package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +0 -31
  367. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +0 -232
  368. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +0 -96
  369. package/src/components/ContentPreviewModal/ContentPreviewModal.css +0 -128
  370. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -67
  371. package/src/components/ContentPreviewModal/index.ts +0 -2
  372. package/src/components/CustomGLBModelViewer/ModelViewer.css +0 -11
  373. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  374. package/src/components/CustomGLBModelViewer/ModelViewer.test.tsx +0 -13
  375. package/src/components/CustomGLBModelViewer/ModelViewer.tsx +0 -37
  376. package/src/components/CustomGLBModelViewer/__snapshots__/ModelViewer.test.tsx.snap +0 -20
  377. package/src/components/DateSelector/DateSelector.css +0 -158
  378. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  379. package/src/components/DateSelector/DateSelector.test.tsx +0 -149
  380. package/src/components/DateSelector/DateSelector.tsx +0 -251
  381. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +0 -1954
  382. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -54
  383. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -67
  384. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +0 -54
  385. package/src/components/ExpertsDrawer/ExpertsDrawer.test.tsx +0 -53
  386. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -69
  387. package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +0 -11
  388. package/src/components/ExportHistoryButton/ExportHistoryButton.css +0 -22
  389. package/src/components/FeedbackButtons/FeedbackButtons.css +0 -107
  390. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +0 -52
  391. package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +0 -11
  392. package/src/components/FeedbackButtons/FeedbackButtons.tsx +0 -152
  393. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +0 -42
  394. package/src/components/FilePreview/FilePreview.css +0 -358
  395. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  396. package/src/components/FilePreview/FilePreview.test.tsx +0 -26
  397. package/src/components/FilePreview/FilePreview.tsx +0 -277
  398. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +0 -185
  399. package/src/components/Header/ChatConsumptionDropdown.test.tsx +0 -117
  400. package/src/components/Header/ChatConsumptionDropdown.tsx +0 -275
  401. package/src/components/Header/Header.css +0 -282
  402. package/src/components/Header/Header.stories.tsx +0 -338
  403. package/src/components/Header/Header.test.tsx +0 -371
  404. package/src/components/Header/Header.tsx +0 -442
  405. package/src/components/Header/__snapshots__/Header.test.tsx.snap +0 -964
  406. package/src/components/KnownFacts/KnownFacts.css +0 -19
  407. package/src/components/KnownFacts/KnownFacts.stories.tsx +0 -80
  408. package/src/components/KnownFacts/KnownFacts.test.tsx +0 -57
  409. package/src/components/KnownFacts/KnownFacts.tsx +0 -376
  410. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +0 -19
  411. package/src/components/LoginDrawer/LoginDrawer.css +0 -1616
  412. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -102
  413. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -199
  414. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -600
  415. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +0 -91
  416. package/src/components/MediaWidget/DocumentCard.test.tsx +0 -45
  417. package/src/components/MediaWidget/DocumentCard.tsx +0 -19
  418. package/src/components/MediaWidget/MediaItemWidget.css +0 -1398
  419. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +0 -423
  420. package/src/components/MediaWidget/MediaItemWidget.test.tsx +0 -248
  421. package/src/components/MediaWidget/MediaItemWidget.tsx +0 -997
  422. package/src/components/MediaWidget/MediaItemWidget.types.ts +0 -65
  423. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +0 -367
  424. package/src/components/MediaWidget/MediaItemWidget.utils.ts +0 -227
  425. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +0 -271
  426. package/src/components/MediaWidget/MediaPreviewModal.tsx +0 -425
  427. package/src/components/MediaWidget/MediaWidget.css +0 -131
  428. package/src/components/MediaWidget/MediaWidget.stories.tsx +0 -319
  429. package/src/components/MediaWidget/MediaWidget.test.tsx +0 -41
  430. package/src/components/MediaWidget/MediaWidget.tsx +0 -107
  431. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +0 -24
  432. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +0 -791
  433. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +0 -154
  434. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -2299
  435. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +0 -163
  436. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +0 -250
  437. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +0 -30
  438. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +0 -467
  439. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +0 -89
  440. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +0 -619
  441. package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +0 -9
  442. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +0 -489
  443. package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +0 -90
  444. package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +0 -73
  445. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +0 -454
  446. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +0 -1059
  447. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -431
  448. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +0 -150
  449. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +0 -79
  450. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +0 -253
  451. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +0 -561
  452. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +0 -355
  453. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +0 -160
  454. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +0 -167
  455. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +0 -35
  456. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +0 -308
  457. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +0 -379
  458. package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +0 -85
  459. package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +0 -173
  460. package/src/components/MemoriWidget/MemoriWidget.css +0 -220
  461. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +0 -274
  462. package/src/components/MemoriWidget/MemoriWidget.tsx +0 -3930
  463. package/src/components/MicrophoneButton/MicrophoneButton.css +0 -142
  464. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +0 -52
  465. package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -128
  466. package/src/components/PositionDrawer/PositionDrawer.stories.tsx +0 -51
  467. package/src/components/PositionDrawer/PositionDrawer.test.tsx +0 -39
  468. package/src/components/PositionDrawer/PositionDrawer.tsx +0 -50
  469. package/src/components/PositionDrawer/__snapshots__/PositionDrawer.test.tsx.snap +0 -17
  470. package/src/components/PoweredBy/PoweredBy.css +0 -47
  471. package/src/components/PoweredBy/PoweredBy.stories.tsx +0 -75
  472. package/src/components/PoweredBy/PoweredBy.test.tsx +0 -15
  473. package/src/components/PoweredBy/PoweredBy.tsx +0 -44
  474. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +0 -55
  475. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +0 -47
  476. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +0 -58
  477. package/src/components/SendOnEnterMenu/SendOnEnterMenu.test.tsx +0 -17
  478. package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +0 -82
  479. package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +0 -57
  480. package/src/components/SettingsDrawer/SettingsDrawer.css +0 -24
  481. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +0 -94
  482. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +0 -202
  483. package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -255
  484. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +0 -59
  485. package/src/components/ShareButton/ShareButton.css +0 -73
  486. package/src/components/ShareButton/ShareButton.stories.tsx +0 -98
  487. package/src/components/ShareButton/ShareButton.test.tsx +0 -53
  488. package/src/components/ShareButton/ShareButton.tsx +0 -395
  489. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +0 -316
  490. package/src/components/Snippet/Snippet.css +0 -142
  491. package/src/components/Snippet/Snippet.stories.tsx +0 -286
  492. package/src/components/Snippet/Snippet.test.tsx +0 -176
  493. package/src/components/Snippet/Snippet.tsx +0 -148
  494. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +0 -603
  495. package/src/components/StartPanel/StartPanel.css +0 -273
  496. package/src/components/StartPanel/StartPanel.stories.tsx +0 -404
  497. package/src/components/StartPanel/StartPanel.test.tsx +0 -360
  498. package/src/components/StartPanel/StartPanel.tsx +0 -426
  499. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +0 -1986
  500. package/src/components/Typing/Typing.stories.tsx +0 -130
  501. package/src/components/Typing/Typing.test.tsx +0 -62
  502. package/src/components/Typing/Typing.tsx +0 -154
  503. package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +0 -133
  504. package/src/components/UploadButton/UploadButton.css +0 -542
  505. package/src/components/UploadButton/UploadButton.stories.tsx +0 -376
  506. package/src/components/UploadButton/UploadButton.test.tsx +0 -11
  507. package/src/components/UploadButton/UploadButton.tsx +0 -688
  508. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -421
  509. package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -538
  510. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +0 -165
  511. package/src/components/VenueWidget/VenueWidget.css +0 -163
  512. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -66
  513. package/src/components/VenueWidget/VenueWidget.test.tsx +0 -49
  514. package/src/components/VenueWidget/VenueWidget.tsx +0 -458
  515. package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +0 -370
  516. package/src/components/WhyThisAnswer/WhyThisAnswer.css +0 -171
  517. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +0 -285
  518. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +0 -245
  519. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -233
  520. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +0 -27
  521. package/src/components/icons/AI.tsx +0 -34
  522. package/src/components/icons/Alert.tsx +0 -31
  523. package/src/components/icons/ArrowUp.tsx +0 -28
  524. package/src/components/icons/Bug.tsx +0 -81
  525. package/src/components/icons/Chat.tsx +0 -30
  526. package/src/components/icons/ChevronDown.tsx +0 -26
  527. package/src/components/icons/ChevronLeft.tsx +0 -28
  528. package/src/components/icons/ChevronRight.tsx +0 -28
  529. package/src/components/icons/ChevronUp.tsx +0 -24
  530. package/src/components/icons/Clear.tsx +0 -23
  531. package/src/components/icons/Close.tsx +0 -30
  532. package/src/components/icons/Code.tsx +0 -24
  533. package/src/components/icons/Copy.tsx +0 -23
  534. package/src/components/icons/DeepThought.tsx +0 -38
  535. package/src/components/icons/Delete.tsx +0 -23
  536. package/src/components/icons/Document.tsx +0 -50
  537. package/src/components/icons/Download.tsx +0 -23
  538. package/src/components/icons/Edit.tsx +0 -17
  539. package/src/components/icons/Expand.tsx +0 -23
  540. package/src/components/icons/Eye.tsx +0 -17
  541. package/src/components/icons/EyeInvisible.tsx +0 -24
  542. package/src/components/icons/Facebook.tsx +0 -23
  543. package/src/components/icons/Feedback.tsx +0 -24
  544. package/src/components/icons/File.tsx +0 -17
  545. package/src/components/icons/FileExcel.tsx +0 -23
  546. package/src/components/icons/FilePdf.tsx +0 -23
  547. package/src/components/icons/FileWord.tsx +0 -23
  548. package/src/components/icons/Fullscreen.tsx +0 -23
  549. package/src/components/icons/FullscreenExit.tsx +0 -23
  550. package/src/components/icons/GasStation.tsx +0 -36
  551. package/src/components/icons/Group.tsx +0 -30
  552. package/src/components/icons/History.tsx +0 -33
  553. package/src/components/icons/Image.tsx +0 -37
  554. package/src/components/icons/Info.tsx +0 -31
  555. package/src/components/icons/Link.tsx +0 -17
  556. package/src/components/icons/Linkedin.tsx +0 -23
  557. package/src/components/icons/Loading.tsx +0 -28
  558. package/src/components/icons/Logout.tsx +0 -27
  559. package/src/components/icons/Mail.tsx +0 -17
  560. package/src/components/icons/MapMarker.tsx +0 -26
  561. package/src/components/icons/MenuHorizontal.tsx +0 -29
  562. package/src/components/icons/MenuVertical.tsx +0 -29
  563. package/src/components/icons/Message.tsx +0 -23
  564. package/src/components/icons/Microphone.tsx +0 -23
  565. package/src/components/icons/Minus.tsx +0 -23
  566. package/src/components/icons/MinusCircle.tsx +0 -24
  567. package/src/components/icons/PaperClip.tsx +0 -23
  568. package/src/components/icons/Picture.tsx +0 -23
  569. package/src/components/icons/Plus.tsx +0 -18
  570. package/src/components/icons/Preview.tsx +0 -29
  571. package/src/components/icons/Print.tsx +0 -38
  572. package/src/components/icons/QuestionHelp.tsx +0 -30
  573. package/src/components/icons/Refresh.tsx +0 -30
  574. package/src/components/icons/SelectIcon.tsx +0 -28
  575. package/src/components/icons/Send.tsx +0 -17
  576. package/src/components/icons/Setting.tsx +0 -23
  577. package/src/components/icons/Share.tsx +0 -23
  578. package/src/components/icons/Sound.tsx +0 -23
  579. package/src/components/icons/SoundDeactivated.tsx +0 -27
  580. package/src/components/icons/Telegram.tsx +0 -26
  581. package/src/components/icons/ThumbDown.tsx +0 -29
  582. package/src/components/icons/ThumbUp.tsx +0 -29
  583. package/src/components/icons/Translation.tsx +0 -24
  584. package/src/components/icons/Twitter.tsx +0 -23
  585. package/src/components/icons/Upload.tsx +0 -34
  586. package/src/components/icons/User.tsx +0 -17
  587. package/src/components/icons/Warning.tsx +0 -24
  588. package/src/components/icons/WhatsApp.tsx +0 -24
  589. package/src/components/icons/icons.stories.css +0 -5
  590. package/src/components/icons/icons.stories.tsx +0 -81
  591. package/src/components/icons/loading.css +0 -14
  592. package/src/components/layouts/Chat.test.tsx +0 -40
  593. package/src/components/layouts/Chat.tsx +0 -69
  594. package/src/components/layouts/FullBody/FullBody.stories.tsx +0 -110
  595. package/src/components/layouts/FullPage.test.tsx +0 -65
  596. package/src/components/layouts/FullPage.tsx +0 -80
  597. package/src/components/layouts/HiddenChat.test.tsx +0 -40
  598. package/src/components/layouts/HiddenChat.tsx +0 -233
  599. package/src/components/layouts/Totem/Totem.stories.tsx +0 -131
  600. package/src/components/layouts/Totem.test.tsx +0 -40
  601. package/src/components/layouts/Totem.tsx +0 -49
  602. package/src/components/layouts/WebsiteAssistant.test.tsx +0 -40
  603. package/src/components/layouts/WebsiteAssistant.tsx +0 -132
  604. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +0 -131
  605. package/src/components/layouts/ZoomedFullBody.test.tsx +0 -40
  606. package/src/components/layouts/ZoomedFullBody.tsx +0 -81
  607. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +0 -457
  608. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +0 -1045
  609. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +0 -460
  610. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +0 -566
  611. package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -59
  612. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +0 -523
  613. package/src/components/layouts/chat.css +0 -451
  614. package/src/components/layouts/hidden-chat.css +0 -276
  615. package/src/components/layouts/layouts.stories.tsx +0 -231
  616. package/src/components/layouts/totem.css +0 -221
  617. package/src/components/layouts/zoomed-full-body.css +0 -18
  618. package/src/components/ui/Alert.css +0 -93
  619. package/src/components/ui/Alert.stories.tsx +0 -137
  620. package/src/components/ui/Alert.test.tsx +0 -129
  621. package/src/components/ui/Alert.tsx +0 -123
  622. package/src/components/ui/Button.css +0 -167
  623. package/src/components/ui/Button.stories.tsx +0 -156
  624. package/src/components/ui/Button.test.tsx +0 -74
  625. package/src/components/ui/Button.tsx +0 -107
  626. package/src/components/ui/Card.css +0 -65
  627. package/src/components/ui/Card.stories.tsx +0 -95
  628. package/src/components/ui/Card.test.tsx +0 -47
  629. package/src/components/ui/Card.tsx +0 -48
  630. package/src/components/ui/Checkbox.css +0 -116
  631. package/src/components/ui/Checkbox.stories.tsx +0 -74
  632. package/src/components/ui/Checkbox.test.tsx +0 -28
  633. package/src/components/ui/Checkbox.tsx +0 -58
  634. package/src/components/ui/ConfirmDialog.css +0 -42
  635. package/src/components/ui/ConfirmDialog.stories.tsx +0 -216
  636. package/src/components/ui/ConfirmDialog.test.tsx +0 -124
  637. package/src/components/ui/ConfirmDialog.tsx +0 -58
  638. package/src/components/ui/Details.css +0 -66
  639. package/src/components/ui/Drawer.css +0 -270
  640. package/src/components/ui/Drawer.stories.tsx +0 -267
  641. package/src/components/ui/Drawer.test.tsx +0 -130
  642. package/src/components/ui/Drawer.tsx +0 -293
  643. package/src/components/ui/Dropdown.css +0 -173
  644. package/src/components/ui/Dropdown.tsx +0 -63
  645. package/src/components/ui/Expandable.css +0 -15
  646. package/src/components/ui/Expandable.stories.tsx +0 -180
  647. package/src/components/ui/Expandable.test.tsx +0 -107
  648. package/src/components/ui/Expandable.tsx +0 -121
  649. package/src/components/ui/Modal.css +0 -98
  650. package/src/components/ui/Modal.stories.tsx +0 -171
  651. package/src/components/ui/Modal.test.tsx +0 -111
  652. package/src/components/ui/Modal.tsx +0 -117
  653. package/src/components/ui/Select.css +0 -138
  654. package/src/components/ui/Select.stories.tsx +0 -79
  655. package/src/components/ui/Select.test.tsx +0 -84
  656. package/src/components/ui/Select.tsx +0 -79
  657. package/src/components/ui/Slider.css +0 -192
  658. package/src/components/ui/Slider.stories.tsx +0 -63
  659. package/src/components/ui/Slider.tsx +0 -142
  660. package/src/components/ui/Spin.css +0 -31
  661. package/src/components/ui/Spin.stories.tsx +0 -64
  662. package/src/components/ui/Spin.test.tsx +0 -41
  663. package/src/components/ui/Spin.tsx +0 -31
  664. package/src/components/ui/Table.css +0 -132
  665. package/src/components/ui/Tooltip.css +0 -171
  666. package/src/components/ui/Tooltip.stories.tsx +0 -109
  667. package/src/components/ui/Tooltip.test.tsx +0 -102
  668. package/src/components/ui/Tooltip.tsx +0 -163
  669. package/src/components/ui/__snapshots__/Alert.test.tsx.snap +0 -59
  670. package/src/components/ui/__snapshots__/Button.test.tsx.snap +0 -204
  671. package/src/components/ui/__snapshots__/Card.test.tsx.snap +0 -321
  672. package/src/components/ui/__snapshots__/Checkbox.test.tsx.snap +0 -131
  673. package/src/components/ui/__snapshots__/ConfirmDialog.test.tsx.snap +0 -35
  674. package/src/components/ui/__snapshots__/Drawer.test.tsx.snap +0 -67
  675. package/src/components/ui/__snapshots__/Expandable.test.tsx.snap +0 -159
  676. package/src/components/ui/__snapshots__/Modal.test.tsx.snap +0 -59
  677. package/src/components/ui/__snapshots__/Select.test.tsx.snap +0 -254
  678. package/src/components/ui/__snapshots__/Spin.test.tsx.snap +0 -193
  679. package/src/components/ui/__snapshots__/Tooltip.test.tsx.snap +0 -113
  680. package/src/components/ui/definitions.stories.tsx +0 -139
  681. package/src/context/visemeContext.tsx +0 -384
  682. package/src/helpers/chatPdfExport.ts +0 -544
  683. package/src/helpers/configuration.ts +0 -42
  684. package/src/helpers/constants.ts +0 -268
  685. package/src/helpers/convertDocument.test.ts +0 -67
  686. package/src/helpers/convertDocument.ts +0 -35
  687. package/src/helpers/credits.ts +0 -54
  688. package/src/helpers/error.test.ts +0 -29
  689. package/src/helpers/error.ts +0 -278
  690. package/src/helpers/imageCompression.ts +0 -230
  691. package/src/helpers/llmUsage.ts +0 -328
  692. package/src/helpers/markedExtendedTables.js +0 -217
  693. package/src/helpers/media.test.ts +0 -169
  694. package/src/helpers/media.ts +0 -81
  695. package/src/helpers/message.test.ts +0 -126
  696. package/src/helpers/message.ts +0 -219
  697. package/src/helpers/nats/getNatsConfig.ts +0 -148
  698. package/src/helpers/nats/isSessionExpiredError.test.ts +0 -38
  699. package/src/helpers/nats/isSessionExpiredError.ts +0 -51
  700. package/src/helpers/nats/useNats.test.tsx +0 -81
  701. package/src/helpers/nats/useNats.ts +0 -204
  702. package/src/helpers/nats/useNatsSession.test.ts +0 -16
  703. package/src/helpers/nats/useNatsSession.ts +0 -460
  704. package/src/helpers/piiDetection.test.ts +0 -186
  705. package/src/helpers/piiDetection.ts +0 -91
  706. package/src/helpers/sanitizer.ts +0 -17
  707. package/src/helpers/statistics.ts +0 -58
  708. package/src/helpers/stt/useSTT.ts +0 -515
  709. package/src/helpers/translations.ts +0 -39
  710. package/src/helpers/tts/ttsVoiceUtility.ts +0 -275
  711. package/src/helpers/tts/useTTS.ts +0 -621
  712. package/src/helpers/utils.test.ts +0 -331
  713. package/src/helpers/utils.ts +0 -591
  714. package/src/helpers/venue.ts +0 -36
  715. package/src/i18n.ts +0 -39
  716. package/src/index.stories.tsx +0 -220
  717. package/src/index.test.tsx +0 -156
  718. package/src/index.tsx +0 -592
  719. package/src/locales/de.json +0 -680
  720. package/src/locales/en.json +0 -754
  721. package/src/locales/es.json +0 -682
  722. package/src/locales/fr.json +0 -682
  723. package/src/locales/it.json +0 -750
  724. package/src/mocks/data.ts +0 -790
  725. package/src/styles.css +0 -126
  726. package/src/types/integration.test.ts +0 -32
  727. package/src/types/integration.ts +0 -31
  728. package/src/types/layout.ts +0 -50
  729. package/src/version.ts +0 -2
@@ -1,997 +0,0 @@
1
- // MediaItemWidget.tsx — Main Media Item Widget file for rendering various types of media inside Memori
2
- import type { Medium } from '@memori.ai/memori-api-client/dist/types';
3
- import React, {
4
- useCallback,
5
- useEffect,
6
- useMemo,
7
- useState,
8
- memo,
9
- useRef,
10
- } from 'react';
11
- import { getResourceUrl } from '../../helpers/media';
12
- import {
13
- withLinksOpenInNewTab,
14
- stripHTML,
15
- stripDocumentAttachmentTags,
16
- isAssetOnlyDocumentAttachment,
17
- getDocumentAttachmentAssetUrl,
18
- } from '../../helpers/utils';
19
- import { getTranslation } from '../../helpers/translations';
20
- import { prismSyntaxLangs } from '../../helpers/constants';
21
- import ModelViewer from '../CustomGLBModelViewer/ModelViewer';
22
- import Snippet from '../Snippet/Snippet';
23
- import Card from '../ui/Card';
24
- import Modal from '../ui/Modal';
25
- import File from '../icons/File';
26
- import { Transition } from '@headlessui/react';
27
- import cx from 'classnames';
28
- import Sound from '../icons/Sound';
29
- import Link from '../icons/Link';
30
- import { ellipsis } from 'ellipsed';
31
-
32
- import type {
33
- MediaItemWidgetProps as Props,
34
- MediaItem,
35
- RenderMediaItemProps,
36
- RenderSnippetItemProps,
37
- LinkPreviewInfo,
38
- } from './MediaItemWidget.types';
39
- import {
40
- formatBytes,
41
- getFileExtensionFromUrl,
42
- getDocumentBadgeLabel,
43
- countLines,
44
- shouldUseDarkFileCard,
45
- fetchLinkPreview,
46
- getContentSize,
47
- normalizeUrl,
48
- getImageDisplaySource,
49
- FALLBACK_IMAGE_BASE64,
50
- TEXT_FILE_EXTENSIONS,
51
- IMAGE_MIME_TYPES,
52
- } from './MediaItemWidget.utils';
53
- import { DocumentCard } from './DocumentCard';
54
- import { MediaPreviewModal } from './MediaPreviewModal';
55
-
56
- export type {
57
- LinkPreviewInfo,
58
- ILinkPreviewInfo,
59
- } from './MediaItemWidget.types';
60
- export type { Props };
61
-
62
- // List of code mime types from Prism's available languages
63
- const CODE_MIME_TYPES = prismSyntaxLangs.map(l => l.mimeType);
64
-
65
- /** Image MIME types that open in the preview modal on click (when mediumID + onClick are set) */
66
- const IMAGE_MODAL_MIME_TYPES = [
67
- 'image/jpeg',
68
- 'image/png',
69
- 'image/jpg',
70
- 'image/gif',
71
- ] as const;
72
-
73
- function isImageMime(mimeType: string): boolean {
74
- return (IMAGE_MODAL_MIME_TYPES as readonly string[]).includes(mimeType);
75
- }
76
-
77
- // RenderMediaItem — Renders the suitable content for a Medium (images, files, html, code, audio, video…)
78
- export const RenderMediaItem = memo(function RenderMediaItem({
79
- isChild: _isChild = false,
80
- item,
81
- sessionID,
82
- tenantID,
83
- preview = false,
84
- baseURL,
85
- apiURL,
86
- onClick: _onClick,
87
- customMediaRenderer,
88
- descriptionOneLine = false,
89
- onLinkPreviewInfo,
90
- }: RenderMediaItemProps): React.ReactElement | null {
91
- // State for "copy to clipboard" notification for snippets
92
- const [copyNotification, setCopyNotification] = useState(false);
93
- // State for fallback image
94
- const [imageError, setImageError] = useState(false);
95
- // Link preview info (site title, description, image, etc)
96
- const [link, setLink] = useState<
97
- (LinkPreviewInfo & { urlKey: string }) | null
98
- >(null);
99
- // Persistent ref for onLinkPreviewInfo callback
100
- const onLinkPreviewInfoRef = useRef(onLinkPreviewInfo);
101
- onLinkPreviewInfoRef.current = onLinkPreviewInfo;
102
-
103
- // Get URL with possible session/tenant/base/api
104
- const resourceUrl = getResourceUrl({
105
- resourceURI: item.url,
106
- sessionID,
107
- tenantID,
108
- baseURL,
109
- apiURL,
110
- });
111
-
112
- // Normalize URL (strip protocol, etc)
113
- const normURL = normalizeUrl(item.url);
114
-
115
- // Fetch link preview info for HTML links, only if relevant and not already loaded
116
- useEffect(() => {
117
- if (
118
- item.mimeType !== 'text/html' ||
119
- !normURL ||
120
- normURL === link?.urlKey ||
121
- !baseURL
122
- ) {
123
- return;
124
- }
125
- let cancelled = false;
126
- fetchLinkPreview(normURL, baseURL).then(siteInfo => {
127
- if (cancelled) return;
128
- setLink(
129
- siteInfo
130
- ? ({ ...siteInfo, urlKey: normURL } as LinkPreviewInfo & {
131
- urlKey: string;
132
- })
133
- : null
134
- );
135
- if (siteInfo && onLinkPreviewInfoRef.current) {
136
- onLinkPreviewInfoRef.current(siteInfo);
137
- }
138
- });
139
- return () => {
140
- cancelled = true;
141
- };
142
- }, [item?.url, baseURL, item.mimeType, normURL, link?.urlKey]);
143
-
144
- // Custom renderer for media type, overrides our logic
145
- const customRenderer = customMediaRenderer?.(item.mimeType);
146
- if (customRenderer) {
147
- return customRenderer;
148
- }
149
-
150
- // Media type detection flags
151
- const isCodeSnippet = CODE_MIME_TYPES.includes(item.mimeType);
152
- const isHTML = item.mimeType === 'text/html';
153
- const isDocumentAttachment = item.properties?.isDocumentAttachment === true;
154
- const isAttachedFile = item.properties?.isAttachedFile === true;
155
-
156
- // Single source of truth for image display (resource URL, base64, or rgb/rgba)
157
- const imageDisplay = getImageDisplaySource(item, resourceUrl);
158
- const { src: imageSrc, isRgb: isImageRGB } = imageDisplay;
159
-
160
- // Link preview fields (title, description, video, image)
161
- const linkTitle =
162
- item.title && item.title.length > 0 ? item.title : link?.title;
163
- const linkDescription = link?.description;
164
- const linkVideo = link?.video;
165
- const linkImage = link?.image ?? link?.images?.[0];
166
-
167
- /**
168
- * Render the actual content for a media item based on its MIME type
169
- */
170
- const renderMediaContent = useCallback(
171
- (medium: Medium & { type?: string }) => {
172
- // Get resource url for this medium
173
- const url = getResourceUrl({
174
- resourceURI: medium.url,
175
- sessionID,
176
- tenantID,
177
- baseURL,
178
- apiURL,
179
- });
180
-
181
- switch (medium.mimeType) {
182
- // Render images (RGB images as colored swatches)
183
- case 'image/jpeg':
184
- case 'image/png':
185
- case 'image/jpg':
186
- case 'image/gif':
187
- return isImageRGB ? (
188
- <picture className="memori-media-item--figure">
189
- <div
190
- className="memori-media-item--rgb-item"
191
- style={{ backgroundColor: medium.url }}
192
- />
193
- </picture>
194
- ) : (
195
- <picture className="memori-media-item--figure">
196
- {!preview && imageSrc && (
197
- <source srcSet={imageSrc} type={medium.mimeType} />
198
- )}
199
- <img
200
- alt={medium.title}
201
- src={imageError || !imageSrc ? FALLBACK_IMAGE_BASE64 : imageSrc}
202
- onError={() => setImageError(true)}
203
- />
204
- </picture>
205
- );
206
-
207
- // Render video types
208
- case 'video/mp4':
209
- case 'video/quicktime':
210
- case 'video/avi':
211
- case 'video/mpeg':
212
- return (
213
- <div className="memori-media-item--video-container">
214
- <video
215
- className="memori-media-item--video-player"
216
- controls
217
- src={url}
218
- title={medium.title}
219
- >
220
- {/* Quicktime special fallback for .mp4 */}
221
- {medium.mimeType === 'video/quicktime' && (
222
- <source src={medium.url} type="video/mp4" />
223
- )}
224
- <source src={medium.url} type={medium.mimeType} />
225
- Your browser does not support this video format.
226
- </video>
227
- {/* Play overlay icon (hidden by default) */}
228
- <div className="memori-media-item--video-overlay hidden">
229
- <svg
230
- className="memori-media-item--play-icon"
231
- viewBox="0 0 24 24"
232
- fill="currentColor"
233
- >
234
- <path d="M8 5v14l11-7z" />
235
- </svg>
236
- </div>
237
- </div>
238
- );
239
-
240
- // Render audio types (shows a sound icon + audio controls)
241
- case 'audio/mpeg3':
242
- case 'audio/wav':
243
- case 'audio/mpeg':
244
- return (
245
- <div className="memori-media-item--audio-container">
246
- <div className="memori-media-item--audio-icon">
247
- <Sound />
248
- </div>
249
- <audio
250
- className="memori-media-item--audio-player"
251
- controls
252
- src={url}
253
- />
254
- </div>
255
- );
256
-
257
- // Render 3D models (GLB only)
258
- case 'model/gltf-binary':
259
- return (
260
- <div className="memori-media-item--model-container">
261
- <div className="memori-media-item--model-viewer">
262
- <ModelViewer
263
- src={url}
264
- alt=""
265
- poster="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8HL4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg=="
266
- />
267
- </div>
268
- </div>
269
- );
270
-
271
- // Plain text: snippet preview (same UX as other media / code)
272
- case 'text/plain':
273
- return medium.content ? (
274
- <Snippet preview medium={medium} />
275
- ) : (
276
- <DocumentCard
277
- title={medium.title || 'File'}
278
- badge={getDocumentBadgeLabel(medium.mimeType, medium.title)}
279
- meta={(() => {
280
- const size = getContentSize(medium);
281
- return size != null && size > 0 ? formatBytes(size) : null;
282
- })()}
283
- icon={<File className="memori-media-item--document-icon-svg" />}
284
- />
285
- );
286
-
287
- // HTML files are now handled as file cards (rendered above in the isFile check)
288
- // This case is kept for backwards compatibility but should not be reached
289
- case 'text/html':
290
- // Fallback to file card - HTML files are handled in the file card section above
291
- return (
292
- <DocumentCard
293
- title={medium.title || 'File'}
294
- badge={getDocumentBadgeLabel(medium.mimeType, medium.title)}
295
- meta={(() => {
296
- const size = getContentSize(medium);
297
- return size != null && size > 0 ? formatBytes(size) : null;
298
- })()}
299
- icon={<Link className="memori-media-item--document-icon-svg" />}
300
- />
301
- );
302
-
303
- // Generic fallback: Render a document card for unknown types
304
- default:
305
- return (
306
- <DocumentCard
307
- title={medium.title || 'File'}
308
- badge={getDocumentBadgeLabel(medium.mimeType, medium.title)}
309
- meta={(() => {
310
- const size = getContentSize(medium);
311
- return size != null && size > 0 ? formatBytes(size) : null;
312
- })()}
313
- icon={<File className="memori-media-item--document-icon-svg" />}
314
- />
315
- );
316
- }
317
- },
318
- [
319
- sessionID,
320
- tenantID,
321
- baseURL,
322
- apiURL,
323
- preview,
324
- imageSrc,
325
- imageError,
326
- isImageRGB,
327
- linkImage,
328
- linkVideo,
329
- ]
330
- );
331
-
332
- // Extension and file detection helpers
333
- const fileExtensionFromUrl = getFileExtensionFromUrl(normURL || item.url);
334
- const fileExtension = getDocumentBadgeLabel(
335
- item.mimeType,
336
- item.title,
337
- normURL || item.url
338
- );
339
- const isFile = shouldUseDarkFileCard(
340
- item,
341
- fileExtensionFromUrl,
342
- item.mimeType
343
- );
344
- // Text file detection for line counting
345
- const isTextFile = (TEXT_FILE_EXTENSIONS as readonly string[]).includes(
346
- fileExtension || ''
347
- );
348
-
349
- // Derive line count and line label for text files
350
- const lineCount =
351
- isTextFile && item.content ? countLines(item.content) : null;
352
- const lineText =
353
- lineCount !== null
354
- ? lineCount === 1
355
- ? '1 line'
356
- : `${lineCount} lines`
357
- : null;
358
-
359
- // File-like cards that are NOT code: render as clickable file cards
360
- if (isFile && !isCodeSnippet) {
361
- const contentSize = getContentSize(item);
362
- const sizeText =
363
- contentSize != null && contentSize > 0 ? formatBytes(contentSize) : null;
364
- const displayName = item.title || linkTitle || 'File';
365
- const metaParts = [lineText, sizeText].filter(Boolean);
366
- const metaLine = metaParts.length > 0 ? metaParts.join(' · ') : null;
367
-
368
- // Asset-only attachments (e.g. Office native files) open via URL, not modal
369
- const isAssetOnlyAttachment = isAssetOnlyDocumentAttachment(item);
370
-
371
- // Document attachments and attached files should open in modal, not as links
372
- if (
373
- (isDocumentAttachment || isAttachedFile) &&
374
- item.mediumID &&
375
- _onClick &&
376
- !isAssetOnlyAttachment
377
- ) {
378
- return (
379
- <div
380
- onClick={() => _onClick(item)}
381
- className="memori-media-item--link memori-media-item--document-link"
382
- style={{ cursor: 'pointer' }}
383
- title={displayName}
384
- role="button"
385
- tabIndex={0}
386
- onKeyDown={e => {
387
- if (e.key === 'Enter' || e.key === ' ') {
388
- e.preventDefault();
389
- _onClick(item);
390
- }
391
- }}
392
- >
393
- <DocumentCard
394
- title={displayName}
395
- badge={
396
- item.mimeType === 'text/html' && !!item.url
397
- ? 'Link'
398
- : fileExtension
399
- }
400
- meta={metaLine}
401
- icon={
402
- item.mimeType === 'text/html' ? (
403
- <Link className="memori-media-item--document-icon-svg" />
404
- ) : (
405
- <File className="memori-media-item--document-icon-svg" />
406
- )
407
- }
408
- />
409
- </div>
410
- );
411
- }
412
-
413
- // Build href: open in new tab (never modal). Use URL, or blob for content-only items.
414
- const getFileCardHref = (): string => {
415
- const assetUrl = getDocumentAttachmentAssetUrl(item);
416
- if (assetUrl) {
417
- return (
418
- getResourceUrl({
419
- resourceURI: assetUrl,
420
- sessionID,
421
- tenantID,
422
- baseURL,
423
- apiURL,
424
- }) ||
425
- assetUrl ||
426
- '#'
427
- );
428
- }
429
- if (isHTML && item.content) {
430
- let htmlContent = item.content;
431
- if (
432
- item.properties?.isDocumentAttachment ||
433
- htmlContent.includes('document_attachment') ||
434
- htmlContent.includes('<document_attachment')
435
- ) {
436
- if (htmlContent.includes('&lt;') || htmlContent.includes('&quot;')) {
437
- htmlContent = stripHTML(htmlContent) || htmlContent;
438
- }
439
- htmlContent = stripDocumentAttachmentTags(htmlContent);
440
- }
441
- const blob = new Blob([htmlContent], { type: 'text/html' });
442
- return URL.createObjectURL(blob);
443
- }
444
- if (item.content) {
445
- const blob = new Blob([item.content], {
446
- type: item.mimeType || 'text/plain',
447
- });
448
- return URL.createObjectURL(blob);
449
- }
450
- return '#';
451
- };
452
-
453
- const hrefUrl = getFileCardHref();
454
-
455
- return (
456
- <a
457
- href={hrefUrl}
458
- target="_blank"
459
- rel="noopener noreferrer"
460
- className="memori-media-item--link memori-media-item--document-link"
461
- title={displayName}
462
- >
463
- <DocumentCard
464
- title={displayName}
465
- badge={
466
- item.mimeType === 'text/html' && !!item.url ? 'Link' : fileExtension
467
- }
468
- meta={metaLine}
469
- icon={
470
- item.mimeType === 'text/html' ? (
471
- <Link className="memori-media-item--document-icon-svg" />
472
- ) : (
473
- <File className="memori-media-item--document-icon-svg" />
474
- )
475
- }
476
- />
477
- </a>
478
- );
479
- }
480
-
481
- // Inline previews for code snippets and plain text: Card with preview, click opens modal (same as other media)
482
- const isPreviewableText =
483
- (isCodeSnippet || item.mimeType === 'text/plain') && !!item.content;
484
- if (isPreviewableText && item.mediumID && _onClick) {
485
- return (
486
- <div
487
- className="memori-media-item--link"
488
- style={{ cursor: 'pointer' }}
489
- onClick={() => _onClick(item)}
490
- title={item.title}
491
- role="button"
492
- tabIndex={0}
493
- onKeyDown={e => {
494
- if (e.key === 'Enter' || e.key === ' ') {
495
- e.preventDefault();
496
- _onClick(item);
497
- }
498
- }}
499
- >
500
- <Card hoverable cover={renderMediaContent(item)} title={item.title} />
501
- </div>
502
- );
503
- }
504
-
505
- // HTML file with link info / preview or video/image: render card with link preview (image, video, description)
506
- if (isHTML && (linkImage || linkVideo || linkDescription)) {
507
- // Compute card cover image/video src
508
- const coverSrc =
509
- linkImage?.includes('data:image') === true
510
- ? undefined
511
- : linkImage?.startsWith('https')
512
- ? linkImage
513
- : linkImage
514
- ? `https://${linkImage.replace('http://', '')}`
515
- : undefined;
516
-
517
- return (
518
- <a
519
- href={item.url || '#'}
520
- target="_blank"
521
- rel="noopener noreferrer"
522
- className="memori-media-item--link"
523
- title={linkTitle}
524
- >
525
- <Card
526
- hoverable
527
- className={cx('memori-media-item--card', {
528
- 'memori-media-item--card-description-oneline': descriptionOneLine,
529
- 'memori-media-item--card-has-image': !!linkImage,
530
- 'memori-media-item--card-has-video': !!linkVideo,
531
- })}
532
- cover={
533
- linkVideo ? (
534
- <iframe
535
- width="100%"
536
- height="100%"
537
- src={linkVideo}
538
- title="Video player"
539
- frameBorder="0"
540
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
541
- allowFullScreen
542
- />
543
- ) : linkImage ? (
544
- <img
545
- className="memori-media-item--card-cover-img"
546
- src={coverSrc}
547
- alt={linkTitle}
548
- />
549
- ) : (
550
- <div className="memori-media-item--card-cover-icon">
551
- <Link className="memori-media-item--icon" />
552
- </div>
553
- )
554
- }
555
- title={linkTitle}
556
- description={linkDescription}
557
- />
558
- </a>
559
- );
560
- }
561
-
562
- // Run ellipsed.js to clamp link card description, only when a linkDescription is present
563
- useEffect(() => {
564
- if (!linkDescription) return;
565
- const t = setTimeout(() => {
566
- ellipsis('.memori-media-item--card .memori-card--description', 3, {
567
- responsive: true,
568
- });
569
- }, 300);
570
- return () => clearTimeout(t);
571
- }, [linkDescription, item.mediumID]);
572
-
573
- // -------------------------------------------------------------------------
574
- // Image link flow: images with mediumID open in preview modal on click
575
- // -------------------------------------------------------------------------
576
- if (isImageMime(item.mimeType)) {
577
- if (isImageRGB) {
578
- return (
579
- <Card
580
- hoverable
581
- className="memori-media-item--card memori-media-item--image"
582
- cover={renderMediaContent(item)}
583
- />
584
- );
585
- }
586
- if (item.mediumID && _onClick) {
587
- return (
588
- <div
589
- onClick={() => _onClick(item)}
590
- className="memori-media-item--link memori-media-item--image-link"
591
- style={{ cursor: 'pointer' }}
592
- title={item.title}
593
- role="button"
594
- tabIndex={0}
595
- onKeyDown={e => {
596
- if (e.key === 'Enter' || e.key === ' ') {
597
- e.preventDefault();
598
- _onClick(item);
599
- }
600
- }}
601
- >
602
- <Card
603
- hoverable
604
- className="memori-media-item--card memori-media-item--image"
605
- cover={renderMediaContent(item)}
606
- />
607
- </div>
608
- );
609
- }
610
- return (
611
- <Card
612
- hoverable
613
- className="memori-media-item--card memori-media-item--image"
614
- cover={renderMediaContent(item)}
615
- />
616
- );
617
- }
618
-
619
- // Video, audio, 3D, and other types: open in new tab (never modal)
620
- switch (item.mimeType) {
621
- case 'video/mp4':
622
- case 'video/quicktime':
623
- case 'video/avi':
624
- case 'video/mpeg':
625
- return (
626
- <a
627
- className="memori-media-item--link"
628
- href={resourceUrl || '#'}
629
- target="_blank"
630
- rel="noopener noreferrer"
631
- title={item.title}
632
- >
633
- {renderMediaContent(item)}
634
- </a>
635
- );
636
-
637
- // Audio and 3D models: open URL in new tab when available
638
- case 'audio/mpeg3':
639
- case 'audio/wav':
640
- case 'audio/mpeg':
641
- case 'model/gltf-binary':
642
- if (resourceUrl) {
643
- return (
644
- <a
645
- className="memori-media-item--link"
646
- href={resourceUrl}
647
- target="_blank"
648
- rel="noopener noreferrer"
649
- title={item.title}
650
- >
651
- {renderMediaContent(item)}
652
- </a>
653
- );
654
- }
655
- return renderMediaContent(item);
656
-
657
- // All other files: open URL in new tab (never modal)
658
- default:
659
- return (
660
- <a
661
- className="memori-media-item--link"
662
- href={resourceUrl || '#'}
663
- target="_blank"
664
- rel="noopener noreferrer"
665
- title={item.title}
666
- >
667
- {renderMediaContent(item)}
668
- </a>
669
- );
670
- }
671
- });
672
-
673
- // RenderSnippetItem: Renders a single code snippet (opens in new tab via href)
674
- export const RenderSnippetItem = memo(function RenderSnippetItem({
675
- item,
676
- onClick: _onClick, // kept for API compatibility; links open in new tab, not modal
677
- sessionID,
678
- tenantID,
679
- baseURL,
680
- apiURL,
681
- }: RenderSnippetItemProps): React.ReactElement {
682
- void _onClick;
683
- const resourceUrl = getResourceUrl({
684
- resourceURI: item.url,
685
- sessionID,
686
- tenantID,
687
- baseURL,
688
- apiURL,
689
- });
690
- const hasUrl = !!(resourceUrl && resourceUrl !== '#');
691
-
692
- // Count lines, chars, determine "short" snippet
693
- const lineCount = countLines(item.content);
694
- const contentLength = item.content?.length ?? 0;
695
- const isShortSnippet = lineCount <= 5 && contentLength <= 200;
696
- const lineText = lineCount === 1 ? '1 riga' : `${lineCount} righe`;
697
-
698
- if (isShortSnippet) {
699
- return (
700
- <div className="memori-media-item--snippet-direct">
701
- <Card className="memori-media-item--card memori-media-item--snippet">
702
- <div className="memori-media-item--snippet-body">
703
- <div className="memori-media-item--snippet-title">{item.title}</div>
704
- <div className="memori-media-item--snippet-preview">
705
- <Snippet showCopyButton preview={false} medium={item} />
706
- </div>
707
- <div className="memori-media-item--snippet-header">
708
- <span className="memori-media-item--snippet-meta">
709
- {lineText}
710
- </span>
711
- </div>
712
- </div>
713
- </Card>
714
- </div>
715
- );
716
- }
717
-
718
- // Long snippet: open in new tab (resource URL or blob URL from content)
719
- const snippetHref = hasUrl
720
- ? resourceUrl
721
- : item.content
722
- ? (() => {
723
- const blob = new Blob([item.content], {
724
- type: item.mimeType || 'text/plain',
725
- });
726
- return URL.createObjectURL(blob);
727
- })()
728
- : '#';
729
-
730
- return (
731
- <div
732
- onClick={() => {
733
- if (item.mediumID && _onClick) {
734
- _onClick(item);
735
- }
736
- }}
737
- style={{ cursor: 'pointer' }}
738
- role="button"
739
- tabIndex={0}
740
- onKeyDown={e => {
741
- if (e.key === 'Enter' || e.key === ' ') {
742
- e.preventDefault();
743
- if (item.mediumID && _onClick) {
744
- _onClick(item);
745
- }
746
- }
747
- }}
748
- className="memori-media-item--link"
749
- title={item.title}
750
- >
751
- <Card
752
- hoverable
753
- className="memori-media-item--card memori-media-item--snippet"
754
- >
755
- <div className="memori-media-item--snippet-body">
756
- <div className="memori-media-item--snippet-title">{item.title}</div>
757
- <div className="memori-media-item--snippet-preview">
758
- <Snippet showCopyButton={false} preview medium={item} />
759
- </div>
760
- <div className="memori-media-item--snippet-header">
761
- <span className="memori-media-item--snippet-meta">{lineText}</span>
762
- </div>
763
- </div>
764
- </Card>
765
- </div>
766
- );
767
- });
768
-
769
- // Main MediaItemWidget component: renders all media, overlays, and preview modals
770
- const MediaItemWidget: React.FC<Props> = ({
771
- items,
772
- sessionID,
773
- tenantID,
774
- translateTo,
775
- baseURL,
776
- apiURL,
777
- customMediaRenderer,
778
- fromUser = false,
779
- descriptionOneLine = false,
780
- onLinkPreviewInfo,
781
- }) => {
782
- // Internal tracked media set (may be translated versions)
783
- const [media, setMedia] = useState(items);
784
- // Modal state (holds currently open medium)
785
- const [openModalMedium, setOpenModalMedium] = useState<Medium | undefined>();
786
-
787
- // Update component-local media when prop changes (reset modal to current items)
788
- useEffect(() => {
789
- setMedia(items);
790
- }, [items]);
791
-
792
- // Optional: Translate all media captions/titles if translateTo provided
793
- const translateMediaCaptions = useCallback(async () => {
794
- if (!translateTo) return;
795
- const translated = await Promise.all(
796
- (items ?? []).map(async m => {
797
- if (!m.title) return m;
798
- try {
799
- const t = await getTranslation(m.title, translateTo);
800
- return { ...m, title: t.text ?? m.title };
801
- } catch (e) {
802
- console.error(e);
803
- return m;
804
- }
805
- })
806
- );
807
- setMedia(translated);
808
- }, [translateTo, items]);
809
-
810
- useEffect(() => {
811
- if (translateTo) translateMediaCaptions();
812
- }, [translateTo, translateMediaCaptions]);
813
-
814
- // Derive top-level "display" lists:
815
- // 1. All non-code, non-executable media sorted by timestamp (displayed as document, images, video, etc)
816
- const nonCodeDisplayMedia = useMemo(
817
- () =>
818
- media
819
- .filter(
820
- m =>
821
- !m.properties?.executable && !CODE_MIME_TYPES.includes(m.mimeType)
822
- )
823
- .sort((a, b) => {
824
- const at = a.creationTimestamp ?? 0;
825
- const bt = b.creationTimestamp ?? 0;
826
- return at > bt ? 1 : at < bt ? -1 : 0;
827
- }),
828
- [media]
829
- );
830
-
831
- // 2. Only code snippets (unless marked as executable)
832
- const codeSnippets = useMemo(
833
- () =>
834
- media.filter(
835
- m => !m.properties?.executable && CODE_MIME_TYPES.includes(m.mimeType)
836
- ),
837
- [media]
838
- );
839
-
840
- // 3. Only CSS code marked as executable (to inject as <style>)
841
- const cssExecutableCode = useMemo(
842
- () =>
843
- media.filter(
844
- m => m.mimeType === 'text/css' && !!m.properties?.executable
845
- ),
846
- [media]
847
- );
848
-
849
- // How many images are present for determining layout
850
- const imageCount = useMemo(
851
- () =>
852
- nonCodeDisplayMedia.filter(m =>
853
- (IMAGE_MIME_TYPES as readonly string[]).includes(m.mimeType)
854
- ).length,
855
- [nonCodeDisplayMedia]
856
- );
857
-
858
- // Media "card open"/preview modal: pass the clicked item so the correct one opens
859
- // (avoids wrong image when multiple items share the same mediumID)
860
- const handleMediaItemClick = useCallback((item: MediaItem) => {
861
- setOpenModalMedium(item);
862
- }, []);
863
-
864
- // Modal for code snippets
865
- const handleSnippetClick = useCallback((item: Medium & { type?: string }) => {
866
- setOpenModalMedium(item);
867
- }, []);
868
-
869
- // Simple close modal action callback
870
- const handleCloseModal = useCallback(() => {
871
- setOpenModalMedium(undefined);
872
- }, []);
873
-
874
- // Navigate to another media in modal (by mediumID) — used by modal carousel/nav
875
- const handleModalNavigate = useCallback(
876
- (mediumID: string) => {
877
- setOpenModalMedium(media.find(m => m.mediumID === mediumID));
878
- },
879
- [media]
880
- );
881
-
882
- // Render transitions and the main grid layouts for media
883
- return (
884
- <Transition appear show as="div" className="memori-media-items">
885
- {/* Main media grid: non-code media (images, files, html, video, etc) */}
886
- {nonCodeDisplayMedia.length > 0 && (
887
- <div
888
- className={cx('memori-media-items--grid memori-chat-scroll-item', {
889
- 'memori-media-items--user': fromUser,
890
- 'memori-media-items--agent': !fromUser,
891
- 'memori-media-items--single': imageCount === 1,
892
- 'memori-media-items--few': imageCount >= 2 && imageCount <= 4,
893
- 'memori-media-items--many': imageCount >= 5,
894
- })}
895
- >
896
- {nonCodeDisplayMedia.map((item, index) => (
897
- <Transition.Child
898
- key={`media-${index}-${item.mediumID ?? item.url ?? 'n'}`}
899
- as="div"
900
- className="memori-media-item"
901
- enter={`ease-out duration-500 delay-${index * 100}`}
902
- enterFrom="opacity-0 scale-95"
903
- enterTo="opacity-1 scale-100"
904
- leave="ease-in duration-300"
905
- leaveFrom="opacity-1 scale-100"
906
- leaveTo="opacity-0 scale-95"
907
- >
908
- <RenderMediaItem
909
- isChild
910
- sessionID={sessionID}
911
- tenantID={tenantID}
912
- baseURL={baseURL}
913
- apiURL={apiURL}
914
- onClick={handleMediaItemClick}
915
- item={{
916
- ...item,
917
- title: item.title,
918
- url: item.url,
919
- content: item.content,
920
- type: 'document',
921
- }}
922
- customMediaRenderer={customMediaRenderer}
923
- descriptionOneLine={descriptionOneLine}
924
- onLinkPreviewInfo={onLinkPreviewInfo}
925
- />
926
- </Transition.Child>
927
- ))}
928
- </div>
929
- )}
930
-
931
- {/* Grid of pure code snippets, shown as cards or compact snippets */}
932
- {codeSnippets.length > 0 && (
933
- <div
934
- className={cx('memori-media-items--grid memori-chat-scroll-item', {
935
- 'memori-media-items--user': fromUser,
936
- 'memori-media-items--agent': !fromUser,
937
- })}
938
- >
939
- {codeSnippets.map((item, index) => (
940
- <Transition.Child
941
- key={`snippet-${index}-${item.mediumID ?? item.url ?? 'n'}`}
942
- as="div"
943
- className="memori-media-item"
944
- enter={`ease-out duration-500 delay-${index * 100}`}
945
- enterFrom="opacity-0 scale-95"
946
- enterTo="opacity-1 scale-100"
947
- leave="ease-in duration-300"
948
- leaveFrom="opacity-1 scale-100"
949
- leaveTo="opacity-0 scale-95"
950
- >
951
- <RenderSnippetItem
952
- sessionID={sessionID}
953
- tenantID={tenantID}
954
- baseURL={baseURL}
955
- apiURL={apiURL}
956
- onClick={handleSnippetClick}
957
- item={{
958
- ...item,
959
- title: item.title,
960
- url: item.url,
961
- content: item.content,
962
- type: 'document',
963
- }}
964
- />
965
- </Transition.Child>
966
- ))}
967
- </div>
968
- )}
969
-
970
- {/* CSS executables: Inject as <style> (only shared to DOM, not shown visually) */}
971
- {cssExecutableCode.map(m => (
972
- <style
973
- key={m.mediumID}
974
- dangerouslySetInnerHTML={{ __html: m.content || '' }}
975
- />
976
- ))}
977
-
978
- {/* Modal preview: shows when openModalMedium set */}
979
- {openModalMedium && (
980
- <MediaPreviewModal
981
- medium={openModalMedium}
982
- onClose={handleCloseModal}
983
- sessionID={sessionID}
984
- tenantID={tenantID}
985
- baseURL={baseURL}
986
- apiURL={apiURL}
987
- customMediaRenderer={customMediaRenderer}
988
- descriptionOneLine={descriptionOneLine}
989
- onLinkPreviewInfo={onLinkPreviewInfo}
990
- onMediumClick={handleModalNavigate}
991
- />
992
- )}
993
- </Transition>
994
- );
995
- };
996
-
997
- export default memo(MediaItemWidget);