@memori.ai/memori-react 8.42.0 → 8.44.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 (164) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +1 -1
  3. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +1 -1
  4. package/dist/components/Chat/Chat.js +1 -1
  5. package/dist/components/Chat/Chat.js.map +1 -1
  6. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +6 -1
  7. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  8. package/dist/components/ChatInputs/ChatInputs.js +2 -2
  9. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  10. package/dist/components/IconButton/IconButton.css +144 -0
  11. package/dist/components/IconButton/IconButton.d.ts +9 -0
  12. package/dist/components/IconButton/IconButton.js +36 -0
  13. package/dist/components/IconButton/IconButton.js.map +1 -0
  14. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +1 -0
  15. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  16. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +204 -59
  17. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  18. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +1 -1
  19. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  20. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  21. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +76 -16
  22. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  23. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  24. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  25. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  26. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  27. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  28. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  29. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +29 -7
  30. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  31. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +8 -6
  32. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  33. package/dist/components/PositionPopover/PositionPopover.d.ts +2 -0
  34. package/dist/components/PositionPopover/PositionPopover.js +19 -11
  35. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  36. package/dist/components/UploadButton/UploadButton.d.ts +1 -0
  37. package/dist/components/UploadButton/UploadButton.js +12 -18
  38. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  39. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  40. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +7 -139
  41. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  42. package/dist/components/icons/Print.js +1 -1
  43. package/dist/components/icons/Print.js.map +1 -1
  44. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +24 -3
  45. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  46. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +137 -55
  47. package/dist/components/layouts/fullpage.css +165 -68
  48. package/dist/helpers/constants.d.ts +1 -0
  49. package/dist/helpers/constants.js +24 -1
  50. package/dist/helpers/constants.js.map +1 -1
  51. package/dist/helpers/convertDocument.d.ts +1 -0
  52. package/dist/helpers/convertDocument.js +24 -0
  53. package/dist/helpers/convertDocument.js.map +1 -0
  54. package/dist/helpers/message.js +3 -0
  55. package/dist/helpers/message.js.map +1 -1
  56. package/dist/helpers/positionPopover.d.ts +1 -1
  57. package/dist/helpers/positionPopover.js +2 -2
  58. package/dist/helpers/positionPopover.js.map +1 -1
  59. package/dist/helpers/tts/muteSpeaker.d.ts +13 -0
  60. package/dist/helpers/tts/muteSpeaker.js +26 -0
  61. package/dist/helpers/tts/muteSpeaker.js.map +1 -0
  62. package/dist/locales/de.json +3 -0
  63. package/dist/locales/en.json +3 -0
  64. package/dist/locales/es.json +3 -0
  65. package/dist/locales/fr.json +3 -0
  66. package/dist/locales/it.json +3 -0
  67. package/dist/version.d.ts +1 -1
  68. package/dist/version.js +1 -1
  69. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +1 -1
  70. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +1 -1
  71. package/esm/components/Chat/Chat.js +1 -1
  72. package/esm/components/Chat/Chat.js.map +1 -1
  73. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +6 -1
  74. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  75. package/esm/components/ChatInputs/ChatInputs.js +2 -2
  76. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  77. package/esm/components/IconButton/IconButton.css +144 -0
  78. package/esm/components/IconButton/IconButton.d.ts +9 -0
  79. package/esm/components/IconButton/IconButton.js +33 -0
  80. package/esm/components/IconButton/IconButton.js.map +1 -0
  81. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +1 -0
  82. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  83. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +205 -60
  84. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  85. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +2 -2
  86. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  87. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  88. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +77 -17
  89. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  90. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  91. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  92. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  93. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  94. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  95. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  96. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +29 -7
  97. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  98. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +8 -6
  99. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  100. package/esm/components/PositionPopover/PositionPopover.d.ts +2 -0
  101. package/esm/components/PositionPopover/PositionPopover.js +20 -12
  102. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  103. package/esm/components/UploadButton/UploadButton.d.ts +1 -0
  104. package/esm/components/UploadButton/UploadButton.js +13 -19
  105. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  106. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  107. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +8 -140
  108. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  109. package/esm/components/icons/Print.js +1 -1
  110. package/esm/components/icons/Print.js.map +1 -1
  111. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +24 -3
  112. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  113. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +137 -55
  114. package/esm/components/layouts/fullpage.css +165 -68
  115. package/esm/helpers/constants.d.ts +1 -0
  116. package/esm/helpers/constants.js +23 -0
  117. package/esm/helpers/constants.js.map +1 -1
  118. package/esm/helpers/convertDocument.d.ts +1 -0
  119. package/esm/helpers/convertDocument.js +20 -0
  120. package/esm/helpers/convertDocument.js.map +1 -0
  121. package/esm/helpers/message.js +3 -0
  122. package/esm/helpers/message.js.map +1 -1
  123. package/esm/helpers/positionPopover.d.ts +1 -1
  124. package/esm/helpers/positionPopover.js +2 -2
  125. package/esm/helpers/positionPopover.js.map +1 -1
  126. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  127. package/esm/helpers/tts/muteSpeaker.js +21 -0
  128. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  129. package/esm/locales/de.json +3 -0
  130. package/esm/locales/en.json +3 -0
  131. package/esm/locales/es.json +3 -0
  132. package/esm/locales/fr.json +3 -0
  133. package/esm/locales/it.json +3 -0
  134. package/esm/version.d.ts +1 -1
  135. package/esm/version.js +1 -1
  136. package/package.json +2 -2
  137. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +1 -1
  138. package/src/components/Chat/Chat.tsx +1 -0
  139. package/src/components/ChatInputs/ChatInputs.tsx +3 -0
  140. package/src/components/FilePreview/FilePreview.stories.tsx +0 -3
  141. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +1 -0
  142. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +324 -133
  143. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +2 -2
  144. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +122 -24
  145. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +20 -1
  146. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +1 -0
  147. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +19 -13
  148. package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +85 -0
  149. package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +173 -0
  150. package/src/components/UploadButton/UploadButton.stories.tsx +2 -2
  151. package/src/components/UploadButton/UploadButton.tsx +19 -19
  152. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +13 -187
  153. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +2 -2
  154. package/src/components/icons/Print.tsx +6 -2
  155. package/src/helpers/constants.ts +24 -0
  156. package/src/helpers/convertDocument.test.ts +67 -0
  157. package/src/helpers/convertDocument.ts +35 -0
  158. package/src/helpers/message.ts +15 -0
  159. package/src/locales/de.json +3 -0
  160. package/src/locales/en.json +3 -0
  161. package/src/locales/es.json +3 -0
  162. package/src/locales/fr.json +3 -0
  163. package/src/locales/it.json +3 -0
  164. package/src/version.ts +1 -1
@@ -109,30 +109,37 @@
109
109
 
110
110
  /* ============================================
111
111
  CLOSE BUTTON
112
+ Matches HiddenChat header close (bordered icon control)
112
113
  ============================================ */
113
114
 
114
- .memori-website_assistant--close-button-wrapper {
115
- position: relative;
116
- z-index: 1001;
117
- flex-shrink: 0;
118
- transition: transform 0.2s ease;
115
+ .memori-website_assistant--close-button {
116
+ display: inline-flex;
117
+ width: 2.5rem;
118
+ min-width: 2.5rem;
119
+ height: 2.5rem;
120
+ min-height: 2.5rem;
121
+ align-items: center;
122
+ justify-content: center;
123
+ padding: 0;
124
+ border: var(--memori-border, 1px) solid color-mix(in srgb, var(--memori-text-color, #111827) 18%, transparent);
125
+ border-radius: var(--memori-radius-box, 0.5rem);
126
+ margin: 0;
127
+ background: transparent;
128
+ color: var(--memori-text-color, #111827);
129
+ cursor: pointer;
130
+ line-height: 1;
131
+ transition: background-color 0.15s ease, border-color 0.15s ease;
119
132
  }
120
133
 
121
- .memori-website_assistant--close-button-wrapper:hover {
122
- transform: scale(1.1);
134
+ .memori-website_assistant--close-button:hover {
135
+ background: color-mix(in srgb, var(--memori-text-color, #111827) 6%, transparent);
123
136
  }
124
137
 
125
- .memori-website_assistant--close-button-wrapper button.memori-website_assistant--close-button {
126
- width: 44px !important;
127
- min-width: 44px !important;
128
- height: 44px !important;
129
- min-height: 44px !important;
130
- padding: 0.75rem;
131
- border: none;
132
- background-color: var(--memori-main-background);
133
- box-shadow: none;
134
- color: var(--memori-text-color);
135
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
138
+ .memori-website_assistant--close-button .memori-icon-close {
139
+ width: 1.125rem;
140
+ height: 1.125rem;
141
+ fill: none;
142
+ stroke: currentColor;
136
143
  }
137
144
 
138
145
  /* ============================================
@@ -187,18 +194,18 @@
187
194
  height: min(85vh, calc(100vh - var(--memori-spacing-5xl)));
188
195
  padding: 0.5rem 0rem;
189
196
  margin-bottom: 0;
190
- background: var(--chat-bg, #f4f4f5);
197
+ background: var(--memori-secondary-background);
191
198
  opacity: 1;
192
199
  pointer-events: all;
193
200
  }
194
201
 
195
202
  /*
196
- * Keep in sync with ArtifactDrawer split width (46% / --memori-modal-size-md override).
197
- * Same pairing as HiddenChat's `.memori-sidebar-toggle-artifact` → `right: 46%`.
203
+ * Keep in sync with ArtifactDrawer split width (55% / --memori-modal-size-md override).
204
+ * Same pairing as HiddenChat's `.memori-sidebar-toggle-artifact` → `right: 55%`.
198
205
  */
199
206
  .memori-widget.memori-layout-website_assistant
200
207
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
201
- right: 46%;
208
+ right: 55%;
202
209
  }
203
210
 
204
211
  /* Tablet */
@@ -213,7 +220,7 @@
213
220
 
214
221
  .memori-widget.memori-layout-website_assistant
215
222
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
216
- right: 46%;
223
+ right: 55%;
217
224
  }
218
225
 
219
226
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
@@ -231,7 +238,7 @@
231
238
 
232
239
  .memori-widget.memori-layout-website_assistant
233
240
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
234
- right: 46%;
241
+ right: 55%;
235
242
  }
236
243
 
237
244
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
@@ -286,23 +293,36 @@
286
293
  background: none;
287
294
  }
288
295
 
289
- /* Powered-by sits as a static footer under the input on --chat-bg */
290
- .memori-website_assistant-layout .memori--powered-by {
291
- position: relative;
292
- z-index: 5;
293
- top: auto;
294
- right: auto;
295
- bottom: auto;
296
- left: auto;
297
- width: 100%;
298
- flex-shrink: 0;
296
+ /* Powered-by is not shown in WEBSITE_ASSISTANT; AI disclaimer wraps under the input. */
297
+ .memori-website_assistant-layout .memori--powered-by,
298
+ .memori-widget.memori-layout-website_assistant .memori--powered-by {
299
+ display: none !important;
300
+ }
301
+
302
+ /* Never show chat history control in this layout */
303
+ .memori-widget.memori-layout-website_assistant .memori-header--chat-history-button {
304
+ display: none !important;
305
+ }
306
+
307
+ .memori-widget.memori-layout-website_assistant .memori-conversation-footer {
308
+ flex-wrap: wrap;
299
309
  justify-content: center;
300
- padding: 0.5rem 1rem 0.75rem;
301
- border-radius: 0;
302
- margin: 0;
303
- background: var(--chat-bg, #f4f4f5);
310
+ }
311
+
312
+ .memori-widget.memori-layout-website_assistant
313
+ .memori-conversation-footer
314
+ .memori-chat-inputs--ai-note {
315
+ overflow: visible;
316
+ flex: 1 1 100%;
304
317
  text-align: center;
305
- transform: none;
318
+ text-overflow: unset;
319
+ white-space: normal;
320
+ }
321
+
322
+ .memori-widget.memori--active.memori-layout-website_assistant
323
+ .memori-conversation-footer
324
+ .memori-chat-inputs--ai-note {
325
+ text-align: left;
306
326
  }
307
327
 
308
328
  /* ============================================
@@ -351,14 +371,74 @@
351
371
  }
352
372
 
353
373
  .memori-website_assistant-layout--header-row {
354
- position: absolute;
374
+ position: relative;
355
375
  z-index: 1001;
356
- top: 0.75rem;
357
- right: 0.75rem;
358
376
  display: flex;
377
+ width: 100%;
378
+ flex-shrink: 0;
379
+ align-items: center;
380
+ justify-content: space-between;
381
+ padding: 0.75rem 1rem;
382
+ border-bottom: 1px solid var(--memori-border-color);
383
+ background: var(--memori-secondary-background);
384
+ gap: 0.75rem;
385
+ }
386
+
387
+ .memori-website_assistant-layout--header-actions {
388
+ display: inline-flex;
389
+ flex: 0 0 auto;
390
+ align-items: center;
391
+ margin-left: auto;
392
+ gap: 0.35rem;
393
+ }
394
+
395
+ .memori-website_assistant-layout .memori-chat-layout--brand {
396
+ display: flex;
397
+ overflow: hidden;
398
+ min-width: 0;
399
+ flex: 1 1 auto;
359
400
  align-items: center;
360
- justify-content: flex-end;
361
- gap: 0.5rem;
401
+ gap: 0.75rem;
402
+ }
403
+
404
+ .memori-website_assistant-layout .memori-chat-layout--brand-avatar {
405
+ width: 40px;
406
+ height: 40px;
407
+ flex-shrink: 0;
408
+ border: 1px solid rgba(0, 0, 0, 0.06);
409
+ border-radius: 50%;
410
+ object-fit: cover;
411
+ }
412
+
413
+ .memori-website_assistant-layout .memori-chat-layout--brand-text {
414
+ display: flex;
415
+ min-width: 0;
416
+ flex: 1 1 auto;
417
+ flex-direction: column;
418
+ align-items: flex-start;
419
+ gap: 0.125rem;
420
+ }
421
+
422
+ .memori-website_assistant-layout .memori-chat-layout--brand-name {
423
+ display: block;
424
+ overflow: hidden;
425
+ width: 100%;
426
+ min-width: 0;
427
+ max-width: 100%;
428
+ color: var(--memori-text-color, #111);
429
+ font-size: 1rem;
430
+ font-weight: 600;
431
+ line-height: 1.2;
432
+ text-overflow: ellipsis;
433
+ white-space: nowrap;
434
+ }
435
+
436
+ @media (max-width: 480px) {
437
+ .memori-website_assistant-layout .memori-chat-layout--brand {
438
+ min-width: 0;
439
+ max-width: calc(100% - 6.5rem);
440
+ flex: 1 1 auto;
441
+ }
362
442
  }
363
443
 
364
444
  /* Position dropdown below the trigger so it does not cover the share button */
@@ -467,17 +547,17 @@
467
547
  flex-direction: column;
468
548
  padding: 1rem;
469
549
  padding-bottom: 0;
470
- background-color: var(--chat-bg, #f4f4f5);
550
+ background-color: var(--memori-secondary-background);
471
551
  }
472
552
 
473
553
  .memori-website_assistant-layout--controls .memori-chat--history,
474
554
  .memori-website_assistant-layout--controls .memori-chat--content {
475
- background: var(--chat-bg, #f4f4f5);
555
+ background: var(--memori-secondary-background);
476
556
  }
477
557
 
478
558
  .memori-website_assistant-layout--controls .memori-chat--history {
479
559
  padding: 0;
480
- margin-top: var(--memori-spacing-3xl);
560
+ /* margin-top: var(--memori-spacing-3xl); */
481
561
  -webkit-backdrop-filter: none;
482
562
  backdrop-filter: none;
483
563
  }
@@ -522,10 +602,18 @@
522
602
  padding: 0.75rem;
523
603
  padding-bottom: 0;
524
604
  border: 0px !important;
525
- background: var(--chat-bg, #f4f4f5);
605
+ background: var(--memori-secondary-background);
526
606
  box-shadow: none !important;
527
607
  }
528
608
 
609
+ .memori-website_assistant-layout--controls .memori-chat--content--has-global-background,
610
+ .memori-website_assistant-layout--controls
611
+ .memori-chat--history:has(.memori-chat--content--has-global-background),
612
+ .memori-website_assistant-layout--controls
613
+ .memori-chat--wrapper:has(.memori-chat--content--has-global-background) {
614
+ background: transparent;
615
+ }
616
+
529
617
  /* Input bar styles (dark compact pill) live in ChatInputs.css.
530
618
  Anchor the bar at the bottom of the assistant panel. */
531
619
  .memori-widget.memori-layout-website_assistant .memori-website_assistant-layout--controls .memori-chat--wrapper {
@@ -694,7 +782,7 @@
694
782
  @media (prefers-reduced-motion: reduce) {
695
783
  .memori-website_assistant--trigger,
696
784
  .memori-website_assistant--trigger-button,
697
- .memori-website_assistant--close-button-wrapper,
785
+ .memori-website_assistant--close-button,
698
786
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
699
787
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded,
700
788
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded .memori-website_assistant-layout,
@@ -715,10 +803,4 @@
715
803
  width: 72px !important;
716
804
  height: 72px !important;
717
805
  }
718
-
719
- .memori-website_assistant--close-button-wrapper button.memori-website_assistant--close-button {
720
- width: 48px;
721
- height: 48px;
722
- padding: 0.875rem;
723
- }
724
806
  }
@@ -19,12 +19,7 @@
19
19
  flex-direction: column;
20
20
  gap: 0;
21
21
  }
22
- /* "Powered by" is rendered inside .memori--grid-column-left and pinned to its bottom-left corner
23
- via the default absolute positioning defined in PoweredBy.css. */
24
- .memori-widget.memori-layout-fullpage .memori--grid-column-left > .memori--powered-by {
25
- bottom: 1rem;
26
- left: 1rem;
27
- }
22
+ /* "Powered by" lives in the conversation footer under the chat input. */
28
23
 
29
24
  /* Header spacing + fullpage chrome (brand + actions bar) */
30
25
  .memori-widget.memori-layout-fullpage .memori-fullpage-top-header {
@@ -32,45 +27,62 @@
32
27
  z-index: 6;
33
28
  width: 100%;
34
29
  flex-shrink: 0;
35
- padding: 0 var(--memori-spacing-md);
30
+ padding: 0;
36
31
  padding-bottom: 0;
37
32
  margin-bottom: var(--memori-spacing-sm);
38
33
  }
39
34
 
40
- .memori-widget.memori-layout-fullpage .memori-chat-layout--header {
41
- min-width: 100%;
42
- flex-shrink: 0;
43
- /* padding: 0.625rem 0.9rem; */
44
- border-bottom: 1px solid var(--memori-border-color);
45
- /* border-radius: 0.9rem; */
46
- -webkit-backdrop-filter: blur(12px);
47
- backdrop-filter: blur(12px);
48
- background: var(--memori-secondary-background);
49
- /* box-shadow: 0 10px 26px rgba(15, 23, 42, 0.08); */
50
- }
51
-
52
- .memori-widget.memori-layout-fullpage .memori-chat-layout--controls .memori-chat--history {
53
- min-height: 0;
54
- flex: 1 1 auto;
55
- border: 1px solid color-mix(in srgb, var(--memori-text-color, #111827) 12%, transparent);
56
- border-bottom: none;
57
- margin-bottom: 0;
58
- background-color: var(--chat-bg, #f4f4f5);
59
- border-bottom-left-radius: 0;
60
- border-bottom-right-radius: 0;
61
- }
62
-
63
35
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-row,
64
36
  .memori-widget.memori-layout-chat .memori-fullpage-header-row {
37
+ position: sticky;
38
+ z-index: 6;
39
+ top: 0;
65
40
  display: flex;
66
41
  width: 100%;
67
42
  min-height: 48px;
43
+ flex-wrap: nowrap;
68
44
  align-items: center;
69
- justify-content: space-between;
45
+ justify-content: flex-end;
70
46
  padding: var(--memori-spacing-md);
71
47
  border-bottom: 1px solid var(--memori-border-color);
72
- background: var(--memori-secondary-background);
48
+ background: transparent;
73
49
  gap: var(--memori-spacing-md);
50
+ transition: background-color var(--memori-motion-duration-fast, 0.15s) var(--memori-motion-ease, ease);
51
+ }
52
+
53
+ /* FULLPAGE header shares the same content axis as .memori--grid, so brand,
54
+ actions and the divider stay aligned with the card edges at any width. */
55
+ .memori-widget.memori-layout-fullpage .memori-fullpage-header-row {
56
+ max-width: var(--memori-layout-max-width);
57
+ padding-right: var(--memori-spacing-md);
58
+ padding-left: var(--memori-spacing-md);
59
+ margin-right: auto;
60
+ margin-left: auto;
61
+ }
62
+
63
+ .memori-widget.memori-layout-fullpage .memori-fullpage-header-row.memori-header--scrolled,
64
+ .memori-widget.memori-layout-chat .memori-fullpage-header-row.memori-header--scrolled,
65
+ .memori-widget.memori-layout-fullpage .memori-chat-layout--header.memori-header--scrolled,
66
+ .memori-widget.memori-layout-chat .memori-chat-layout--header.memori-header--scrolled,
67
+ .memori-widget.memori-layout-fullpage .memori-fullpage-top-header.memori-header--scrolled {
68
+ background: var(--memori-secondary-background);
69
+ }
70
+
71
+ .memori-widget.memori-layout-fullpage .memori-chat-layout--header {
72
+ min-width: 100%;
73
+ flex-shrink: 0;
74
+ -webkit-backdrop-filter: none;
75
+ backdrop-filter: none;
76
+ background: transparent;
77
+ }
78
+
79
+ .memori-widget.memori-layout-fullpage .memori-chat-layout--controls .memori-chat--history {
80
+ min-height: 0;
81
+ flex: 1 1 auto;
82
+ border: none;
83
+ border-radius: var(--memori-radius-box);
84
+ margin-bottom: 0;
85
+ background-color: var(--memori-secondary-background);
74
86
  }
75
87
 
76
88
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand,
@@ -79,8 +91,21 @@
79
91
  overflow: hidden;
80
92
  min-width: 0;
81
93
  flex: 1 1 auto;
94
+ flex-wrap: nowrap;
82
95
  align-items: center;
96
+ margin-right: auto;
83
97
  gap: 0.625rem;
98
+ white-space: nowrap;
99
+ }
100
+
101
+ .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand-text,
102
+ .memori-widget.memori-layout-chat .memori-fullpage-header-brand-text {
103
+ display: flex;
104
+ overflow: hidden;
105
+ min-width: 0;
106
+ flex: 1 1 auto;
107
+ flex-direction: column;
108
+ gap: 0.125rem;
84
109
  }
85
110
 
86
111
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand-icon,
@@ -90,8 +115,7 @@
90
115
  height: 30px;
91
116
  flex-shrink: 0;
92
117
  border-radius: 50%;
93
- background: linear-gradient(145deg, #6d28d9 0%, #534ab7 52%, #4338ca 100%);
94
- box-shadow: 0 1px 4px rgba(109, 40, 217, 0.35);
118
+ background: var(--memori-primary);
95
119
  }
96
120
 
97
121
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand-icon--avatar,
@@ -99,7 +123,7 @@
99
123
  flex-shrink: 0;
100
124
  border: 0;
101
125
  background: none;
102
- box-shadow: 0 1px 4px rgba(109, 40, 217, 0.2);
126
+ box-shadow: none;
103
127
  object-fit: cover;
104
128
  }
105
129
 
@@ -109,9 +133,8 @@
109
133
  overflow: hidden;
110
134
  min-width: 0;
111
135
  max-width: 100%;
112
- flex: 1 1 auto;
113
136
  color: var(--memori-text-color, #1f2937);
114
- font-size: 1.35rem;
137
+ font-size: 1.05rem;
115
138
  font-weight: 700;
116
139
  letter-spacing: -0.02em;
117
140
  line-height: 1.2;
@@ -119,6 +142,20 @@
119
142
  white-space: nowrap;
120
143
  }
121
144
 
145
+ .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand-role,
146
+ .memori-widget.memori-layout-chat .memori-fullpage-header-brand-role {
147
+ display: block;
148
+ overflow: hidden;
149
+ min-width: 0;
150
+ max-width: 100%;
151
+ color: color-mix(in srgb, var(--memori-text-color) 72%, transparent);
152
+ font-size: var(--memori-text-size-sm, 0.8125rem);
153
+ font-weight: var(--memori-text-weight-normal, 400);
154
+ line-height: 1.3;
155
+ text-overflow: ellipsis;
156
+ white-space: nowrap;
157
+ }
158
+
122
159
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-actions,
123
160
  .memori-widget.memori-layout-chat .memori-fullpage-header-actions {
124
161
  display: flex;
@@ -126,28 +163,35 @@
126
163
  flex: 0 0 auto;
127
164
  align-items: center;
128
165
  justify-content: flex-end;
166
+ margin-left: auto;
129
167
  }
130
168
 
131
- /* FullPage header controls: compact square actions + rounded login CTA */
132
- .memori-widget.memori-layout-fullpage .memori-header.memori-header--fullpage {
169
+ /* FullPage / Chat / Zoomed header controls: compact square actions + rounded login CTA */
170
+ .memori-widget.memori-layout-fullpage .memori-header.memori-header--fullpage,
171
+ .memori-widget.memori-layout-chat .memori-header.memori-header--fullpage {
172
+ width: auto;
133
173
  min-width: 0;
134
174
  flex-wrap: nowrap;
135
175
  justify-content: flex-end;
176
+ margin-left: auto;
136
177
  gap: 0.5rem;
137
178
  }
138
179
 
139
180
  .memori-widget.memori-layout-fullpage .memori-header--fullpage-primary,
140
- .memori-widget.memori-layout-fullpage .memori-header--fullpage-secondary {
181
+ .memori-widget.memori-layout-fullpage .memori-header--fullpage-secondary,
182
+ .memori-widget.memori-layout-chat .memori-header--fullpage-primary,
183
+ .memori-widget.memori-layout-chat .memori-header--fullpage-secondary {
141
184
  flex-wrap: nowrap;
142
185
  gap: 0.5rem;
143
186
  }
144
187
 
145
- .memori-widget.memori-layout-fullpage .memori-header--fullpage-divider {
188
+ .memori-widget.memori-layout-fullpage .memori-header--fullpage-divider,
189
+ .memori-widget.memori-layout-chat .memori-header--fullpage-divider {
146
190
  min-height: 26px;
147
191
  margin: 0;
148
192
  }
149
193
 
150
- /* CHAT: title block a sinistra, controlli allineati a destra */
194
+ /* CHAT: title block a sinistra, controlli allineati a destra. */
151
195
  .memori-widget.memori-layout-chat .memori-fullpage-header-row {
152
196
  justify-content: flex-end;
153
197
  }
@@ -171,9 +215,10 @@
171
215
  align-items: stretch;
172
216
  }
173
217
 
174
- /* Grid: main + left column (avatar) */
218
+ /* Grid holds avatar + chat as two separate panels: no outer frame, vertical breathing room. */
175
219
  .memori-widget.memori-layout-fullpage .memori--grid {
176
220
  display: flex;
221
+ overflow: hidden;
177
222
  width: 100%;
178
223
  max-width: var(--memori-layout-max-width);
179
224
  height: 100%;
@@ -181,29 +226,69 @@
181
226
  flex: 1 1 0%;
182
227
  align-items: stretch;
183
228
  justify-content: center;
184
- padding: 0 var(--memori-spacing-md) var(--memori-spacing-md);
185
- padding-top: var(--memori-spacing-md);
186
- padding-bottom: var(--memori-spacing-xl);
229
+ padding: var(--memori-spacing-md);
230
+ border: none;
187
231
  margin: 0 auto;
232
+ background: var(--memori-secondary-background);
188
233
  gap: var(--memori-spacing-md);
189
234
  }
190
235
 
236
+ /* Avatar column: its own rounded panel, wider than the chat sidebar it replaced. */
191
237
  .memori-widget.memori-layout-fullpage .memori--grid-column-left {
238
+ position: relative;
192
239
  display: flex;
193
240
  overflow: hidden;
194
- width: 50%;
195
- max-width: 420px;
241
+ width: clamp(240px, 34%, 420px);
196
242
  height: 100%;
197
243
  min-height: 0;
198
244
  flex-direction: column;
199
245
  flex-shrink: 0;
200
246
  align-items: stretch;
201
247
  align-self: stretch;
202
- border: 1px solid color-mix(in srgb, var(--memori-text-color, #111827) 10%, transparent);
203
- border-radius: 0.9rem;
248
+ border: none;
249
+ border-radius: 12px;
204
250
  margin-right: 0;
205
- backdrop-filter: blur(10px);
206
- background: #ffffff;
251
+ background: color-mix(in srgb, var(--memori-text-color) 4%, var(--memori-secondary-background));
252
+ }
253
+
254
+ /* Agent status indicator above the avatar. */
255
+ .memori-widget.memori-layout-fullpage .memori-fullpage-agent-status {
256
+ display: flex;
257
+ flex-shrink: 0;
258
+ align-items: center;
259
+ justify-content: center;
260
+ padding: var(--memori-spacing-sm) var(--memori-spacing-md);
261
+ color: color-mix(in srgb, var(--memori-text-color) 72%, transparent);
262
+ font-size: var(--memori-text-size-sm, 0.8125rem);
263
+ gap: var(--memori-spacing-xs);
264
+ line-height: 1.2;
265
+ text-align: center;
266
+ }
267
+
268
+ .memori-widget.memori-layout-fullpage .memori-fullpage-agent-status--dot {
269
+ display: inline-block;
270
+ width: 8px;
271
+ height: 8px;
272
+ flex-shrink: 0;
273
+ border-radius: 50%;
274
+ background: currentColor;
275
+ }
276
+
277
+ .memori-widget.memori-layout-fullpage .memori-fullpage-agent-status--dot-speaking {
278
+ background: var(--memori-primary);
279
+ }
280
+
281
+ .memori-widget.memori-layout-fullpage .memori-fullpage-agent-status--dot-processing {
282
+ background: color-mix(in srgb, var(--memori-text-color) 55%, transparent);
283
+ }
284
+
285
+ .memori-widget.memori-layout-fullpage .memori-fullpage-agent-status--dot-listening {
286
+ background: var(--memori-primary);
287
+ }
288
+
289
+ /* Cover banner is removed in FULLPAGE — it wastes the most valuable space. */
290
+ .memori-widget.memori-layout-fullpage .memori-chat--cover {
291
+ display: none;
207
292
  }
208
293
 
209
294
  .memori-widget.memori-layout-fullpage .memori--grid-column-left .memori--avatar-wrapper {
@@ -250,7 +335,7 @@
250
335
  }
251
336
 
252
337
  .memori-widget.memori-layout-fullpage .memori--grid-column-artifact--open {
253
- width: 600px;
338
+ width: 700px;
254
339
  border-left: 1px solid color-mix(in srgb, var(--memori-text-color, #111827) 10%, transparent);
255
340
  background: var(--memori-secondary-background);
256
341
  }
@@ -279,7 +364,17 @@
279
364
  flex-direction: column;
280
365
  align-items: stretch;
281
366
  padding: 0;
282
- background: var(--chat-bg, #f4f4f5);
367
+ background: var(--memori-secondary-background);
368
+ }
369
+
370
+ .memori-widget.memori-layout-fullpage .memori-conversation-column {
371
+ display: flex;
372
+ width: 100%;
373
+ max-width: none;
374
+ min-height: 0;
375
+ flex: 1 1 0%;
376
+ flex-direction: column;
377
+ padding-inline: 0;
283
378
  }
284
379
 
285
380
  .memori-widget.memori-layout-fullpage .memori-chat-layout--controls .memori--start-panel,
@@ -328,10 +423,9 @@
328
423
  .memori-widget.memori-layout-fullpage .memori-chat-layout--controls .memori-chat-inputs-wrapper {
329
424
  width: 100%;
330
425
  flex-shrink: 0;
331
- border-top: none;
332
- background: var(--chat-bg, #f4f4f5);
333
- border-bottom-left-radius: 12px;
334
- border-bottom-right-radius: 12px;
426
+ border: none;
427
+ border-radius: 0;
428
+ background: var(--memori-secondary-background);
335
429
  }
336
430
 
337
431
  @media (max-width: 870px) {
@@ -346,8 +440,7 @@
346
440
  } */
347
441
 
348
442
  .memori-widget.memori-layout-fullpage .memori-fullpage-top-header {
349
- padding: 0 var(--memori-spacing-sm);
350
- padding-bottom: 0;
443
+ padding: 0;
351
444
  margin-bottom: var(--memori-spacing-md);
352
445
  }
353
446
 
@@ -356,7 +449,7 @@
356
449
  }
357
450
 
358
451
  .memori-widget.memori-layout-fullpage .memori--grid {
359
- padding: 0 var(--memori-spacing-sm) var(--memori-spacing-sm);
452
+ padding: var(--memori-spacing-sm);
360
453
  gap: var(--memori-spacing-sm);
361
454
  }
362
455
 
@@ -367,8 +460,7 @@
367
460
 
368
461
  @media (max-width: 480px) {
369
462
  .memori-widget.memori-layout-fullpage .memori-fullpage-top-header {
370
- padding: 0 var(--memori-spacing-xs);
371
- padding-bottom: 0;
463
+ padding: 0;
372
464
  }
373
465
 
374
466
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-brand-name {
@@ -380,7 +472,7 @@
380
472
  }
381
473
 
382
474
  .memori-widget.memori-layout-fullpage .memori--grid {
383
- padding: 0 var(--memori-spacing-xs) var(--memori-spacing-xs);
475
+ padding: var(--memori-spacing-xs) var(--memori-spacing-sm);
384
476
  }
385
477
 
386
478
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-row,
@@ -396,8 +488,7 @@
396
488
  flex: 1 1 auto;
397
489
  }
398
490
 
399
- .memori-widget.memori-layout-fullpage .memori-fullpage-header-actions,
400
- .memori-widget.memori-layout-chat .memori-fullpage-header-actions {
491
+ .memori-widget.memori-layout-fullpage .memori-fullpage-header-actions {
401
492
  flex: 0 0 auto;
402
493
  justify-content: flex-end;
403
494
  }
@@ -410,7 +501,7 @@
410
501
 
411
502
  .memori-widget.memori-layout-chat .memori-fullpage-header-actions {
412
503
  min-width: 0;
413
- flex: 0 0 auto;
504
+ flex: 1 1 auto;
414
505
  flex-wrap: nowrap;
415
506
  justify-content: flex-end;
416
507
  -webkit-overflow-scrolling: touch;
@@ -419,7 +510,13 @@
419
510
  }
420
511
 
421
512
  .memori-widget.memori-layout-chat .memori-fullpage-header-actions .memori-header.memori-header--fullpage {
422
- min-width: 0;
513
+ min-width: max-content;
514
+ flex-shrink: 0;
423
515
  flex-wrap: nowrap;
424
516
  }
517
+
518
+ .memori-widget.memori-layout-chat .memori-fullpage-header-actions .memori-icon-button,
519
+ .memori-widget.memori-layout-chat .memori-fullpage-header-actions .memori-button {
520
+ flex-shrink: 0;
521
+ }
425
522
  }