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

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 (285) hide show
  1. package/CHANGELOG.md +300 -1100
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  4. package/dist/components/Auth/Auth.js +1 -3
  5. package/dist/components/Auth/Auth.js.map +1 -1
  6. package/dist/components/Chat/Chat.css +10 -1
  7. package/dist/components/Chat/Chat.js +1 -3
  8. package/dist/components/Chat/Chat.js.map +1 -1
  9. package/dist/components/ChatBubble/ChatBubble.css +103 -5
  10. package/dist/components/ChatBubble/ChatBubble.js +48 -8
  11. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  12. package/dist/components/ChatHistoryDrawer/ChatHistory.js +1 -3
  13. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  14. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
  15. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
  16. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  17. package/dist/components/ChatInputs/ChatInputs.css +17 -52
  18. package/dist/components/ChatInputs/ChatInputs.js +1 -3
  19. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  20. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
  21. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
  22. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  23. package/dist/components/DateSelector/DateSelector.css +66 -3
  24. package/dist/components/DateSelector/DateSelector.js +5 -1
  25. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  26. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  27. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  28. package/dist/components/FilePreview/FilePreview.css +94 -220
  29. package/dist/components/FilePreview/FilePreview.js +25 -71
  30. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  31. package/dist/components/IconButton/IconButton.css +2 -11
  32. package/dist/components/KnownFacts/KnownFacts.css +3 -4
  33. package/dist/components/KnownFacts/KnownFacts.js +3 -5
  34. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  35. package/dist/components/LoginDrawer/LoginDrawer.css +3 -7
  36. package/dist/components/LoginDrawer/LoginDrawer.js +51 -9
  37. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  38. package/dist/components/MediaWidget/MediaItemWidget.css +77 -57
  39. package/dist/components/MediaWidget/MediaItemWidget.js +4 -4
  40. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  41. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
  42. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
  43. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  44. package/dist/components/MemoriWidget/MemoriWidget.css +0 -55
  45. package/dist/components/MemoriWidget/MemoriWidget.js +115 -117
  46. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  47. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
  48. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +77 -117
  49. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  50. package/dist/components/PositionPopover/PositionPopover.css +1 -1
  51. package/dist/components/SettingsDrawer/SettingsDrawer.js +1 -3
  52. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  53. package/dist/components/StartPanel/StartPanel.css +12 -1
  54. package/dist/components/StartPanel/StartPanel.js +30 -7
  55. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  56. package/dist/components/UploadButton/UploadButton.css +7 -7
  57. package/dist/components/UploadButton/UploadButton.js +3 -0
  58. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  59. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +15 -5
  60. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  61. package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -3
  62. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  63. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
  64. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  65. package/dist/components/layouts/HiddenChat.js +9 -1
  66. package/dist/components/layouts/HiddenChat.js.map +1 -1
  67. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +84 -5
  68. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  69. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
  70. package/dist/components/layouts/fullpage.css +1 -0
  71. package/dist/components/layouts/hidden-chat.css +29 -5
  72. package/dist/helpers/constants.d.ts +3 -2
  73. package/dist/helpers/constants.js +19 -20
  74. package/dist/helpers/constants.js.map +1 -1
  75. package/dist/helpers/error.js +2 -1
  76. package/dist/helpers/error.js.map +1 -1
  77. package/dist/helpers/positionPopover.d.ts +1 -0
  78. package/dist/helpers/positionPopover.js +7 -0
  79. package/dist/helpers/positionPopover.js.map +1 -1
  80. package/dist/helpers/usePressTooltip.d.ts +6 -1
  81. package/dist/helpers/usePressTooltip.js +16 -1
  82. package/dist/helpers/usePressTooltip.js.map +1 -1
  83. package/dist/helpers/utils.d.ts +2 -1
  84. package/dist/helpers/utils.js +7 -1
  85. package/dist/helpers/utils.js.map +1 -1
  86. package/dist/locales/de.json +8 -2
  87. package/dist/locales/en.json +6 -3
  88. package/dist/locales/es.json +6 -3
  89. package/dist/locales/fr.json +6 -3
  90. package/dist/locales/it.json +6 -3
  91. package/dist/styles.css +1 -1
  92. package/dist/version.d.ts +1 -1
  93. package/dist/version.js +1 -1
  94. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  95. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  96. package/esm/components/Auth/Auth.js +1 -3
  97. package/esm/components/Auth/Auth.js.map +1 -1
  98. package/esm/components/Chat/Chat.css +10 -1
  99. package/esm/components/Chat/Chat.js +1 -3
  100. package/esm/components/Chat/Chat.js.map +1 -1
  101. package/esm/components/ChatBubble/ChatBubble.css +103 -5
  102. package/esm/components/ChatBubble/ChatBubble.js +48 -8
  103. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  104. package/esm/components/ChatHistoryDrawer/ChatHistory.js +1 -3
  105. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  106. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
  107. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
  108. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  109. package/esm/components/ChatInputs/ChatInputs.css +17 -52
  110. package/esm/components/ChatInputs/ChatInputs.js +1 -3
  111. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  112. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
  113. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
  114. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  115. package/esm/components/DateSelector/DateSelector.css +66 -3
  116. package/esm/components/DateSelector/DateSelector.js +5 -1
  117. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  118. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  119. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  120. package/esm/components/FilePreview/FilePreview.css +94 -220
  121. package/esm/components/FilePreview/FilePreview.js +25 -71
  122. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  123. package/esm/components/IconButton/IconButton.css +2 -11
  124. package/esm/components/KnownFacts/KnownFacts.css +3 -4
  125. package/esm/components/KnownFacts/KnownFacts.js +3 -5
  126. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  127. package/esm/components/LoginDrawer/LoginDrawer.css +3 -7
  128. package/esm/components/LoginDrawer/LoginDrawer.js +51 -9
  129. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  130. package/esm/components/MediaWidget/MediaItemWidget.css +77 -57
  131. package/esm/components/MediaWidget/MediaItemWidget.js +5 -5
  132. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  133. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
  134. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
  135. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  136. package/esm/components/MemoriWidget/MemoriWidget.css +0 -55
  137. package/esm/components/MemoriWidget/MemoriWidget.js +115 -117
  138. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  139. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
  140. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +78 -118
  141. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  142. package/esm/components/PositionPopover/PositionPopover.css +1 -1
  143. package/esm/components/SettingsDrawer/SettingsDrawer.js +1 -3
  144. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  145. package/esm/components/StartPanel/StartPanel.css +12 -1
  146. package/esm/components/StartPanel/StartPanel.js +30 -7
  147. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  148. package/esm/components/UploadButton/UploadButton.css +7 -7
  149. package/esm/components/UploadButton/UploadButton.js +4 -1
  150. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  151. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +17 -7
  152. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  153. package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -3
  154. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  155. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
  156. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  157. package/esm/components/layouts/HiddenChat.js +9 -1
  158. package/esm/components/layouts/HiddenChat.js.map +1 -1
  159. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +85 -6
  160. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  161. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
  162. package/esm/components/layouts/fullpage.css +1 -0
  163. package/esm/components/layouts/hidden-chat.css +29 -5
  164. package/esm/helpers/constants.d.ts +3 -2
  165. package/esm/helpers/constants.js +18 -19
  166. package/esm/helpers/constants.js.map +1 -1
  167. package/esm/helpers/error.js +2 -1
  168. package/esm/helpers/error.js.map +1 -1
  169. package/esm/helpers/positionPopover.d.ts +1 -0
  170. package/esm/helpers/positionPopover.js +6 -0
  171. package/esm/helpers/positionPopover.js.map +1 -1
  172. package/esm/helpers/usePressTooltip.d.ts +6 -1
  173. package/esm/helpers/usePressTooltip.js +17 -2
  174. package/esm/helpers/usePressTooltip.js.map +1 -1
  175. package/esm/helpers/utils.d.ts +2 -1
  176. package/esm/helpers/utils.js +6 -1
  177. package/esm/helpers/utils.js.map +1 -1
  178. package/esm/locales/de.json +8 -2
  179. package/esm/locales/en.json +6 -3
  180. package/esm/locales/es.json +6 -3
  181. package/esm/locales/fr.json +6 -3
  182. package/esm/locales/it.json +6 -3
  183. package/esm/styles.css +1 -1
  184. package/esm/version.d.ts +1 -1
  185. package/esm/version.js +1 -1
  186. package/package.json +4 -46
  187. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -3
  188. package/src/components/Auth/Auth.tsx +0 -3
  189. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +1 -0
  190. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +5 -0
  191. package/src/components/Chat/Chat.css +10 -1
  192. package/src/components/Chat/Chat.tsx +0 -3
  193. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1735 -1765
  194. package/src/components/ChatBubble/ChatBubble.css +103 -5
  195. package/src/components/ChatBubble/ChatBubble.test.tsx +33 -0
  196. package/src/components/ChatBubble/ChatBubble.tsx +524 -273
  197. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +655 -684
  198. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -3
  199. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
  200. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +3 -6
  201. package/src/components/ChatInputs/ChatInputs.css +17 -52
  202. package/src/components/ChatInputs/ChatInputs.tsx +2 -4
  203. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +3 -0
  204. package/src/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
  205. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -3
  206. package/src/components/DateSelector/DateSelector.css +66 -3
  207. package/src/components/DateSelector/DateSelector.test.tsx +33 -4
  208. package/src/components/DateSelector/DateSelector.tsx +37 -11
  209. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -3
  210. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +2 -1
  211. package/src/components/FilePreview/FilePreview.css +94 -220
  212. package/src/components/FilePreview/FilePreview.tsx +77 -124
  213. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +33 -81
  214. package/src/components/Header/ChatConsumptionDropdown.test.tsx +53 -86
  215. package/src/components/Header/__snapshots__/Header.test.tsx.snap +60 -44
  216. package/src/components/IconButton/IconButton.css +2 -11
  217. package/src/components/KnownFacts/KnownFacts.css +3 -4
  218. package/src/components/KnownFacts/KnownFacts.tsx +0 -5
  219. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +2 -6
  220. package/src/components/LoginDrawer/LoginDrawer.css +3 -7
  221. package/src/components/LoginDrawer/LoginDrawer.tsx +101 -54
  222. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +11 -33
  223. package/src/components/MediaWidget/MediaItemWidget.css +77 -57
  224. package/src/components/MediaWidget/MediaItemWidget.test.tsx +33 -0
  225. package/src/components/MediaWidget/MediaItemWidget.tsx +6 -12
  226. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +2 -0
  227. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +1 -1
  228. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
  229. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -5
  230. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +25 -7
  231. package/src/components/MemoriWidget/MemoriWidget.css +0 -55
  232. package/src/components/MemoriWidget/MemoriWidget.tsx +18 -12
  233. package/src/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
  234. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +29 -68
  235. package/src/components/PositionPopover/PositionPopover.css +1 -1
  236. package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -3
  237. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +9 -9
  238. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +8 -0
  239. package/src/components/StartPanel/StartPanel.css +12 -1
  240. package/src/components/StartPanel/StartPanel.test.tsx +57 -0
  241. package/src/components/StartPanel/StartPanel.tsx +41 -4
  242. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +41 -6
  243. package/src/components/UploadButton/UploadButton.css +7 -7
  244. package/src/components/UploadButton/UploadButton.tsx +4 -0
  245. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +21 -8
  246. package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -3
  247. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +10 -12
  248. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -3
  249. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +3 -9
  250. package/src/components/layouts/HiddenChat.tsx +9 -1
  251. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +103 -6
  252. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +63 -57
  253. package/src/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
  254. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +7 -4
  255. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +12 -8
  256. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +7 -4
  257. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +10 -5
  258. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +6 -4
  259. package/src/components/layouts/fullpage.css +1 -0
  260. package/src/components/layouts/hidden-chat.css +29 -5
  261. package/src/components/layouts/layouts.stories.tsx +2 -2
  262. package/src/helpers/constants.ts +21 -20
  263. package/src/helpers/error.ts +2 -1
  264. package/src/helpers/positionPopover.test.ts +15 -0
  265. package/src/helpers/positionPopover.ts +16 -0
  266. package/src/helpers/usePressTooltip.test.ts +30 -0
  267. package/src/helpers/usePressTooltip.ts +31 -1
  268. package/src/helpers/utils.test.ts +14 -4
  269. package/src/helpers/utils.ts +6 -1
  270. package/src/index.tsx +1 -1
  271. package/src/locales/de.json +8 -2
  272. package/src/locales/en.json +6 -3
  273. package/src/locales/es.json +6 -3
  274. package/src/locales/fr.json +6 -3
  275. package/src/locales/it.json +6 -3
  276. package/src/styles.brandTokens.test.js +52 -0
  277. package/src/styles.css +27 -2
  278. package/src/version.ts +1 -1
  279. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  280. package/dist/context/widgetSurfaceContext.js +0 -11
  281. package/dist/context/widgetSurfaceContext.js.map +0 -1
  282. package/esm/context/widgetSurfaceContext.d.ts +0 -3
  283. package/esm/context/widgetSurfaceContext.js +0 -7
  284. package/esm/context/widgetSurfaceContext.js.map +0 -1
  285. package/src/context/widgetSurfaceContext.tsx +0 -14
@@ -369,3 +369,60 @@ it('blocks start and shows credits badge when owner has not enough credits', ()
369
369
  expect(badge).toBeInTheDocument();
370
370
  expect(getByText('memoriBlockedTitle')).toBeInTheDocument();
371
371
  });
372
+
373
+ it('requests geolocation from the use-my-position click and sets venue', () => {
374
+ const setVenue = jest.fn();
375
+ const openPositionPopover = jest.fn();
376
+ const getCurrentPosition = jest.fn(
377
+ (
378
+ success: (position: {
379
+ coords: { latitude: number; longitude: number; accuracy: number };
380
+ }) => void
381
+ ) => {
382
+ success({
383
+ coords: {
384
+ latitude: 45.4642,
385
+ longitude: 9.19,
386
+ accuracy: 25,
387
+ },
388
+ });
389
+ }
390
+ );
391
+
392
+ Object.defineProperty(navigator, 'geolocation', {
393
+ configurable: true,
394
+ value: { getCurrentPosition },
395
+ });
396
+
397
+ const { getByRole } = render(
398
+ <StartPanel
399
+ memori={{
400
+ ...memori,
401
+ needsPosition: true,
402
+ }}
403
+ tenant={tenant}
404
+ language="it"
405
+ userLang="en"
406
+ setUserLang={() => {}}
407
+ setVenue={setVenue}
408
+ openPositionPopover={openPositionPopover}
409
+ instruct={false}
410
+ sessionId={sessionID}
411
+ clickedStart={false}
412
+ onClickStart={() => {}}
413
+ setShowLoginDrawer={jest.fn()}
414
+ />
415
+ );
416
+
417
+ fireEvent.click(
418
+ getByRole('button', { name: /write_and_speak\.useMyPosition/i })
419
+ );
420
+
421
+ expect(getCurrentPosition).toHaveBeenCalled();
422
+ expect(setVenue).toHaveBeenCalledWith({
423
+ latitude: 45.4642,
424
+ longitude: 9.19,
425
+ placeName: '',
426
+ uncertainty: 0.025,
427
+ });
428
+ });
@@ -28,7 +28,6 @@ import CompletionProviderStatus, {
28
28
  } from '../CompletionProviderStatus/CompletionProviderStatus';
29
29
  import { Expandable } from '@memori.ai/ui';
30
30
  import { usePressTooltip } from '../../helpers/usePressTooltip';
31
- import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
32
31
 
33
32
  interface Memori extends MemoriOriginal {
34
33
  requireLoginToken?: boolean;
@@ -89,7 +88,6 @@ const StartPanel: React.FC<Props> = ({
89
88
  showFullDescriptionOnMobile = false,
90
89
  }) => {
91
90
  const { t, i18n } = useTranslation();
92
- const surfaceEl = useWidgetSurfaceEl();
93
91
  const boardOfExpertsTooltip = usePressTooltip();
94
92
  const nsfwTooltip = usePressTooltip();
95
93
  const deepThoughtTooltip = usePressTooltip();
@@ -211,8 +209,12 @@ const StartPanel: React.FC<Props> = ({
211
209
  align="left"
212
210
  content={t('boardOfExperts')}
213
211
  {...boardOfExpertsTooltip.tooltipProps}
212
+ slotProps={{
213
+ positioner: boardOfExpertsTooltip.positionerProps,
214
+ }}
214
215
  >
215
216
  <Button
217
+ ref={boardOfExpertsTooltip.anchorRef}
216
218
  type="button"
217
219
  variant="ghost"
218
220
  shape="circle"
@@ -229,8 +231,12 @@ const StartPanel: React.FC<Props> = ({
229
231
  align="left"
230
232
  content={t('nsfw')}
231
233
  {...nsfwTooltip.tooltipProps}
234
+ slotProps={{
235
+ positioner: nsfwTooltip.positionerProps,
236
+ }}
232
237
  >
233
238
  <span
239
+ ref={nsfwTooltip.anchorRef}
234
240
  title={t('nsfw') || 'NSFW'}
235
241
  {...nsfwTooltip.pressTriggerProps}
236
242
  >
@@ -350,7 +356,35 @@ const StartPanel: React.FC<Props> = ({
350
356
  <div className="memori--needsPosition-actions">
351
357
  <Button
352
358
  variant="primary"
353
- onClick={() => openPositionPopover()}
359
+ onClick={() => {
360
+ // Must call getCurrentPosition from this click: mobile layouts
361
+ // strip needsPosition from Header (popover unmounted), and iOS
362
+ // requires a user gesture for the permission prompt.
363
+ if (!navigator.geolocation) {
364
+ openPositionPopover();
365
+ return;
366
+ }
367
+ navigator.geolocation.getCurrentPosition(
368
+ pos => {
369
+ setVenue({
370
+ latitude: pos.coords.latitude,
371
+ longitude: pos.coords.longitude,
372
+ placeName: '',
373
+ uncertainty: pos.coords.accuracy / 1000,
374
+ });
375
+ },
376
+ () => {
377
+ // Permission denied / timeout → manual entry via popover
378
+ // (desktop). On mobile the skip button remains available.
379
+ openPositionPopover();
380
+ },
381
+ {
382
+ enableHighAccuracy: true,
383
+ timeout: 15000,
384
+ maximumAge: 0,
385
+ }
386
+ );
387
+ }}
354
388
  icon={<MapPin />}
355
389
  style={{ width: '100%' }}
356
390
  size="md"
@@ -483,6 +517,7 @@ const StartPanel: React.FC<Props> = ({
483
517
  {...deepThoughtTooltip.tooltipProps}
484
518
  slotProps={{
485
519
  positioner: {
520
+ ...deepThoughtTooltip.positionerProps,
486
521
  className:
487
522
  'memori--privacy-popover-positioner',
488
523
  },
@@ -493,6 +528,7 @@ const StartPanel: React.FC<Props> = ({
493
528
  }}
494
529
  >
495
530
  <Button
531
+ ref={deepThoughtTooltip.anchorRef}
496
532
  variant="toolbar"
497
533
  size="sm"
498
534
  className="memori--privacy-popover-trigger memori--settings-section__info-trigger"
@@ -589,6 +625,7 @@ const StartPanel: React.FC<Props> = ({
589
625
  {...privacyTooltip.tooltipProps}
590
626
  slotProps={{
591
627
  positioner: {
628
+ ...privacyTooltip.positionerProps,
592
629
  className: 'memori--privacy-popover-positioner',
593
630
  },
594
631
  popup: {
@@ -598,6 +635,7 @@ const StartPanel: React.FC<Props> = ({
598
635
  }}
599
636
  >
600
637
  <Button
638
+ ref={privacyTooltip.anchorRef}
601
639
  variant="toolbar"
602
640
  size="sm"
603
641
  className="memori--privacy-popover-trigger memori--settings-section__info-trigger"
@@ -674,7 +712,6 @@ const StartPanel: React.FC<Props> = ({
674
712
  )}
675
713
  </div>
676
714
  <Modal
677
- container={surfaceEl ?? undefined}
678
715
  open={isMobile && mobileInfoModal !== null}
679
716
  onClose={() => setMobileInfoModal(null)}
680
717
  title={
@@ -43,16 +43,16 @@ exports[`renders StartPanel for board of experts unchanged 1`] = `
43
43
  <path
44
44
  d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"
45
45
  />
46
- <circle
47
- cx="9"
48
- cy="7"
49
- r="4"
46
+ <path
47
+ d="M16 3.128a4 4 0 0 1 0 7.744"
50
48
  />
51
49
  <path
52
50
  d="M22 21v-2a4 4 0 0 0-3-3.87"
53
51
  />
54
- <path
55
- d="M16 3.13a4 4 0 0 1 0 7.75"
52
+ <circle
53
+ cx="9"
54
+ cy="7"
55
+ r="4"
56
56
  />
57
57
  </svg>
58
58
  </span>
@@ -158,6 +158,7 @@ exports[`renders StartPanel for board of experts unchanged 1`] = `
158
158
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
159
159
  >
160
160
  <svg
161
+ aria-hidden="true"
161
162
  class="lucide lucide-eye memori--settings-section__icon"
162
163
  fill="none"
163
164
  height="24"
@@ -214,6 +215,7 @@ exports[`renders StartPanel for board of experts unchanged 1`] = `
214
215
  class="memori-button__content"
215
216
  >
216
217
  <svg
218
+ aria-hidden="true"
217
219
  class="lucide lucide-info memori--settings-section__inline-info-icon"
218
220
  fill="none"
219
221
  height="24"
@@ -372,6 +374,7 @@ exports[`renders StartPanel on instruct unchanged 1`] = `
372
374
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
373
375
  >
374
376
  <svg
377
+ aria-hidden="true"
375
378
  class="lucide lucide-eye memori--settings-section__icon"
376
379
  fill="none"
377
380
  height="24"
@@ -428,6 +431,7 @@ exports[`renders StartPanel on instruct unchanged 1`] = `
428
431
  class="memori-button__content"
429
432
  >
430
433
  <svg
434
+ aria-hidden="true"
431
435
  class="lucide lucide-info memori--settings-section__inline-info-icon"
432
436
  fill="none"
433
437
  height="24"
@@ -586,6 +590,7 @@ exports[`renders StartPanel unchanged 1`] = `
586
590
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
587
591
  >
588
592
  <svg
593
+ aria-hidden="true"
589
594
  class="lucide lucide-eye memori--settings-section__icon"
590
595
  fill="none"
591
596
  height="24"
@@ -642,6 +647,7 @@ exports[`renders StartPanel unchanged 1`] = `
642
647
  class="memori-button__content"
643
648
  >
644
649
  <svg
650
+ aria-hidden="true"
645
651
  class="lucide lucide-info memori--settings-section__inline-info-icon"
646
652
  fill="none"
647
653
  height="24"
@@ -751,6 +757,7 @@ exports[`renders StartPanel with completion provider down unchanged 1`] = `
751
757
  id="base-ui-:r1n:"
752
758
  >
753
759
  <svg
760
+ aria-hidden="true"
754
761
  class="lucide lucide-triangle-alert memori--completion-provider-status--icon memori--completion-provider-status--icon-error"
755
762
  fill="none"
756
763
  height="24"
@@ -795,6 +802,7 @@ exports[`renders StartPanel with completion provider down unchanged 1`] = `
795
802
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
796
803
  >
797
804
  <svg
805
+ aria-hidden="true"
798
806
  class="lucide lucide-eye memori--settings-section__icon"
799
807
  fill="none"
800
808
  height="24"
@@ -851,6 +859,7 @@ exports[`renders StartPanel with completion provider down unchanged 1`] = `
851
859
  class="memori-button__content"
852
860
  >
853
861
  <svg
862
+ aria-hidden="true"
854
863
  class="lucide lucide-info memori--settings-section__inline-info-icon"
855
864
  fill="none"
856
865
  height="24"
@@ -1009,6 +1018,7 @@ exports[`renders StartPanel with completions enabled unchanged 1`] = `
1009
1018
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
1010
1019
  >
1011
1020
  <svg
1021
+ aria-hidden="true"
1012
1022
  class="lucide lucide-eye memori--settings-section__icon"
1013
1023
  fill="none"
1014
1024
  height="24"
@@ -1065,6 +1075,7 @@ exports[`renders StartPanel with completions enabled unchanged 1`] = `
1065
1075
  class="memori-button__content"
1066
1076
  >
1067
1077
  <svg
1078
+ aria-hidden="true"
1068
1079
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1069
1080
  fill="none"
1070
1081
  height="24"
@@ -1223,6 +1234,7 @@ exports[`renders StartPanel with deep thought but unlogged unchanged 1`] = `
1223
1234
  class="memori--settings-section__icon-box memori--settings-section__icon-box--info"
1224
1235
  >
1225
1236
  <svg
1237
+ aria-hidden="true"
1226
1238
  class="lucide lucide-info memori--settings-section__icon"
1227
1239
  fill="none"
1228
1240
  height="24"
@@ -1296,6 +1308,7 @@ exports[`renders StartPanel with deep thought but unlogged unchanged 1`] = `
1296
1308
  class="memori-button__content"
1297
1309
  >
1298
1310
  <svg
1311
+ aria-hidden="true"
1299
1312
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1300
1313
  fill="none"
1301
1314
  height="24"
@@ -1333,6 +1346,7 @@ exports[`renders StartPanel with deep thought but unlogged unchanged 1`] = `
1333
1346
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
1334
1347
  >
1335
1348
  <svg
1349
+ aria-hidden="true"
1336
1350
  class="lucide lucide-eye memori--settings-section__icon"
1337
1351
  fill="none"
1338
1352
  height="24"
@@ -1389,6 +1403,7 @@ exports[`renders StartPanel with deep thought but unlogged unchanged 1`] = `
1389
1403
  class="memori-button__content"
1390
1404
  >
1391
1405
  <svg
1406
+ aria-hidden="true"
1392
1407
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1393
1408
  fill="none"
1394
1409
  height="24"
@@ -1547,6 +1562,7 @@ exports[`renders StartPanel with deep thought enabled but without permission fla
1547
1562
  class="memori--settings-section__icon-box memori--settings-section__icon-box--info"
1548
1563
  >
1549
1564
  <svg
1565
+ aria-hidden="true"
1550
1566
  class="lucide lucide-info memori--settings-section__icon"
1551
1567
  fill="none"
1552
1568
  height="24"
@@ -1607,6 +1623,7 @@ exports[`renders StartPanel with deep thought enabled but without permission fla
1607
1623
  class="memori-button__content"
1608
1624
  >
1609
1625
  <svg
1626
+ aria-hidden="true"
1610
1627
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1611
1628
  fill="none"
1612
1629
  height="24"
@@ -1644,6 +1661,7 @@ exports[`renders StartPanel with deep thought enabled but without permission fla
1644
1661
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
1645
1662
  >
1646
1663
  <svg
1664
+ aria-hidden="true"
1647
1665
  class="lucide lucide-eye memori--settings-section__icon"
1648
1666
  fill="none"
1649
1667
  height="24"
@@ -1700,6 +1718,7 @@ exports[`renders StartPanel with deep thought enabled but without permission fla
1700
1718
  class="memori-button__content"
1701
1719
  >
1702
1720
  <svg
1721
+ aria-hidden="true"
1703
1722
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1704
1723
  fill="none"
1705
1724
  height="24"
@@ -1858,6 +1877,7 @@ exports[`renders StartPanel with deep thought enabled unchanged 1`] = `
1858
1877
  class="memori--settings-section__icon-box memori--settings-section__icon-box--info"
1859
1878
  >
1860
1879
  <svg
1880
+ aria-hidden="true"
1861
1881
  class="lucide lucide-info memori--settings-section__icon"
1862
1882
  fill="none"
1863
1883
  height="24"
@@ -1918,6 +1938,7 @@ exports[`renders StartPanel with deep thought enabled unchanged 1`] = `
1918
1938
  class="memori-button__content"
1919
1939
  >
1920
1940
  <svg
1941
+ aria-hidden="true"
1921
1942
  class="lucide lucide-info memori--settings-section__inline-info-icon"
1922
1943
  fill="none"
1923
1944
  height="24"
@@ -1955,6 +1976,7 @@ exports[`renders StartPanel with deep thought enabled unchanged 1`] = `
1955
1976
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
1956
1977
  >
1957
1978
  <svg
1979
+ aria-hidden="true"
1958
1980
  class="lucide lucide-eye memori--settings-section__icon"
1959
1981
  fill="none"
1960
1982
  height="24"
@@ -2011,6 +2033,7 @@ exports[`renders StartPanel with deep thought enabled unchanged 1`] = `
2011
2033
  class="memori-button__content"
2012
2034
  >
2013
2035
  <svg
2036
+ aria-hidden="true"
2014
2037
  class="lucide lucide-info memori--settings-section__inline-info-icon"
2015
2038
  fill="none"
2016
2039
  height="24"
@@ -2169,6 +2192,7 @@ exports[`renders StartPanel with existing sessionunchanged 1`] = `
2169
2192
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
2170
2193
  >
2171
2194
  <svg
2195
+ aria-hidden="true"
2172
2196
  class="lucide lucide-eye memori--settings-section__icon"
2173
2197
  fill="none"
2174
2198
  height="24"
@@ -2225,6 +2249,7 @@ exports[`renders StartPanel with existing sessionunchanged 1`] = `
2225
2249
  class="memori-button__content"
2226
2250
  >
2227
2251
  <svg
2252
+ aria-hidden="true"
2228
2253
  class="lucide lucide-info memori--settings-section__inline-info-icon"
2229
2254
  fill="none"
2230
2255
  height="24"
@@ -2383,6 +2408,7 @@ exports[`renders StartPanel with integrationConfig unchanged 1`] = `
2383
2408
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
2384
2409
  >
2385
2410
  <svg
2411
+ aria-hidden="true"
2386
2412
  class="lucide lucide-eye memori--settings-section__icon"
2387
2413
  fill="none"
2388
2414
  height="24"
@@ -2439,6 +2465,7 @@ exports[`renders StartPanel with integrationConfig unchanged 1`] = `
2439
2465
  class="memori-button__content"
2440
2466
  >
2441
2467
  <svg
2468
+ aria-hidden="true"
2442
2469
  class="lucide lucide-info memori--settings-section__inline-info-icon"
2443
2470
  fill="none"
2444
2471
  height="24"
@@ -2592,6 +2619,7 @@ exports[`renders StartPanel with login required unchanged 1`] = `
2592
2619
  class="memori-button__icon"
2593
2620
  >
2594
2621
  <svg
2622
+ aria-hidden="true"
2595
2623
  class="lucide lucide-user"
2596
2624
  fill="none"
2597
2625
  height="24"
@@ -2791,6 +2819,7 @@ exports[`renders StartPanel with multilangual unchanged 1`] = `
2791
2819
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
2792
2820
  >
2793
2821
  <svg
2822
+ aria-hidden="true"
2794
2823
  class="lucide lucide-eye memori--settings-section__icon"
2795
2824
  fill="none"
2796
2825
  height="24"
@@ -2847,6 +2876,7 @@ exports[`renders StartPanel with multilangual unchanged 1`] = `
2847
2876
  class="memori-button__content"
2848
2877
  >
2849
2878
  <svg
2879
+ aria-hidden="true"
2850
2880
  class="lucide lucide-info memori--settings-section__inline-info-icon"
2851
2881
  fill="none"
2852
2882
  height="24"
@@ -2950,6 +2980,7 @@ exports[`renders StartPanel with not enough credits unchanged 1`] = `
2950
2980
  class="blocked-memori-badge "
2951
2981
  >
2952
2982
  <svg
2983
+ aria-hidden="true"
2953
2984
  class="lucide lucide-triangle-alert blocked-memori-badge--icon"
2954
2985
  fill="none"
2955
2986
  height="24"
@@ -3049,6 +3080,7 @@ exports[`renders StartPanel with not enough credits unchanged 1`] = `
3049
3080
  class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
3050
3081
  >
3051
3082
  <svg
3083
+ aria-hidden="true"
3052
3084
  class="lucide lucide-eye memori--settings-section__icon"
3053
3085
  fill="none"
3054
3086
  height="24"
@@ -3105,6 +3137,7 @@ exports[`renders StartPanel with not enough credits unchanged 1`] = `
3105
3137
  class="memori-button__content"
3106
3138
  >
3107
3139
  <svg
3140
+ aria-hidden="true"
3108
3141
  class="lucide lucide-info memori--settings-section__inline-info-icon"
3109
3142
  fill="none"
3110
3143
  height="24"
@@ -3264,6 +3297,7 @@ exports[`renders StartPanel with position required unchanged 1`] = `
3264
3297
  class="memori-button__icon"
3265
3298
  >
3266
3299
  <svg
3300
+ aria-hidden="true"
3267
3301
  class="lucide lucide-map-pin"
3268
3302
  fill="none"
3269
3303
  height="24"
@@ -3301,6 +3335,7 @@ exports[`renders StartPanel with position required unchanged 1`] = `
3301
3335
  class="memori-button__icon"
3302
3336
  >
3303
3337
  <svg
3338
+ aria-hidden="true"
3304
3339
  class="lucide lucide-map-pin-off"
3305
3340
  fill="none"
3306
3341
  height="24"
@@ -200,7 +200,7 @@
200
200
  position: relative;
201
201
  display: flex;
202
202
  align-items: center;
203
- padding: calc(var(--memori-spacing-sm) + 2px) calc(var(--memori-spacing-sm) + var(--memori-spacing-xs));
203
+ /* padding: calc(var(--memori-spacing-sm) + 2px) calc(var(--memori-spacing-sm) + var(--memori-spacing-xs)); */
204
204
  border-radius: var(--memori-radius-box);
205
205
  /* border-left: 3px solid transparent; */
206
206
  margin-bottom: var(--memori-spacing-sm);
@@ -215,9 +215,9 @@
215
215
  }
216
216
 
217
217
  /* Preview item variants */
218
- .memori--preview-item--document {
218
+ /* .memori--preview-item--document {
219
219
  background-color: #fff9db;
220
- }
220
+ } */
221
221
 
222
222
  .memori--preview-item--image {
223
223
  background-color: #e7f5ff;
@@ -299,7 +299,7 @@
299
299
  padding: var(--memori-spacing-xs);
300
300
  margin: 0;
301
301
  opacity: 0;
302
- transform: scale(0.75);
302
+ /* transform: scale(0.75); */
303
303
  transition: all 0.2s ease;
304
304
  }
305
305
 
@@ -309,7 +309,7 @@
309
309
  }
310
310
 
311
311
  .memori--remove-button:hover {
312
- transform: scale(1.1) !important;
312
+ transform: scale(1.05) !important;
313
313
  }
314
314
 
315
315
  /* Modal Preview Content */
@@ -374,7 +374,7 @@
374
374
  .memori--error-message-container,
375
375
  .memori--login-tip {
376
376
  position: fixed;
377
- z-index: 10001;
377
+ z-index: calc(var(--memori-z-index-base, 0) + 1700);
378
378
  top: var(--memori-spacing-5xl);
379
379
  right: 20px;
380
380
  }
@@ -491,7 +491,7 @@ input.memori--upload-title-input {
491
491
 
492
492
  .memori--error-message-alert {
493
493
  position: relative;
494
- z-index: 10002;
494
+ z-index: calc(var(--memori-z-index-base, 0) + 1700);
495
495
  top: 0;
496
496
  right: 0;
497
497
  }
@@ -15,6 +15,7 @@ import { useTranslation } from 'react-i18next';
15
15
  import memoriApiClient from '@memori.ai/memori-api-client';
16
16
  import {
17
17
  documentConversionExtensions,
18
+ localTextExtensions,
18
19
  officeNativeExtensions,
19
20
  } from '../../helpers/constants';
20
21
  // Props interface
@@ -116,6 +117,7 @@ const UploadButton: React.FC<UploadManagerProps> = ({
116
117
  const isDocumentFile = (file: File): boolean => {
117
118
  const documentExtensions: readonly string[] = [
118
119
  ...documentConversionExtensions,
120
+ ...localTextExtensions,
119
121
  ...officeNativeExtensions,
120
122
  ];
121
123
  const fileExt = `.${file.name.split('.').pop()?.toLowerCase()}`;
@@ -467,6 +469,7 @@ ${file.textAssetUrl || ''}
467
469
  const fileExt = `.${file.name.split('.').pop()?.toLowerCase()}`;
468
470
  const ALLOWED_FILE_TYPES: readonly string[] = [
469
471
  ...documentConversionExtensions,
472
+ ...localTextExtensions,
470
473
  ...officeNativeExtensions,
471
474
  ];
472
475
  const MAX_FILE_SIZE = 25 * 1024 * 1024;
@@ -622,6 +625,7 @@ ${file.textAssetUrl || ''}
622
625
  '.jpeg',
623
626
  '.png',
624
627
  ...documentConversionExtensions,
628
+ ...localTextExtensions,
625
629
  ...officeNativeExtensions,
626
630
  ].join(',')}
627
631
  multiple
@@ -7,10 +7,13 @@ import { useTranslation } from 'react-i18next';
7
7
  import memoriApiClient from '@memori.ai/memori-api-client';
8
8
  import {
9
9
  documentConversionExtensions,
10
+ localTextExtensions,
10
11
  officeNativeExtensions,
11
12
  } from '../../../helpers/constants';
12
- import { isOfficeNativeFilename } from '../../../helpers/utils';
13
- import { useWidgetSurfaceEl } from '../../../context/widgetSurfaceContext';
13
+ import {
14
+ isLocalTextFilename,
15
+ isOfficeNativeFilename,
16
+ } from '../../../helpers/utils';
14
17
  import { convertDocument } from '../../../helpers/convertDocument';
15
18
  // Types
16
19
  type PreviewFile = {
@@ -72,7 +75,6 @@ const UploadDocuments: React.FC<UploadDocumentsProps> = ({
72
75
  onValidatePayloadSize,
73
76
  }) => {
74
77
  const { t } = useTranslation();
75
- const surfaceEl = useWidgetSurfaceEl();
76
78
  const { backend } = client || {
77
79
  backend: { uploadAsset: null, uploadAssetUnlogged: null },
78
80
  };
@@ -127,7 +129,9 @@ const UploadDocuments: React.FC<UploadDocumentsProps> = ({
127
129
  }
128
130
 
129
131
  try {
130
- const text = await convertDocument(file, sessionID, baseUrl);
132
+ const text = isLocalTextFilename(file.name)
133
+ ? await fileToText(file)
134
+ : await convertDocument(file, sessionID, baseUrl);
131
135
  return { text };
132
136
  } catch (error) {
133
137
  console.error('Document processing failed:', error);
@@ -139,6 +143,14 @@ const UploadDocuments: React.FC<UploadDocumentsProps> = ({
139
143
  }
140
144
  };
141
145
 
146
+ const fileToText = (file: File): Promise<string> =>
147
+ new Promise((resolve, reject) => {
148
+ const reader = new FileReader();
149
+ reader.onload = e => resolve((e.target?.result as string) || '');
150
+ reader.onerror = () => reject(new Error('File reading failed'));
151
+ reader.readAsText(file, 'UTF-8');
152
+ });
153
+
142
154
  const fileToDataUrl = (file: File): Promise<string> =>
143
155
  new Promise((resolve, reject) => {
144
156
  const reader = new FileReader();
@@ -342,9 +354,11 @@ const UploadDocuments: React.FC<UploadDocumentsProps> = ({
342
354
  <input
343
355
  ref={documentInputRef}
344
356
  type="file"
345
- accept={[...documentConversionExtensions, ...officeNativeExtensions].join(
346
- ','
347
- )}
357
+ accept={[
358
+ ...documentConversionExtensions,
359
+ ...localTextExtensions,
360
+ ...officeNativeExtensions,
361
+ ].join(',')}
348
362
  multiple
349
363
  className="memori--upload-file-input"
350
364
  onChange={handleDocumentUpload}
@@ -383,7 +397,6 @@ const UploadDocuments: React.FC<UploadDocumentsProps> = ({
383
397
 
384
398
  {/* Modal */}
385
399
  <Modal
386
- container={surfaceEl ?? undefined}
387
400
  width="80%"
388
401
  widthMd="80%"
389
402
  open={!!selectedFile}
@@ -8,7 +8,6 @@ import { Asset, Medium } from '@memori.ai/memori-api-client/dist/types';
8
8
  import { useTranslation } from 'react-i18next';
9
9
  import { Button } from '@memori.ai/ui';
10
10
  import { compressImage } from '../../../helpers/imageCompression';
11
- import { useWidgetSurfaceEl } from '../../../context/widgetSurfaceContext';
12
11
 
13
12
  // Types
14
13
  type PreviewFile = {
@@ -55,7 +54,6 @@ const UploadImages: React.FC<UploadImagesProps> = ({
55
54
  onValidateImageFile,
56
55
  }) => {
57
56
  const { t, i18n } = useTranslation();
58
- const surfaceEl = useWidgetSurfaceEl();
59
57
  // Client
60
58
  const { backend, dialog } = client || {
61
59
  backend: { uploadAsset: null, uploadAssetUnlogged: null },
@@ -485,7 +483,6 @@ const UploadImages: React.FC<UploadImagesProps> = ({
485
483
 
486
484
  {/* Upload Modal with Title Input */}
487
485
  <Modal
488
- container={surfaceEl ?? undefined}
489
486
  open={showUploadModal && !!selectedFile}
490
487
  className="memori--modal-preview-file memori--upload-image-preview-modal"
491
488
  onClose={handleCancelUpload}