@memori.ai/memori-react 8.41.6 → 8.42.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 (172) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +367 -0
  3. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +36 -0
  4. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +116 -0
  5. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  6. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  7. package/dist/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  8. package/dist/components/DrawerFooter/DrawerFooter.js +10 -0
  9. package/dist/components/DrawerFooter/DrawerFooter.js.map +1 -0
  10. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +437 -0
  11. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +62 -0
  12. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +292 -0
  13. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  14. package/dist/components/PositionPopover/PositionPopover.css +219 -0
  15. package/dist/components/PositionPopover/PositionPopover.d.ts +20 -0
  16. package/dist/components/PositionPopover/PositionPopover.js +187 -0
  17. package/dist/components/PositionPopover/PositionPopover.js.map +1 -0
  18. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  19. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +43 -0
  20. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  21. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +724 -0
  22. package/dist/components/layouts/fullpage.css +425 -0
  23. package/dist/context/widgetSurfaceContext.d.ts +3 -0
  24. package/dist/context/widgetSurfaceContext.js +11 -0
  25. package/dist/context/widgetSurfaceContext.js.map +1 -0
  26. package/dist/helpers/media.js +18 -3
  27. package/dist/helpers/media.js.map +1 -1
  28. package/dist/helpers/positionPopover.d.ts +1 -0
  29. package/dist/helpers/positionPopover.js +7 -0
  30. package/dist/helpers/positionPopover.js.map +1 -0
  31. package/dist/helpers/usePressTooltip.d.ts +13 -0
  32. package/dist/helpers/usePressTooltip.js +23 -0
  33. package/dist/helpers/usePressTooltip.js.map +1 -0
  34. package/dist/icons/FacebookIcon.d.ts +3 -0
  35. package/dist/icons/FacebookIcon.js +6 -0
  36. package/dist/icons/FacebookIcon.js.map +1 -0
  37. package/dist/icons/LinkedinIcon.d.ts +3 -0
  38. package/dist/icons/LinkedinIcon.js +6 -0
  39. package/dist/icons/LinkedinIcon.js.map +1 -0
  40. package/dist/icons/MemoriIcon.d.ts +3 -0
  41. package/dist/icons/MemoriIcon.js +8 -0
  42. package/dist/icons/MemoriIcon.js.map +1 -0
  43. package/dist/icons/TelegramIcon.d.ts +3 -0
  44. package/dist/icons/TelegramIcon.js +6 -0
  45. package/dist/icons/TelegramIcon.js.map +1 -0
  46. package/dist/icons/TwitterIcon.d.ts +3 -0
  47. package/dist/icons/TwitterIcon.js +6 -0
  48. package/dist/icons/TwitterIcon.js.map +1 -0
  49. package/dist/icons/WhatsappIcon.d.ts +3 -0
  50. package/dist/icons/WhatsappIcon.js +6 -0
  51. package/dist/icons/WhatsappIcon.js.map +1 -0
  52. package/dist/icons/artifacts/DocumentIcon.d.ts +3 -0
  53. package/dist/icons/artifacts/DocumentIcon.js +6 -0
  54. package/dist/icons/artifacts/DocumentIcon.js.map +1 -0
  55. package/dist/icons/artifacts/HtmlIcon.d.ts +3 -0
  56. package/dist/icons/artifacts/HtmlIcon.js +6 -0
  57. package/dist/icons/artifacts/HtmlIcon.js.map +1 -0
  58. package/dist/icons/artifacts/JavascriptIcon.d.ts +3 -0
  59. package/dist/icons/artifacts/JavascriptIcon.js +6 -0
  60. package/dist/icons/artifacts/JavascriptIcon.js.map +1 -0
  61. package/dist/icons/artifacts/MarkdownIcon.d.ts +3 -0
  62. package/dist/icons/artifacts/MarkdownIcon.js +6 -0
  63. package/dist/icons/artifacts/MarkdownIcon.js.map +1 -0
  64. package/dist/icons/artifacts/PythonIcon.d.ts +3 -0
  65. package/dist/icons/artifacts/PythonIcon.js +6 -0
  66. package/dist/icons/artifacts/PythonIcon.js.map +1 -0
  67. package/dist/icons/artifacts/SvgIcon.d.ts +3 -0
  68. package/dist/icons/artifacts/SvgIcon.js +6 -0
  69. package/dist/icons/artifacts/SvgIcon.js.map +1 -0
  70. package/dist/icons/artifacts/XmlIcon.d.ts +3 -0
  71. package/dist/icons/artifacts/XmlIcon.js +6 -0
  72. package/dist/icons/artifacts/XmlIcon.js.map +1 -0
  73. package/dist/icons/artifacts/cssIcon.d.ts +3 -0
  74. package/dist/icons/artifacts/cssIcon.js +6 -0
  75. package/dist/icons/artifacts/cssIcon.js.map +1 -0
  76. package/dist/testUtils.d.ts +5 -0
  77. package/dist/testUtils.js +18 -0
  78. package/dist/testUtils.js.map +1 -0
  79. package/dist/version.d.ts +1 -1
  80. package/dist/version.js +1 -1
  81. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +367 -0
  82. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +36 -0
  83. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +113 -0
  84. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  85. package/esm/components/DrawerFooter/DrawerFooter.css +62 -0
  86. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  87. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  88. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  89. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +437 -0
  90. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +62 -0
  91. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +289 -0
  92. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  93. package/esm/components/PositionPopover/PositionPopover.css +219 -0
  94. package/esm/components/PositionPopover/PositionPopover.d.ts +20 -0
  95. package/esm/components/PositionPopover/PositionPopover.js +182 -0
  96. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  97. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  98. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +40 -0
  99. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  100. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +724 -0
  101. package/esm/components/layouts/fullpage.css +425 -0
  102. package/esm/context/widgetSurfaceContext.d.ts +3 -0
  103. package/esm/context/widgetSurfaceContext.js +7 -0
  104. package/esm/context/widgetSurfaceContext.js.map +1 -0
  105. package/esm/helpers/media.js +18 -3
  106. package/esm/helpers/media.js.map +1 -1
  107. package/esm/helpers/positionPopover.d.ts +1 -0
  108. package/esm/helpers/positionPopover.js +4 -0
  109. package/esm/helpers/positionPopover.js.map +1 -0
  110. package/esm/helpers/usePressTooltip.d.ts +13 -0
  111. package/esm/helpers/usePressTooltip.js +20 -0
  112. package/esm/helpers/usePressTooltip.js.map +1 -0
  113. package/esm/icons/FacebookIcon.d.ts +3 -0
  114. package/esm/icons/FacebookIcon.js +4 -0
  115. package/esm/icons/FacebookIcon.js.map +1 -0
  116. package/esm/icons/LinkedinIcon.d.ts +3 -0
  117. package/esm/icons/LinkedinIcon.js +4 -0
  118. package/esm/icons/LinkedinIcon.js.map +1 -0
  119. package/esm/icons/MemoriIcon.d.ts +3 -0
  120. package/esm/icons/MemoriIcon.js +6 -0
  121. package/esm/icons/MemoriIcon.js.map +1 -0
  122. package/esm/icons/TelegramIcon.d.ts +3 -0
  123. package/esm/icons/TelegramIcon.js +4 -0
  124. package/esm/icons/TelegramIcon.js.map +1 -0
  125. package/esm/icons/TwitterIcon.d.ts +3 -0
  126. package/esm/icons/TwitterIcon.js +4 -0
  127. package/esm/icons/TwitterIcon.js.map +1 -0
  128. package/esm/icons/WhatsappIcon.d.ts +3 -0
  129. package/esm/icons/WhatsappIcon.js +4 -0
  130. package/esm/icons/WhatsappIcon.js.map +1 -0
  131. package/esm/icons/artifacts/DocumentIcon.d.ts +3 -0
  132. package/esm/icons/artifacts/DocumentIcon.js +4 -0
  133. package/esm/icons/artifacts/DocumentIcon.js.map +1 -0
  134. package/esm/icons/artifacts/HtmlIcon.d.ts +3 -0
  135. package/esm/icons/artifacts/HtmlIcon.js +4 -0
  136. package/esm/icons/artifacts/HtmlIcon.js.map +1 -0
  137. package/esm/icons/artifacts/JavascriptIcon.d.ts +3 -0
  138. package/esm/icons/artifacts/JavascriptIcon.js +4 -0
  139. package/esm/icons/artifacts/JavascriptIcon.js.map +1 -0
  140. package/esm/icons/artifacts/MarkdownIcon.d.ts +3 -0
  141. package/esm/icons/artifacts/MarkdownIcon.js +4 -0
  142. package/esm/icons/artifacts/MarkdownIcon.js.map +1 -0
  143. package/esm/icons/artifacts/PythonIcon.d.ts +3 -0
  144. package/esm/icons/artifacts/PythonIcon.js +4 -0
  145. package/esm/icons/artifacts/PythonIcon.js.map +1 -0
  146. package/esm/icons/artifacts/SvgIcon.d.ts +3 -0
  147. package/esm/icons/artifacts/SvgIcon.js +4 -0
  148. package/esm/icons/artifacts/SvgIcon.js.map +1 -0
  149. package/esm/icons/artifacts/XmlIcon.d.ts +3 -0
  150. package/esm/icons/artifacts/XmlIcon.js +4 -0
  151. package/esm/icons/artifacts/XmlIcon.js.map +1 -0
  152. package/esm/icons/artifacts/cssIcon.d.ts +3 -0
  153. package/esm/icons/artifacts/cssIcon.js +4 -0
  154. package/esm/icons/artifacts/cssIcon.js.map +1 -0
  155. package/esm/testUtils.d.ts +5 -0
  156. package/esm/testUtils.js +15 -0
  157. package/esm/testUtils.js.map +1 -0
  158. package/esm/version.d.ts +1 -1
  159. package/esm/version.js +1 -1
  160. package/package.json +1 -1
  161. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +10 -10
  162. package/src/helpers/media.test.ts +36 -0
  163. package/src/helpers/media.ts +39 -12
  164. package/src/version.ts +1 -1
  165. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +0 -8
  166. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +0 -117
  167. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +0 -1
  168. package/dist/helpers/nats/natsBundled.js +0 -13224
  169. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +0 -8
  170. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +0 -112
  171. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +0 -1
  172. package/esm/helpers/nats/natsBundled.js +0 -13225
@@ -0,0 +1,724 @@
1
+ /* ============================================
2
+ MOBILE-FIRST WEBSITE ASSISTANT LAYOUT
3
+ Enhanced UI/UX with modern design patterns
4
+ ============================================ */
5
+
6
+ /* ============================================
7
+ TRIGGER BUTTON (Mobile First)
8
+ ============================================ */
9
+
10
+ .memori-website_assistant--trigger {
11
+ position: fixed;
12
+ z-index: 2147483647;
13
+ right: 0px;
14
+ bottom: 0px;
15
+ display: flex;
16
+ opacity: 1;
17
+ pointer-events: all;
18
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
19
+ visibility: visible;
20
+ }
21
+
22
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
23
+ width: 64px !important;
24
+ height: 64px !important;
25
+ box-shadow: 0 0 0.5em 0.2em rgba(0, 0, 0, 0.15) inset, 0 0 0.15em 0 rgba(255, 255, 255, 0.9),
26
+ 0 2px 8px rgba(130, 70, 175, 0.2);
27
+ transition: all 0.3s ease;
28
+ }
29
+
30
+ .memori-website_assistant--trigger-button .memori-blob,
31
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv,
32
+ .memori-website_assistant--trigger-button .memori-blob figure {
33
+ pointer-events: none;
34
+ touch-action: none;
35
+ }
36
+
37
+ .memori-website_assistant--trigger-button:hover .memori-blob .mainDiv {
38
+ box-shadow: 0 0 0.6em 0.25em rgba(0, 0, 0, 0.1) inset, 0 0 0.2em 0 rgba(255, 255, 255, 0.95),
39
+ 0 4px 16px rgba(130, 70, 175, 0.3);
40
+ }
41
+
42
+ .memori-website_assistant--trigger:hover {
43
+ transform: scale(1.05);
44
+ }
45
+
46
+ .memori-website_assistant--trigger:active {
47
+ transform: scale(0.95);
48
+ }
49
+
50
+ .memori-website_assistant--trigger-button {
51
+ position: relative;
52
+ width: 64px;
53
+ height: 64px;
54
+ padding: 0;
55
+ border: none !important;
56
+ border-radius: 50%;
57
+ -webkit-backdrop-filter: blur(10px);
58
+ backdrop-filter: blur(10px);
59
+ box-shadow: none !important;
60
+ cursor: pointer;
61
+ transform: translate(-12px, -12px);
62
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
63
+ }
64
+
65
+ .memori-website_assistant--trigger-button:active {
66
+ transform: translateY(0) scale(0.95);
67
+ }
68
+
69
+ .memori-website_assistant--trigger-button .memori-blob {
70
+ position: relative !important;
71
+ display: block;
72
+ width: 100%;
73
+ height: 100%;
74
+ margin: 0;
75
+ }
76
+
77
+ .memori-website_assistant--trigger-button .memori-blob figure {
78
+ width: 85%;
79
+ border-radius: 0;
80
+ opacity: 1;
81
+ transition: transform 0.3s ease;
82
+ }
83
+
84
+ /* Tablet and up */
85
+ @media (min-width: 601px) {
86
+ .memori-website_assistant--trigger-button {
87
+ width: 80px;
88
+ height: 80px;
89
+ }
90
+
91
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
92
+ width: 80px !important;
93
+ height: 80px !important;
94
+ }
95
+ }
96
+
97
+ /* Desktop */
98
+ @media (min-width: 1024px) {
99
+ .memori-website_assistant--trigger-button {
100
+ width: 96px !important;
101
+ height: 96px !important;
102
+ }
103
+
104
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
105
+ width: 96px !important;
106
+ height: 96px !important;
107
+ }
108
+ }
109
+
110
+ /* ============================================
111
+ CLOSE BUTTON
112
+ ============================================ */
113
+
114
+ .memori-website_assistant--close-button-wrapper {
115
+ position: relative;
116
+ z-index: 1001;
117
+ flex-shrink: 0;
118
+ transition: transform 0.2s ease;
119
+ }
120
+
121
+ .memori-website_assistant--close-button-wrapper:hover {
122
+ transform: scale(1.1);
123
+ }
124
+
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);
136
+ }
137
+
138
+ /* ============================================
139
+ MAIN CONTAINER (Mobile First)
140
+ ============================================ */
141
+
142
+ .memori-widget.memori-layout-website_assistant {
143
+ position: relative;
144
+ font-size: var(--memori-text-size-small);
145
+ }
146
+
147
+ /*
148
+ * Login and Position drawers are portaled to body by Headless UI.
149
+ * When layout is WEBSITE_ASSISTANT we pass drawerClassName so they sit above the fixed panel.
150
+ */
151
+ .memori-drawer.memori-drawer--above-website-assistant,
152
+ .memori-drawer.memori-drawer--above-website-assistant .memori-drawer--backdrop,
153
+ .memori-drawer.memori-drawer--above-website-assistant .memori-drawer--container {
154
+ z-index: 2147483000;
155
+ }
156
+
157
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
158
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
159
+ position: fixed;
160
+ right: 0;
161
+ bottom: 0;
162
+ overflow: hidden;
163
+ width: 100vw;
164
+ max-width: 100vw;
165
+ border-radius: var(--memori-radius-box) var(--memori-radius-box) 0 0;
166
+ -webkit-backdrop-filter: blur(20px);
167
+ backdrop-filter: blur(20px);
168
+ box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.12), 0 -2px 8px rgba(0, 0, 0, 0.08);
169
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
170
+ }
171
+
172
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed {
173
+ overflow: visible;
174
+ height: 0;
175
+ opacity: 0;
176
+ pointer-events: none;
177
+ }
178
+
179
+ /* Ensure trigger button is always visible even when container is collapsed */
180
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed .memori-website_assistant--trigger {
181
+ opacity: 1;
182
+ pointer-events: all;
183
+ visibility: visible;
184
+ }
185
+
186
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
187
+ height: min(85vh, calc(100vh - var(--memori-spacing-5xl)));
188
+ padding: 0.5rem 0rem;
189
+ margin-bottom: 0;
190
+ background: var(--chat-bg, #f4f4f5);
191
+ opacity: 1;
192
+ pointer-events: all;
193
+ }
194
+
195
+ /*
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%`.
198
+ */
199
+ .memori-widget.memori-layout-website_assistant
200
+ .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
201
+ right: 46%;
202
+ }
203
+
204
+ /* Tablet */
205
+ @media (min-width: 601px) {
206
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
207
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
208
+ right: 0;
209
+ width: 90vw;
210
+ max-width: 480px;
211
+ border-radius: var(--memori-radius-box) 0 0 0;
212
+ }
213
+
214
+ .memori-widget.memori-layout-website_assistant
215
+ .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
216
+ right: 46%;
217
+ }
218
+
219
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
220
+ height: min(75vh, calc(100vh - var(--memori-spacing-5xl)));
221
+ }
222
+ }
223
+
224
+ /* Desktop */
225
+ @media (min-width: 1024px) {
226
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
227
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
228
+ width: 480px;
229
+ border-radius: var(--memori-radius-box) 0 0 0;
230
+ }
231
+
232
+ .memori-widget.memori-layout-website_assistant
233
+ .memori-website_assistant--expanded.memori-website_assistant--artifact-open {
234
+ right: 46%;
235
+ }
236
+
237
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
238
+ height: 100vh;
239
+ border-radius: 0;
240
+ margin-bottom: 0;
241
+ }
242
+ }
243
+
244
+ /* ============================================
245
+ ANIMATIONS
246
+ ============================================ */
247
+
248
+ @keyframes showup {
249
+ 0% {
250
+ opacity: 0;
251
+ transform: translateY(20px) scale(0.95);
252
+ }
253
+ 100% {
254
+ opacity: 1;
255
+ transform: translateY(0) scale(1);
256
+ }
257
+ }
258
+
259
+ @keyframes slideUp {
260
+ from {
261
+ opacity: 0;
262
+ transform: translateY(100%);
263
+ }
264
+ to {
265
+ opacity: 1;
266
+ transform: translateY(0);
267
+ }
268
+ }
269
+
270
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded .memori-website_assistant-layout {
271
+ animation: showup 0.4s cubic-bezier(0.4, 0, 0.2, 1);
272
+ }
273
+
274
+ /* ============================================
275
+ LAYOUT STRUCTURE
276
+ ============================================ */
277
+
278
+ .memori-widget .memori-spin.memori-website_assistant-layout {
279
+ position: relative;
280
+ display: flex;
281
+ height: 100%;
282
+ flex-direction: column;
283
+ }
284
+
285
+ .memori-widget.memori-layout-website_assistant .memori--global-background {
286
+ background: none;
287
+ }
288
+
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;
299
+ justify-content: center;
300
+ padding: 0.5rem 1rem 0.75rem;
301
+ border-radius: 0;
302
+ margin: 0;
303
+ background: var(--chat-bg, #f4f4f5);
304
+ text-align: center;
305
+ transform: none;
306
+ }
307
+
308
+ /* ============================================
309
+ HEADER
310
+ ============================================ */
311
+
312
+ .memori-website_assistant-layout--header {
313
+ position: absolute;
314
+ z-index: 1000;
315
+ top: 0.75rem;
316
+ right: 0.75rem;
317
+ padding: 0.5rem;
318
+ border-radius: var(--memori-radius-box);
319
+ background: var(--memori-secondary-background);
320
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
321
+ text-align: right;
322
+ }
323
+
324
+ .memori-website_assistant-layout--header-hidden {
325
+ display: none;
326
+ }
327
+
328
+ .memori-website_assistant-layout .memori-header {
329
+ z-index: 1000;
330
+ display: inline-flex;
331
+ width: auto;
332
+ height: auto;
333
+ flex-direction: row;
334
+ padding: 0;
335
+ gap: 0.35rem;
336
+ }
337
+
338
+ /* Less specific first (no-descending-specificity): single .memori-header--button */
339
+ .memori-website_assistant-layout .memori-header .memori-header--button,
340
+ .memori-website_assistant-layout .memori-header .memori-share-button {
341
+ margin-top: 0;
342
+ margin-right: 0;
343
+ margin-left: 0;
344
+ }
345
+
346
+ /* More specific: adjacent sibling (must come after general .memori-header--button rules) */
347
+ .memori-website_assistant-layout .memori-header .memori-header--button + .memori-header--button {
348
+ margin-top: 0;
349
+ margin-right: 0;
350
+ margin-left: 0;
351
+ }
352
+
353
+ .memori-website_assistant-layout--header-row {
354
+ position: absolute;
355
+ z-index: 1001;
356
+ top: 0.75rem;
357
+ right: 0.75rem;
358
+ display: flex;
359
+ align-items: center;
360
+ justify-content: flex-end;
361
+ gap: 0.5rem;
362
+ }
363
+
364
+ /* Position dropdown below the trigger so it does not cover the share button */
365
+ .memori-widget.memori-layout-website_assistant .memori-share-button .memori-share-button--overlay {
366
+ z-index: 1002;
367
+ top: 100%;
368
+ margin-top: 0.5rem;
369
+ }
370
+
371
+ .memori-widget.memori-layout-website_assistant .memori-header--button--fullscreen {
372
+ display: none;
373
+ }
374
+
375
+ /* ============================================
376
+ AVATAR SECTION
377
+ ============================================ */
378
+
379
+ .memori-website_assistant-layout--avatar {
380
+ position: relative;
381
+ overflow: hidden;
382
+ min-height: 0;
383
+ max-height: 35vh;
384
+ flex: 1;
385
+ /* Prevent avatar/blob from growing unbounded and overlapping header/controls */
386
+ contain: layout style;
387
+ }
388
+
389
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper {
390
+ position: absolute;
391
+ z-index: 0;
392
+ top: 0;
393
+ left: 0;
394
+ overflow: hidden;
395
+ width: 100%;
396
+ height: 100%;
397
+ }
398
+
399
+ .memori-website_assistant-layout--avatar .memori--blob-container {
400
+ display: block;
401
+ }
402
+
403
+ .memori-website_assistant-layout--avatar .memori-blob {
404
+ z-index: 2;
405
+ }
406
+
407
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader {
408
+ display: flex;
409
+ width: 100%;
410
+ height: 100%;
411
+ align-items: center;
412
+ justify-content: center;
413
+ transform: none !important;
414
+ }
415
+
416
+ .memori-layout-website_assistant .memori--avatar-wrapper > div {
417
+ overflow: visible !important;
418
+ width: auto !important;
419
+ height: 100%;
420
+ border-radius: 0;
421
+ }
422
+
423
+ .memori-layout-website_assistant .memori--avatar-wrapper > div canvas + div {
424
+ position: absolute !important;
425
+ width: 100%;
426
+ height: 100%;
427
+ transform: none !important;
428
+ }
429
+
430
+ .memori-layout-website_assistant.memori--avatar-readyplayerme-full .memori--avatar-wrapper > div,
431
+ .memori-layout-website_assistant.memori--avatar-avatar-configurator .memori--avatar-wrapper > div {
432
+ transform: scale(1.7) translate(0px, 10vh);
433
+ }
434
+
435
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper canvas {
436
+ width: auto !important;
437
+ max-width: 100%;
438
+ height: 100%;
439
+ object-fit: contain;
440
+ }
441
+
442
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader figure {
443
+ text-align: center;
444
+ }
445
+
446
+ .memori-layout-website_assistant.memori--avatar-readyplayerme
447
+ .memori-website_assistant--trigger-button
448
+ .memori-blob
449
+ figure {
450
+ width: 100%;
451
+ }
452
+
453
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader .memori-spin--spinner {
454
+ background: none;
455
+ }
456
+
457
+ /* ============================================
458
+ CONTROLS SECTION
459
+ ============================================ */
460
+
461
+ .memori-website_assistant-layout--controls {
462
+ position: relative;
463
+ z-index: 5;
464
+ display: flex;
465
+ min-height: 0;
466
+ flex: 1;
467
+ flex-direction: column;
468
+ padding: 1rem;
469
+ padding-bottom: 0;
470
+ background-color: var(--chat-bg, #f4f4f5);
471
+ }
472
+
473
+ .memori-website_assistant-layout--controls .memori-chat--history,
474
+ .memori-website_assistant-layout--controls .memori-chat--content {
475
+ background: var(--chat-bg, #f4f4f5);
476
+ }
477
+
478
+ .memori-website_assistant-layout--controls .memori-chat--history {
479
+ padding: 0;
480
+ margin-top: var(--memori-spacing-3xl);
481
+ -webkit-backdrop-filter: none;
482
+ backdrop-filter: none;
483
+ }
484
+
485
+ .memori-website_assistant-layout--controls .memori-chat--content {
486
+ padding: 0;
487
+ }
488
+
489
+ .memori-website_assistant-layout--controls .memori-chat--bubble-initial + .memori-chat--bubble-container {
490
+ margin-top: auto;
491
+ }
492
+
493
+ .memori-website_assistant-layout--controls .memori-chat--content .memori-chat--bubble-container:first-of-type {
494
+ margin-top: auto;
495
+ }
496
+
497
+ .memori-website_assistant-layout--controls .memori--start-panel,
498
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
499
+ width: 100%;
500
+ max-width: 100%;
501
+ padding: 0;
502
+ margin: auto;
503
+ }
504
+
505
+ .memori-website_assistant-layout--controls .memori--start-panel {
506
+ flex: 1;
507
+ align-content: center;
508
+ align-self: center;
509
+ padding: 1rem;
510
+ border: 0px;
511
+ border-radius: var(--memori-radius-box);
512
+ margin: 0.75rem;
513
+ margin-bottom: var(--memori-spacing-2xl) !important;
514
+ box-shadow: none !important;
515
+ }
516
+
517
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
518
+ display: flex;
519
+ min-height: 0;
520
+ flex: 1;
521
+ flex-direction: column;
522
+ padding: 0.75rem;
523
+ padding-bottom: 0;
524
+ border: 0px !important;
525
+ background: var(--chat-bg, #f4f4f5);
526
+ box-shadow: none !important;
527
+ }
528
+
529
+ /* Input bar styles (dark compact pill) live in ChatInputs.css.
530
+ Anchor the bar at the bottom of the assistant panel. */
531
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant-layout--controls .memori-chat--wrapper {
532
+ display: flex;
533
+ min-height: 0;
534
+ flex: 1;
535
+ flex-direction: column;
536
+ }
537
+
538
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant-layout--controls .memori-chat--history {
539
+ min-height: 0;
540
+ flex: 1 1 auto;
541
+ margin-bottom: 0;
542
+ }
543
+
544
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant-layout--controls .memori-chat-inputs-wrapper {
545
+ width: 100%;
546
+ flex-shrink: 0;
547
+ margin-bottom: 0;
548
+ }
549
+
550
+ /* Tablet and up */
551
+ @media (min-width: 601px) {
552
+ .memori-website_assistant-layout--controls .memori--start-panel,
553
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
554
+ max-width: 100%;
555
+ }
556
+
557
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
558
+ padding: 1rem;
559
+ }
560
+
561
+ .memori-website_assistant-layout--controls .memori--start-panel {
562
+ padding: 1.5rem;
563
+ margin: 0 auto;
564
+ }
565
+ }
566
+
567
+ /* Desktop */
568
+ @media (min-width: 1024px) {
569
+ .memori-website_assistant-layout--controls .memori--start-panel,
570
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
571
+ max-width: 800px;
572
+ }
573
+ }
574
+
575
+ /* ============================================
576
+ CHAT STYLING
577
+ ============================================ */
578
+
579
+ .memori-website_assistant-layout .memori-chat--cover {
580
+ display: none;
581
+ }
582
+
583
+ .memori-website_assistant-layout .memori--cover {
584
+ padding: 0;
585
+ background: none;
586
+ }
587
+
588
+ .memori-website_assistant-layout .memori-chat--bubble,
589
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble {
590
+ animation: showup 0.3s ease-out;
591
+ opacity: 1;
592
+ transition: all 0.2s ease-in-out;
593
+ }
594
+
595
+ .memori-website_assistant-layout .memori-chat--bubble:hover,
596
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble:hover {
597
+ opacity: 1;
598
+ transform: translateY(-1px);
599
+ }
600
+
601
+ .memori-website_assistant-layout .memori-chat--bubble p,
602
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble p {
603
+ opacity: 1;
604
+ }
605
+
606
+ /* ============================================
607
+ OTHER ELEMENTS
608
+ ============================================ */
609
+
610
+ .memori-website_assistant-layout .memori--avatar-toggle {
611
+ display: none;
612
+ width: 100%;
613
+ justify-content: center;
614
+ }
615
+
616
+ .memori-website_assistant-layout .memori--title,
617
+ .memori-website_assistant-layout .memori--description,
618
+ .memori-website_assistant-layout .memori--needsPosition {
619
+ color: var(--memori-text-color);
620
+ }
621
+
622
+ .memori-website_assistant-layout .memori--global-background-image {
623
+ background: none;
624
+ }
625
+
626
+ .memori-website_assistant-layout .memori--description-text,
627
+ .memori-website_assistant-layout .memori--translation-toggle {
628
+ display: none;
629
+ }
630
+
631
+ /* ============================================
632
+ RESPONSIVE ADJUSTMENTS
633
+ ============================================ */
634
+
635
+ @media (max-width: 480px) {
636
+ .memori-website_assistant-layout .memori-send-on-enter-menu {
637
+ display: none;
638
+ }
639
+
640
+ .memori-website_assistant-layout .memori-header--button-settings {
641
+ display: none;
642
+ }
643
+
644
+ .memori-website_assistant-layout--controls {
645
+ padding: 0.75rem;
646
+ }
647
+
648
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
649
+ padding: 0.5rem;
650
+ }
651
+
652
+ .memori-website_assistant-layout--controls .memori--start-panel {
653
+ padding: 1rem;
654
+ margin: 0.5rem;
655
+ }
656
+ }
657
+
658
+ /* After controls .memori--start-panel rules (no-descending-specificity: 3-class selector wins over 2-class) */
659
+ .memori-widget.memori-layout-website_assistant .memori--start-panel {
660
+ border: none;
661
+ }
662
+
663
+ @media (max-width: 768px) {
664
+ .memori-website_assistant--trigger-button {
665
+ width: 80px !important;
666
+ height: 80px !important;
667
+ -webkit-backdrop-filter: blur(12px);
668
+ backdrop-filter: blur(12px);
669
+ background: rgba(255, 255, 255, 0.25);
670
+ }
671
+
672
+ /* Keep blob container as positioning context and centered in button */
673
+ .memori-website_assistant--trigger-button .memori-blob {
674
+ position: relative !important;
675
+ top: 0 !important;
676
+ display: flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ }
680
+
681
+ /* Center .mainDiv in button: use percentage translate so blob aligns with button (override Blob.css mobile pixel offsets) */
682
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
683
+ top: 50% !important;
684
+ left: 50% !important;
685
+ --memori-blob-x: -50%;
686
+ --memori-blob-y: -50%;
687
+ }
688
+ }
689
+
690
+ /* ============================================
691
+ ACCESSIBILITY & PERFORMANCE
692
+ ============================================ */
693
+
694
+ @media (prefers-reduced-motion: reduce) {
695
+ .memori-website_assistant--trigger,
696
+ .memori-website_assistant--trigger-button,
697
+ .memori-website_assistant--close-button-wrapper,
698
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
699
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded,
700
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded .memori-website_assistant-layout,
701
+ .memori-website_assistant-layout .memori-chat--bubble {
702
+ animation: none !important;
703
+ transition: none !important;
704
+ }
705
+ }
706
+
707
+ /* Touch device optimizations */
708
+ @media (hover: none) and (pointer: coarse) {
709
+ .memori-website_assistant--trigger-button {
710
+ width: 80px;
711
+ height: 80px;
712
+ }
713
+
714
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
715
+ width: 72px !important;
716
+ height: 72px !important;
717
+ }
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
+ }