@memori.ai/memori-react 8.2.0 → 8.4.0-rc.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 (146) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/components/Chat/Chat.js +8 -1
  3. package/dist/components/Chat/Chat.js.map +1 -1
  4. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
  5. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +4 -0
  6. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +166 -0
  7. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
  8. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
  9. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +3 -0
  10. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +115 -0
  11. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
  12. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
  13. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +4 -0
  14. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +104 -0
  15. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
  16. package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
  17. package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.d.ts +4 -0
  18. package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js +50 -0
  19. package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js.map +1 -0
  20. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
  21. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +4 -0
  22. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +78 -0
  23. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
  24. package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.d.ts +12 -0
  25. package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.js +22 -0
  26. package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.js.map +1 -0
  27. package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.d.ts +12 -0
  28. package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.js +288 -0
  29. package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.js.map +1 -0
  30. package/dist/components/MemoriArtifactSystem/index.d.ts +9 -0
  31. package/dist/components/MemoriArtifactSystem/index.js +28 -0
  32. package/dist/components/MemoriArtifactSystem/index.js.map +1 -0
  33. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +108 -0
  34. package/dist/components/MemoriArtifactSystem/types/artifact.types.js +31 -0
  35. package/dist/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
  36. package/dist/components/icons/Print.d.ts +6 -0
  37. package/dist/components/icons/Print.js +6 -0
  38. package/dist/components/icons/Print.js.map +1 -0
  39. package/dist/components/layouts/Chat.js +29 -1
  40. package/dist/components/layouts/Chat.js.map +1 -1
  41. package/dist/components/layouts/FullPage.js +33 -1
  42. package/dist/components/layouts/FullPage.js.map +1 -1
  43. package/dist/components/layouts/ZoomedFullBody.js +29 -2
  44. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  45. package/dist/components/layouts/chat.css +335 -13
  46. package/dist/components/layouts/zoomed-full-body.css +1 -3
  47. package/dist/helpers/message.js +1 -0
  48. package/dist/helpers/message.js.map +1 -1
  49. package/dist/helpers/stt/useSTT.js +76 -9
  50. package/dist/helpers/stt/useSTT.js.map +1 -1
  51. package/dist/index.js +58 -15
  52. package/dist/index.js.map +1 -1
  53. package/dist/styles.css +5 -0
  54. package/esm/components/Chat/Chat.js +8 -1
  55. package/esm/components/Chat/Chat.js.map +1 -1
  56. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
  57. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +4 -0
  58. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +163 -0
  59. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
  60. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
  61. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +3 -0
  62. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +112 -0
  63. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
  64. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
  65. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +4 -0
  66. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +101 -0
  67. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
  68. package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
  69. package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.d.ts +4 -0
  70. package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js +47 -0
  71. package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js.map +1 -0
  72. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
  73. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +4 -0
  74. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +75 -0
  75. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
  76. package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.d.ts +12 -0
  77. package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.js +17 -0
  78. package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.js.map +1 -0
  79. package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.d.ts +12 -0
  80. package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.js +281 -0
  81. package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.js.map +1 -0
  82. package/esm/components/MemoriArtifactSystem/index.d.ts +9 -0
  83. package/esm/components/MemoriArtifactSystem/index.js +9 -0
  84. package/esm/components/MemoriArtifactSystem/index.js.map +1 -0
  85. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +108 -0
  86. package/esm/components/MemoriArtifactSystem/types/artifact.types.js +28 -0
  87. package/esm/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
  88. package/esm/components/icons/Print.d.ts +6 -0
  89. package/esm/components/icons/Print.js +4 -0
  90. package/esm/components/icons/Print.js.map +1 -0
  91. package/esm/components/layouts/Chat.js +29 -1
  92. package/esm/components/layouts/Chat.js.map +1 -1
  93. package/esm/components/layouts/FullPage.js +33 -1
  94. package/esm/components/layouts/FullPage.js.map +1 -1
  95. package/esm/components/layouts/ZoomedFullBody.js +30 -3
  96. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  97. package/esm/components/layouts/chat.css +335 -13
  98. package/esm/components/layouts/zoomed-full-body.css +1 -3
  99. package/esm/helpers/message.js +1 -0
  100. package/esm/helpers/message.js.map +1 -1
  101. package/esm/helpers/stt/useSTT.js +76 -9
  102. package/esm/helpers/stt/useSTT.js.map +1 -1
  103. package/esm/index.js +58 -15
  104. package/esm/index.js.map +1 -1
  105. package/esm/styles.css +5 -0
  106. package/package.json +1 -1
  107. package/src/components/Avatar/Avatar.test.tsx +13 -0
  108. package/src/components/Chat/Chat.stories.tsx +33 -2
  109. package/src/components/Chat/Chat.test.tsx +340 -213
  110. package/src/components/Chat/Chat.tsx +27 -4
  111. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
  112. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +278 -0
  113. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
  114. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +308 -0
  115. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
  116. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +282 -0
  117. package/src/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
  118. package/src/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.tsx +178 -0
  119. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
  120. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +190 -0
  121. package/src/components/MemoriArtifactSystem/context/ArtifactSystemContext.tsx +57 -0
  122. package/src/components/MemoriArtifactSystem/hooks/useArtifactSystem.ts +419 -0
  123. package/src/components/MemoriArtifactSystem/index.ts +45 -0
  124. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +180 -0
  125. package/src/components/icons/Print.tsx +34 -0
  126. package/src/components/layouts/Chat.test.tsx +13 -0
  127. package/src/components/layouts/Chat.tsx +80 -25
  128. package/src/components/layouts/FullPage.test.tsx +40 -11
  129. package/src/components/layouts/FullPage.tsx +92 -24
  130. package/src/components/layouts/HiddenChat.test.tsx +13 -0
  131. package/src/components/layouts/Totem.test.tsx +13 -0
  132. package/src/components/layouts/WebsiteAssistant.test.tsx +13 -0
  133. package/src/components/layouts/ZoomedFullBody.test.tsx +13 -0
  134. package/src/components/layouts/ZoomedFullBody.tsx +78 -14
  135. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +252 -248
  136. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +504 -496
  137. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +252 -248
  138. package/src/components/layouts/chat.css +335 -13
  139. package/src/components/layouts/layouts.stories.tsx +13 -2
  140. package/src/components/layouts/zoomed-full-body.css +1 -3
  141. package/src/helpers/message.ts +1 -0
  142. package/src/helpers/stt/useSTT.ts +101 -16
  143. package/src/index.stories.tsx +26 -22
  144. package/src/index.tsx +46 -0
  145. package/src/mocks/data.ts +258 -0
  146. package/src/styles.css +5 -0
@@ -0,0 +1,877 @@
1
+ /**
2
+ * ArtifactDrawer CSS Styles
3
+ * Modern design system with smooth animations and improved spacing
4
+ * Handles both mobile drawer and web split panel layouts
5
+ */
6
+
7
+ /* CSS Custom Properties for consistent theming */
8
+ :root {
9
+ --artifact-drawer-bg: var(--memori-chat-bubble-bg, #ffffff);
10
+ --artifact-drawer-border: var(--memori-button-border-color, #e9ecef);
11
+ --artifact-drawer-text: var(--memori-text-color, #333333);
12
+ --artifact-drawer-text-muted: var(--memori-text-color, #666666);
13
+ --artifact-drawer-accent: var(--memori-primary, #007bff);
14
+ --artifact-drawer-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
15
+ --artifact-drawer-shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.15);
16
+ --artifact-drawer-radius: var(--memori-border-radius, 8px);
17
+ --artifact-drawer-radius-lg: 12px;
18
+ --artifact-drawer-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
19
+ --artifact-drawer-transition-fast: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
20
+ --artifact-drawer-transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
21
+ }
22
+
23
+ /* Main Drawer Container (Mobile Only) */
24
+ .memori-artifact-drawer {
25
+ position: relative;
26
+ z-index: 1001;
27
+ font-family: var(--memori-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
28
+ }
29
+
30
+ /* Web Split Panel Container */
31
+ .memori-artifact-panel {
32
+ position: relative;
33
+ display: flex;
34
+ overflow: hidden;
35
+ height: 100%;
36
+ flex-direction: column;
37
+ border-left: 1px solid var(--artifact-drawer-border);
38
+ backdrop-filter: blur(10px);
39
+ box-shadow: var(--artifact-drawer-shadow);
40
+ font-family: var(--memori-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
41
+ transition: var(--artifact-drawer-transition);
42
+ }
43
+
44
+ .memori-artifact-panel::before {
45
+ position: absolute;
46
+ top: 0;
47
+ right: 0;
48
+ left: 0;
49
+ height: 1px;
50
+ background: white;
51
+ content: '';
52
+ opacity: 0.6;
53
+ }
54
+
55
+ /* Web Split Panel Header */
56
+ .memori-artifact-panel--header {
57
+ position: relative;
58
+ display: flex;
59
+ overflow: hidden;
60
+ flex-flow: column;
61
+ align-items: flex-start;
62
+ justify-content: space-between;
63
+ padding: 1.5rem;
64
+ border-radius: var(--artifact-drawer-radius-lg) var(--artifact-drawer-radius-lg) 0 0;
65
+ border-bottom: 1px solid white;
66
+ backdrop-filter: blur(20px);
67
+ /* margin-bottom: 1.5rem; */
68
+ background: white;
69
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
70
+ transition: var(--artifact-drawer-transition);
71
+ }
72
+
73
+ .memori-artifact-panel--header::before {
74
+ position: absolute;
75
+ top: 0;
76
+ right: 0;
77
+ left: 0;
78
+ height: 2px;
79
+ animation: shimmer 3s ease-in-out infinite;
80
+ background: white;
81
+ background-size: 200% 100%;
82
+ content: '';
83
+ }
84
+
85
+ @keyframes shimmer {
86
+ 0%,
87
+ 100% {
88
+ background-position: 200% 0;
89
+ }
90
+ 50% {
91
+ background-position: -200% 0;
92
+ }
93
+ }
94
+
95
+ .memori-artifact-panel--header-content {
96
+ min-width: 0;
97
+ flex: 1;
98
+ }
99
+
100
+ .memori-artifact-panel--title {
101
+ margin: 0 0 0.75rem;
102
+ background: white;
103
+ background-clip: text;
104
+ color: var(--artifact-drawer-text);
105
+ font-size: 1.5rem;
106
+ font-weight: 700;
107
+ letter-spacing: -0.02em;
108
+ line-height: 1.2;
109
+ transition: var(--artifact-drawer-transition);
110
+ }
111
+
112
+ .memori-artifact-panel--title:hover {
113
+ transform: translateY(-1px);
114
+ }
115
+
116
+ .memori-artifact-panel--subtitle {
117
+ margin: 0 0 1rem;
118
+ color: var(--artifact-drawer-text-muted);
119
+ font-size: 0.95rem;
120
+ font-weight: 500;
121
+ line-height: 1.4;
122
+ opacity: 0.9;
123
+ transition: var(--artifact-drawer-transition);
124
+ }
125
+
126
+ .memori-artifact-panel--subtitle:hover {
127
+ color: var(--artifact-drawer-accent);
128
+ opacity: 1;
129
+ }
130
+
131
+ .memori-artifact-panel--meta {
132
+ display: flex;
133
+ flex-wrap: wrap;
134
+ margin-top: 0.5rem;
135
+ color: var(--artifact-drawer-text-muted);
136
+ font-size: 0.8rem;
137
+ font-weight: 500;
138
+ gap: 0.5rem;
139
+ }
140
+
141
+ .memori-artifact-panel--meta-item {
142
+ position: relative;
143
+ display: flex;
144
+ overflow: hidden;
145
+ align-items: center;
146
+ padding: 0.25rem 0.75rem;
147
+ border: 1px solid rgba(0, 123, 255, 0.15);
148
+ border-radius: 20px;
149
+ background: rgba(0, 123, 255, 0.08);
150
+ gap: 0.5rem;
151
+ transition: var(--artifact-drawer-transition-fast);
152
+ }
153
+
154
+ .memori-artifact-panel--meta-item::before {
155
+ position: absolute;
156
+ top: 0;
157
+ left: -100%;
158
+ width: 100%;
159
+ height: 100%;
160
+ background: white;
161
+ content: '';
162
+ transition: left 0.6s ease;
163
+ }
164
+
165
+ .memori-artifact-panel--meta-item:hover {
166
+ border-color: rgba(0, 123, 255, 0.25);
167
+ background: rgba(0, 123, 255, 0.12);
168
+ box-shadow: 0 4px 12px rgba(0, 123, 255, 0.15);
169
+ transform: translateY(-1px);
170
+ }
171
+
172
+ .memori-artifact-panel--meta-item:hover::before {
173
+ left: 100%;
174
+ }
175
+
176
+ .memori-artifact-panel--header-actions {
177
+ display: flex;
178
+ flex-shrink: 0;
179
+ align-items: center;
180
+ padding: 0.5rem;
181
+ border: 1px solid rgba(255, 255, 255, 0.2);
182
+ border-radius: var(--artifact-drawer-radius);
183
+ margin-top: 1rem;
184
+ backdrop-filter: blur(10px);
185
+ background: rgba(255, 255, 255, 0.5);
186
+ gap: 0.75rem;
187
+ transition: var(--artifact-drawer-transition);
188
+ }
189
+
190
+ .memori-artifact-panel--header-actions:hover {
191
+ background: rgba(255, 255, 255, 0.8);
192
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
193
+ }
194
+
195
+ .memori-artifact-panel--close {
196
+ position: absolute;
197
+ z-index: 10;
198
+ top: 1.5rem;
199
+ right: 1.5rem;
200
+ margin-left: 0.5rem;
201
+ /* transition: var(--artifact-drawer-transition); */
202
+ }
203
+
204
+ .memori-artifact-panel--close-icon {
205
+ width: 18px;
206
+ height: 18px;
207
+ transition: var(--artifact-drawer-transition-fast);
208
+ }
209
+
210
+ /* Web Split Panel Content */
211
+ .memori-artifact-panel--content {
212
+ position: relative;
213
+ display: flex;
214
+ overflow: hidden;
215
+ min-height: 0;
216
+ flex: 1;
217
+ padding: 0 1.5rem 1.5rem;
218
+ gap: 1.5rem;
219
+ }
220
+
221
+ .memori-artifact-panel--main {
222
+ position: relative;
223
+ display: flex;
224
+ overflow: hidden;
225
+ min-width: 0;
226
+ flex: 1;
227
+ flex-direction: column;
228
+ border: 1px solid rgba(255, 255, 255, 0.3);
229
+ border-radius: var(--artifact-drawer-radius-lg);
230
+ backdrop-filter: blur(20px);
231
+ background: rgba(255, 255, 255, 0.6);
232
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
233
+ transition: var(--artifact-drawer-transition);
234
+ }
235
+
236
+ .memori-artifact-panel--main::before {
237
+ position: absolute;
238
+ top: 0;
239
+ right: 0;
240
+ left: 0;
241
+ height: 1px;
242
+ background: white;
243
+ content: '';
244
+ }
245
+
246
+ .memori-artifact-drawer--backdrop {
247
+ position: fixed;
248
+ z-index: 1000;
249
+ top: 0;
250
+ left: 0;
251
+ width: 100%;
252
+ height: 100%;
253
+ backdrop-filter: blur(8px) saturate(180%);
254
+ background: white;
255
+ transition: var(--artifact-drawer-transition);
256
+ }
257
+
258
+ .memori-artifact-drawer--container {
259
+ position: fixed;
260
+ z-index: 1001;
261
+ top: 0;
262
+ right: 0;
263
+ bottom: 0;
264
+ left: 0;
265
+ overflow-y: auto;
266
+ }
267
+
268
+ .memori-artifact-drawer--panel {
269
+ position: fixed;
270
+ position: relative;
271
+ z-index: 1001;
272
+ top: 0;
273
+ right: 0;
274
+ bottom: 0;
275
+ display: flex;
276
+ overflow: hidden;
277
+ width: 50%;
278
+ height: 100vh;
279
+ box-sizing: border-box;
280
+ flex-direction: column;
281
+ padding: 1.5rem 2rem 2rem;
282
+ border-left: 1px solid rgba(255, 255, 255, 0.2);
283
+ background: white;
284
+ box-shadow: var(--artifact-drawer-shadow-lg);
285
+ font-family: var(--memori-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
286
+ transform: translateX(100%);
287
+ transition: var(--artifact-drawer-transition-slow);
288
+ }
289
+
290
+ .memori-artifact-drawer--panel::before {
291
+ position: absolute;
292
+ top: 0;
293
+ right: 0;
294
+ left: 0;
295
+ height: 2px;
296
+ animation: shimmer 3s ease-in-out infinite;
297
+ background: white;
298
+ background-size: 200% 100%;
299
+ content: '';
300
+ }
301
+
302
+ .memori-artifact-drawer--panel-left {
303
+ right: auto;
304
+ left: 0;
305
+ transform: translateX(-100%);
306
+ }
307
+
308
+ .memori-artifact-drawer--panel-fullscreen {
309
+ right: 0 !important;
310
+ left: 0 !important;
311
+ width: 100% !important;
312
+ max-width: 100% !important;
313
+ box-shadow: none !important;
314
+ transform: translateX(0) !important;
315
+ }
316
+
317
+ /* Header */
318
+ .memori-artifact-drawer--header {
319
+ position: relative;
320
+ display: flex;
321
+ overflow: hidden;
322
+ flex-flow: column;
323
+ align-items: flex-start;
324
+ justify-content: space-between;
325
+ padding: 1.5rem;
326
+ border-radius: var(--artifact-drawer-radius-lg) var(--artifact-drawer-radius-lg) 0 0;
327
+ border-bottom: 1px solid var(--artifact-drawer-border);
328
+ margin-bottom: 1.5rem;
329
+ backdrop-filter: blur(20px);
330
+ background: white;
331
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
332
+ transition: var(--artifact-drawer-transition);
333
+ }
334
+
335
+ .memori-artifact-drawer--header::before {
336
+ position: absolute;
337
+ top: 0;
338
+ right: 0;
339
+ left: 0;
340
+ height: 2px;
341
+ animation: shimmer 3s ease-in-out infinite;
342
+ background: linear-gradient(90deg, var(--artifact-drawer-accent), #00d4ff, var(--artifact-drawer-accent));
343
+ background-size: 200% 100%;
344
+ content: '';
345
+ }
346
+
347
+ .memori-artifact-drawer--header-content {
348
+ min-width: 0;
349
+ flex: 1;
350
+ }
351
+
352
+ .memori-artifact-drawer--title {
353
+ margin: 0 0 0.75rem;
354
+ background: linear-gradient(135deg, var(--artifact-drawer-text) 0%, var(--artifact-drawer-accent) 100%);
355
+ -webkit-background-clip: text;
356
+ background-clip: text;
357
+ color: var(--artifact-drawer-text);
358
+ font-size: 1.5rem;
359
+ font-weight: 700;
360
+ letter-spacing: -0.02em;
361
+ line-height: 1.2;
362
+ -webkit-text-fill-color: transparent;
363
+ transition: var(--artifact-drawer-transition);
364
+ }
365
+
366
+ .memori-artifact-drawer--title:hover {
367
+ transform: translateY(-1px);
368
+ }
369
+
370
+ .memori-artifact-drawer--subtitle {
371
+ margin: 0 0 1rem;
372
+ color: var(--artifact-drawer-text-muted);
373
+ font-size: 0.95rem;
374
+ font-weight: 500;
375
+ line-height: 1.4;
376
+ opacity: 0.9;
377
+ transition: var(--artifact-drawer-transition);
378
+ }
379
+
380
+ .memori-artifact-drawer--subtitle:hover {
381
+ color: var(--artifact-drawer-accent);
382
+ opacity: 1;
383
+ }
384
+
385
+ .memori-artifact-drawer--meta {
386
+ display: flex;
387
+ flex-direction: row;
388
+ flex-wrap: wrap;
389
+ margin-top: 0.5rem;
390
+ color: var(--artifact-drawer-text-muted);
391
+ font-size: 0.8rem;
392
+ font-weight: 500;
393
+ gap: 1rem;
394
+ }
395
+
396
+ .memori-artifact-drawer--meta-item {
397
+ position: relative;
398
+ display: flex;
399
+ overflow: hidden;
400
+ max-width: 120px;
401
+ max-height: 40px;
402
+ align-items: center;
403
+ padding: 0.25rem 0.75rem;
404
+ border: 1px solid rgba(0, 123, 255, 0.15);
405
+ border-radius: 20px;
406
+ background: rgba(0, 123, 255, 0.08);
407
+ gap: 0.5rem;
408
+ transition: var(--artifact-drawer-transition-fast);
409
+ }
410
+
411
+ .memori-artifact-drawer--meta-item::before {
412
+ position: absolute;
413
+ top: 0;
414
+ left: -100%;
415
+ width: 100%;
416
+ height: 100%;
417
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
418
+ content: '';
419
+ transition: left 0.6s ease;
420
+ }
421
+
422
+ .memori-artifact-drawer--meta-item:hover {
423
+ border-color: rgba(0, 123, 255, 0.25);
424
+ background: rgba(0, 123, 255, 0.12);
425
+ box-shadow: 0 4px 12px rgba(0, 123, 255, 0.15);
426
+ transform: translateY(-1px);
427
+ }
428
+
429
+ .memori-artifact-drawer--meta-item:hover::before {
430
+ left: 100%;
431
+ }
432
+
433
+ .memori-artifact-drawer--header-actions {
434
+ display: flex;
435
+ flex-shrink: 0;
436
+ align-items: center;
437
+ padding: 0.5rem;
438
+ border: 1px solid rgba(255, 255, 255, 0.2);
439
+ border-radius: var(--artifact-drawer-radius);
440
+ margin-top: 1rem;
441
+ backdrop-filter: blur(10px);
442
+ background: rgba(255, 255, 255, 0.5);
443
+ gap: 0.75rem;
444
+ transition: var(--artifact-drawer-transition);
445
+ }
446
+
447
+ .memori-artifact-drawer--header-actions:hover {
448
+ background: rgba(255, 255, 255, 0.8);
449
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
450
+ }
451
+
452
+ .memori-artifact-drawer--history-toggle {
453
+ margin-right: 0.5rem;
454
+ }
455
+
456
+ .memori-artifact-drawer--close {
457
+ position: absolute;
458
+ z-index: 10;
459
+ top: 1.5rem;
460
+ right: 1.5rem;
461
+ margin-left: 0.5rem;
462
+ }
463
+
464
+ .memori-artifact-drawer--close:hover {
465
+ border-color: rgba(255, 59, 48, 0.3) !important;
466
+ background: rgba(255, 59, 48, 0.1) !important;
467
+ }
468
+
469
+ .memori-artifact-drawer--close-icon {
470
+ width: 18px;
471
+ height: 18px;
472
+ }
473
+
474
+ .memori-artifact-drawer--close:hover .memori-artifact-drawer--close-icon {
475
+ color: #ff3b30;
476
+ }
477
+
478
+ /* Content */
479
+ .memori-artifact-drawer--content {
480
+ position: relative;
481
+ display: flex;
482
+ overflow: hidden;
483
+ min-height: 0;
484
+ flex: 1;
485
+ padding: 0 0 1.5rem;
486
+ gap: 1.5rem;
487
+ }
488
+
489
+ .memori-artifact-drawer--main {
490
+ position: relative;
491
+ display: flex;
492
+ overflow: hidden;
493
+ min-width: 0;
494
+ flex: 1;
495
+ flex-direction: column;
496
+ border: 1px solid rgba(255, 255, 255, 0.3);
497
+ border-radius: var(--artifact-drawer-radius-lg);
498
+ backdrop-filter: blur(20px);
499
+ background: rgba(255, 255, 255, 0.6);
500
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
501
+ transition: var(--artifact-drawer-transition);
502
+ }
503
+
504
+ .memori-artifact-drawer--main::before {
505
+ position: absolute;
506
+ top: 0;
507
+ right: 0;
508
+ left: 0;
509
+ height: 1px;
510
+ background: linear-gradient(90deg, transparent, rgba(0, 123, 255, 0.3), transparent);
511
+ content: '';
512
+ }
513
+
514
+ .memori-artifact-drawer--sidebar {
515
+ width: 300px;
516
+ flex-shrink: 0;
517
+ padding: 1rem;
518
+ padding-left: 1rem;
519
+ border-radius: var(--memori-border-radius, 6px);
520
+ border-left: 1px solid var(--memori-button-border-color, #e9ecef);
521
+ background: var(--memori-inner-bg, #f8f9fa);
522
+ }
523
+
524
+ /* Mobile Drawer Panel */
525
+ .memori-artifact-drawer--panel-mobile {
526
+ position: fixed;
527
+ position: relative;
528
+ z-index: 1001;
529
+ top: 0;
530
+ right: 0;
531
+ bottom: 0;
532
+ left: 0;
533
+ overflow: hidden;
534
+ width: 100%;
535
+ height: 100vh;
536
+ padding: 1rem 1.5rem 1.5rem;
537
+ border-radius: 0;
538
+ backdrop-filter: blur(20px);
539
+ background: linear-gradient(135deg, var(--artifact-drawer-bg) 0%, rgba(248, 250, 252, 0.95) 100%);
540
+ box-shadow: none;
541
+ font-family: var(--memori-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
542
+ transform: translateX(100%);
543
+ transition: var(--artifact-drawer-transition-slow);
544
+ }
545
+
546
+ .memori-artifact-drawer--panel-mobile::before {
547
+ position: absolute;
548
+ top: 0;
549
+ right: 0;
550
+ left: 0;
551
+ height: 2px;
552
+ animation: shimmer 3s ease-in-out infinite;
553
+ background: linear-gradient(90deg, var(--artifact-drawer-accent), #00d4ff, var(--artifact-drawer-accent));
554
+ background-size: 200% 100%;
555
+ content: '';
556
+ }
557
+
558
+ /* Responsive Design */
559
+ @media (max-width: 768px) {
560
+ /* Hide web panel on mobile */
561
+ .memori-artifact-panel {
562
+ display: none !important;
563
+ }
564
+
565
+ /* Mobile drawer styles */
566
+ .memori-artifact-drawer--panel-mobile {
567
+ position: fixed !important;
568
+ top: 0 !important;
569
+ right: 0 !important;
570
+ bottom: 0 !important;
571
+ left: 0 !important;
572
+ width: 100% !important;
573
+ max-width: 100% !important;
574
+ height: 100vh !important;
575
+ padding: 1rem 1.5rem 1.5rem;
576
+ border-radius: 0 !important;
577
+ backdrop-filter: blur(20px) !important;
578
+ background: linear-gradient(135deg, var(--artifact-drawer-bg) 0%, rgba(248, 250, 252, 0.95) 100%) !important;
579
+ box-shadow: none !important;
580
+ transform: translateX(100%) !important;
581
+ }
582
+
583
+ .memori-artifact-drawer[data-headlessui-state~='open'] .memori-artifact-drawer--panel-mobile {
584
+ transform: translateX(0) !important;
585
+ }
586
+
587
+ .memori-artifact-drawer--header {
588
+ flex-direction: column;
589
+ padding: 1.5rem;
590
+ border-radius: 0;
591
+ margin-bottom: 1rem;
592
+ backdrop-filter: blur(20px) !important;
593
+ background: linear-gradient(
594
+ 135deg,
595
+ var(--memori-inner-bg, #f8f9fa) 0%,
596
+ rgba(255, 255, 255, 0.9) 100%
597
+ ) !important;
598
+ gap: 1.5rem;
599
+ }
600
+
601
+ .memori-artifact-drawer--header-content{
602
+ width: 100%;
603
+ }
604
+
605
+ .memori-artifact-drawer--header-actions {
606
+ position: relative;
607
+ position: absolute;
608
+ top: 0px;
609
+ right: 0px;
610
+ right: 80px;
611
+ width: 100%;
612
+ max-width: 250px;
613
+ justify-content: space-between;
614
+ justify-content: flex-end;
615
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
616
+ backdrop-filter: blur(10px) !important;
617
+ background: rgba(255, 255, 255, 0.5) !important;
618
+ opacity: 1;
619
+ transform: none;
620
+ }
621
+
622
+ .memori-artifact-drawer--close {
623
+ position: absolute !important;
624
+ top: 1.5rem !important;
625
+ right: 1.5rem !important;
626
+ margin: 0 !important;
627
+ }
628
+
629
+ .memori-artifact-drawer--content {
630
+ overflow: hidden;
631
+ min-height: 0;
632
+ flex: 1;
633
+ flex-direction: column;
634
+ padding: 0 0 1.5rem;
635
+ }
636
+
637
+ .memori-artifact-drawer--main {
638
+ overflow: auto;
639
+ min-height: 0;
640
+ flex: 1;
641
+ border: 1px solid rgba(255, 255, 255, 0.3) !important;
642
+ border-radius: var(--artifact-drawer-radius-lg) !important;
643
+ backdrop-filter: blur(20px) !important;
644
+ background: rgba(255, 255, 255, 0.6) !important;
645
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1) !important;
646
+ }
647
+
648
+ .memori-artifact-drawer--meta {
649
+ width: 100%;
650
+ gap: 0.75rem;
651
+ }
652
+
653
+ .memori-artifact-drawer--meta-item {
654
+ width: 100%;
655
+ justify-content: center;
656
+ font-size: 0.75rem;
657
+ }
658
+
659
+ /* Ensure full screen coverage */
660
+ .memori-artifact-drawer--backdrop {
661
+ backdrop-filter: blur(8px) saturate(180%) !important;
662
+ background: linear-gradient(135deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0.3) 100%) !important;
663
+ }
664
+ }
665
+
666
+ @media (min-width: 769px) {
667
+ /* Hide mobile drawer on desktop */
668
+ .memori-artifact-drawer {
669
+ display: none !important;
670
+ }
671
+
672
+ /* Show web panel on desktop */
673
+ .memori-artifact-panel {
674
+ display: flex !important;
675
+ animation: slideInFromRight 0.5s cubic-bezier(0.4, 0, 0.2, 1);
676
+ }
677
+ }
678
+
679
+ @keyframes slideInFromRight {
680
+ from {
681
+ opacity: 0;
682
+ transform: translateX(100%);
683
+ }
684
+ to {
685
+ opacity: 1;
686
+ transform: translateX(0);
687
+ }
688
+ }
689
+
690
+ @media (min-width: 769px) and (max-width: 1024px) {
691
+ .memori-artifact-drawer--panel {
692
+ width: 70%;
693
+ }
694
+
695
+ .memori-artifact-panel {
696
+ animation: slideInFromRight 0.6s cubic-bezier(0.4, 0, 0.2, 1);
697
+ }
698
+ }
699
+
700
+ @media (min-width: 1025px) {
701
+ .memori-artifact-drawer--panel {
702
+ width: 50%;
703
+ }
704
+
705
+ .memori-artifact-panel {
706
+ animation: slideInFromRight 0.7s cubic-bezier(0.4, 0, 0.2, 1);
707
+ }
708
+ }
709
+
710
+ /* Fullscreen Mode */
711
+ .memori-artifact-drawer--fullscreen .memori-artifact-drawer--panel {
712
+ width: 100% !important;
713
+ max-width: 100% !important;
714
+ border-radius: 0 !important;
715
+ margin: 0 !important;
716
+ box-shadow: none !important;
717
+ }
718
+
719
+ .memori-artifact-drawer--fullscreen .memori-artifact-drawer--backdrop {
720
+ backdrop-filter: none;
721
+ background-color: transparent;
722
+ }
723
+
724
+ /* Mobile Mode */
725
+ .memori-artifact-drawer--mobile .memori-artifact-drawer--panel {
726
+ position: fixed !important;
727
+ top: 0 !important;
728
+ right: 0 !important;
729
+ bottom: 0 !important;
730
+ left: 0 !important;
731
+ width: 100% !important;
732
+ max-width: 100% !important;
733
+ height: 100vh !important;
734
+ border-radius: 0 !important;
735
+ margin: 0 !important;
736
+ }
737
+
738
+ .memori-artifact-drawer--mobile .memori-artifact-drawer--backdrop {
739
+ background-color: rgba(0, 0, 0, 0.5) !important;
740
+ }
741
+
742
+ /* Focus and Accessibility */
743
+ .memori-artifact-drawer--panel:focus {
744
+ outline: none;
745
+ }
746
+
747
+ .memori-artifact-drawer--panel:focus-visible {
748
+ outline: 2px solid var(--memori-primary);
749
+ outline-offset: 2px;
750
+ }
751
+
752
+ /* Animation Classes */
753
+ .memori-artifact-drawer[data-headlessui-state~='open'] .memori-artifact-drawer--panel {
754
+ transform: translateX(0);
755
+ }
756
+
757
+ .memori-artifact-drawer[data-headlessui-state~='open'] .memori-artifact-drawer--panel-left {
758
+ transform: translateX(0);
759
+ }
760
+
761
+ /* Loading States and Animations */
762
+ .memori-artifact-drawer--loading {
763
+ position: relative;
764
+ overflow: hidden;
765
+ }
766
+
767
+ .memori-artifact-drawer--loading::before {
768
+ position: absolute;
769
+ z-index: 1;
770
+ top: 0;
771
+ left: -100%;
772
+ width: 100%;
773
+ height: 100%;
774
+ animation: loading-shimmer 1.5s infinite;
775
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
776
+ content: '';
777
+ }
778
+
779
+ @keyframes loading-shimmer {
780
+ 0% {
781
+ left: -100%;
782
+ }
783
+ 100% {
784
+ left: 100%;
785
+ }
786
+ }
787
+
788
+ .memori-artifact-panel--loading {
789
+ position: relative;
790
+ overflow: hidden;
791
+ }
792
+
793
+ .memori-artifact-panel--loading::before {
794
+ position: absolute;
795
+ z-index: 1;
796
+ top: 0;
797
+ left: -100%;
798
+ width: 100%;
799
+ height: 100%;
800
+ animation: loading-shimmer 1.5s infinite;
801
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
802
+ content: '';
803
+ }
804
+
805
+ /* Pulse animation for interactive elements */
806
+ .memori-artifact-drawer--pulse {
807
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
808
+ }
809
+
810
+ @keyframes pulse {
811
+ 0%,
812
+ 100% {
813
+ opacity: 1;
814
+ }
815
+ 50% {
816
+ opacity: 0.7;
817
+ }
818
+ }
819
+
820
+ /* Bounce animation for success states */
821
+ .memori-artifact-drawer--bounce {
822
+ animation: bounce 0.6s ease-in-out;
823
+ }
824
+
825
+ @keyframes bounce {
826
+ 0%,
827
+ 20%,
828
+ 53%,
829
+ 80%,
830
+ 100% {
831
+ transform: translate3d(0, 0, 0);
832
+ }
833
+ 40%,
834
+ 43% {
835
+ transform: translate3d(0, -8px, 0);
836
+ }
837
+ 70% {
838
+ transform: translate3d(0, -4px, 0);
839
+ }
840
+ 90% {
841
+ transform: translate3d(0, -2px, 0);
842
+ }
843
+ }
844
+
845
+ /* Dark Mode Support */
846
+ @media (prefers-color-scheme: dark) {
847
+ .memori-artifact-drawer--panel {
848
+ border-left-color: rgba(255, 255, 255, 0.1);
849
+ background: white;
850
+ color: var(--memori-text-color, #fff);
851
+ }
852
+
853
+ .memori-artifact-drawer--header {
854
+ border-bottom-color: var(--memori-button-border-color, #404040);
855
+ background: white;
856
+ }
857
+
858
+ .memori-artifact-drawer--sidebar {
859
+ border-left-color: var(--memori-button-border-color, #404040);
860
+ background: white;
861
+ }
862
+
863
+ .memori-artifact-drawer--main {
864
+ border-color: rgba(255, 255, 255, 0.1) !important;
865
+ background: rgba(42, 42, 42, 0.6) !important;
866
+ }
867
+
868
+ .memori-artifact-panel {
869
+ border-left-color: white;
870
+ background: white;
871
+ }
872
+
873
+ .memori-artifact-panel--main {
874
+ border-color: rgba(255, 255, 255, 0.1) !important;
875
+ background: rgba(42, 42, 42, 0.6) !important;
876
+ }
877
+ }