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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/CHANGELOG.md +456 -1
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +12 -5
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -32
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  14. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  15. package/dist/components/Chat/Chat.css +1 -0
  16. package/dist/components/Chat/Chat.js +1 -1
  17. package/dist/components/Chat/Chat.js.map +1 -1
  18. package/dist/components/ChatBubble/ChatBubble.css +32 -5
  19. package/dist/components/ChatBubble/ChatBubble.js +2 -4
  20. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  21. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  22. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  23. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  24. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  25. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  26. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
  27. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  28. package/dist/components/ChatInputs/ChatInputs.js +11 -2
  29. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  30. package/dist/components/ChatTextArea/ChatTextArea.css +1 -1
  31. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  32. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  33. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  34. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  35. package/dist/components/FilePreview/FilePreview.css +41 -20
  36. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  37. package/dist/components/FilePreview/FilePreview.js +6 -2
  38. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  39. package/dist/components/Header/Header.css +8 -3
  40. package/dist/components/Header/Header.js +15 -18
  41. package/dist/components/Header/Header.js.map +1 -1
  42. package/dist/components/IconButton/IconButton.d.ts +1 -1
  43. package/dist/components/KnownFacts/KnownFacts.css +1 -1
  44. package/dist/components/KnownFacts/KnownFacts.js +4 -7
  45. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  46. package/dist/components/LoginDrawer/LoginDrawer.css +16 -14
  47. package/dist/components/LoginDrawer/LoginDrawer.js +19 -11
  48. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  49. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  50. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  51. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  52. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  53. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  54. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  55. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  56. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  57. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  58. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +210 -62
  59. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  60. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  61. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  62. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  63. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  64. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  65. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  66. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  67. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  68. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  69. package/dist/components/MemoriWidget/MemoriWidget.css +59 -0
  70. package/dist/components/MemoriWidget/MemoriWidget.js +35 -31
  71. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  72. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  73. package/dist/components/PositionPopover/PositionPopover.css +3 -3
  74. package/dist/components/PositionPopover/PositionPopover.js +38 -25
  75. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  76. package/dist/components/Snippet/Snippet.css +6 -36
  77. package/dist/components/Snippet/Snippet.js +3 -1
  78. package/dist/components/Snippet/Snippet.js.map +1 -1
  79. package/dist/components/StartPanel/StartPanel.css +125 -3
  80. package/dist/components/StartPanel/StartPanel.js +13 -19
  81. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  82. package/dist/components/UploadButton/UploadButton.css +0 -19
  83. package/dist/components/UploadButton/UploadButton.js +1 -3
  84. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  85. package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -1
  86. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  87. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  88. package/dist/components/layouts/chat.css +2 -0
  89. package/dist/components/layouts/totem.css +43 -9
  90. package/dist/components/layouts/zoomed-full-body.css +1 -0
  91. package/dist/helpers/message.js +3 -0
  92. package/dist/helpers/message.js.map +1 -1
  93. package/dist/helpers/positionPopover.d.ts +2 -1
  94. package/dist/helpers/positionPopover.js +10 -2
  95. package/dist/helpers/positionPopover.js.map +1 -1
  96. package/dist/icons/MemoriIcon.js +1 -1
  97. package/dist/icons/MemoriIcon.js.map +1 -1
  98. package/dist/locales/de.json +7 -1
  99. package/dist/locales/en.json +6 -1
  100. package/dist/locales/es.json +6 -1
  101. package/dist/locales/fr.json +6 -1
  102. package/dist/locales/it.json +6 -1
  103. package/dist/styles.css +1 -1
  104. package/dist/version.d.ts +1 -1
  105. package/dist/version.js +1 -1
  106. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  107. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  108. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  109. package/esm/components/Auth/Auth.css +12 -5
  110. package/esm/components/Auth/Auth.d.ts +1 -1
  111. package/esm/components/Auth/Auth.js +47 -33
  112. package/esm/components/Auth/Auth.js.map +1 -1
  113. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  114. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  115. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  116. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  117. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  118. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  119. package/esm/components/Chat/Chat.css +1 -0
  120. package/esm/components/Chat/Chat.js +1 -1
  121. package/esm/components/Chat/Chat.js.map +1 -1
  122. package/esm/components/ChatBubble/ChatBubble.css +32 -5
  123. package/esm/components/ChatBubble/ChatBubble.js +2 -4
  124. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  125. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  126. package/esm/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  127. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  128. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  129. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  130. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -59
  131. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  132. package/esm/components/ChatInputs/ChatInputs.js +12 -3
  133. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  134. package/esm/components/ChatTextArea/ChatTextArea.css +1 -1
  135. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  136. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  137. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  138. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  139. package/esm/components/FilePreview/FilePreview.css +41 -20
  140. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  141. package/esm/components/FilePreview/FilePreview.js +7 -3
  142. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  143. package/esm/components/Header/Header.css +8 -3
  144. package/esm/components/Header/Header.js +15 -18
  145. package/esm/components/Header/Header.js.map +1 -1
  146. package/esm/components/IconButton/IconButton.d.ts +1 -1
  147. package/esm/components/KnownFacts/KnownFacts.css +1 -1
  148. package/esm/components/KnownFacts/KnownFacts.js +4 -7
  149. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  150. package/esm/components/LoginDrawer/LoginDrawer.css +16 -14
  151. package/esm/components/LoginDrawer/LoginDrawer.js +20 -12
  152. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  153. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  154. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  155. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  156. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  157. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  158. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  159. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  160. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  161. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  162. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +211 -63
  163. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  164. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  165. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  166. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  167. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  168. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  169. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  170. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  171. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  172. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  173. package/esm/components/MemoriWidget/MemoriWidget.css +59 -0
  174. package/esm/components/MemoriWidget/MemoriWidget.js +36 -32
  175. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  176. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  177. package/esm/components/PositionPopover/PositionPopover.css +3 -3
  178. package/esm/components/PositionPopover/PositionPopover.js +39 -26
  179. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  180. package/esm/components/Snippet/Snippet.css +6 -36
  181. package/esm/components/Snippet/Snippet.js +4 -2
  182. package/esm/components/Snippet/Snippet.js.map +1 -1
  183. package/esm/components/StartPanel/StartPanel.css +125 -3
  184. package/esm/components/StartPanel/StartPanel.js +14 -20
  185. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  186. package/esm/components/UploadButton/UploadButton.css +0 -19
  187. package/esm/components/UploadButton/UploadButton.js +1 -3
  188. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  189. package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -1
  190. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  191. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  192. package/esm/components/layouts/chat.css +2 -0
  193. package/esm/components/layouts/totem.css +43 -9
  194. package/esm/components/layouts/zoomed-full-body.css +1 -0
  195. package/esm/helpers/message.js +3 -0
  196. package/esm/helpers/message.js.map +1 -1
  197. package/esm/helpers/positionPopover.d.ts +2 -1
  198. package/esm/helpers/positionPopover.js +9 -2
  199. package/esm/helpers/positionPopover.js.map +1 -1
  200. package/esm/icons/MemoriIcon.js +1 -1
  201. package/esm/icons/MemoriIcon.js.map +1 -1
  202. package/esm/locales/de.json +7 -1
  203. package/esm/locales/en.json +6 -1
  204. package/esm/locales/es.json +6 -1
  205. package/esm/locales/fr.json +6 -1
  206. package/esm/locales/it.json +6 -1
  207. package/esm/styles.css +1 -1
  208. package/esm/version.d.ts +1 -1
  209. package/esm/version.js +1 -1
  210. package/package.json +5 -3
  211. package/src/Live/Agents.stories.tsx +49 -0
  212. package/src/Live/KnownFacts.stories.tsx +50 -0
  213. package/src/Showcase.stories.tsx +3 -14
  214. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  215. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +1 -1
  216. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -0
  217. package/src/components/Auth/Auth.css +12 -5
  218. package/src/components/Auth/Auth.stories.tsx +1 -1
  219. package/src/components/Auth/Auth.test.tsx +68 -1
  220. package/src/components/Auth/Auth.tsx +69 -54
  221. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +5 -6
  222. package/src/components/Avatar/Avatar.stories.tsx +1 -18
  223. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +2 -2
  224. package/src/components/Avatar/AvatarView/AvatarComponent/constants.test.ts +19 -0
  225. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +9 -6
  226. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +1 -103
  227. package/src/components/Blob/Blob.stories.tsx +1 -1
  228. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  229. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +1 -1
  230. package/src/components/ChangeMode/ChangeMode.stories.tsx +1 -1
  231. package/src/components/Chat/Chat.css +1 -0
  232. package/src/components/Chat/Chat.stories.tsx +61 -7
  233. package/src/components/Chat/Chat.tsx +1 -0
  234. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +80 -80
  235. package/src/components/ChatBubble/ChatBubble.css +32 -5
  236. package/src/components/ChatBubble/ChatBubble.stories.tsx +13 -2
  237. package/src/components/ChatBubble/ChatBubble.test.tsx +21 -1
  238. package/src/components/ChatBubble/ChatBubble.tsx +7 -13
  239. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +158 -185
  240. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +1 -1
  241. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +6 -0
  242. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  243. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +24 -81
  244. package/src/components/ChatInputs/ChatInputs.stories.tsx +1 -39
  245. package/src/components/ChatInputs/ChatInputs.test.tsx +47 -0
  246. package/src/components/ChatInputs/ChatInputs.tsx +13 -2
  247. package/src/components/ChatTextArea/ChatTextArea.css +1 -1
  248. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  249. package/src/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  250. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +1 -1
  251. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  252. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +1 -1
  253. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +29 -10
  254. package/src/components/FilePreview/FilePreview.css +41 -20
  255. package/src/components/FilePreview/FilePreview.tsx +14 -0
  256. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +14 -0
  257. package/src/components/Header/Header.css +8 -3
  258. package/src/components/Header/Header.stories.tsx +1 -1
  259. package/src/components/Header/Header.tsx +146 -117
  260. package/src/components/KnownFacts/KnownFacts.css +1 -1
  261. package/src/components/KnownFacts/KnownFacts.stories.tsx +1 -23
  262. package/src/components/KnownFacts/KnownFacts.tsx +4 -11
  263. package/src/components/LoginDrawer/LoginDrawer.css +16 -14
  264. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -52
  265. package/src/components/LoginDrawer/LoginDrawer.tsx +51 -39
  266. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +1 -15
  267. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +2 -3
  268. package/src/components/MediaWidget/MediaWidget.stories.tsx +1 -45
  269. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +19 -33
  270. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +1 -1
  271. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +44 -45
  272. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  273. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  274. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +28 -26
  275. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  276. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +357 -148
  277. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +111 -9
  278. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +20 -1
  279. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +33 -28
  280. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +19 -13
  281. package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +85 -0
  282. package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +173 -0
  283. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +55 -0
  284. package/src/components/MemoriWidget/MemoriWidget.css +59 -0
  285. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +55 -77
  286. package/src/components/MemoriWidget/MemoriWidget.tsx +49 -44
  287. package/src/components/MemoriWidget/getChatStyles.test.ts +24 -0
  288. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +1 -1
  289. package/src/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  290. package/src/components/PositionPopover/PositionPopover.css +3 -3
  291. package/src/components/PositionPopover/PositionPopover.stories.tsx +1 -1
  292. package/src/components/PositionPopover/PositionPopover.tsx +50 -28
  293. package/src/components/PoweredBy/PoweredBy.stories.tsx +1 -54
  294. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +2 -2
  295. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +1 -1
  296. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +1 -1
  297. package/src/components/ShareButton/ShareButton.stories.tsx +1 -1
  298. package/src/components/Snippet/Snippet.css +6 -36
  299. package/src/components/Snippet/Snippet.stories.tsx +1 -1
  300. package/src/components/Snippet/Snippet.tsx +6 -7
  301. package/src/components/StartPanel/StartPanel.css +125 -3
  302. package/src/components/StartPanel/StartPanel.stories.tsx +22 -2
  303. package/src/components/StartPanel/StartPanel.tsx +30 -35
  304. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +177 -121
  305. package/src/components/Typing/Typing.stories.tsx +1 -1
  306. package/src/components/UploadButton/UploadButton.css +0 -19
  307. package/src/components/UploadButton/UploadButton.tsx +0 -11
  308. package/src/components/UploadButton/UploadImages/UploadImages.tsx +1 -1
  309. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +22 -44
  310. package/src/components/layouts/FullBody/FullBody.stories.tsx +55 -68
  311. package/src/components/layouts/Totem/Totem.stories.tsx +69 -87
  312. package/src/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  313. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +69 -87
  314. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +19 -41
  315. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +39 -83
  316. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +15 -11
  317. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +116 -42
  318. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +18 -40
  319. package/src/components/layouts/chat.css +2 -0
  320. package/src/components/layouts/layouts.stories.tsx +96 -179
  321. package/src/components/layouts/totem.css +43 -9
  322. package/src/components/layouts/zoomed-full-body.css +1 -0
  323. package/src/helpers/message.ts +15 -0
  324. package/src/helpers/positionPopover.test.ts +36 -1
  325. package/src/helpers/positionPopover.ts +21 -4
  326. package/src/i18n.knownFacts.test.ts +40 -0
  327. package/src/icons/MemoriIcon.tsx +1 -1
  328. package/src/index.stories.tsx +1 -47
  329. package/src/locales/de.json +7 -1
  330. package/src/locales/en.json +6 -1
  331. package/src/locales/es.json +6 -1
  332. package/src/locales/fr.json +6 -1
  333. package/src/locales/it.json +6 -1
  334. package/src/styles.css +13 -27
  335. package/src/version.ts +1 -1
  336. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  337. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  338. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  339. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  340. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  341. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  342. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  343. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
@@ -9,6 +9,7 @@ import {
9
9
  createAlertOptions,
10
10
  Card,
11
11
  Form,
12
+ Field,
12
13
  } from '@memori.ai/ui';
13
14
  import { useTranslation } from 'react-i18next';
14
15
  import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
@@ -107,9 +108,9 @@ const LoginDrawer = ({
107
108
  // OTP timer effect
108
109
  useEffect(() => {
109
110
  let interval: NodeJS.Timeout;
110
- if (otpTimer && otpTimer > 0) {
111
+ if (otpTimer != null && otpTimer > 0) {
111
112
  interval = setInterval(() => {
112
- setOtpTimer(prev => (prev && prev > 0 ? prev - 1 : 0));
113
+ setOtpTimer(prev => (prev != null && prev > 0 ? prev - 1 : 0));
113
114
  }, 1000);
114
115
  }
115
116
  return () => {
@@ -117,6 +118,14 @@ const LoginDrawer = ({
117
118
  };
118
119
  }, [otpTimer]);
119
120
 
121
+ useEffect(() => {
122
+ if (otpTimer !== 0) return;
123
+ setOtpTimer(null);
124
+ if (!otpSuccess) {
125
+ setOtpError(t('login.otpExpired'));
126
+ }
127
+ }, [otpTimer, otpSuccess, t]);
128
+
120
129
  useEffect(() => {
121
130
  const mediaQuery = window.matchMedia('(max-width: 768px)');
122
131
  const onChange = () => setIsMobileViewport(mediaQuery.matches);
@@ -459,34 +468,34 @@ const LoginDrawer = ({
459
468
  onSubmit={updateMissingData}
460
469
  >
461
470
  {needsMissingData.birthDate && (
462
- <>
463
- <label htmlFor="#birthDate">
471
+ <Field.Root className="memori--login-drawer--field">
472
+ <Field.Label htmlFor="birthDate">
464
473
  {t('login.birthDate')}
465
- <Input
466
- id="birthDate"
467
- name="birthDate"
468
- type={
469
- isMobileViewport && !birthDate && !isBirthDateFocused
470
- ? 'text'
471
- : 'date'
472
- }
473
- required
474
- onChange={e => setBirthDate(e.target.value)}
475
- value={birthDate}
476
- placeholder={
477
- isMobileViewport
478
- ? t('login.birthDatePlaceholder') || 'DD/MM/YYYY'
479
- : undefined
480
- }
481
- onFocus={() => setIsBirthDateFocused(true)}
482
- onBlur={() => setIsBirthDateFocused(false)}
483
- autoComplete="bday"
484
- />
485
- </label>
486
- <p>
487
- <small>{t('login.birthDateHelper')}</small>
488
- </p>
489
- </>
474
+ </Field.Label>
475
+ <Input
476
+ id="birthDate"
477
+ name="birthDate"
478
+ type={
479
+ isMobileViewport && !birthDate && !isBirthDateFocused
480
+ ? 'text'
481
+ : 'date'
482
+ }
483
+ required
484
+ onChange={e => setBirthDate(e.target.value)}
485
+ value={birthDate}
486
+ placeholder={
487
+ isMobileViewport
488
+ ? t('login.birthDatePlaceholder') || 'DD/MM/YYYY'
489
+ : undefined
490
+ }
491
+ onFocus={() => setIsBirthDateFocused(true)}
492
+ onBlur={() => setIsBirthDateFocused(false)}
493
+ autoComplete="bday"
494
+ />
495
+ <Field.Description>
496
+ {t('login.birthDateHelper')}
497
+ </Field.Description>
498
+ </Field.Root>
490
499
  )}
491
500
 
492
501
  {needsMissingData?.tnCAndPPAccepted && (
@@ -638,7 +647,7 @@ const LoginDrawer = ({
638
647
  </div>
639
648
  )}
640
649
 
641
- {otpTimer && otpTimer > 0 && !otpSuccess && (
650
+ {otpTimer != null && otpTimer > 0 && !otpSuccess && (
642
651
  <div className="memori--login-drawer--otp-timer">
643
652
  {/* <span className="memori--login-drawer--otp-timer-icon">⏱️</span> */}
644
653
  <span>{t('login.otpTimer', { seconds: otpTimer })}</span>
@@ -666,7 +675,7 @@ const LoginDrawer = ({
666
675
  disabled={
667
676
  loading ||
668
677
  isResending ||
669
- (otpTimer && otpTimer > 0) ||
678
+ (otpTimer != null && otpTimer > 0) ||
670
679
  !otpEmail
671
680
  }
672
681
  loading={isResending}
@@ -706,13 +715,15 @@ const LoginDrawer = ({
706
715
  {t('login.otpEmailDescription')}
707
716
  </p>
708
717
  <div className={cx('memori--login-drawer--otp-form', { loading })}>
709
- <label
710
- htmlFor="otp-email"
711
- className="memori--login-drawer--otp-label"
712
- >
713
- <span className="memori--login-drawer--otp-label-text">
714
- {t('login.email')}
715
- </span>
718
+ <Field.Root className="memori--login-drawer--otp-field">
719
+ <Field.Label
720
+ htmlFor="otp-email"
721
+ className="memori--login-drawer--otp-label"
722
+ >
723
+ <span className="memori--login-drawer--otp-label-text">
724
+ {t('login.email')}
725
+ </span>
726
+ </Field.Label>
716
727
  <div className="memori--login-drawer--otp-input-container">
717
728
  <Input
718
729
  id="otp-email"
@@ -743,7 +754,8 @@ const LoginDrawer = ({
743
754
  </div>
744
755
  )}
745
756
  </div>
746
- </label>
757
+ {otpError ? <Field.Error>{otpError}</Field.Error> : null}
758
+ </Field.Root>
747
759
  </div>
748
760
 
749
761
  <div className="memori--login-drawer--otp-actions memori--login-drawer--otp-actions-primary">
@@ -6,7 +6,7 @@ import MediaItemWidget, { Props } from './MediaItemWidget';
6
6
  import './MediaItemWidget.css';
7
7
 
8
8
  const meta: Meta = {
9
- title: 'Media Widget/Media',
9
+ title: 'Internals/Media',
10
10
  component: MediaItemWidget,
11
11
  argTypes: {
12
12
  translateTo: {
@@ -55,20 +55,6 @@ Default.args = {
55
55
  content:
56
56
  'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
57
57
  },
58
- {
59
- mediumID: '95226d7e-7bae-465e-8b80-995587bb5974',
60
- mimeType: 'video/mp4',
61
- title: 'Video',
62
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
63
- content: 'https://www.w3schools.com/html/mov_bbb.mp4',
64
- },
65
- {
66
- mediumID: '95226d7e-7bae-465e-8b80-995587bb5975',
67
- mimeType: 'audio/mpeg',
68
- title: 'Audio',
69
- url: 'https://www.w3schools.com/html/horse.mp3',
70
- content: 'https://www.w3schools.com/html/horse.mp3',
71
- },
72
58
  {
73
59
  mediumID: '95226d7e-7bae-465e-8b80-995587bb5976',
74
60
  mimeType: 'application/msword',
@@ -259,9 +259,8 @@ describe('MediaPreviewModal', () => {
259
259
  render(
260
260
  <MediaPreviewModal medium={medium} onClose={onClose} />
261
261
  );
262
- const closeWrapper = document.querySelector('.memori-modal__close');
263
- expect(closeWrapper).toBeInTheDocument();
264
- const closeButton = closeWrapper?.querySelector('button');
262
+ const closeButton = document.querySelector('.memori-modal__close');
263
+ expect(closeButton).toBeInTheDocument();
265
264
  if (closeButton) {
266
265
  fireEvent.click(closeButton);
267
266
  expect(onClose).toHaveBeenCalled();
@@ -10,7 +10,7 @@ import {
10
10
  import './MediaWidget.css';
11
11
 
12
12
  const meta: Meta = {
13
- title: 'Media Widget/Wrapper',
13
+ title: 'Internals/Media Wrapper',
14
14
  component: MediaWidget,
15
15
  argTypes: {
16
16
  hints: {
@@ -153,50 +153,6 @@ AllMediaTypes.args = {
153
153
  title: 'GIF Image',
154
154
  url: 'https://picsum.photos/300/200?random=4',
155
155
  },
156
- // Videos
157
- {
158
- mediumID: 'video-mp4-1',
159
- mimeType: 'video/mp4',
160
- title: 'MP4 Video',
161
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
162
- },
163
- {
164
- mediumID: 'video-quicktime-1',
165
- mimeType: 'video/quicktime',
166
- title: 'QuickTime Video',
167
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
168
- },
169
- {
170
- mediumID: 'video-avi-1',
171
- mimeType: 'video/avi',
172
- title: 'AVI Video',
173
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
174
- },
175
- {
176
- mediumID: 'video-mpeg-1',
177
- mimeType: 'video/mpeg',
178
- title: 'MPEG Video',
179
- url: 'https://www.w3schools.com/html/mov_bbb.mp4',
180
- },
181
- // Audio
182
- {
183
- mediumID: 'audio-mpeg-1',
184
- mimeType: 'audio/mpeg',
185
- title: 'MPEG Audio',
186
- url: 'https://www.w3schools.com/html/horse.mp3',
187
- },
188
- {
189
- mediumID: 'audio-mpeg3-1',
190
- mimeType: 'audio/mpeg3',
191
- title: 'MPEG3 Audio',
192
- url: 'https://www.w3schools.com/html/horse.mp3',
193
- },
194
- {
195
- mediumID: 'audio-wav-1',
196
- mimeType: 'audio/wav',
197
- title: 'WAV Audio',
198
- url: 'https://www.w3schools.com/html/horse.mp3',
199
- },
200
156
  // Documents
201
157
  {
202
158
  mediumID: 'doc-pdf-1',
@@ -4,16 +4,12 @@
4
4
  * Following the project's component patterns and design system
5
5
  */
6
6
 
7
- import React, { useState, useCallback } from 'react';
7
+ import React, { useCallback } from 'react';
8
8
  import { useTranslation } from 'react-i18next';
9
- import cx from 'classnames';
10
9
  import { Button, Dropdown } from '@memori.ai/ui';
11
10
  import { ArtifactData } from '../../types/artifact.types';
12
11
  import {
13
- Download,
14
12
  Link as LinkIcon,
15
- Maximize,
16
- Minimize,
17
13
  Printer,
18
14
  MoreVertical,
19
15
  } from 'lucide-react';
@@ -186,7 +182,7 @@ const ArtifactActions: React.FC<{
186
182
  loading={loading}
187
183
  className="memori-artifact-action-btn"
188
184
  />
189
- {isMobile && (
185
+ {isMobile && (
190
186
  <Dropdown className="memori-copy-menu-wrapper">
191
187
  <Dropdown.Trigger
192
188
  showChevron={false}
@@ -202,33 +198,23 @@ const ArtifactActions: React.FC<{
202
198
  </Button>
203
199
  )}
204
200
  />
205
- <Dropdown.Menu className="memori-copy-dropdown" style={{ minWidth: '200px' }}>
206
- <div className="memori-copy-dropdown-list">
207
- <Button
208
- onClick={handlePrint}
209
- disabled={loading}
210
- className="memori-artifact-action-btn memori-artifact-action-btn--print"
211
- variant="ghost"
212
- icon={<Printer className="memori-artifact-action-icon" />}
213
- title={t('artifact.print') || 'Print'}
214
- >
215
- <span className="memori-artifact-action-text">
216
- {t('artifact.print') || 'Print'}
217
- </span>
218
- </Button>
219
- <Button
220
- onClick={handleOpenExternal}
221
- disabled={loading}
222
- className="memori-artifact-action-btn memori-artifact-action-btn--external"
223
- variant="ghost"
224
- icon={<LinkIcon className="memori-artifact-action-icon" />}
225
- title={t('artifact.external') || 'External'}
226
- >
227
- <span className="memori-artifact-action-text">
228
- {t('artifact.external') || 'External'}
229
- </span>
230
- </Button>
231
- </div>
201
+ <Dropdown.Menu placement="bottom" align="end" sideOffset={8}>
202
+ <Dropdown.Item
203
+ onClick={handlePrint}
204
+ disabled={loading}
205
+ icon={<Printer />}
206
+ label={t('artifact.print') || 'Print'}
207
+ >
208
+ {t('artifact.print') || 'Print'}
209
+ </Dropdown.Item>
210
+ <Dropdown.Item
211
+ onClick={handleOpenExternal}
212
+ disabled={loading}
213
+ icon={<LinkIcon />}
214
+ label={t('artifact.external') || 'External'}
215
+ >
216
+ {t('artifact.external') || 'External'}
217
+ </Dropdown.Item>
232
218
  </Dropdown.Menu>
233
219
  </Dropdown>
234
220
  )}
@@ -10,7 +10,7 @@ import CopyButtonTest from './test/CopyButtonTest';
10
10
 
11
11
 
12
12
  const meta: Meta<typeof CopyButtonTest> = {
13
- title: 'Artifact System/CopyButtonTest',
13
+ title: 'Internals/CopyButtonTest',
14
14
  component: CopyButtonTest,
15
15
  parameters: {
16
16
  layout: 'fullscreen',
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * CopyButtonWithDropdown - Main component with dropdown menu
3
- * Similar to Claude's copy system with format-specific options using headless-ui
3
+ * Similar to Claude's copy system with format-specific options
4
4
  */
5
5
  /* eslint-disable react/prop-types -- props validated by CopyButtonWithDropdownProps (TypeScript) */
6
6
 
7
- import React, { useRef, useEffect, useCallback } from 'react';
7
+ import React, { useCallback } from 'react';
8
8
  import cx from 'classnames';
9
9
  import { CopyButtonWithDropdownProps, CopyFormat } from '../types';
10
10
  import { useCopyArtifact } from '../hooks/useCopyArtifact';
11
- import CopyMenuItem from './CopyMenuItem';
12
11
  import { Button, Dropdown } from '@memori.ai/ui';
13
12
  import {
14
13
  Copy,
@@ -22,8 +21,20 @@ import {
22
21
  import { useTranslation } from 'react-i18next';
23
22
  import { marked } from 'marked';
24
23
  import DOMPurify from 'dompurify';
25
- import { ArtifactData } from '../../../types/artifact.types';
26
24
 
25
+ const getCopyActionIcon = (action: CopyFormat['action']) => {
26
+ switch (action) {
27
+ case 'pdf':
28
+ case 'download':
29
+ return <Download />;
30
+ case 'print':
31
+ return <Printer />;
32
+ case 'link':
33
+ return <LinkIcon />;
34
+ default:
35
+ return <Copy />;
36
+ }
37
+ };
27
38
 
28
39
  const CopyButtonWithDropdown: React.FC<CopyButtonWithDropdownProps> = ({
29
40
  artifact,
@@ -412,47 +423,35 @@ const CopyButtonWithDropdown: React.FC<CopyButtonWithDropdownProps> = ({
412
423
  </Button>
413
424
  )}
414
425
  />
415
- <Dropdown.Menu className="memori-copy-dropdown">
416
- <div className="memori-copy-dropdown-content">
417
- <div className="memori-copy-dropdown-list">
418
- {formats.map(format => (
419
- <Dropdown.Item key={format.id}>
420
- <CopyMenuItem
421
- format={format}
422
- onClick={handleFormatSelect}
423
- loading={copyState.loading}
424
- active={false}
425
- />
426
- </Dropdown.Item>
427
- ))}
428
- <Dropdown.Item>
429
- <CopyMenuItem
430
- format={{
431
- id: 'external',
432
- label: t('artifact.external') || 'External',
433
- action: 'link',
434
- mimeType: artifact.mimeType,
435
- }}
436
- onClick={handleOpenExternal}
437
- loading={copyState.loading}
438
- active={false}
439
- />
440
- </Dropdown.Item>
441
- <Dropdown.Item>
442
- <CopyMenuItem
443
- format={{
444
- id: 'print',
445
- label: t('artifact.print') || 'Print',
446
- action: 'print',
447
- mimeType: artifact.mimeType,
448
- }}
449
- onClick={handlePrint}
450
- loading={copyState.loading}
451
- active={false}
452
- />
453
- </Dropdown.Item>
454
- </div>
455
- </div>
426
+ <Dropdown.Menu placement="bottom" align="end" sideOffset={8}>
427
+ {formats.map(format => (
428
+ <Dropdown.Item
429
+ key={format.id}
430
+ onClick={() => handleFormatSelect(format)}
431
+ disabled={copyState.loading}
432
+ icon={getCopyActionIcon(format.action)}
433
+ label={format.label}
434
+ >
435
+ {format.label}
436
+ </Dropdown.Item>
437
+ ))}
438
+ <Dropdown.Separator />
439
+ <Dropdown.Item
440
+ onClick={handleOpenExternal}
441
+ disabled={copyState.loading}
442
+ icon={getCopyActionIcon('link')}
443
+ label={t('artifact.external') || 'External'}
444
+ >
445
+ {t('artifact.external') || 'External'}
446
+ </Dropdown.Item>
447
+ <Dropdown.Item
448
+ onClick={handlePrint}
449
+ disabled={copyState.loading}
450
+ icon={getCopyActionIcon('print')}
451
+ label={t('artifact.print') || 'Print'}
452
+ >
453
+ {t('artifact.print') || 'Print'}
454
+ </Dropdown.Item>
456
455
  </Dropdown.Menu>
457
456
  </Dropdown>
458
457
  )}
@@ -68,14 +68,14 @@
68
68
  }
69
69
 
70
70
  .memori-copy-button--success {
71
- border-color: var(--memori-success-color);
72
- background: color-mix(in oklch, var(--memori-main-background) 82%, var(--memori-success-color) 18%);
71
+ border-color: var(--memori-success);
72
+ background: color-mix(in oklch, var(--memori-main-background) 82%, var(--memori-success) 18%);
73
73
  color: var(--memori-text-color);
74
74
  }
75
75
 
76
76
  .memori-copy-button--error {
77
- border-color: var(--memori-error-color);
78
- background: color-mix(in oklch, var(--memori-main-background) 84%, var(--memori-error-color) 16%);
77
+ border-color: var(--memori-error);
78
+ background: color-mix(in oklch, var(--memori-main-background) 84%, var(--memori-error) 16%);
79
79
  color: var(--memori-text-color);
80
80
  }
81
81
 
@@ -175,7 +175,7 @@
175
175
  /* Copy Menu Wrapper */
176
176
  .memori-copy-menu-wrapper {
177
177
  position: relative;
178
- z-index: 10001;
178
+ z-index: 10;
179
179
  display: inline-block;
180
180
  }
181
181
 
@@ -183,96 +183,6 @@
183
183
  gap: var(--memori-spacing-sm);
184
184
  }
185
185
 
186
- /* Copy Dropdown */
187
- .memori-copy-dropdown {
188
- position: absolute;
189
- z-index: 10001;
190
- top: 100%;
191
- right: 0;
192
- /* left: 0; */
193
- overflow: hidden;
194
- min-width: 280px;
195
- max-width: 320px;
196
- border: 1px solid var(--memori-copy-border);
197
- border: var(--memori-border) solid var(--memori-border-color);
198
- border-radius: 0.5rem;
199
- margin-top: var(--memori-spacing-xs);
200
- background: var(--memori-secondary-background);
201
- box-shadow: var(--memori-copy-shadow);
202
- }
203
-
204
- /* Responsive positioning */
205
- @media (max-width: 640px) {
206
- .memori-copy-dropdown {
207
- right: 0;
208
- left: auto;
209
- min-width: 260px;
210
- max-width: calc(100vw - var(--memori-spacing-xl));
211
- }
212
- }
213
-
214
- /* Headless UI Transition Classes */
215
- .memori-copy-dropdown-enter {
216
- transition: all 0.15s ease-out;
217
- }
218
-
219
- .memori-copy-dropdown-enter-from {
220
- opacity: 0;
221
- transform: translateY(-8px) scale(0.95);
222
- }
223
-
224
- .memori-copy-dropdown-enter-to {
225
- opacity: 1;
226
- transform: translateY(0) scale(1);
227
- }
228
-
229
- .memori-copy-dropdown-leave {
230
- transition: all 0.1s ease-in;
231
- }
232
-
233
- .memori-copy-dropdown-leave-from {
234
- opacity: 1;
235
- transform: translateY(0) scale(1);
236
- }
237
-
238
- .memori-copy-dropdown-leave-to {
239
- opacity: 0;
240
- transform: translateY(-8px) scale(0.95);
241
- }
242
-
243
- .memori-copy-dropdown-content {
244
- padding: var(--memori-spacing-sm) 0;
245
- }
246
-
247
- .memori-copy-dropdown-header {
248
- padding: var(--memori-spacing-sm) var(--memori-spacing-md) var(--memori-spacing-xs);
249
- border-bottom: 1px solid var(--memori-copy-border);
250
- margin-bottom: var(--memori-spacing-xs);
251
- }
252
-
253
- .memori-copy-dropdown-title {
254
- color: var(--memori-text-color);
255
- font-size: 0.75rem;
256
- font-weight: var(--memori-text-weight-semibold);
257
- letter-spacing: 0.05em;
258
- text-transform: uppercase;
259
- }
260
-
261
- .memori-copy-dropdown-list {
262
- max-height: 300px;
263
- overflow-y: auto;
264
- }
265
-
266
- .memori-copy-dropdown-empty {
267
- padding: var(--memori-spacing-md);
268
- text-align: center;
269
- }
270
-
271
- .memori-copy-dropdown-empty-text {
272
- color: var(--memori-text-color);
273
- font-size: var(--memori-text-size-small);
274
- }
275
-
276
186
  /* Copy Menu Item */
277
187
  .memori-copy-menu-item {
278
188
  position: relative;
@@ -441,11 +351,6 @@
441
351
 
442
352
  /* Responsive Design */
443
353
  @media (max-width: 640px) {
444
- .memori-copy-dropdown {
445
- min-width: 260px;
446
- max-width: calc(100vw - var(--memori-spacing-xl));
447
- }
448
-
449
354
  .memori-copy-toast {
450
355
  right: var(--memori-spacing-md);
451
356
  left: var(--memori-spacing-md);
@@ -468,7 +373,6 @@
468
373
  /* Print Media Queries */
469
374
  @media print {
470
375
  .memori-copy-button-wrapper,
471
- .memori-copy-dropdown,
472
376
  .memori-copy-toast {
473
377
  display: none !important;
474
378
  }
@@ -480,10 +384,6 @@
480
384
  border-width: 2px;
481
385
  }
482
386
 
483
- .memori-copy-dropdown {
484
- border-width: 2px;
485
- }
486
-
487
387
  .memori-copy-menu-item:hover:not(:disabled) {
488
388
  background: var(--memori-copy-surface-pressed);
489
389
  color: var(--memori-text-color);
@@ -494,7 +394,6 @@
494
394
  @media (prefers-reduced-motion: reduce) {
495
395
  .memori-copy-button,
496
396
  .memori-copy-menu-item,
497
- .memori-copy-dropdown,
498
397
  .memori-copy-toast {
499
398
  transition: none;
500
399
  }
@@ -504,10 +403,6 @@
504
403
  animation: none;
505
404
  }
506
405
 
507
- .memori-copy-dropdown {
508
- animation: none;
509
- }
510
-
511
406
  .memori-copy-toast {
512
407
  animation: none;
513
408
  }