@memori.ai/memori-react 8.11.0 → 8.13.0

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 (243) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +2 -2
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.js +36 -8
  6. package/dist/components/Auth/Auth.js.map +1 -1
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  8. package/dist/components/Chat/Chat.css +37 -3
  9. package/dist/components/Chat/Chat.js +61 -23
  10. package/dist/components/Chat/Chat.js.map +1 -1
  11. package/dist/components/ChatBubble/ChatBubble.css +87 -15
  12. package/dist/components/ChatBubble/ChatBubble.js +129 -19
  13. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  14. package/dist/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  15. package/dist/components/ChatInputs/ChatInputs.css +293 -17
  16. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  17. package/dist/components/ChatInputs/ChatInputs.js +48 -27
  18. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  19. package/dist/components/ChatTextArea/ChatTextArea.css +75 -31
  20. package/dist/components/ChatTextArea/ChatTextArea.js +47 -18
  21. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  22. package/dist/components/DateSelector/DateSelector.css +125 -104
  23. package/dist/components/DateSelector/DateSelector.d.ts +1 -1
  24. package/dist/components/DateSelector/DateSelector.js +110 -52
  25. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  26. package/dist/components/FilePreview/FilePreview.css +225 -146
  27. package/dist/components/FilePreview/FilePreview.d.ts +1 -2
  28. package/dist/components/FilePreview/FilePreview.js +20 -6
  29. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  30. package/dist/components/Header/Header.css +2 -2
  31. package/dist/components/Header/Header.js +1 -1
  32. package/dist/components/Header/Header.js.map +1 -1
  33. package/dist/components/LoginDrawer/LoginDrawer.css +37 -5
  34. package/dist/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  35. package/dist/components/LoginDrawer/LoginDrawer.js +2 -9
  36. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  37. package/dist/components/MediaWidget/MediaItemWidget.js +2 -1
  38. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  39. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  40. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  41. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +1 -1
  42. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  43. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +3 -0
  44. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  45. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  46. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  47. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  48. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +6 -4
  49. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  50. package/dist/components/MemoriWidget/MemoriWidget.css +11 -2
  51. package/dist/components/MemoriWidget/MemoriWidget.js +105 -25
  52. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  53. package/dist/components/MicrophoneButton/MicrophoneButton.css +2 -2
  54. package/dist/components/StartPanel/StartPanel.css +8 -0
  55. package/dist/components/UploadButton/UploadButton.css +20 -17
  56. package/dist/components/UploadButton/UploadButton.js +218 -87
  57. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  58. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +14 -4
  59. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  60. package/dist/components/UploadButton/UploadImages/UploadImages.js +143 -16
  61. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  62. package/dist/components/layouts/chat.css +1 -1
  63. package/dist/components/ui/Drawer.css +8 -0
  64. package/dist/components/ui/Drawer.d.ts +2 -0
  65. package/dist/components/ui/Drawer.js +2 -2
  66. package/dist/components/ui/Drawer.js.map +1 -1
  67. package/dist/components/ui/Tooltip.css +49 -1
  68. package/dist/components/ui/Tooltip.d.ts +1 -1
  69. package/dist/helpers/constants.d.ts +1 -0
  70. package/dist/helpers/constants.js +2 -1
  71. package/dist/helpers/constants.js.map +1 -1
  72. package/dist/helpers/imageCompression.d.ts +7 -0
  73. package/dist/helpers/imageCompression.js +123 -0
  74. package/dist/helpers/imageCompression.js.map +1 -0
  75. package/dist/locales/de.json +13 -5
  76. package/dist/locales/en.json +17 -6
  77. package/dist/locales/es.json +13 -5
  78. package/dist/locales/fr.json +12 -5
  79. package/dist/locales/it.json +16 -6
  80. package/dist/styles.css +4 -4
  81. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  82. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +2 -2
  83. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  84. package/esm/components/Auth/Auth.js +36 -8
  85. package/esm/components/Auth/Auth.js.map +1 -1
  86. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  87. package/esm/components/Chat/Chat.css +37 -3
  88. package/esm/components/Chat/Chat.js +61 -23
  89. package/esm/components/Chat/Chat.js.map +1 -1
  90. package/esm/components/ChatBubble/ChatBubble.css +87 -15
  91. package/esm/components/ChatBubble/ChatBubble.js +130 -20
  92. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  93. package/esm/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  94. package/esm/components/ChatInputs/ChatInputs.css +293 -17
  95. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  96. package/esm/components/ChatInputs/ChatInputs.js +49 -28
  97. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  98. package/esm/components/ChatTextArea/ChatTextArea.css +75 -31
  99. package/esm/components/ChatTextArea/ChatTextArea.js +49 -20
  100. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  101. package/esm/components/DateSelector/DateSelector.css +125 -104
  102. package/esm/components/DateSelector/DateSelector.d.ts +1 -1
  103. package/esm/components/DateSelector/DateSelector.js +111 -52
  104. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  105. package/esm/components/FilePreview/FilePreview.css +225 -146
  106. package/esm/components/FilePreview/FilePreview.d.ts +1 -2
  107. package/esm/components/FilePreview/FilePreview.js +21 -7
  108. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  109. package/esm/components/Header/Header.css +2 -2
  110. package/esm/components/Header/Header.js +1 -1
  111. package/esm/components/Header/Header.js.map +1 -1
  112. package/esm/components/LoginDrawer/LoginDrawer.css +37 -5
  113. package/esm/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  114. package/esm/components/LoginDrawer/LoginDrawer.js +2 -9
  115. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  116. package/esm/components/MediaWidget/MediaItemWidget.js +2 -1
  117. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  118. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  119. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  120. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +1 -1
  121. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  122. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +3 -0
  123. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  124. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  125. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  126. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  127. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +6 -4
  128. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  129. package/esm/components/MemoriWidget/MemoriWidget.css +11 -2
  130. package/esm/components/MemoriWidget/MemoriWidget.js +105 -25
  131. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  132. package/esm/components/MicrophoneButton/MicrophoneButton.css +2 -2
  133. package/esm/components/StartPanel/StartPanel.css +8 -0
  134. package/esm/components/UploadButton/UploadButton.css +20 -17
  135. package/esm/components/UploadButton/UploadButton.js +219 -88
  136. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  137. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +14 -4
  138. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  139. package/esm/components/UploadButton/UploadImages/UploadImages.js +143 -16
  140. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  141. package/esm/components/layouts/chat.css +1 -1
  142. package/esm/components/ui/Drawer.css +8 -0
  143. package/esm/components/ui/Drawer.d.ts +2 -0
  144. package/esm/components/ui/Drawer.js +2 -2
  145. package/esm/components/ui/Drawer.js.map +1 -1
  146. package/esm/components/ui/Tooltip.css +49 -1
  147. package/esm/components/ui/Tooltip.d.ts +1 -1
  148. package/esm/helpers/constants.d.ts +1 -0
  149. package/esm/helpers/constants.js +1 -0
  150. package/esm/helpers/constants.js.map +1 -1
  151. package/esm/helpers/imageCompression.d.ts +7 -0
  152. package/esm/helpers/imageCompression.js +119 -0
  153. package/esm/helpers/imageCompression.js.map +1 -0
  154. package/esm/locales/de.json +13 -5
  155. package/esm/locales/en.json +17 -6
  156. package/esm/locales/es.json +13 -5
  157. package/esm/locales/fr.json +12 -5
  158. package/esm/locales/it.json +16 -6
  159. package/esm/styles.css +4 -4
  160. package/package.json +2 -2
  161. package/src/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  162. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +3 -1
  163. package/src/components/Auth/Auth.tsx +55 -11
  164. package/src/components/Avatar/Avatar.stories.tsx +3 -0
  165. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  166. package/src/components/Chat/Chat.css +37 -3
  167. package/src/components/Chat/Chat.stories.tsx +16 -2
  168. package/src/components/Chat/Chat.tsx +90 -21
  169. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1752 -812
  170. package/src/components/ChatBubble/ChatBubble.css +87 -15
  171. package/src/components/ChatBubble/ChatBubble.stories.tsx +16 -2
  172. package/src/components/ChatBubble/ChatBubble.test.tsx +17 -0
  173. package/src/components/ChatBubble/ChatBubble.tsx +237 -33
  174. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +304 -8
  175. package/src/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  176. package/src/components/ChatInputs/ChatInputs.css +293 -17
  177. package/src/components/ChatInputs/ChatInputs.tsx +156 -86
  178. package/src/components/ChatInputs/__snapshots__/ChatInputs.test.tsx.snap +430 -424
  179. package/src/components/ChatTextArea/ChatTextArea.css +75 -31
  180. package/src/components/ChatTextArea/ChatTextArea.test.tsx +1 -16
  181. package/src/components/ChatTextArea/ChatTextArea.tsx +51 -22
  182. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +9 -72
  183. package/src/components/DateSelector/DateSelector.css +125 -104
  184. package/src/components/DateSelector/DateSelector.stories.tsx +1 -1
  185. package/src/components/DateSelector/DateSelector.test.tsx +137 -23
  186. package/src/components/DateSelector/DateSelector.tsx +203 -177
  187. package/src/components/FilePreview/FilePreview.css +225 -146
  188. package/src/components/FilePreview/FilePreview.tsx +49 -36
  189. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +2 -2
  190. package/src/components/Header/Header.css +2 -2
  191. package/src/components/Header/Header.stories.tsx +5 -1
  192. package/src/components/Header/Header.tsx +1 -1
  193. package/src/components/Header/__snapshots__/Header.test.tsx.snap +1 -1
  194. package/src/components/LoginDrawer/LoginDrawer.css +37 -5
  195. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -1
  196. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -1
  197. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -19
  198. package/src/components/MediaWidget/MediaItemWidget.tsx +2 -1
  199. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +996 -204
  200. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +2 -2
  201. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +1 -1
  202. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +3 -0
  203. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +56 -54
  204. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  205. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +12 -3
  206. package/src/components/MemoriWidget/MemoriWidget.css +11 -2
  207. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +6 -3
  208. package/src/components/MemoriWidget/MemoriWidget.tsx +173 -49
  209. package/src/components/MicrophoneButton/MicrophoneButton.css +2 -2
  210. package/src/components/StartPanel/StartPanel.css +8 -0
  211. package/src/components/UploadButton/UploadButton.css +20 -17
  212. package/src/components/UploadButton/UploadButton.stories.tsx +247 -35
  213. package/src/components/UploadButton/UploadButton.tsx +280 -173
  214. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +19 -4
  215. package/src/components/UploadButton/UploadImages/UploadImages.tsx +196 -35
  216. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +10 -1
  217. package/src/components/layouts/FullBody/FullBody.stories.tsx +9 -10
  218. package/src/components/layouts/Totem/Totem.stories.tsx +8 -9
  219. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +8 -9
  220. package/src/components/layouts/chat.css +1 -1
  221. package/src/components/layouts/layouts.stories.tsx +10 -9
  222. package/src/components/ui/Drawer.css +8 -0
  223. package/src/components/ui/Drawer.tsx +16 -12
  224. package/src/components/ui/Tooltip.css +49 -1
  225. package/src/components/ui/Tooltip.tsx +1 -1
  226. package/src/helpers/constants.ts +1 -1
  227. package/src/helpers/imageCompression.ts +230 -0
  228. package/src/index.stories.tsx +18 -0
  229. package/src/locales/de.json +13 -5
  230. package/src/locales/en.json +17 -6
  231. package/src/locales/es.json +13 -5
  232. package/src/locales/fr.json +12 -5
  233. package/src/locales/it.json +16 -6
  234. package/src/mocks/data.ts +4 -2
  235. package/src/styles.css +4 -4
  236. package/src/components/SignupForm/SignupForm.test.tsx +0 -40
  237. package/src/components/SignupForm/SignupForm.tsx +0 -457
  238. package/src/components/SignupForm/__snapshots__/SignupForm.test.tsx.snap +0 -247
  239. package/src/components/UploadMenu/UploadMenu.css +0 -47
  240. package/src/components/UploadMenu/UploadMenu.stories.tsx +0 -66
  241. package/src/components/UploadMenu/UploadMenu.test.tsx +0 -34
  242. package/src/components/UploadMenu/UploadMenu.tsx +0 -68
  243. package/src/components/UploadMenu/__snapshots__/UploadMenu.test.tsx.snap +0 -137
@@ -215,7 +215,7 @@ const ArtifactActions: React.FC<{
215
215
  <Button
216
216
  onClick={handlePrint}
217
217
  disabled={loading}
218
- className="memori-artifact-action-btn"
218
+ className="memori-artifact-action-btn memori-artifact-action-btn--print"
219
219
  ghost
220
220
  icon={<PrintIcon className="memori-artifact-action-icon" />}
221
221
  title={t('artifact.print') || 'Print'}
@@ -228,7 +228,7 @@ const ArtifactActions: React.FC<{
228
228
  <Button
229
229
  onClick={handleOpenExternal}
230
230
  disabled={loading}
231
- className="memori-artifact-action-btn"
231
+ className="memori-artifact-action-btn memori-artifact-action-btn--external"
232
232
  ghost
233
233
  icon={<Link className="memori-artifact-action-icon" />}
234
234
  title={t('artifact.external') || 'External'}
@@ -374,7 +374,7 @@ const CopyButtonWithDropdown: React.FC<CopyButtonWithDropdownProps> = ({
374
374
  onClick={handleCopyClick}
375
375
  disabled={disabled || loading || copyState.loading}
376
376
  className={cx(
377
- 'memori-copy-button memori-copy-button--main',
377
+ 'memori-copy-button memori-copy-button--main ',
378
378
  {
379
379
  'memori-copy-button--success': copyState.success,
380
380
  'memori-copy-button--error': copyState.error,
@@ -54,6 +54,9 @@ const CopyMenuItem: React.FC<CopyMenuItemProps & { active?: boolean }> = ({
54
54
  'memori-copy-menu-item--pdf': format.action === 'pdf',
55
55
  'memori-copy-menu-item--print': format.action === 'print',
56
56
  'memori-copy-menu-item--active': active,
57
+ 'memori-copy-menu-item--external': format.action === 'link',
58
+ 'memori-copy-menu-item--copy': format.action === 'copy',
59
+ 'memori-copy-menu-item--download': format.action === 'download',
57
60
  })}
58
61
  onClick={handleClick}
59
62
  disabled={disabled || loading}
@@ -148,6 +148,8 @@ const ArtifactDrawer: React.FC<{ isChatLogPanel?: boolean }> = ({
148
148
  widthLg="50%"
149
149
  closable={false}
150
150
  animated={true}
151
+ enterDuration={isMobile ? 'duration-500' : 'duration-300'}
152
+ leaveDuration={isMobile ? 'duration-400' : 'duration-200'}
151
153
  showBackdrop={false}
152
154
  preventBackdropClose={true}
153
155
  confirmDialogTitle={
@@ -158,70 +160,70 @@ const ArtifactDrawer: React.FC<{ isChatLogPanel?: boolean }> = ({
158
160
  t('artifact.confirmDialogMessage') ||
159
161
  'This action cannot be undone.'
160
162
  }
161
- // className="memori-artifact-panel"
163
+ // className="memori-artifact-panel"
162
164
  >
163
165
  {children}
164
166
  </Drawer>
165
167
  );
166
168
  }
167
169
  },
168
- [isChatLogPanel, handleClose, state.isDrawerOpen, state.isFullscreen]
170
+ [isChatLogPanel, handleClose, state.isDrawerOpen, state.isFullscreen, isMobile]
169
171
  );
170
172
 
171
- /**
172
- * Get MIME type string for downloads
173
+ /**
174
+ * Get MIME type string for downloads
175
+ */
176
+ const getMimeTypeString = useCallback((mimeType: string): string => {
177
+ const mimeTypes: Record<string, string> = {
178
+ html: 'text/html',
179
+ json: 'application/json',
180
+ markdown: 'text/markdown',
181
+ css: 'text/css',
182
+ javascript: 'text/javascript',
183
+ typescript: 'text/typescript',
184
+ svg: 'image/svg+xml',
185
+ xml: 'text/xml',
186
+ text: 'text/plain',
187
+ python: 'text/x-python',
188
+ java: 'text/x-java',
189
+ cpp: 'text/x-c++',
190
+ csharp: 'text/x-csharp',
191
+ php: 'text/x-php',
192
+ ruby: 'text/x-ruby',
193
+ go: 'text/x-go',
194
+ rust: 'text/x-rust',
195
+ yaml: 'text/yaml',
196
+ sql: 'text/x-sql',
197
+ };
198
+ return mimeTypes[mimeType] || 'text/plain';
199
+ }, []);
200
+
201
+ /**
202
+ * Handle external open action
173
203
  */
174
- const getMimeTypeString = useCallback((mimeType: string): string => {
175
- const mimeTypes: Record<string, string> = {
176
- html: 'text/html',
177
- json: 'application/json',
178
- markdown: 'text/markdown',
179
- css: 'text/css',
180
- javascript: 'text/javascript',
181
- typescript: 'text/typescript',
182
- svg: 'image/svg+xml',
183
- xml: 'text/xml',
184
- text: 'text/plain',
185
- python: 'text/x-python',
186
- java: 'text/x-java',
187
- cpp: 'text/x-c++',
188
- csharp: 'text/x-csharp',
189
- php: 'text/x-php',
190
- ruby: 'text/x-ruby',
191
- go: 'text/x-go',
192
- rust: 'text/x-rust',
193
- yaml: 'text/yaml',
194
- sql: 'text/x-sql',
195
- };
196
- return mimeTypes[mimeType] || 'text/plain';
197
- }, []);
198
-
199
- /**
200
- * Handle external open action
201
- */
202
- const handleOpenExternal = useCallback((artifact: ArtifactData) => {
203
- try {
204
- const mimeType = getMimeTypeString(artifact.mimeType);
205
- const blob = new Blob([artifact.content], { type: mimeType });
206
- const url = URL.createObjectURL(blob);
207
-
208
- const externalWindow = window.open(url, '_blank');
209
- if (!externalWindow) {
210
- alert(
211
- 'Popup blocked! Please enable popups to open the artifact in a new window.'
212
- );
213
- return;
214
- }
215
-
216
- // Cleanup URL after a delay
217
- setTimeout(() => {
218
- URL.revokeObjectURL(url);
219
- }, 60000);
220
-
221
- } catch (error) {
222
- console.error('External open failed:', error);
204
+ const handleOpenExternal = useCallback((artifact: ArtifactData) => {
205
+ try {
206
+ const mimeType = getMimeTypeString(artifact.mimeType);
207
+ const blob = new Blob([artifact.content], { type: mimeType });
208
+ const url = URL.createObjectURL(blob);
209
+
210
+ const externalWindow = window.open(url, '_blank');
211
+ if (!externalWindow) {
212
+ alert(
213
+ 'Popup blocked! Please enable popups to open the artifact in a new window.'
214
+ );
215
+ return;
223
216
  }
224
- }, []);
217
+
218
+ // Cleanup URL after a delay
219
+ setTimeout(() => {
220
+ URL.revokeObjectURL(url);
221
+ }, 60000);
222
+
223
+ } catch (error) {
224
+ console.error('External open failed:', error);
225
+ }
226
+ }, []);
225
227
 
226
228
  // Render web split panel
227
229
  return (
@@ -42,11 +42,6 @@
42
42
  white-space: nowrap;
43
43
  }
44
44
 
45
- /* .memori-artifact-tab:hover:not(.memori-artifact-tab--active) {
46
- background: rgba(0, 123, 255, 0.05);
47
- color: var(--memori-text-color, #333);
48
- } */
49
-
50
45
  .memori-artifact-tab--active, .memori-artifact-tab:hover, .memori-artifact-tab:active, .memori-artifact-tab:focus {
51
46
  background: var(--memori-chat-bubble-bg, #fff);
52
47
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
@@ -101,8 +96,11 @@
101
96
  /* Preview Content */
102
97
  .memori-artifact-preview-content {
103
98
  position: relative;
99
+ display: flex;
104
100
  overflow: hidden;
101
+ min-height: 0;
105
102
  flex: 1;
103
+ flex-direction: column;
106
104
  /* border: 1px solid var(--memori-button-border-color, #e9ecef); */
107
105
  border-radius: var(--memori-border-radius, 6px);
108
106
  /* margin: 1rem; */
@@ -110,14 +108,25 @@
110
108
  background: var(--memori-chat-bubble-bg, #fff);
111
109
  }
112
110
 
111
+ .memori-artifact-preview-iframe {
112
+ overflow: auto;
113
+ width: 100%;
114
+ height: 100%;
115
+ min-height: 0;
116
+ flex: 1;
117
+ border: none;
118
+ border-radius: var(--memori-border-radius, 6px);
119
+ }
120
+
113
121
  /* Markdown Preview */
114
122
  .memori-artifact-preview-markdown {
115
- height: 100%;
123
+ min-height: 0;
124
+ flex: 1;
116
125
  padding: 1rem;
117
126
  color: var(--memori-text-color, #333);
118
127
  font-family: var(--memori-font-family);
119
128
  line-height: 1.6;
120
- overflow-y: scroll;
129
+ overflow-y: auto;
121
130
  }
122
131
 
123
132
  .memori-artifact-preview-markdown h1,
@@ -28,6 +28,7 @@ const ArtifactPreview: React.FC<{
28
28
  case 'html':
29
29
  return (
30
30
  <iframe
31
+ className="memori-artifact-preview-iframe"
31
32
  srcDoc={artifact.content}
32
33
  style={{
33
34
  width: '100%',
@@ -36,6 +37,7 @@ const ArtifactPreview: React.FC<{
36
37
  borderRadius: '6px',
37
38
  }}
38
39
  title={`${artifact.title} Preview`}
40
+ scrolling="auto"
39
41
  />
40
42
  );
41
43
 
@@ -48,9 +50,16 @@ const ArtifactPreview: React.FC<{
48
50
  }}
49
51
  />
50
52
  );
51
-
53
+
52
54
  default:
53
- return null;
55
+ return (
56
+ <div
57
+ className="memori-artifact-preview-text"
58
+ dangerouslySetInnerHTML={{
59
+ __html: artifact.content,
60
+ }}
61
+ />
62
+ );
54
63
  }
55
64
  }, [artifact]);
56
65
 
@@ -110,7 +119,7 @@ const ArtifactPreview: React.FC<{
110
119
  );
111
120
 
112
121
  const hasPreview =
113
- artifact.mimeType === 'html' || artifact.mimeType === 'markdown';
122
+ artifact.mimeType === 'html' || artifact.mimeType === 'markdown' || artifact.mimeType === 'svg';
114
123
 
115
124
  return (
116
125
  <div className="memori-artifact-preview">
@@ -13,6 +13,15 @@
13
13
  height: calc(100vh - 50px);
14
14
  }
15
15
 
16
+ @media (max-width: 425px) {
17
+ .memori-widget {
18
+ overflow-y: hidden;
19
+ }
20
+ .memori-widget > .memori-spin {
21
+ height: calc(100vh - 100px);
22
+ }
23
+ }
24
+
16
25
  .memori--grid {
17
26
  display: flex;
18
27
  height: calc(100% - 50px);
@@ -26,7 +35,7 @@
26
35
  align-items: flex-start;
27
36
  justify-content: flex-start;
28
37
  overflow-x: visible;
29
- overflow-y: scroll;
38
+ overflow-y: hidden;
30
39
  }
31
40
  }
32
41
 
@@ -192,7 +201,7 @@
192
201
 
193
202
  .memori--conversation-button:active,
194
203
  .memori--conversation-button:focus {
195
- box-shadow: 0 0.2rem 0.33rem #b5b6c4 !important;
204
+ /* box-shadow: 0 0.2rem 0.33rem #b5b6c4 !important; */
196
205
  color: var(--memori-primary) !important;
197
206
  }
198
207
 
@@ -6,6 +6,7 @@ import MemoriWidget, { Props } from './MemoriWidget';
6
6
 
7
7
  import './MemoriWidget.css';
8
8
  import { VisemeProvider } from '../../context/visemeContext';
9
+ import { ArtifactProvider } from '../MemoriArtifactSystem/context/ArtifactContext';
9
10
 
10
11
  const meta: Meta = {
11
12
  title: 'Widget/Default',
@@ -37,9 +38,11 @@ export default meta;
37
38
 
38
39
  const Template: Story<Props> = args => (
39
40
  <I18nWrapper>
40
- <VisemeProvider>
41
- <MemoriWidget {...args} />
42
- </VisemeProvider>
41
+ <ArtifactProvider>
42
+ <VisemeProvider>
43
+ <MemoriWidget {...args} />
44
+ </VisemeProvider>
45
+ </ArtifactProvider>
43
46
  </I18nWrapper>
44
47
  );
45
48
  // By passing using the Args format for exported stories, you can control the props for a component for reuse in a test