@memori.ai/memori-react 8.15.0 → 8.16.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 (166) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/Chat/Chat.css +2 -1
  3. package/dist/components/Chat/Chat.js +17 -17
  4. package/dist/components/Chat/Chat.js.map +1 -1
  5. package/dist/components/ChatBubble/ChatBubble.css +1 -1
  6. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  7. package/dist/components/ContentPreviewModal/ContentPreviewModal.d.ts +14 -0
  8. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +18 -0
  9. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -0
  10. package/dist/components/ContentPreviewModal/index.d.ts +2 -0
  11. package/dist/components/ContentPreviewModal/index.js +9 -0
  12. package/dist/components/ContentPreviewModal/index.js.map +1 -0
  13. package/dist/components/FilePreview/FilePreview.css +1 -1
  14. package/dist/components/FilePreview/FilePreview.js +43 -13
  15. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  16. package/dist/components/MediaWidget/DocumentCard.d.ts +3 -0
  17. package/dist/components/MediaWidget/DocumentCard.js +9 -0
  18. package/dist/components/MediaWidget/DocumentCard.js.map +1 -0
  19. package/dist/components/MediaWidget/MediaItemWidget.css +946 -19
  20. package/dist/components/MediaWidget/MediaItemWidget.d.ts +5 -36
  21. package/dist/components/MediaWidget/MediaItemWidget.js +295 -198
  22. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  23. package/dist/components/MediaWidget/MediaItemWidget.types.d.ts +62 -0
  24. package/dist/components/MediaWidget/MediaItemWidget.types.js +3 -0
  25. package/dist/components/MediaWidget/MediaItemWidget.types.js.map +1 -0
  26. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +23 -0
  27. package/dist/components/MediaWidget/MediaItemWidget.utils.js +162 -0
  28. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -0
  29. package/dist/components/MediaWidget/MediaPreviewModal.d.ts +15 -0
  30. package/dist/components/MediaWidget/MediaPreviewModal.js +162 -0
  31. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -0
  32. package/dist/components/MediaWidget/MediaWidget.js +1 -2
  33. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  34. package/dist/components/Snippet/Snippet.css +64 -33
  35. package/dist/components/Snippet/Snippet.js +17 -4
  36. package/dist/components/Snippet/Snippet.js.map +1 -1
  37. package/dist/components/StartPanel/StartPanel.js +1 -2
  38. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  39. package/dist/components/UploadButton/UploadButton.css +0 -5
  40. package/dist/components/layouts/WebsiteAssistant.js +8 -8
  41. package/dist/components/layouts/WebsiteAssistant.js.map +1 -1
  42. package/dist/components/layouts/chat.css +1 -1
  43. package/dist/components/layouts/website-assistant.css +405 -197
  44. package/dist/helpers/constants.js +0 -7
  45. package/dist/helpers/constants.js.map +1 -1
  46. package/dist/helpers/utils.d.ts +1 -0
  47. package/dist/helpers/utils.js +3 -1
  48. package/dist/helpers/utils.js.map +1 -1
  49. package/dist/index.js +50 -6
  50. package/dist/index.js.map +1 -1
  51. package/dist/styles.css +0 -2
  52. package/dist/version.d.ts +1 -0
  53. package/dist/version.js +5 -0
  54. package/dist/version.js.map +1 -0
  55. package/esm/components/Chat/Chat.css +2 -1
  56. package/esm/components/Chat/Chat.js +17 -17
  57. package/esm/components/Chat/Chat.js.map +1 -1
  58. package/esm/components/ChatBubble/ChatBubble.css +1 -1
  59. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  60. package/esm/components/ContentPreviewModal/ContentPreviewModal.d.ts +14 -0
  61. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +15 -0
  62. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -0
  63. package/esm/components/ContentPreviewModal/index.d.ts +2 -0
  64. package/esm/components/ContentPreviewModal/index.js +2 -0
  65. package/esm/components/ContentPreviewModal/index.js.map +1 -0
  66. package/esm/components/FilePreview/FilePreview.css +1 -1
  67. package/esm/components/FilePreview/FilePreview.js +44 -14
  68. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  69. package/esm/components/MediaWidget/DocumentCard.d.ts +3 -0
  70. package/esm/components/MediaWidget/DocumentCard.js +5 -0
  71. package/esm/components/MediaWidget/DocumentCard.js.map +1 -0
  72. package/esm/components/MediaWidget/MediaItemWidget.css +946 -19
  73. package/esm/components/MediaWidget/MediaItemWidget.d.ts +5 -36
  74. package/esm/components/MediaWidget/MediaItemWidget.js +296 -197
  75. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  76. package/esm/components/MediaWidget/MediaItemWidget.types.d.ts +62 -0
  77. package/esm/components/MediaWidget/MediaItemWidget.types.js +2 -0
  78. package/esm/components/MediaWidget/MediaItemWidget.types.js.map +1 -0
  79. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +23 -0
  80. package/esm/components/MediaWidget/MediaItemWidget.utils.js +149 -0
  81. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -0
  82. package/esm/components/MediaWidget/MediaPreviewModal.d.ts +15 -0
  83. package/esm/components/MediaWidget/MediaPreviewModal.js +157 -0
  84. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -0
  85. package/esm/components/MediaWidget/MediaWidget.js +1 -2
  86. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  87. package/esm/components/Snippet/Snippet.css +64 -33
  88. package/esm/components/Snippet/Snippet.js +18 -5
  89. package/esm/components/Snippet/Snippet.js.map +1 -1
  90. package/esm/components/StartPanel/StartPanel.js +1 -2
  91. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  92. package/esm/components/UploadButton/UploadButton.css +0 -5
  93. package/esm/components/layouts/WebsiteAssistant.js +8 -8
  94. package/esm/components/layouts/WebsiteAssistant.js.map +1 -1
  95. package/esm/components/layouts/chat.css +1 -1
  96. package/esm/components/layouts/website-assistant.css +405 -197
  97. package/esm/helpers/constants.js +0 -7
  98. package/esm/helpers/constants.js.map +1 -1
  99. package/esm/helpers/utils.d.ts +1 -0
  100. package/esm/helpers/utils.js +1 -0
  101. package/esm/helpers/utils.js.map +1 -1
  102. package/esm/index.js +50 -6
  103. package/esm/index.js.map +1 -1
  104. package/esm/styles.css +0 -2
  105. package/esm/version.d.ts +1 -0
  106. package/esm/version.js +2 -0
  107. package/esm/version.js.map +1 -0
  108. package/package.json +5 -3
  109. package/src/components/Chat/Chat.css +2 -1
  110. package/src/components/Chat/Chat.stories.tsx +124 -0
  111. package/src/components/Chat/Chat.tsx +72 -71
  112. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +567 -1034
  113. package/src/components/ChatBubble/ChatBubble.css +1 -1
  114. package/src/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  115. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +69 -0
  116. package/src/components/ContentPreviewModal/index.ts +2 -0
  117. package/src/components/FilePreview/FilePreview.css +1 -1
  118. package/src/components/FilePreview/FilePreview.tsx +60 -37
  119. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +15 -105
  120. package/src/components/MediaWidget/DocumentCard.test.tsx +45 -0
  121. package/src/components/MediaWidget/DocumentCard.tsx +19 -0
  122. package/src/components/MediaWidget/MediaItemWidget.css +946 -19
  123. package/src/components/MediaWidget/MediaItemWidget.test.tsx +89 -1
  124. package/src/components/MediaWidget/MediaItemWidget.tsx +734 -461
  125. package/src/components/MediaWidget/MediaItemWidget.types.ts +65 -0
  126. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +324 -0
  127. package/src/components/MediaWidget/MediaItemWidget.utils.ts +194 -0
  128. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +271 -0
  129. package/src/components/MediaWidget/MediaPreviewModal.tsx +423 -0
  130. package/src/components/MediaWidget/MediaWidget.stories.tsx +193 -0
  131. package/src/components/MediaWidget/MediaWidget.tsx +2 -4
  132. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +24 -0
  133. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +162 -170
  134. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +21 -63
  135. package/src/components/Snippet/Snippet.css +64 -33
  136. package/src/components/Snippet/Snippet.tsx +30 -21
  137. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +314 -297
  138. package/src/components/StartPanel/StartPanel.tsx +0 -9
  139. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +12 -636
  140. package/src/components/UploadButton/UploadButton.css +0 -5
  141. package/src/components/layouts/WebsiteAssistant.tsx +66 -62
  142. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +1 -53
  143. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +2 -106
  144. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +1 -53
  145. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +1 -53
  146. package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +32 -33
  147. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +1 -53
  148. package/src/components/layouts/chat.css +1 -1
  149. package/src/components/layouts/layouts.stories.tsx +68 -0
  150. package/src/components/layouts/website-assistant.css +405 -197
  151. package/src/helpers/constants.ts +0 -7
  152. package/src/helpers/utils.ts +4 -0
  153. package/src/index.test.tsx +8 -0
  154. package/src/index.tsx +55 -5
  155. package/src/styles.css +0 -2
  156. package/src/version.ts +2 -0
  157. package/src/components/AttachmentLinkModal/AttachmentLinkModal.css +0 -68
  158. package/src/components/AttachmentLinkModal/AttachmentLinkModal.stories.tsx +0 -32
  159. package/src/components/AttachmentLinkModal/AttachmentLinkModal.test.tsx +0 -10
  160. package/src/components/AttachmentLinkModal/AttachmentLinkModal.tsx +0 -131
  161. package/src/components/AttachmentLinkModal/__snapshots__/AttachmentLinkModal.test.tsx.snap +0 -9
  162. package/src/components/MediaWidget/LinkItemWidget.css +0 -46
  163. package/src/components/MediaWidget/LinkItemWidget.stories.tsx +0 -61
  164. package/src/components/MediaWidget/LinkItemWidget.test.tsx +0 -33
  165. package/src/components/MediaWidget/LinkItemWidget.tsx +0 -204
  166. package/src/components/MediaWidget/__snapshots__/LinkItemWidget.test.tsx.snap +0 -253
@@ -1,36 +1,69 @@
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
+
1
10
  .memori-website_assistant--trigger {
2
11
  position: fixed;
3
- right: 0.5em;
4
- bottom: 0.5em;
12
+ z-index: 10000;
13
+ right: 0px;
14
+ bottom: 0px;
5
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;
6
20
  }
7
21
 
8
- .memori-website_assistant--trigger-button {
9
- position: relative;
10
- width: 120px;
11
- height: 120px;
12
- padding: 1em;
13
- cursor: pointer;
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;
14
28
  }
15
29
 
16
- @media (max-width: 600px) {
17
- .memori-website_assistant--trigger-button {
18
- width: 80px;
19
- height: 80px;
20
- padding: 1em;
21
- }
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;
22
35
  }
23
36
 
24
- .memori-website_assistant--close-button-wrapper {
25
- position: absolute;
26
- z-index: 1;
27
- top: 100%;
28
- right: 0;
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);
29
40
  }
30
41
 
31
- .memori-website_assistant--close-button-wrapper button.memori-website_assistant--close-button {
32
- padding: 1rem;
33
- font-size: 16px;
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
+ background: transparent !important;
60
+ box-shadow: none !important;
61
+ cursor: pointer;
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);
34
67
  }
35
68
 
36
69
  .memori-website_assistant--trigger-button .memori-blob {
@@ -41,82 +74,75 @@
41
74
  width: 100%;
42
75
  height: 100%;
43
76
  margin: 0;
77
+ transform: translate(-25%, -25%);
44
78
  }
45
79
 
46
- .memori-website_assistant--trigger-button .memori-blob .mainDiv {
47
- width: 120px !important;
48
- height: 120px !important;
49
- box-shadow: 0 0 0.5em 0.2em rgba(0, 0, 0, 0.85) inset, 0 0 0.15em 0 rgba(255, 255, 255, 0.85);
50
- }
51
-
52
- .memori-website_assistant--trigger-button .memori-blob,
53
- .memori-website_assistant--trigger-button .memori-blob .mainDiv,
54
80
  .memori-website_assistant--trigger-button .memori-blob figure {
55
- pointer-events: none;
56
- touch-action: none;
81
+ width: 85%;
82
+ border-radius: 0;
83
+ opacity: 1;
84
+ transition: transform 0.3s ease;
57
85
  }
58
86
 
59
- @media (max-width: 768px) {
60
- .memori-website_assistant--trigger-button .memori-blob {
61
- min-height: 0;
62
- }
63
-
64
- .memori-website_assistant--trigger-button .memori-blob figure {
65
- position: absolute;
66
- transform: translate(-50%, -50%);
67
- }
68
-
69
- .memori-website_assistant--trigger-button .memori-blob .mainDiv:nth-of-type(1) {
70
- --memori-blob-x: -53%;
71
- --memori-blob-y: -53%;
72
- --memori-blob-t: 37;
73
- }
74
-
75
- .memori-website_assistant--trigger-button .memori-blob .mainDiv:nth-of-type(2) {
76
- --memori-blob-x: -47%;
77
- --memori-blob-y: -52%;
78
- --memori-blob-t: 58;
79
- }
80
-
81
- .memori-website_assistant--trigger-button .memori-blob .mainDiv:nth-of-type(3) {
82
- --memori-blob-x: -45%;
83
- --memori-blob-y: -50%;
84
- --memori-blob-t: 46;
87
+ /* Tablet and up */
88
+ @media (min-width: 601px) {
89
+ .memori-website_assistant--trigger-button {
90
+ width: 80px;
91
+ height: 80px;
85
92
  }
86
93
 
87
- .memori-website_assistant--trigger-button .memori-blob .mainDiv:nth-of-type(4) {
88
- --memori-blob-x: -53%;
89
- --memori-blob-y: -45%;
90
- --memori-blob-t: 72;
94
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
95
+ width: 80px !important;
96
+ height: 80px !important;
91
97
  }
98
+ }
92
99
 
93
- .memori-website_assistant--trigger-button .memori-blob .mainDiv:nth-of-type(5) {
94
- --memori-blob-x: -55%;
95
- --memori-blob-y: -45%;
96
- --memori-blob-t: 62;
100
+ /* Desktop */
101
+ @media (min-width: 1024px) {
102
+ .memori-website_assistant--trigger-button {
103
+ width: 96px;
104
+ height: 96px;
97
105
  }
98
- }
99
106
 
100
- @media (max-width: 600px) {
101
107
  .memori-website_assistant--trigger-button .memori-blob .mainDiv {
102
- width: 80px !important;
103
- height: 80px !important;
108
+ width: 96px !important;
109
+ height: 96px !important;
104
110
  }
105
111
  }
106
112
 
107
- .memori-website_assistant--trigger-button .memori-blob figure {
108
- width: 85%;
109
- border-radius: 0;
110
- opacity: 1;
113
+ /* ============================================
114
+ CLOSE BUTTON
115
+ ============================================ */
116
+
117
+ .memori-website_assistant--close-button-wrapper {
118
+ position: absolute;
119
+ z-index: 1001;
120
+ top: 0.75rem;
121
+ left: 0.75rem;
122
+ transition: transform 0.2s ease;
111
123
  }
112
124
 
113
- .memori-website_assistant-layout .memori--powered-by {
114
- top: calc(100% + 10px);
115
- right: auto;
116
- left: 0;
117
- background-color: transparent !important;
125
+ .memori-website_assistant--close-button-wrapper:hover {
126
+ transform: scale(1.1);
118
127
  }
119
128
 
129
+ .memori-website_assistant--close-button-wrapper button.memori-website_assistant--close-button {
130
+ width: 44px;
131
+ height: 44px;
132
+ padding: 0.75rem;
133
+ border: 2px solid rgba(130, 70, 175, 0.1);
134
+ border-radius: 50%;
135
+ -webkit-backdrop-filter: blur(10px);
136
+ backdrop-filter: blur(10px);
137
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);
138
+ font-size: 18px;
139
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
140
+ }
141
+
142
+ /* ============================================
143
+ MAIN CONTAINER (Mobile First)
144
+ ============================================ */
145
+
120
146
  .memori-widget.memori-layout-website_assistant {
121
147
  position: relative;
122
148
  z-index: 10;
@@ -128,60 +154,160 @@
128
154
  position: fixed;
129
155
  right: 0;
130
156
  bottom: 0;
131
- width: 30vw !important;
132
- min-width: 320px !important;
157
+ overflow: hidden;
158
+ width: 100vw;
133
159
  max-width: 100vw;
134
- height: 100% !important;
135
- max-height: 0;
136
- transition: all 0.3s ease-in-out;
160
+ border-radius: 24px 24px 0 0;
161
+ -webkit-backdrop-filter: blur(20px);
162
+ backdrop-filter: blur(20px);
163
+ background: rgba(255, 255, 255, 0.98);
164
+ box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.12), 0 -2px 8px rgba(0, 0, 0, 0.08);
165
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
166
+ }
167
+
168
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed {
169
+ overflow: visible;
170
+ height: 0;
171
+ opacity: 0;
172
+ pointer-events: none;
173
+ }
174
+
175
+ /* Ensure trigger button is always visible even when container is collapsed */
176
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed .memori-website_assistant--trigger {
177
+ opacity: 1;
178
+ pointer-events: all;
179
+ visibility: visible;
137
180
  }
138
181
 
139
182
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
140
- max-height: 60vh !important;
141
- margin-bottom: 60px;
183
+ height: min(85vh, calc(100vh - 80px));
184
+ padding: 0.5rem 0rem;
185
+ margin-bottom: 0;
186
+ opacity: 1;
187
+ pointer-events: all;
188
+ }
189
+
190
+ /* Tablet */
191
+ @media (min-width: 601px) {
192
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
193
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
194
+ right: 0;
195
+ width: 90vw;
196
+ max-width: 480px;
197
+ border-radius: 24px 0 0 0;
198
+ }
199
+
200
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
201
+ height: min(75vh, calc(100vh - 80px));
202
+ }
203
+ }
204
+
205
+ /* Desktop */
206
+ @media (min-width: 1024px) {
207
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
208
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
209
+ width: 30vw;
210
+ min-width: 400px;
211
+ max-width: 480px;
212
+ border-radius: 24px 0 0 0;
213
+ }
214
+
215
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
216
+ height: 100vh;
217
+ border-radius: 0;
218
+ margin-bottom: 0;
219
+ }
142
220
  }
143
221
 
222
+ /* ============================================
223
+ ANIMATIONS
224
+ ============================================ */
225
+
144
226
  @keyframes showup {
145
227
  0% {
146
228
  opacity: 0;
147
- transform: translateY(100%);
229
+ transform: translateY(20px) scale(0.95);
148
230
  }
149
-
150
231
  100% {
232
+ opacity: 1;
233
+ transform: translateY(0) scale(1);
234
+ }
235
+ }
236
+
237
+ @keyframes slideUp {
238
+ from {
239
+ opacity: 0;
240
+ transform: translateY(100%);
241
+ }
242
+ to {
151
243
  opacity: 1;
152
244
  transform: translateY(0);
153
245
  }
154
246
  }
155
247
 
156
248
  .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded .memori-website_assistant-layout {
157
- animation: showup 0.3s ease-in-out;
249
+ animation: showup 0.4s cubic-bezier(0.4, 0, 0.2, 1);
158
250
  }
159
251
 
252
+ /* ============================================
253
+ LAYOUT STRUCTURE
254
+ ============================================ */
160
255
 
161
- @media (max-width: 600px) {
162
- .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded {
163
- min-width: 100% !important;
164
- }
256
+ .memori-widget .memori-spin.memori-website_assistant-layout {
257
+ position: relative;
258
+ display: flex;
259
+ height: 100%;
260
+ flex-direction: column;
165
261
  }
166
262
 
167
263
  .memori-widget.memori-layout-website_assistant .memori--global-background {
168
264
  background: none;
169
265
  }
170
266
 
171
- .memori-widget .memori-spin.memori-website_assistant-layout {
172
- display: flex;
173
- height: 100%;
174
- flex-direction: column;
267
+ .memori-website_assistant-layout .memori--powered-by {
268
+ right: auto;
269
+ left: 0.75rem;
270
+ background-color: transparent !important;
271
+ font-size: 0.75rem;
272
+ opacity: 0.7;
175
273
  }
176
274
 
275
+ /* ============================================
276
+ HEADER
277
+ ============================================ */
278
+
177
279
  .memori-website_assistant-layout--header {
178
280
  position: absolute;
179
281
  z-index: 1000;
180
- top: 0;
181
- right: 0;
282
+ top: 0.75rem;
283
+ right: 0.75rem;
284
+ padding: 0.5rem;
285
+ border-radius: 12px;
286
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
182
287
  text-align: right;
183
288
  }
184
289
 
290
+ .memori-website_assistant-layout--header-hidden {
291
+ display: none;
292
+ }
293
+
294
+ .memori-website_assistant-layout .memori-header {
295
+ position: relative;
296
+ z-index: 1000;
297
+ display: inline-flex;
298
+ width: auto;
299
+ height: auto;
300
+ flex-direction: column;
301
+ padding: 0.5rem;
302
+ gap: 0.5rem;
303
+ }
304
+
305
+ .memori-website_assistant-layout .memori-header .memori-share-button,
306
+ .memori-website_assistant-layout .memori-header .memori-header--button + .memori-header--button {
307
+ margin-top: 0;
308
+ margin-left: 0;
309
+ }
310
+
185
311
  .memori-widget.memori-layout-website_assistant .memori-share-button .memori-share-button--overlay {
186
312
  z-index: 1000;
187
313
  top: -6rem;
@@ -191,7 +317,15 @@
191
317
  display: none;
192
318
  }
193
319
 
320
+ /* ============================================
321
+ AVATAR SECTION
322
+ ============================================ */
323
+
194
324
  .memori-website_assistant-layout--avatar {
325
+ position: relative;
326
+ overflow: hidden;
327
+ min-height: 0;
328
+ max-height: 35%;
195
329
  flex: 1;
196
330
  }
197
331
 
@@ -209,53 +343,74 @@
209
343
  display: block;
210
344
  }
211
345
 
212
- @media (max-width: 480px) {
213
- .memori-website_assistant-layout--avatar .memori--blob-container {
214
- display: block;
215
- }
346
+ .memori-website_assistant-layout--avatar .memori-blob {
347
+ z-index: 2;
216
348
  }
217
349
 
218
- @media (max-width: 870px) {
219
- .memori-website_assistant-layout--avatar .memori--blob-container {
220
- display: block;
221
- }
350
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader {
351
+ display: flex;
352
+ width: 100%;
353
+ height: 100%;
354
+ align-items: center;
355
+ justify-content: center;
356
+ transform: none !important;
222
357
  }
223
358
 
224
- .memori-website_assistant-layout .memori-header {
225
- position: relative;
226
- z-index: 1000;
227
- display: inline-flex;
228
- width: auto;
229
- height: auto;
230
- flex-direction: column;
359
+ .memori-layout-website_assistant .memori--avatar-wrapper > div {
360
+ overflow: visible !important;
361
+ width: auto !important;
362
+ height: 100%;
363
+ border-radius: 0;
231
364
  }
232
365
 
233
- .memori-website_assistant-layout .memori-header .memori-share-button,
234
- .memori-website_assistant-layout .memori-header .memori-header--button+.memori-header--button {
235
- margin-top: 0.25rem;
236
- margin-left: 0;
366
+ .memori-layout-website_assistant .memori--avatar-wrapper > div canvas + div {
367
+ position: absolute !important;
368
+ width: 100%;
369
+ height: 100%;
370
+ transform: none !important;
237
371
  }
238
372
 
239
- .memori-website_assistant-layout .memori-chat--cover {
240
- display: none;
373
+ .memori-layout-website_assistant.memori--avatar-readyplayerme-full .memori--avatar-wrapper > div {
374
+ transform: scale(1.7) translate(0px, 10vh);
241
375
  }
242
376
 
243
- .memori-website_assistant-layout .memori--cover {
244
- padding: 0;
245
- background: none;
377
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper canvas {
378
+ width: auto !important;
379
+ max-width: 100%;
380
+ height: 100%;
381
+ object-fit: contain;
246
382
  }
247
383
 
248
- .memori-website_assistant-layout .memori-chat--bubble-initial+.memori-chat--bubble-container {
249
- margin-top: auto;
384
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader figure {
385
+ text-align: center;
386
+ }
387
+
388
+ .memori-layout-website_assistant.memori--avatar-readyplayerme
389
+ .memori-website_assistant--trigger-button
390
+ .memori-blob
391
+ figure {
392
+ width: 100%;
250
393
  }
251
394
 
395
+ .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader .memori-spin--spinner {
396
+ background: none;
397
+ }
398
+
399
+ /* ============================================
400
+ CONTROLS SECTION
401
+ ============================================ */
402
+
252
403
  .memori-website_assistant-layout--controls {
253
404
  position: relative;
254
405
  z-index: 5;
255
406
  display: flex;
256
- height: calc(100% - 60px);
407
+ min-height: 0;
408
+ flex: 1;
257
409
  flex-direction: column;
258
- justify-content: flex-end;
410
+ padding: 1rem;
411
+ -webkit-backdrop-filter: blur(10px);
412
+ backdrop-filter: blur(10px);
413
+ background: linear-gradient(to top, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.85) 50%, transparent 100%);
259
414
  }
260
415
 
261
416
  .memori-website_assistant-layout--controls .memori-chat--history,
@@ -274,6 +429,10 @@
274
429
  padding: 0;
275
430
  }
276
431
 
432
+ .memori-website_assistant-layout--controls .memori-chat--bubble-initial + .memori-chat--bubble-container {
433
+ margin-top: auto;
434
+ }
435
+
277
436
  .memori-website_assistant-layout--controls .memori-chat--content .memori-chat--bubble-container:first-of-type {
278
437
  margin-top: auto;
279
438
  }
@@ -281,41 +440,85 @@
281
440
  .memori-website_assistant-layout--controls .memori--start-panel,
282
441
  .memori-website_assistant-layout--controls .memori-chat--wrapper {
283
442
  width: 100%;
284
- max-width: 800px;
285
- padding: 1rem;
443
+ max-width: 100%;
444
+ padding: 0;
286
445
  margin: 0 auto;
287
446
  }
288
447
 
289
448
  .memori-website_assistant-layout--controls .memori-chat--wrapper {
290
- height: calc(100% - 1rem);
449
+ display: flex;
450
+ min-height: 0;
451
+ flex: 1;
452
+ flex-direction: column;
453
+ padding: 0.75rem;
291
454
  }
292
455
 
293
456
  .memori-website_assistant-layout--controls .memori--start-panel {
294
- margin: 1rem;
457
+ padding: 1rem;
458
+ border-radius: 16px;
459
+ margin: 0.75rem;
295
460
  }
296
461
 
297
- @media (max-width: 870px) {
298
-
462
+ /* Tablet and up */
463
+ @media (min-width: 601px) {
299
464
  .memori-website_assistant-layout--controls .memori--start-panel,
300
465
  .memori-website_assistant-layout--controls .memori-chat--wrapper {
301
- width: 100%;
466
+ max-width: 100%;
302
467
  }
303
468
 
304
469
  .memori-website_assistant-layout--controls .memori-chat--wrapper {
305
- padding: 0;
470
+ padding: 1rem;
306
471
  }
307
- }
308
472
 
309
- @media (max-width: 480px) {
310
- .memori-website_assistant-layout .memori-send-on-enter-menu {
311
- display: none;
473
+ .memori-website_assistant-layout--controls .memori--start-panel {
474
+ padding: 1.5rem;
475
+ margin: 1rem;
312
476
  }
477
+ }
313
478
 
314
- .memori-website_assistant-layout .memori-header--button-settings {
315
- display: none;
479
+ /* Desktop */
480
+ @media (min-width: 1024px) {
481
+ .memori-website_assistant-layout--controls .memori--start-panel,
482
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
483
+ max-width: 800px;
316
484
  }
317
485
  }
318
486
 
487
+ /* ============================================
488
+ CHAT STYLING
489
+ ============================================ */
490
+
491
+ .memori-website_assistant-layout .memori-chat--cover {
492
+ display: none;
493
+ }
494
+
495
+ .memori-website_assistant-layout .memori--cover {
496
+ padding: 0;
497
+ background: none;
498
+ }
499
+
500
+ .memori-website_assistant-layout .memori-chat--bubble,
501
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble {
502
+ animation: showup 0.3s ease-out;
503
+ opacity: 1;
504
+ transition: all 0.2s ease-in-out;
505
+ }
506
+
507
+ .memori-website_assistant-layout .memori-chat--bubble:hover,
508
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble:hover {
509
+ opacity: 1;
510
+ transform: translateY(-1px);
511
+ }
512
+
513
+ .memori-website_assistant-layout .memori-chat--bubble p,
514
+ .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble p {
515
+ opacity: 1;
516
+ }
517
+
518
+ /* ============================================
519
+ OTHER ELEMENTS
520
+ ============================================ */
521
+
319
522
  .memori-website_assistant-layout .memori--avatar-toggle {
320
523
  display: none;
321
524
  width: 100%;
@@ -332,76 +535,81 @@
332
535
  background: none;
333
536
  }
334
537
 
335
- .memori-website_assistant-layout--avatar .memori-blob {
336
- z-index: 2;
538
+ .memori-website_assistant-layout .memori--description-text,
539
+ .memori-website_assistant-layout .memori--translation-toggle {
540
+ display: none;
337
541
  }
338
542
 
339
- .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader {
340
- display: flex;
341
- width: 100%;
342
- height: 100%;
343
- align-items: center;
344
- justify-content: center;
345
- transform: none !important;
346
- }
543
+ /* ============================================
544
+ RESPONSIVE ADJUSTMENTS
545
+ ============================================ */
347
546
 
348
- .memori-layout-website_assistant .memori--avatar-wrapper>div {
349
- overflow: visible !important;
350
- /* width: 100% !important;
351
- height: 100% !important; */
352
- width: auto !important;
353
- height: 90% !important;
354
- max-height: 90%;
355
- border-radius: 0;
356
- }
547
+ @media (max-width: 480px) {
548
+ .memori-website_assistant-layout .memori-send-on-enter-menu {
549
+ display: none;
550
+ }
357
551
 
358
- .memori-layout-website_assistant .memori--avatar-wrapper>div canvas+div {
359
- position: absolute !important;
360
- width: 100%;
361
- height: 100%;
362
- transform: none !important;
363
- }
552
+ .memori-website_assistant-layout .memori-header--button-settings {
553
+ display: none;
554
+ }
364
555
 
365
- .memori-layout-website_assistant.memori--avatar-readyplayerme-full .memori--avatar-wrapper>div {
366
- transform: scale(1.7) translate(0px, 10vh);
367
- }
556
+ .memori-website_assistant-layout--controls {
557
+ padding: 0.75rem;
558
+ }
368
559
 
369
- .memori-website_assistant-layout--avatar .memori--avatar-wrapper canvas {
370
- width: auto !important;
371
- max-width: 100%;
372
- height: 100% !important;
373
- max-height: 100%;
374
- }
560
+ .memori-website_assistant-layout--controls .memori-chat--wrapper {
561
+ padding: 0.5rem;
562
+ }
375
563
 
376
- .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader figure {
377
- text-align: center;
564
+ .memori-website_assistant-layout--controls .memori--start-panel {
565
+ padding: 1rem;
566
+ margin: 0.5rem;
567
+ }
378
568
  }
379
569
 
380
- .memori-layout-website_assistant.memori--avatar-readyplayerme .memori-website_assistant--trigger-button .memori-blob figure {
381
- width: 100%;
382
- }
570
+ @media (max-width: 768px) {
571
+ .memori-website_assistant--trigger-button .memori-blob {
572
+ transform: translate(-50%, -40%);
573
+ }
383
574
 
384
- .memori-website_assistant-layout--avatar .memori--avatar-wrapper .avatar-loader .memori-spin--spinner {
385
- background: none;
575
+ .memori-website_assistant--trigger-button {
576
+ width: 80px !important;
577
+ height: 80px !important;
578
+ }
386
579
  }
387
580
 
388
- .memori-website_assistant-layout .memori--description-text,
389
- .memori-website_assistant-layout .memori--translation-toggle {
390
- display: none;
581
+ /* ============================================
582
+ ACCESSIBILITY & PERFORMANCE
583
+ ============================================ */
584
+
585
+ @media (prefers-reduced-motion: reduce) {
586
+ .memori-website_assistant--trigger,
587
+ .memori-website_assistant--trigger-button,
588
+ .memori-website_assistant--close-button-wrapper,
589
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--collapsed,
590
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded,
591
+ .memori-widget.memori-layout-website_assistant .memori-website_assistant--expanded .memori-website_assistant-layout,
592
+ .memori-website_assistant-layout .memori-chat--bubble {
593
+ animation: none !important;
594
+ transition: none !important;
595
+ }
391
596
  }
392
597
 
393
- .memori-website_assistant-layout .memori-chat--bubble,
394
- .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble {
395
- opacity: 1;
396
- transition: opacity 0.2s ease-in-out;
397
- }
598
+ /* Touch device optimizations */
599
+ @media (hover: none) and (pointer: coarse) {
600
+ .memori-website_assistant--trigger-button {
601
+ width: 80px;
602
+ height: 80px;
603
+ }
398
604
 
399
- .memori-website_assistant-layout .memori-chat--bubble p,
400
- .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble p {
401
- opacity: 1;
402
- }
605
+ .memori-website_assistant--trigger-button .memori-blob .mainDiv {
606
+ width: 72px !important;
607
+ height: 72px !important;
608
+ }
403
609
 
404
- .memori-website_assistant-layout .memori-chat--bubble:hover,
405
- .memori-website_assistant-layout .memori-chat--bubble.memori-chat--user-bubble:hover {
406
- opacity: 1;
610
+ .memori-website_assistant--close-button-wrapper button.memori-website_assistant--close-button {
611
+ width: 48px;
612
+ height: 48px;
613
+ padding: 0.875rem;
614
+ }
407
615
  }