@memori.ai/memori-react 8.45.6 → 8.46.1

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 (270) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/ChatBubble/ChatBubble.css +94 -9
  3. package/dist/components/ChatInputs/ChatInputs.css +7 -5
  4. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +27 -0
  5. package/dist/components/MemoriWidget/MemoriWidget.js +36 -29
  6. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  7. package/dist/components/layouts/chat.css +11 -1
  8. package/dist/components/layouts/totem.css +2 -0
  9. package/dist/helpers/message.js +45 -1
  10. package/dist/helpers/message.js.map +1 -1
  11. package/dist/styles.css +19 -0
  12. package/dist/version.d.ts +1 -1
  13. package/dist/version.js +1 -1
  14. package/esm/components/ChatBubble/ChatBubble.css +94 -9
  15. package/esm/components/ChatInputs/ChatInputs.css +7 -5
  16. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +27 -0
  17. package/esm/components/MemoriWidget/MemoriWidget.js +36 -29
  18. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  19. package/esm/components/layouts/chat.css +11 -1
  20. package/esm/components/layouts/totem.css +2 -0
  21. package/esm/helpers/message.js +45 -1
  22. package/esm/helpers/message.js.map +1 -1
  23. package/esm/styles.css +19 -0
  24. package/esm/version.d.ts +1 -1
  25. package/esm/version.js +1 -1
  26. package/package.json +2 -2
  27. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +0 -78
  28. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +0 -39
  29. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +0 -43
  30. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +0 -1
  31. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +0 -7
  32. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +0 -31
  33. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +0 -1
  34. package/dist/components/DrawerFooter/DrawerFooter.css +0 -62
  35. package/dist/components/DrawerFooter/DrawerFooter.d.ts +0 -12
  36. package/dist/components/DrawerFooter/DrawerFooter.js +0 -10
  37. package/dist/components/DrawerFooter/DrawerFooter.js.map +0 -1
  38. package/dist/components/IconButton/IconButton.css +0 -135
  39. package/dist/components/IconButton/IconButton.d.ts +0 -9
  40. package/dist/components/IconButton/IconButton.js +0 -36
  41. package/dist/components/IconButton/IconButton.js.map +0 -1
  42. package/dist/components/LoginModal/LoginModal.css +0 -270
  43. package/dist/components/LoginModal/LoginModal.d.ts +0 -19
  44. package/dist/components/LoginModal/LoginModal.js +0 -355
  45. package/dist/components/LoginModal/LoginModal.js.map +0 -1
  46. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +0 -540
  47. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +0 -65
  48. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +0 -254
  49. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +0 -1
  50. package/dist/components/PositionPopover/PositionPopover.css +0 -218
  51. package/dist/components/PositionPopover/PositionPopover.d.ts +0 -22
  52. package/dist/components/PositionPopover/PositionPopover.js +0 -208
  53. package/dist/components/PositionPopover/PositionPopover.js.map +0 -1
  54. package/dist/components/ReasoningBlock/ReasoningBlock.css +0 -156
  55. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +0 -7
  56. package/dist/components/ReasoningBlock/ReasoningBlock.js +0 -61
  57. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +0 -1
  58. package/dist/components/SideDrawer/SideDrawer.css +0 -112
  59. package/dist/components/SideDrawer/SideDrawer.d.ts +0 -22
  60. package/dist/components/SideDrawer/SideDrawer.js +0 -17
  61. package/dist/components/SideDrawer/SideDrawer.js.map +0 -1
  62. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +0 -4
  63. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +0 -144
  64. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +0 -1
  65. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +0 -889
  66. package/dist/components/layouts/fullpage.css +0 -628
  67. package/dist/helpers/artifactPanel.d.ts +0 -6
  68. package/dist/helpers/artifactPanel.js +0 -42
  69. package/dist/helpers/artifactPanel.js.map +0 -1
  70. package/dist/helpers/chatScroll.d.ts +0 -12
  71. package/dist/helpers/chatScroll.js +0 -14
  72. package/dist/helpers/chatScroll.js.map +0 -1
  73. package/dist/helpers/conversationHistory.d.ts +0 -16
  74. package/dist/helpers/conversationHistory.js +0 -89
  75. package/dist/helpers/conversationHistory.js.map +0 -1
  76. package/dist/helpers/conversationTitle.d.ts +0 -8
  77. package/dist/helpers/conversationTitle.js +0 -27
  78. package/dist/helpers/conversationTitle.js.map +0 -1
  79. package/dist/helpers/enhanceBubbleCodeBlocks.d.ts +0 -5
  80. package/dist/helpers/enhanceBubbleCodeBlocks.js +0 -97
  81. package/dist/helpers/enhanceBubbleCodeBlocks.js.map +0 -1
  82. package/dist/helpers/highlightMatches.d.ts +0 -2
  83. package/dist/helpers/highlightMatches.js +0 -54
  84. package/dist/helpers/highlightMatches.js.map +0 -1
  85. package/dist/helpers/positionPopover.d.ts +0 -3
  86. package/dist/helpers/positionPopover.js +0 -22
  87. package/dist/helpers/positionPopover.js.map +0 -1
  88. package/dist/helpers/prism.d.ts +0 -16
  89. package/dist/helpers/prism.js +0 -78
  90. package/dist/helpers/prism.js.map +0 -1
  91. package/dist/helpers/reasoning.d.ts +0 -7
  92. package/dist/helpers/reasoning.js +0 -43
  93. package/dist/helpers/reasoning.js.map +0 -1
  94. package/dist/helpers/relativeTime.d.ts +0 -3
  95. package/dist/helpers/relativeTime.js +0 -56
  96. package/dist/helpers/relativeTime.js.map +0 -1
  97. package/dist/helpers/sourcesCount.d.ts +0 -2
  98. package/dist/helpers/sourcesCount.js +0 -22
  99. package/dist/helpers/sourcesCount.js.map +0 -1
  100. package/dist/helpers/tts/muteSpeaker.d.ts +0 -13
  101. package/dist/helpers/tts/muteSpeaker.js +0 -26
  102. package/dist/helpers/tts/muteSpeaker.js.map +0 -1
  103. package/dist/helpers/usePressTooltip.d.ts +0 -18
  104. package/dist/helpers/usePressTooltip.js +0 -38
  105. package/dist/helpers/usePressTooltip.js.map +0 -1
  106. package/dist/icons/FacebookIcon.d.ts +0 -3
  107. package/dist/icons/FacebookIcon.js +0 -6
  108. package/dist/icons/FacebookIcon.js.map +0 -1
  109. package/dist/icons/LinkedinIcon.d.ts +0 -3
  110. package/dist/icons/LinkedinIcon.js +0 -6
  111. package/dist/icons/LinkedinIcon.js.map +0 -1
  112. package/dist/icons/MemoriIcon.d.ts +0 -3
  113. package/dist/icons/MemoriIcon.js +0 -8
  114. package/dist/icons/MemoriIcon.js.map +0 -1
  115. package/dist/icons/TelegramIcon.d.ts +0 -3
  116. package/dist/icons/TelegramIcon.js +0 -6
  117. package/dist/icons/TelegramIcon.js.map +0 -1
  118. package/dist/icons/TwitterIcon.d.ts +0 -3
  119. package/dist/icons/TwitterIcon.js +0 -6
  120. package/dist/icons/TwitterIcon.js.map +0 -1
  121. package/dist/icons/WhatsappIcon.d.ts +0 -3
  122. package/dist/icons/WhatsappIcon.js +0 -6
  123. package/dist/icons/WhatsappIcon.js.map +0 -1
  124. package/dist/icons/artifacts/DocumentIcon.d.ts +0 -3
  125. package/dist/icons/artifacts/DocumentIcon.js +0 -6
  126. package/dist/icons/artifacts/DocumentIcon.js.map +0 -1
  127. package/dist/icons/artifacts/HtmlIcon.d.ts +0 -3
  128. package/dist/icons/artifacts/HtmlIcon.js +0 -6
  129. package/dist/icons/artifacts/HtmlIcon.js.map +0 -1
  130. package/dist/icons/artifacts/JavascriptIcon.d.ts +0 -3
  131. package/dist/icons/artifacts/JavascriptIcon.js +0 -6
  132. package/dist/icons/artifacts/JavascriptIcon.js.map +0 -1
  133. package/dist/icons/artifacts/MarkdownIcon.d.ts +0 -3
  134. package/dist/icons/artifacts/MarkdownIcon.js +0 -6
  135. package/dist/icons/artifacts/MarkdownIcon.js.map +0 -1
  136. package/dist/icons/artifacts/PythonIcon.d.ts +0 -3
  137. package/dist/icons/artifacts/PythonIcon.js +0 -6
  138. package/dist/icons/artifacts/PythonIcon.js.map +0 -1
  139. package/dist/icons/artifacts/SvgIcon.d.ts +0 -3
  140. package/dist/icons/artifacts/SvgIcon.js +0 -6
  141. package/dist/icons/artifacts/SvgIcon.js.map +0 -1
  142. package/dist/icons/artifacts/XmlIcon.d.ts +0 -3
  143. package/dist/icons/artifacts/XmlIcon.js +0 -6
  144. package/dist/icons/artifacts/XmlIcon.js.map +0 -1
  145. package/dist/icons/artifacts/cssIcon.d.ts +0 -3
  146. package/dist/icons/artifacts/cssIcon.js +0 -6
  147. package/dist/icons/artifacts/cssIcon.js.map +0 -1
  148. package/dist/styles/motion.css +0 -25
  149. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +0 -78
  150. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +0 -39
  151. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +0 -40
  152. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +0 -1
  153. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +0 -7
  154. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +0 -28
  155. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +0 -1
  156. package/esm/components/DrawerFooter/DrawerFooter.css +0 -62
  157. package/esm/components/DrawerFooter/DrawerFooter.d.ts +0 -12
  158. package/esm/components/DrawerFooter/DrawerFooter.js +0 -8
  159. package/esm/components/DrawerFooter/DrawerFooter.js.map +0 -1
  160. package/esm/components/IconButton/IconButton.css +0 -135
  161. package/esm/components/IconButton/IconButton.d.ts +0 -9
  162. package/esm/components/IconButton/IconButton.js +0 -33
  163. package/esm/components/IconButton/IconButton.js.map +0 -1
  164. package/esm/components/LoginModal/LoginModal.css +0 -270
  165. package/esm/components/LoginModal/LoginModal.d.ts +0 -19
  166. package/esm/components/LoginModal/LoginModal.js +0 -352
  167. package/esm/components/LoginModal/LoginModal.js.map +0 -1
  168. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +0 -540
  169. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +0 -65
  170. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +0 -251
  171. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +0 -1
  172. package/esm/components/PositionPopover/PositionPopover.css +0 -218
  173. package/esm/components/PositionPopover/PositionPopover.d.ts +0 -22
  174. package/esm/components/PositionPopover/PositionPopover.js +0 -203
  175. package/esm/components/PositionPopover/PositionPopover.js.map +0 -1
  176. package/esm/components/ReasoningBlock/ReasoningBlock.css +0 -156
  177. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +0 -7
  178. package/esm/components/ReasoningBlock/ReasoningBlock.js +0 -58
  179. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +0 -1
  180. package/esm/components/SideDrawer/SideDrawer.css +0 -112
  181. package/esm/components/SideDrawer/SideDrawer.d.ts +0 -22
  182. package/esm/components/SideDrawer/SideDrawer.js +0 -12
  183. package/esm/components/SideDrawer/SideDrawer.js.map +0 -1
  184. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +0 -4
  185. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +0 -141
  186. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +0 -1
  187. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +0 -889
  188. package/esm/components/layouts/fullpage.css +0 -628
  189. package/esm/helpers/artifactPanel.d.ts +0 -6
  190. package/esm/helpers/artifactPanel.js +0 -37
  191. package/esm/helpers/artifactPanel.js.map +0 -1
  192. package/esm/helpers/chatScroll.d.ts +0 -12
  193. package/esm/helpers/chatScroll.js +0 -9
  194. package/esm/helpers/chatScroll.js.map +0 -1
  195. package/esm/helpers/conversationHistory.d.ts +0 -16
  196. package/esm/helpers/conversationHistory.js +0 -82
  197. package/esm/helpers/conversationHistory.js.map +0 -1
  198. package/esm/helpers/conversationTitle.d.ts +0 -8
  199. package/esm/helpers/conversationTitle.js +0 -23
  200. package/esm/helpers/conversationTitle.js.map +0 -1
  201. package/esm/helpers/enhanceBubbleCodeBlocks.d.ts +0 -5
  202. package/esm/helpers/enhanceBubbleCodeBlocks.js +0 -94
  203. package/esm/helpers/enhanceBubbleCodeBlocks.js.map +0 -1
  204. package/esm/helpers/highlightMatches.d.ts +0 -2
  205. package/esm/helpers/highlightMatches.js +0 -49
  206. package/esm/helpers/highlightMatches.js.map +0 -1
  207. package/esm/helpers/positionPopover.d.ts +0 -3
  208. package/esm/helpers/positionPopover.js +0 -17
  209. package/esm/helpers/positionPopover.js.map +0 -1
  210. package/esm/helpers/prism.d.ts +0 -16
  211. package/esm/helpers/prism.js +0 -74
  212. package/esm/helpers/prism.js.map +0 -1
  213. package/esm/helpers/reasoning.d.ts +0 -7
  214. package/esm/helpers/reasoning.js +0 -39
  215. package/esm/helpers/reasoning.js.map +0 -1
  216. package/esm/helpers/relativeTime.d.ts +0 -3
  217. package/esm/helpers/relativeTime.js +0 -50
  218. package/esm/helpers/relativeTime.js.map +0 -1
  219. package/esm/helpers/sourcesCount.d.ts +0 -2
  220. package/esm/helpers/sourcesCount.js +0 -18
  221. package/esm/helpers/sourcesCount.js.map +0 -1
  222. package/esm/helpers/tts/muteSpeaker.d.ts +0 -13
  223. package/esm/helpers/tts/muteSpeaker.js +0 -21
  224. package/esm/helpers/tts/muteSpeaker.js.map +0 -1
  225. package/esm/helpers/usePressTooltip.d.ts +0 -18
  226. package/esm/helpers/usePressTooltip.js +0 -35
  227. package/esm/helpers/usePressTooltip.js.map +0 -1
  228. package/esm/icons/FacebookIcon.d.ts +0 -3
  229. package/esm/icons/FacebookIcon.js +0 -4
  230. package/esm/icons/FacebookIcon.js.map +0 -1
  231. package/esm/icons/LinkedinIcon.d.ts +0 -3
  232. package/esm/icons/LinkedinIcon.js +0 -4
  233. package/esm/icons/LinkedinIcon.js.map +0 -1
  234. package/esm/icons/MemoriIcon.d.ts +0 -3
  235. package/esm/icons/MemoriIcon.js +0 -6
  236. package/esm/icons/MemoriIcon.js.map +0 -1
  237. package/esm/icons/TelegramIcon.d.ts +0 -3
  238. package/esm/icons/TelegramIcon.js +0 -4
  239. package/esm/icons/TelegramIcon.js.map +0 -1
  240. package/esm/icons/TwitterIcon.d.ts +0 -3
  241. package/esm/icons/TwitterIcon.js +0 -4
  242. package/esm/icons/TwitterIcon.js.map +0 -1
  243. package/esm/icons/WhatsappIcon.d.ts +0 -3
  244. package/esm/icons/WhatsappIcon.js +0 -4
  245. package/esm/icons/WhatsappIcon.js.map +0 -1
  246. package/esm/icons/artifacts/DocumentIcon.d.ts +0 -3
  247. package/esm/icons/artifacts/DocumentIcon.js +0 -4
  248. package/esm/icons/artifacts/DocumentIcon.js.map +0 -1
  249. package/esm/icons/artifacts/HtmlIcon.d.ts +0 -3
  250. package/esm/icons/artifacts/HtmlIcon.js +0 -4
  251. package/esm/icons/artifacts/HtmlIcon.js.map +0 -1
  252. package/esm/icons/artifacts/JavascriptIcon.d.ts +0 -3
  253. package/esm/icons/artifacts/JavascriptIcon.js +0 -4
  254. package/esm/icons/artifacts/JavascriptIcon.js.map +0 -1
  255. package/esm/icons/artifacts/MarkdownIcon.d.ts +0 -3
  256. package/esm/icons/artifacts/MarkdownIcon.js +0 -4
  257. package/esm/icons/artifacts/MarkdownIcon.js.map +0 -1
  258. package/esm/icons/artifacts/PythonIcon.d.ts +0 -3
  259. package/esm/icons/artifacts/PythonIcon.js +0 -4
  260. package/esm/icons/artifacts/PythonIcon.js.map +0 -1
  261. package/esm/icons/artifacts/SvgIcon.d.ts +0 -3
  262. package/esm/icons/artifacts/SvgIcon.js +0 -4
  263. package/esm/icons/artifacts/SvgIcon.js.map +0 -1
  264. package/esm/icons/artifacts/XmlIcon.d.ts +0 -3
  265. package/esm/icons/artifacts/XmlIcon.js +0 -4
  266. package/esm/icons/artifacts/XmlIcon.js.map +0 -1
  267. package/esm/icons/artifacts/cssIcon.d.ts +0 -3
  268. package/esm/icons/artifacts/cssIcon.js +0 -4
  269. package/esm/icons/artifacts/cssIcon.js.map +0 -1
  270. package/esm/styles/motion.css +0 -25
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
 
2
2
 
3
+ ## [8.46.1](https://github.com/memori-ai/memori-react/compare/v8.46.0...v8.46.1) (2026-10-05)
4
+
5
+
6
+ ### Features
7
+
8
+ * **chat:** enhance chat UI with new styles and markdown rendering improvements ([30e9aac](https://github.com/memori-ai/memori-react/commit/30e9aacf6f4dfc79b5c102ac4973893e383280ee))
9
+
10
+
11
+ ### Maintenance
12
+
13
+ * update dompurify to version 3.4.16 ([c0b4aa5](https://github.com/memori-ai/memori-react/commit/c0b4aa568b0f29a11afdc2cf36efe9215205ea9b))
14
+
15
+ ## [8.46.0](https://github.com/memori-ai/memori-react/compare/v8.45.6...v8.46.0) (2026-09-29)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **nats:** avoid re-applying stale dialog state on tab resume ([7336d45](https://github.com/memori-ai/memori-react/commit/7336d4517ca0b9e68d348188b3903005bd0356fc))
21
+
3
22
  ## [8.45.6](https://github.com/memori-ai/memori-react/compare/v8.45.5...v8.45.6) (2026-09-28)
4
23
 
5
24
 
@@ -126,6 +126,100 @@
126
126
  margin-bottom: 0;
127
127
  }
128
128
 
129
+ .memori-chat--bubble strong,
130
+ .memori-chat--bubble b {
131
+ font-weight: 700;
132
+ }
133
+
134
+ .memori-chat--bubble em,
135
+ .memori-chat--bubble i {
136
+ font-style: italic;
137
+ }
138
+
139
+ .memori-chat--bubble h1,
140
+ .memori-chat--bubble h2,
141
+ .memori-chat--bubble h3,
142
+ .memori-chat--bubble h4,
143
+ .memori-chat--bubble h5,
144
+ .memori-chat--bubble h6 {
145
+ margin: 0.75em 0 0.35em;
146
+ color: inherit;
147
+ font-weight: 700;
148
+ line-height: 1.3;
149
+ }
150
+
151
+ .memori-chat--bubble h1 {
152
+ font-size: 1.25em;
153
+ }
154
+
155
+ .memori-chat--bubble h2 {
156
+ font-size: 1.15em;
157
+ }
158
+
159
+ .memori-chat--bubble h3 {
160
+ font-size: 1.05em;
161
+ }
162
+
163
+ .memori-chat--bubble h1:first-child,
164
+ .memori-chat--bubble h2:first-child,
165
+ .memori-chat--bubble h3:first-child,
166
+ .memori-chat--bubble h4:first-child,
167
+ .memori-chat--bubble h5:first-child,
168
+ .memori-chat--bubble h6:first-child {
169
+ margin-top: 0;
170
+ }
171
+
172
+ .memori-chat--bubble blockquote {
173
+ padding-left: 0.75em;
174
+ border-left: 3px solid rgba(20, 21, 21, 0.25);
175
+ margin: 0.65em 0;
176
+ }
177
+
178
+ .memori-chat--bubble.memori-chat--user-bubble blockquote {
179
+ border-left-color: rgba(255, 255, 255, 0.55);
180
+ }
181
+
182
+ .memori-chat--bubble code {
183
+ padding: 0.1em 0.35em;
184
+ border-radius: 4px;
185
+ background: rgba(20, 21, 21, 0.06);
186
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
187
+ font-size: 0.9em;
188
+ }
189
+
190
+ .memori-chat--bubble pre {
191
+ max-width: 100%;
192
+ box-sizing: border-box;
193
+ padding: 10px 12px;
194
+ border-radius: 8px;
195
+ margin: 0.65em 0;
196
+ background: #161b22;
197
+ color: #e6edf3;
198
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
199
+ font-size: 0.85em;
200
+ line-height: 1.45;
201
+ overflow-x: auto;
202
+ white-space: pre-wrap;
203
+ word-break: break-word;
204
+ }
205
+
206
+ .memori-chat--bubble pre code {
207
+ padding: 0;
208
+ background: transparent;
209
+ color: inherit;
210
+ font-size: inherit;
211
+ }
212
+
213
+ .memori-chat--bubble.memori-chat--user-bubble code {
214
+ background: rgba(255, 255, 255, 0.18);
215
+ color: inherit;
216
+ }
217
+
218
+ .memori-chat--bubble.memori-chat--user-bubble pre code {
219
+ background: transparent;
220
+ color: inherit;
221
+ }
222
+
129
223
  .memori-chat--bubble ul,
130
224
  .memori-chat--bubble ol {
131
225
  padding-left: 1rem;
@@ -154,15 +248,6 @@
154
248
  color: var(--memori-primary-text);
155
249
  }
156
250
 
157
- .memori-chat--bubble h1,
158
- .memori-chat--bubble h2,
159
- .memori-chat--bubble h3,
160
- .memori-chat--bubble h4,
161
- .memori-chat--bubble h5,
162
- .memori-chat--bubble h6 {
163
- color: inherit;
164
- }
165
-
166
251
  @media (max-width: 600px) {
167
252
  .memori-chat--bubble p {
168
253
  font-size: 12px;
@@ -6,7 +6,8 @@
6
6
  padding: 0;
7
7
  padding-bottom: 1.5rem;
8
8
  margin: 0;
9
- /* background: linear-gradient(to top, rgba(255, 255, 255, 0.8) 0%, transparent 100%); */
9
+ /* Solid surface so messages scrolling under the sticky composer stay hidden. */
10
+ background-color: var(--memori-chat-inputs-surface, #fff);
10
11
  }
11
12
 
12
13
  .memori-chat-inputs {
@@ -148,8 +149,8 @@
148
149
  padding: 4px 12px;
149
150
  border-radius: 10px;
150
151
  margin-top: 2px;
151
- background-color: var(--memori-inner-bg, transparent);
152
- color: rgba(0, 0, 0, 0.6);
152
+ background-color: var(--memori-chat-inputs-surface, #fff);
153
+ color: var(--memori-chat-inputs-disclaimer, rgba(0, 0, 0, 0.6));
153
154
  font-size: 12px;
154
155
  line-height: 1.5;
155
156
  text-align: center;
@@ -307,14 +308,15 @@
307
308
  justify-content: center;
308
309
  padding: 8px 60px;
309
310
  margin-top: -4px;
310
- color: rgba(0, 0, 0, 0.6);
311
+ background-color: var(--memori-chat-inputs-surface, #fff);
312
+ color: var(--memori-chat-inputs-disclaimer, rgba(0, 0, 0, 0.6));
311
313
  font-size: 12px;
312
314
  line-height: 1.5;
313
315
  text-align: center;
314
316
  }
315
317
 
316
318
  .memori-chat-inputs--disclaimer a {
317
- color: rgba(0, 0, 0, 0.8);
319
+ color: var(--memori-chat-inputs-disclaimer-link, rgba(0, 0, 0, 0.8));
318
320
  cursor: pointer;
319
321
  text-decoration: underline;
320
322
  }
@@ -24,6 +24,33 @@
24
24
  pointer-events: none;
25
25
  }
26
26
 
27
+ /*
28
+ * Side panel only covers the right half, so the chat column keeps wheel/touch scroll.
29
+ * 50% matches widthLg in ArtifactDrawer.tsx; the Drawer sets its width vars on the panel, not here.
30
+ */
31
+ @media (min-width: 1025px) {
32
+ .memori-artifact-panel-drawer .memori-drawer--container {
33
+ left: auto;
34
+ overflow: hidden;
35
+ width: 50%;
36
+ pointer-events: none;
37
+ }
38
+
39
+ .memori-artifact-panel-drawer .memori-drawer--container-scrollable {
40
+ width: 100%;
41
+ height: 100%;
42
+ min-height: 0;
43
+ justify-content: flex-end;
44
+ pointer-events: none;
45
+ }
46
+
47
+ .memori-artifact-panel-drawer .memori-drawer--panel {
48
+ width: 100%;
49
+ max-width: none;
50
+ pointer-events: auto;
51
+ }
52
+ }
53
+
27
54
  /* Main Drawer Container (Mobile Only) */
28
55
  .memori-artifact-drawer {
29
56
  position: relative;
@@ -87,6 +87,7 @@ function readCorrelationID(response) {
87
87
  const value = response.correlationID;
88
88
  return typeof value === 'string' && value.length > 0 ? value : undefined;
89
89
  }
90
+ const MAX_WAIT_FOR_PREVIOUS_RETRIES = 30;
90
91
  const typeMessage = (message, waitForPrevious = true, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false) => {
91
92
  const e = new CustomEvent('MemoriTextEntered', {
92
93
  detail: {
@@ -502,7 +503,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
502
503
  if (response.resultCode === 0 && correlationID) {
503
504
  registerPendingEnterText(correlationID, {
504
505
  msg,
505
- stateBeforeRequest: (0, dialogStateCatchUp_1.dialogStateFingerprint)(currentDialogState),
506
+ stateBeforeRequest: engineStateFingerprintRef.current,
506
507
  text,
507
508
  media,
508
509
  translate,
@@ -556,7 +557,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
556
557
  setMemoriTyping(false);
557
558
  }
558
559
  };
559
- const translateDialogState = async (state, userLang, msg, avoidPushingMessage = false) => {
560
+ const translateDialogState = async (state, userLang, msg, avoidPushingMessage = false, engineState = state) => {
560
561
  var _a, _b, _c, _d, _f, _g;
561
562
  const emission = (_a = state === null || state === void 0 ? void 0 : state.emission) !== null && _a !== void 0 ? _a : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
562
563
  let translatedState = { ...state };
@@ -652,7 +653,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
652
653
  };
653
654
  }
654
655
  }
655
- setCurrentDialogState(translatedState);
656
+ setCurrentDialogState(translatedState, engineState);
656
657
  if (!avoidPushingMessage && translatedMsg) {
657
658
  pushMessage(translatedMsg);
658
659
  }
@@ -730,8 +731,10 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
730
731
  setSessionIdState(id);
731
732
  };
732
733
  const [currentDialogState, _setCurrentDialogState] = (0, react_1.useState)();
733
- const setCurrentDialogState = (state) => {
734
+ const engineStateFingerprintRef = (0, react_1.useRef)('');
735
+ const setCurrentDialogState = (state, engineState = state) => {
734
736
  var _a, _b;
737
+ engineStateFingerprintRef.current = (0, dialogStateCatchUp_1.dialogStateFingerprint)(engineState);
735
738
  _setCurrentDialogState(state);
736
739
  if (onStateChange) {
737
740
  onStateChange(state);
@@ -1286,8 +1289,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1286
1289
  if (userLang.toLowerCase() !== language.toLowerCase() &&
1287
1290
  emission &&
1288
1291
  isMultilanguageEnabled) {
1289
- currentState.emission = emission;
1290
- translateDialogState(currentState, userLang, msg).then(ts => {
1292
+ translateDialogState({ ...currentState, emission }, userLang, msg, false, currentState).then(ts => {
1291
1293
  const text = ts.translatedEmission || ts.emission;
1292
1294
  if (text && shouldPlayAudio(text)) {
1293
1295
  handleSpeak(text);
@@ -1298,7 +1300,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1298
1300
  setCurrentDialogState({
1299
1301
  ...currentState,
1300
1302
  emission,
1301
- });
1303
+ }, currentState);
1302
1304
  if (emission) {
1303
1305
  pushMessage({
1304
1306
  text: emission,
@@ -1421,7 +1423,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1421
1423
  reject(new Error('NATS enter-text response timeout'));
1422
1424
  }, timeoutMs);
1423
1425
  registerPendingEnterText(correlationID, {
1424
- stateBeforeRequest: (0, dialogStateCatchUp_1.dialogStateFingerprint)(currentDialogState),
1426
+ stateBeforeRequest: engineStateFingerprintRef.current,
1425
1427
  waitForResponse: {
1426
1428
  resolve: event => {
1427
1429
  clearTimeout(timeoutId);
@@ -1434,7 +1436,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1434
1436
  timeoutId,
1435
1437
  },
1436
1438
  });
1437
- }), [registerPendingEnterText, clearEnterTextPending, currentDialogState]);
1439
+ }), [registerPendingEnterText, clearEnterTextPending]);
1438
1440
  const catchUpPendingEnterText = (0, react_1.useCallback)(async () => {
1439
1441
  if (!sessionId || pendingEnterTextRef.current.size === 0)
1440
1442
  return;
@@ -1455,7 +1457,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1455
1457
  });
1456
1458
  return;
1457
1459
  }
1458
- if (!(0, dialogStateCatchUp_1.isEnterTextCatchUpReady)(pending.stateBeforeRequest, currentState)) {
1460
+ if (!(0, dialogStateCatchUp_1.isEnterTextCatchUpReady)(pending.stateBeforeRequest, currentState) ||
1461
+ (0, dialogStateCatchUp_1.dialogStateFingerprint)(currentState) ===
1462
+ engineStateFingerprintRef.current) {
1459
1463
  console.info('[NATS] catch-up: pending turn has not completed yet');
1460
1464
  return;
1461
1465
  }
@@ -1585,6 +1589,15 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1585
1589
  '--memori-inner-bg': `rgba(${integrationConfig.innerBgColor === 'dark'
1586
1590
  ? '0, 0, 0'
1587
1591
  : '255, 255, 255'}, ${(_y = integrationConfig.innerBgAlpha) !== null && _y !== void 0 ? _y : 0.4})`,
1592
+ '--memori-chat-inputs-surface': integrationConfig.innerBgColor === 'dark'
1593
+ ? '#141414'
1594
+ : '#ffffff',
1595
+ '--memori-chat-inputs-disclaimer': integrationConfig.innerBgColor === 'dark'
1596
+ ? 'rgba(255, 255, 255, 0.72)'
1597
+ : 'rgba(0, 0, 0, 0.6)',
1598
+ '--memori-chat-inputs-disclaimer-link': integrationConfig.innerBgColor === 'dark'
1599
+ ? 'rgba(255, 255, 255, 0.88)'
1600
+ : 'rgba(0, 0, 0, 0.8)',
1588
1601
  '--memori-inner-content-pad': '1.5rem',
1589
1602
  '--memori-nav-bg-image': 'none',
1590
1603
  '--memori-nav-bg': `rgba(${integrationConfig.innerBgColor === 'dark'
@@ -1650,7 +1663,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1650
1663
  ttsStop();
1651
1664
  sendMessage(text, undefined, undefined, false, translatedText);
1652
1665
  };
1653
- const memoriTextEnteredHandler = (0, react_1.useCallback)((e) => {
1666
+ const memoriTextEnteredHandler = (e, retries = 0) => {
1654
1667
  if (disableTextEnteredEvents) {
1655
1668
  return;
1656
1669
  }
@@ -1658,9 +1671,10 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1658
1671
  if (text) {
1659
1672
  if (waitForPrevious &&
1660
1673
  !speakerMuted &&
1661
- (memoriSpeaking || !!memoriTyping)) {
1674
+ (memoriSpeaking || pendingEnterTextRef.current.size > 0) &&
1675
+ retries < MAX_WAIT_FOR_PREVIOUS_RETRIES) {
1662
1676
  setTimeout(() => {
1663
- memoriTextEnteredHandler(e);
1677
+ memoriTextEnteredHandlerRef.current(e, retries + 1);
1664
1678
  }, 1000);
1665
1679
  }
1666
1680
  else {
@@ -1668,25 +1682,18 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1668
1682
  sendMessage(text, undefined, undefined, undefined, undefined, hidden, typingText, useLoaderTextAsMsg, hasBatchQueued);
1669
1683
  }
1670
1684
  }
1671
- }, [
1672
- sessionId,
1673
- isPlayingAudio,
1674
- memoriTyping,
1675
- userLang,
1676
- disableTextEnteredEvents,
1677
- speakerMuted,
1678
- ]);
1685
+ };
1686
+ const memoriTextEnteredHandlerRef = (0, react_1.useRef)(memoriTextEnteredHandler);
1687
+ memoriTextEnteredHandlerRef.current = memoriTextEnteredHandler;
1679
1688
  (0, react_1.useEffect)(() => {
1680
- if (!disableTextEnteredEvents) {
1681
- document.addEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1682
- }
1683
- else {
1684
- document.removeEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1685
- }
1689
+ if (disableTextEnteredEvents)
1690
+ return;
1691
+ const listener = (e) => memoriTextEnteredHandlerRef.current(e);
1692
+ document.addEventListener('MemoriTextEntered', listener);
1686
1693
  return () => {
1687
- document.removeEventListener('MemoriTextEntered', memoriTextEnteredHandler);
1694
+ document.removeEventListener('MemoriTextEntered', listener);
1688
1695
  };
1689
- }, [sessionId, userLang, disableTextEnteredEvents]);
1696
+ }, [disableTextEnteredEvents]);
1690
1697
  const onClickStart = (0, react_1.useCallback)(async (session, initialSessionExpired = false, chatLog, targetSessionID) => {
1691
1698
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
1692
1699
  const sessionID = chatLog ? undefined : (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;