@memori.ai/memori-react 9.0.0-alpha.10 → 9.0.0-alpha.13

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 (108) hide show
  1. package/CHANGELOG.md +270 -0
  2. package/dist/components/Chat/Chat.css +19 -0
  3. package/dist/components/ChatBubble/ChatBubble.js +11 -23
  4. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  5. package/dist/components/ChatInputs/ChatInputs.css +77 -3
  6. package/dist/components/ChatTextArea/ChatTextArea.css +5 -25
  7. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +7 -2
  8. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +31 -15
  9. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +181 -150
  10. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +7 -7
  11. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  12. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +11 -2
  13. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -0
  14. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +1 -1
  15. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  16. package/dist/components/MemoriWidget/MemoriWidget.js +120 -116
  17. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  18. package/dist/components/MicrophoneButton/MicrophoneButton.css +22 -0
  19. package/dist/components/PoweredBy/PoweredBy.css +1 -8
  20. package/dist/components/StartPanel/StartPanel.js +1 -1
  21. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  22. package/dist/components/layouts/Chat.js +6 -1
  23. package/dist/components/layouts/Chat.js.map +1 -1
  24. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +5 -5
  25. package/dist/components/layouts/chat.css +98 -3
  26. package/dist/components/layouts/fullpage.css +7 -7
  27. package/dist/components/layouts/hidden-chat.css +2 -2
  28. package/dist/components/layouts/zoomed-full-body.css +6 -6
  29. package/dist/helpers/media.js +18 -3
  30. package/dist/helpers/media.js.map +1 -1
  31. package/dist/index.js +16 -16
  32. package/dist/index.js.map +1 -1
  33. package/dist/styles.css +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/esm/components/Chat/Chat.css +19 -0
  37. package/esm/components/ChatBubble/ChatBubble.js +12 -24
  38. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  39. package/esm/components/ChatInputs/ChatInputs.css +77 -3
  40. package/esm/components/ChatTextArea/ChatTextArea.css +5 -25
  41. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +7 -2
  42. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +31 -15
  43. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +181 -150
  44. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +8 -8
  45. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  46. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +11 -2
  47. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -0
  48. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +2 -2
  49. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  50. package/esm/components/MemoriWidget/MemoriWidget.js +121 -117
  51. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  52. package/esm/components/MicrophoneButton/MicrophoneButton.css +22 -0
  53. package/esm/components/PoweredBy/PoweredBy.css +1 -8
  54. package/esm/components/StartPanel/StartPanel.js +1 -1
  55. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  56. package/esm/components/layouts/Chat.js +6 -1
  57. package/esm/components/layouts/Chat.js.map +1 -1
  58. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +5 -5
  59. package/esm/components/layouts/chat.css +98 -3
  60. package/esm/components/layouts/fullpage.css +7 -7
  61. package/esm/components/layouts/hidden-chat.css +2 -2
  62. package/esm/components/layouts/zoomed-full-body.css +6 -6
  63. package/esm/helpers/media.js +18 -3
  64. package/esm/helpers/media.js.map +1 -1
  65. package/esm/index.js +17 -17
  66. package/esm/index.js.map +1 -1
  67. package/esm/styles.css +1 -1
  68. package/esm/version.d.ts +1 -1
  69. package/esm/version.js +1 -1
  70. package/package.json +2 -2
  71. package/src/__snapshots__/index.test.tsx.snap +0 -50
  72. package/src/components/Chat/Chat.css +19 -0
  73. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +10 -10
  74. package/src/components/ChatBubble/ChatBubble.test.tsx +25 -1
  75. package/src/components/ChatBubble/ChatBubble.tsx +20 -27
  76. package/src/components/ChatInputs/ChatInputs.css +77 -3
  77. package/src/components/ChatTextArea/ChatTextArea.css +5 -25
  78. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +1 -1
  79. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +7 -2
  80. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +31 -15
  81. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +181 -150
  82. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +63 -74
  83. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +11 -2
  84. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +1 -0
  85. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +2 -2
  86. package/src/components/MemoriWidget/MemoriWidget.tsx +8 -1
  87. package/src/components/MicrophoneButton/MicrophoneButton.css +22 -0
  88. package/src/components/PoweredBy/PoweredBy.css +1 -8
  89. package/src/components/StartPanel/StartPanel.tsx +1 -1
  90. package/src/components/layouts/Chat.tsx +14 -1
  91. package/src/components/layouts/HiddenChat.tsx +1 -1
  92. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +10 -0
  93. package/src/components/layouts/WebsiteAssistant/website-assistant.css +5 -5
  94. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +17 -2
  95. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +30 -2
  96. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +10 -0
  97. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +15 -1
  98. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +15 -1
  99. package/src/components/layouts/chat.css +98 -3
  100. package/src/components/layouts/fullpage.css +7 -7
  101. package/src/components/layouts/hidden-chat.css +2 -2
  102. package/src/components/layouts/layouts.stories.tsx +8 -8
  103. package/src/components/layouts/zoomed-full-body.css +6 -6
  104. package/src/helpers/media.test.ts +36 -0
  105. package/src/helpers/media.ts +39 -12
  106. package/src/index.tsx +1 -5
  107. package/src/styles.css +18 -5
  108. package/src/version.ts +1 -1
@@ -127,6 +127,7 @@
127
127
  min-height: 0;
128
128
  flex: 1;
129
129
  padding: 1rem;
130
+ background: color-mix(in srgb, var(--memori-text-color) 4%, var(--memori-secondary-background));
130
131
  color: var(--memori-text-color);
131
132
  font-family: var(--memori-font-family);
132
133
  line-height: 1.6;
@@ -12,7 +12,7 @@ import { ArtifactData, ArtifactTab } from '../../types/artifact.types';
12
12
  import { Code, Eye as PreviewIcon } from 'lucide-react';
13
13
  import Snippet from '../../../Snippet/Snippet';
14
14
  import { Medium } from '@memori.ai/memori-api-client/dist/types';
15
- import { renderMsg } from '../../../../helpers/message';
15
+ import { renderMsg, sanitizeMsg } from '../../../../helpers/message';
16
16
 
17
17
  const ArtifactPreview: React.FC<{
18
18
  artifact: ArtifactData;
@@ -63,7 +63,7 @@ const ArtifactPreview: React.FC<{
63
63
  <div
64
64
  className="memori-artifact-preview-text"
65
65
  dangerouslySetInnerHTML={{
66
- __html: artifact.content,
66
+ __html: sanitizeMsg(artifact.content),
67
67
  }}
68
68
  />
69
69
  );
@@ -44,6 +44,7 @@ import {
44
44
  useAlertManager,
45
45
  createAlertOptions,
46
46
  MemoriUIProvider,
47
+ AlertViewport,
47
48
  } from '@memori.ai/ui';
48
49
  import { WidgetSurfaceProvider } from '../../context/widgetSurfaceContext';
49
50
 
@@ -2692,7 +2693,11 @@ const MemoriWidget = ({
2692
2693
  }
2693
2694
  if (integrationConfig?.blurBackground) {
2694
2695
  integrationStylesheetParts.push(
2695
- '.memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }'
2696
+ `.memori-widget .memori-chat--history--has-global-background::before,
2697
+ .memori-widget .memori-chat-layout--main--has-background::before {
2698
+ filter: blur(5px);
2699
+ transform: scale(1.06);
2700
+ }`
2696
2701
  );
2697
2702
  }
2698
2703
  const integrationStylesheet = `@layer integration {
@@ -3739,6 +3744,8 @@ const MemoriWidget = ({
3739
3744
  style={{ height }}
3740
3745
  >
3741
3746
  <MemoriUIProvider container={widgetRootEl} theme={widgetTheme}>
3747
+ {/* Inside themed root so alert text uses dark-theme tokens (white). */}
3748
+ <AlertViewport placement="top-end" style={{ zIndex: 10002 }} />
3742
3749
  <WidgetSurfaceProvider value={widgetSurfaceEl}>
3743
3750
  <div ref={setWidgetSurfaceEl} className="memori-widget__surface">
3744
3751
  <Layout
@@ -192,3 +192,25 @@
192
192
  [data-theme='dark'] .memori-widget.memori-layout-website_assistant .memori-chat-inputs--mic .lucide-mic {
193
193
  color: inherit;
194
194
  }
195
+
196
+ /* Light hover surface (#f2eef5) — keep the icon black in dark mode for contrast */
197
+ .memori-widget[data-theme='dark'] .memori-chat-inputs--mic:hover,
198
+ .memori-widget.memori-layout-fullpage[data-theme='dark'] .memori-chat-inputs--mic:hover,
199
+ [data-theme='dark'] .memori-widget.memori-layout-fullpage .memori-chat-inputs--mic:hover,
200
+ .memori-widget.memori-layout-hidden_chat[data-theme='dark'] .memori-chat-inputs--mic:hover,
201
+ [data-theme='dark'] .memori-widget.memori-layout-hidden_chat .memori-chat-inputs--mic:hover,
202
+ .memori-widget.memori-layout-website_assistant[data-theme='dark'] .memori-chat-inputs--mic:hover,
203
+ [data-theme='dark'] .memori-widget.memori-layout-website_assistant .memori-chat-inputs--mic:hover,
204
+ .memori-widget[data-theme='dark'] .memori-chat-inputs--trailing .memori-chat-inputs--mic:hover {
205
+ color: #000 !important;
206
+ }
207
+
208
+ .memori-widget[data-theme='dark'] .memori-chat-inputs--mic:hover .lucide-mic,
209
+ .memori-widget.memori-layout-fullpage[data-theme='dark'] .memori-chat-inputs--mic:hover .lucide-mic,
210
+ [data-theme='dark'] .memori-widget.memori-layout-fullpage .memori-chat-inputs--mic:hover .lucide-mic,
211
+ .memori-widget.memori-layout-hidden_chat[data-theme='dark'] .memori-chat-inputs--mic:hover .lucide-mic,
212
+ [data-theme='dark'] .memori-widget.memori-layout-hidden_chat .memori-chat-inputs--mic:hover .lucide-mic,
213
+ .memori-widget.memori-layout-website_assistant[data-theme='dark'] .memori-chat-inputs--mic:hover .lucide-mic,
214
+ [data-theme='dark'] .memori-widget.memori-layout-website_assistant .memori-chat-inputs--mic:hover .lucide-mic {
215
+ color: #000 !important;
216
+ }
@@ -44,14 +44,7 @@
44
44
  }
45
45
 
46
46
  @media (max-width: 870px) {
47
- .memori-widget .memori--powered-by {
47
+ .memori--powered-by {
48
48
  display: none !important;
49
49
  }
50
-
51
- /* Keep the footer strip visible under the input on compact chat layouts */
52
- .memori-widget.memori-layout-chat .memori--powered-by,
53
- .memori-widget.memori-layout-website_assistant .memori--powered-by,
54
- .memori-widget.memori-layout-hidden_chat .memori--powered-by {
55
- display: flex !important;
56
- }
57
50
  }
@@ -445,7 +445,7 @@ const StartPanel: React.FC<Props> = ({
445
445
  </div>
446
446
  </div>
447
447
  <div className="memori--settings-section__actions-right">
448
- {!isUserLoggedIn && showLogin && (
448
+ {!isMobile && !isUserLoggedIn && showLogin && (
449
449
  <Button
450
450
  variant="toolbar"
451
451
  size="sm"
@@ -61,6 +61,8 @@ const ChatLayout: React.FC<LayoutProps> = ({
61
61
  return () => mediaQuery.removeEventListener('change', update);
62
62
  }, []);
63
63
 
64
+ const globalBackground = chatProps?.globalBackground;
65
+
64
66
  const memori = headerProps?.memori;
65
67
  const tenant = headerProps?.tenant;
66
68
  const baseUrl = headerProps?.baseUrl;
@@ -228,7 +230,18 @@ const ChatLayout: React.FC<LayoutProps> = ({
228
230
  <Spin spinning={loading} className="memori-chat-layout">
229
231
  <div id="extension" />
230
232
 
231
- <div className="memori-chat-layout--main">
233
+ <div
234
+ className={`memori-chat-layout--main${
235
+ globalBackground ? ' memori-chat-layout--main--has-background' : ''
236
+ }`}
237
+ style={
238
+ globalBackground
239
+ ? ({
240
+ ['--memori-chat-global-background' as string]: `url(${globalBackground})`,
241
+ } as React.CSSProperties)
242
+ : undefined
243
+ }
244
+ >
232
245
  {/* Chat column — flex:1, shrinks when artifact column grows */}
233
246
  <div
234
247
  className={
@@ -357,7 +357,7 @@ const HiddenChatLayout: React.FC<LayoutProps> = ({
357
357
  </aside>
358
358
  </div>
359
359
 
360
- {/* Artifact drawer — fixed overlay that pairs with the sidebar shift (right: 46%) */}
360
+ {/* Artifact drawer — fixed overlay that pairs with the sidebar shift (right: 55%) */}
361
361
  {useSideArtifactChrome && <ArtifactDrawer />}
362
362
  </>
363
363
  );
@@ -11,6 +11,16 @@ exports[`renders WEBSITE_ASSISTANT layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -200,12 +200,12 @@
200
200
  }
201
201
 
202
202
  /*
203
- * Keep in sync with ArtifactDrawer split width (46% / --memori-modal-size-md override).
204
- * 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%`.
205
205
  */
206
206
  .memori-widget.memori-layout-website_assistant
207
207
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
208
- right: 46%;
208
+ right: 55%;
209
209
  }
210
210
 
211
211
  /* Tablet */
@@ -220,7 +220,7 @@
220
220
 
221
221
  .memori-widget.memori-layout-website_assistant
222
222
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
223
- right: 46%;
223
+ right: 55%;
224
224
  }
225
225
 
226
226
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
@@ -238,7 +238,7 @@
238
238
 
239
239
  .memori-widget.memori-layout-website_assistant
240
240
  .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
241
- right: 46%;
241
+ right: 55%;
242
242
  }
243
243
 
244
244
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
@@ -11,6 +11,16 @@ exports[`renders Chat layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -53,7 +63,11 @@ exports[`renders Chat layout unchanged 1`] = `
53
63
  --memori-skeleton-base: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%);
54
64
  --memori-skeleton-highlight: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%);
55
65
  }
56
- .memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }
66
+ .memori-widget .memori-chat--history--has-global-background::before,
67
+ .memori-widget .memori-chat-layout--main--has-background::before {
68
+ filter: blur(5px);
69
+ transform: scale(1.06);
70
+ }
57
71
  }
58
72
 
59
73
  </style>
@@ -67,7 +81,8 @@ exports[`renders Chat layout unchanged 1`] = `
67
81
  id="extension"
68
82
  />
69
83
  <div
70
- class="memori-chat-layout--main"
84
+ class="memori-chat-layout--main memori-chat-layout--main--has-background"
85
+ style="--memori-chat-global-background: url(https://assets.memori.ai/api/v2/asset/364e498c-11da-42d5-9e32-19e5d137d4b8.jpeg);"
71
86
  >
72
87
  <div
73
88
  class="memori-chat-layout--controls"
@@ -11,6 +11,16 @@ exports[`renders FullPage layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -53,7 +63,11 @@ exports[`renders FullPage layout unchanged 1`] = `
53
63
  --memori-skeleton-base: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%);
54
64
  --memori-skeleton-highlight: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%);
55
65
  }
56
- .memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }
66
+ .memori-widget .memori-chat--history--has-global-background::before,
67
+ .memori-widget .memori-chat-layout--main--has-background::before {
68
+ filter: blur(5px);
69
+ transform: scale(1.06);
70
+ }
57
71
  }
58
72
 
59
73
  </style>
@@ -783,6 +797,16 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
783
797
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
784
798
  style="height: 100vh;"
785
799
  >
800
+ <div
801
+ aria-atomic="false"
802
+ aria-label="Notifications"
803
+ aria-live="polite"
804
+ aria-relevant="additions text"
805
+ class="memori-alert-viewport memori-alert-viewport--top-end"
806
+ role="region"
807
+ style="z-index: 10002;"
808
+ tabindex="-1"
809
+ />
786
810
  <div
787
811
  class="memori-widget__surface"
788
812
  >
@@ -825,7 +849,11 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
825
849
  --memori-skeleton-base: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%);
826
850
  --memori-skeleton-highlight: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%);
827
851
  }
828
- .memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }
852
+ .memori-widget .memori-chat--history--has-global-background::before,
853
+ .memori-widget .memori-chat-layout--main--has-background::before {
854
+ filter: blur(5px);
855
+ transform: scale(1.06);
856
+ }
829
857
  }
830
858
 
831
859
  </style>
@@ -11,6 +11,16 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -11,6 +11,16 @@ exports[`renders Totem layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -53,7 +63,11 @@ exports[`renders Totem layout unchanged 1`] = `
53
63
  --memori-skeleton-base: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%);
54
64
  --memori-skeleton-highlight: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%);
55
65
  }
56
- .memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }
66
+ .memori-widget .memori-chat--history--has-global-background::before,
67
+ .memori-widget .memori-chat-layout--main--has-background::before {
68
+ filter: blur(5px);
69
+ transform: scale(1.06);
70
+ }
57
71
  }
58
72
 
59
73
  </style>
@@ -11,6 +11,16 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
11
11
  data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
12
12
  style="height: 100vh;"
13
13
  >
14
+ <div
15
+ aria-atomic="false"
16
+ aria-label="Notifications"
17
+ aria-live="polite"
18
+ aria-relevant="additions text"
19
+ class="memori-alert-viewport memori-alert-viewport--top-end"
20
+ role="region"
21
+ style="z-index: 10002;"
22
+ tabindex="-1"
23
+ />
14
24
  <div
15
25
  class="memori-widget__surface"
16
26
  >
@@ -53,7 +63,11 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
53
63
  --memori-skeleton-base: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%);
54
64
  --memori-skeleton-highlight: color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%);
55
65
  }
56
- .memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }
66
+ .memori-widget .memori-chat--history--has-global-background::before,
67
+ .memori-widget .memori-chat-layout--main--has-background::before {
68
+ filter: blur(5px);
69
+ transform: scale(1.06);
70
+ }
57
71
  }
58
72
 
59
73
  </style>
@@ -170,13 +170,13 @@
170
170
 
171
171
  /* Powered-by lives in the conversation footer row under the input */
172
172
  .memori-widget.memori-layout-chat .memori-conversation-footer > .memori--powered-by {
173
- position: relative;
173
+ position: relative !important;
174
174
  z-index: 5;
175
175
  top: auto;
176
176
  right: auto;
177
177
  bottom: auto;
178
178
  left: auto;
179
- display: flex;
179
+ display: inline-flex !important;
180
180
  width: auto;
181
181
  flex-shrink: 0;
182
182
  justify-content: flex-end;
@@ -187,6 +187,25 @@
187
187
  transform: none;
188
188
  }
189
189
 
190
+ @media (max-width: 768px) {
191
+ .memori-widget.memori-layout-chat .memori-conversation-footer {
192
+ justify-content: center;
193
+ gap: 0;
194
+ }
195
+
196
+ .memori-widget.memori-layout-chat .memori-conversation-footer > .memori--powered-by {
197
+ display: none !important;
198
+ }
199
+
200
+ .memori-widget.memori-layout-chat .memori-conversation-footer .memori-chat-inputs--ai-note {
201
+ overflow: visible;
202
+ flex: 0 1 auto;
203
+ text-align: center;
204
+ text-overflow: unset;
205
+ white-space: normal;
206
+ }
207
+ }
208
+
190
209
  .memori-chat-layout--controls .memori-chat--wrapper {
191
210
  display: flex;
192
211
  height: 100%;
@@ -326,7 +345,7 @@
326
345
  }
327
346
 
328
347
  .memori-chat-layout .memori--grid-column-artifact--open {
329
- width: 480px;
348
+ width: 620px;
330
349
  border-left: 1px solid var(--memori-border-color);
331
350
  background: var(--memori-secondary-background);
332
351
  }
@@ -337,6 +356,81 @@
337
356
  }
338
357
  }
339
358
 
359
+ /* Custom background image fills the messages area across the whole page width:
360
+ it is painted on the layout row instead of the conversation column, so it also
361
+ covers the side gutters, while header and input bar stay solid strips. */
362
+ .memori-chat-layout--main--has-background {
363
+ position: relative;
364
+ isolation: isolate;
365
+ }
366
+
367
+ .memori-chat-layout--main--has-background::before {
368
+ position: absolute;
369
+ z-index: 0;
370
+ top: 0;
371
+ right: 0;
372
+ bottom: 0;
373
+ left: 0;
374
+ background-color: #eee;
375
+ background-image: var(--memori-chat-global-background);
376
+ background-position: center center;
377
+ background-repeat: no-repeat;
378
+ background-size: cover;
379
+ content: '';
380
+ pointer-events: none;
381
+ }
382
+
383
+ .memori-chat-layout--main--has-background .memori--grid-column-artifact {
384
+ position: relative;
385
+ z-index: 5;
386
+ }
387
+
388
+ .memori-widget.memori-layout-chat .memori-chat-layout--main--has-background .memori-chat-layout--controls,
389
+ .memori-widget.memori-layout-chat .memori-chat-layout--main--has-background .memori-chat-layout--body {
390
+ background: transparent;
391
+ }
392
+
393
+ /* The header is a solid strip, so the image starts below it. */
394
+ .memori-widget.memori-layout-chat .memori-chat-layout--main--has-background .memori-chat-layout--header {
395
+ background: var(--memori-secondary-background);
396
+ }
397
+
398
+ /* The input bar stays a solid strip, so the image ends where the messages end.
399
+ It breaks out of the conversation column to span the whole width; the
400
+ surrounding `overflow: hidden` on the controls clips it to the chat column. */
401
+ .memori-widget.memori-layout-chat
402
+ .memori-chat-layout--main--has-background
403
+ .memori-conversation-column
404
+ > .memori-chat-inputs-wrapper {
405
+ width: 100vw;
406
+ max-width: 100vw;
407
+ margin-bottom: 0;
408
+ background: var(--memori-secondary-background);
409
+ margin-inline: calc(50% - 50vw);
410
+ padding-inline: var(--memori-conversation-inline-padding, var(--memori-spacing-md));
411
+ }
412
+
413
+ .memori-widget.memori-layout-chat
414
+ .memori-chat-layout--main--has-background
415
+ .memori-conversation-column
416
+ > .memori-chat-inputs-wrapper
417
+ .memori-chat-inputs,
418
+ .memori-widget.memori-layout-chat
419
+ .memori-chat-layout--main--has-background
420
+ .memori-conversation-column
421
+ > .memori-chat-inputs-wrapper
422
+ .memori-conversation-footer {
423
+ max-width: var(--memori-conversation-max-width, 48rem);
424
+ margin-inline: auto;
425
+ }
426
+
427
+ /* The column-scoped image would otherwise paint a second, narrower copy. */
428
+ .memori-widget.memori-layout-chat
429
+ .memori-chat-layout--main--has-background
430
+ .memori-chat--history--has-global-background::before {
431
+ display: none;
432
+ }
433
+
340
434
  .memori-chat-layout--artifact-panel {
341
435
  position: relative;
342
436
  display: flex;
@@ -410,6 +504,7 @@
410
504
  .memori-widget.memori-layout-chat .memori-chat-layout--controls .memori--start-panel,
411
505
  .memori-widget.memori-layout-chat .memori-chat-layout--controls .memori-chat--wrapper {
412
506
  min-width: 0;
507
+ margin-top: var(--memori-spacing-lg);
413
508
  }
414
509
 
415
510
  .memori-widget.memori-layout-chat .memori-chat-layout--controls .memori-chat--wrapper {
@@ -54,8 +54,8 @@
54
54
  actions and the divider stay aligned with the card edges at any width. */
55
55
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-row {
56
56
  max-width: var(--memori-layout-max-width);
57
- padding-right: 0;
58
- padding-left: 0;
57
+ padding-right: var(--memori-spacing-md);
58
+ padding-left: var(--memori-spacing-md);
59
59
  margin-right: auto;
60
60
  margin-left: auto;
61
61
  }
@@ -80,7 +80,7 @@
80
80
  min-height: 0;
81
81
  flex: 1 1 auto;
82
82
  border: none;
83
- border-radius: 0;
83
+ border-radius: var(--memori-radius-box);
84
84
  margin-bottom: 0;
85
85
  background-color: var(--memori-secondary-background);
86
86
  }
@@ -216,7 +216,7 @@
216
216
  flex: 1 1 0%;
217
217
  align-items: stretch;
218
218
  justify-content: center;
219
- padding: var(--memori-spacing-md) 0;
219
+ padding: var(--memori-spacing-md);
220
220
  border: none;
221
221
  margin: 0 auto;
222
222
  background: var(--memori-secondary-background);
@@ -325,7 +325,7 @@
325
325
  }
326
326
 
327
327
  .memori-widget.memori-layout-fullpage .memori--grid-column-artifact--open {
328
- width: 600px;
328
+ width: 700px;
329
329
  border-left: 1px solid color-mix(in srgb, var(--memori-text-color, #111827) 10%, transparent);
330
330
  background: var(--memori-secondary-background);
331
331
  }
@@ -439,7 +439,7 @@
439
439
  }
440
440
 
441
441
  .memori-widget.memori-layout-fullpage .memori--grid {
442
- padding: var(--memori-spacing-sm) 0;
442
+ padding: var(--memori-spacing-sm);
443
443
  gap: var(--memori-spacing-sm);
444
444
  }
445
445
 
@@ -462,7 +462,7 @@
462
462
  }
463
463
 
464
464
  .memori-widget.memori-layout-fullpage .memori--grid {
465
- padding: var(--memori-spacing-xs) 0;
465
+ padding: var(--memori-spacing-xs) var(--memori-spacing-sm);
466
466
  }
467
467
 
468
468
  .memori-widget.memori-layout-fullpage .memori-fullpage-header-row,
@@ -311,9 +311,9 @@
311
311
  right: 0;
312
312
  }
313
313
 
314
- /* Keep in sync with ArtifactDrawer split width (46% / --memori-modal-size-md override) */
314
+ /* Keep in sync with ArtifactDrawer split width (55% / --memori-modal-size-md override) */
315
315
  .memori-sidebar-toggle-artifact:checked ~ .memori-sidebar-container .memori-sidebar {
316
- right: 46%;
316
+ right: 55%;
317
317
  }
318
318
 
319
319
  .memori-sidebar-toggle:checked ~ .memori-sidebar-container .memori-open-label {
@@ -32,19 +32,19 @@ const Template: Story<Props> = args => (
32
32
 
33
33
  const DefaultLayout = Template.bind({});
34
34
  DefaultLayout.args = {
35
- memoriName: 'prova-sharepoint',
35
+ memoriName: 'Layout Storybook',
36
36
  ownerUserName: 'Andrea-Patini',
37
- memoriID: '019f129c-a5a3-74d3-b0c8-b7794437bb23',
37
+ memoriID: 'ae20fc5a-cc15-4db9-b7dd-2cd4a621b85e',
38
38
  ownerUserID: '91dbc9ba-b684-4fbe-9828-b5980af6cda9',
39
39
  tenantID: 'aisuru-staging.aclambda.online',
40
40
  engineURL: 'https://engine-staging.memori.ai/memori/v2',
41
41
  apiURL: 'https://backend-staging.memori.ai/api/v2',
42
- baseURL: 'https://aisuru-staging.aclambda.online',
43
- layout: 'FULLPAGE',
42
+ // baseURL: 'http://localhost:3000',
43
+ layout: 'ZOOMED_FULL_BODY',
44
44
  uiLang: 'IT',
45
45
  spokenLang: 'IT',
46
- showLogin: true,
47
- integrationID: '019f1896-730d-7e19-9a88-6413f485247b',
46
+ // integrationID: '32922e14-24d6-4f5f-a06b-d963da14a658',
47
+ showSettings: true,
48
48
  };
49
49
 
50
50
  export const Default = Template.bind({});
@@ -58,7 +58,7 @@ Totem.args = {
58
58
  uiLang: 'it',
59
59
  showShare: true,
60
60
  showSettings: true,
61
- memori: memori,
61
+ // memori: memori,
62
62
  integration: {
63
63
  ...integration,
64
64
  },
@@ -223,7 +223,7 @@ ZoomedFullBody.args = {
223
223
  tenantID: 'aisuru-staging.aclambda.online',
224
224
  engineURL: 'https://engine-staging.memori.ai/memori/v2',
225
225
  apiURL: 'https://backend-staging.memori.ai/api/v2',
226
- baseURL: 'http://localhost:3000',
226
+ // baseURL: 'http://localhost:3000',
227
227
  layout: 'ZOOMED_FULL_BODY',
228
228
  uiLang: 'IT',
229
229
  spokenLang: 'IT',