PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.9.1
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.9.1
3.5.9 3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / themes / sass / _common.scss
ai-engine / themes / sass Last commit date
_common.scss 1 year ago chatgpt.scss 1 year ago messages.scss 1 year ago timeless.scss 1 year ago
_common.scss
1233 lines
1 // main: chatgpt.scss, messages.scss
2
3 @mixin discussions-styles {
4 &.mwai-discussions {
5 border-radius: var(--mwai-borderRadius);
6 background: var(--mwai-backgroundHeaderColor);
7 overflow: hidden;
8
9 * {
10 box-sizing: border-box;
11 }
12
13 .mwai-discussion {
14 display: flex;
15 position: relative;
16 padding-left: calc(var(--mwai-spacing) / 2);
17 padding-right: calc(var(--mwai-spacing) / 2);
18 padding-bottom: calc(var(--mwai-spacing) / 2);
19 color: var(--mwai-conversationsTextColor);
20 opacity: 0.65;
21 align-items: center;
22
23 .mwai-discussion-title {
24 flex: 1;
25 padding: 5px 10px;
26 overflow: hidden;
27 text-overflow: ellipsis;
28 white-space: nowrap;
29 font-size: var(--mwai-fontSize);
30 }
31
32 .mwai-discussion-actions {
33 position: absolute;
34 top: 50%;
35 right: calc(var(--mwai-spacing) / 2);
36 transform: translateY(-50%);
37 opacity: 0;
38 transition: opacity 0.2s ease-out;
39 z-index: 100;
40
41 .mwai-menu-icon {
42 width: 28px;
43 height: 28px;
44 display: flex;
45 align-items: center;
46 justify-content: center;
47 cursor: pointer;
48 color: var(--mwai-conversationsTextColor);
49 }
50
51 }
52
53 &.mwai-active {
54 cursor: pointer;
55
56 .mwai-discussion-title {
57 background: var(--mwai-backgroundPrimaryColor);
58 border-radius: var(--mwai-borderRadius);
59 opacity: 1;
60 }
61 }
62
63 &:hover {
64 cursor: pointer;
65
66 .mwai-discussion-title {
67 background: var(--mwai-backgroundPrimaryColor);
68 border-radius: var(--mwai-borderRadius);
69 opacity: 1;
70 }
71
72 .mwai-discussion-actions {
73 opacity: 1;
74 }
75 }
76
77 // Keep actions visible when menu is open
78 &:has(.mwai-context-menu) {
79 .mwai-discussion-actions {
80 opacity: 1;
81 }
82 }
83
84 &:first-child {
85 margin-top: calc(var(--mwai-spacing) / 2);
86 }
87 }
88
89 .mwai-header {
90 color: var(--mwai-headerButtonsColor);
91 padding: var(--mwai-spacing);
92 display: flex;
93 justify-content: space-between;
94 align-items: center;
95 gap: 10px;
96
97 button {
98 background: var(--mwai-backgroundPrimaryColor);
99 color: var(--mwai-fontColor);
100 border: none;
101 padding: 8px 16px;
102 border-radius: var(--mwai-borderRadius);
103 cursor: pointer;
104 transition: all 0.2s ease-out;
105
106 &:hover:not(:disabled) {
107 background: var(--mwai-iconTextBackgroundColor);
108 }
109
110 &:disabled {
111 opacity: 0.5;
112 cursor: not-allowed;
113 }
114 }
115
116 .mwai-refresh-btn {
117 padding: 8px;
118 display: flex;
119 align-items: center;
120 justify-content: center;
121 }
122 }
123
124 .mwai-body {
125 background: var(--mwai-conversationsBackgroundColor);
126 list-style: none;
127 padding: 0;
128 margin: 0;
129 position: relative;
130 min-height: 200px;
131 display: flex;
132 flex-direction: column;
133 border-radius: 0;
134 z-index: 1;
135 }
136
137 .mwai-loading-overlay {
138 position: absolute;
139 top: 0;
140 left: 0;
141 right: 0;
142 bottom: 0;
143 background: var(--mwai-conversationsBackgroundColor);
144 opacity: 0.9;
145 display: flex;
146 align-items: center;
147 justify-content: center;
148 z-index: 10;
149 }
150
151 .mwai-spinner {
152 animation: spin 1s linear infinite;
153 color: var(--mwai-fontColor);
154 }
155
156 @keyframes spin {
157 from { transform: rotate(0deg); }
158 to { transform: rotate(360deg); }
159 }
160
161 .mwai-pagination {
162 background: var(--mwai-backgroundHeaderColor);
163 padding: var(--mwai-spacing);
164 display: flex;
165 justify-content: space-between;
166 align-items: center;
167 border-top: 1px solid var(--mwai-backgroundPrimaryColor);
168
169 button {
170 background: var(--mwai-backgroundPrimaryColor);
171 color: var(--mwai-fontColor);
172 border: none;
173 padding: 8px 12px;
174 border-radius: var(--mwai-borderRadius);
175 cursor: pointer;
176 transition: all 0.2s ease-out;
177 display: flex;
178 align-items: center;
179 justify-content: center;
180
181 &:hover:not(:disabled) {
182 background: var(--mwai-iconTextBackgroundColor);
183 }
184
185 &:disabled {
186 opacity: 0.3;
187 cursor: not-allowed;
188 }
189 }
190
191 span {
192 color: var(--mwai-headerButtonsColor);
193 font-size: var(--mwai-fontSize);
194 font-weight: 500;
195 }
196
197 .mwai-page-indicator {
198 color: var(--mwai-headerButtonsColor);
199 font-size: calc(var(--mwai-fontSize) * 0.85);
200 font-weight: 400;
201 opacity: 0.8;
202 }
203 }
204 }
205 }
206
207 @mixin file-upload-icon-sprites {
208 $icon-size: 32px;
209
210 &.mwai-idle-add {
211 background-position: -1 * $icon-size -3 * $icon-size;
212 }
213
214 &.mwai-image-add {
215 background-position: -1 * $icon-size -0 * $icon-size;
216 }
217
218 &.mwai-image-up {
219 background-position: -2 * $icon-size -0 * $icon-size;
220 }
221
222 &.mwai-image-del {
223 background-position: -3 * $icon-size -0 * $icon-size;
224 }
225
226 &.mwai-image-ok {
227 background-position: -4 * $icon-size -0 * $icon-size;
228 }
229
230 &.mwai-document-add {
231 background-position: -1 * $icon-size -2 * $icon-size;
232 }
233
234 &.mwai-document-up {
235 background-position: -2 * $icon-size -2 * $icon-size;
236 }
237
238 &.mwai-document-del {
239 background-position: -3 * $icon-size -2 * $icon-size;
240 }
241
242 &.mwai-document-ok {
243 background-position: -4 * $icon-size -2 * $icon-size;
244 }
245
246 .mwai-file-upload-progress {
247 position: absolute;
248 font-size: 8px;
249 width: 21px;
250 top: 24px;
251 left: 23px;
252 overflow: hidden;
253 text-align: center;
254 font-weight: bold;
255 color: white;
256 }
257 }
258
259 @mixin microphone {
260
261 display: flex;
262 justify-content: center;
263 align-items: center;
264
265 svg {
266 opacity: 0.5;
267 filter: grayscale(100%);
268 transition: opacity 0.3s ease-out;
269 cursor: pointer;
270 }
271
272 &[active=true]=true] svg {
273 opacity: 1;
274 }
275
276 &[disabled]] svg {
277 opacity: 0;
278 cursor: not-allowed;
279 }
280 }
281
282 @mixin fullscreen-window {
283 position: fixed;
284 left: 0 !important;
285 right: 0 !important;
286 bottom: 0 !important;
287 top: 0 !important;
288 width: 100%;
289 height: 100%;
290 max-height: 100%;
291 max-width: 100%;
292 display: flex;
293 flex-direction: column;
294 margin: 0;
295 z-index: 999999;
296 background-color: var(--mwai-backgroundSecondaryColor);
297
298 .mwai-header {
299 border-radius: 0;
300 }
301
302 .mwai-body {
303 height: 100%;
304 max-height: inherit;
305 border-radius: 0;
306
307 .mwai-conversation {
308 flex: auto;
309 max-height: none;
310 }
311 }
312 }
313
314 @mixin common-styles {
315
316 // Transitions
317
318 &.mwai-transition, .mwai-transition {
319 opacity: 0;
320 transition: opacity 350ms ease-in-out;
321 }
322
323 &.mwai-transition-visible, .mwai-transition-visible {
324 opacity: 1;
325 }
326
327 .mwai-text {
328 overflow-wrap: anywhere;
329
330 img {
331 max-width: 100%;
332 }
333
334 div {
335 p:first-child {
336 margin-top: 0;
337 }
338 p:last-child {
339 margin-bottom: 0;
340 }
341 }
342 }
343
344 // The icon when the chat window is closed.
345
346 .mwai-trigger {
347 position: absolute;
348 right: 0;
349 bottom: 0;
350 transition: all 0.2s ease-out;
351 z-index: 9999;
352 display: flex;
353 flex-direction: column;
354 align-items: end;
355
356 .mwai-icon-text-container {
357 display: flex;
358 flex-direction: column;
359 align-items: flex-end;
360
361 .mwai-icon-text {
362 background: var(--mwai-iconTextBackgroundColor);
363 color: var(--mwai-iconTextColor);
364 box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.15);
365 max-width: 200px;
366 font-size: 13px;
367 margin-bottom: 15px;
368 padding: 10px 15px;
369 border-radius: 8px;
370 }
371
372 .mwai-icon-text-close {
373 color: var(--mwai-iconTextColor);
374 background: var(--mwai-iconTextBackgroundColor);
375 padding: 0;
376 width: 24px;
377 height: 24px;
378 border-radius: 50%;
379 display: none;
380 justify-content: center;
381 align-items: center;
382 margin-bottom: 3px;
383 }
384
385 &:hover {
386 cursor: pointer;
387
388 .mwai-icon-text-close {
389 display: flex;
390 font-size: 12px;
391
392 &:hover {
393 filter: brightness(1.2);
394 }
395 }
396 }
397
398 @media (max-width: 760px) {
399 .mwai-icon-text-close {
400 display: flex;
401 }
402 }
403
404 }
405
406 .mwai-icon-container {
407
408 .mwai-icon {
409 filter: drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.15));
410 transition: all 0.2s ease-out;
411
412 &:hover {
413 cursor: pointer;
414 transform: scale(1.05);
415 }
416 }
417 }
418 }
419
420 // Handle the chat window and fullscreen.
421 // Let's keep this common for all themes.
422
423 &.mwai-window {
424 position: fixed;
425 right: 30px;
426 bottom: 30px;
427 width: var(--mwai-width);
428 z-index: 9999;
429
430 .mwai-header {
431 display: none;
432 justify-content: flex-end;
433 align-items: center;
434 border-radius: var(--mwai-borderRadius) var(--mwai-borderRadius) 0 0;
435 background: var(--mwai-backgroundHeaderColor);
436
437 .mwai-buttons {
438 display: flex;
439 align-items: center;
440
441 .mwai-resize-button {
442 justify-content: center;
443 height: 32px;
444 width: 22px;
445 cursor: pointer;
446 display: flex;
447 justify-content: center;
448 align-items: center;
449
450 &:before {
451 transition: all 0.2s ease-out;
452 content: ' ';
453 cursor: pointer;
454 position: absolute;
455 height: 13px;
456 width: 13px;
457 border: 1px solid var(--mwai-headerButtonsColor);
458 }
459
460 &:hover:before {
461 width: 16px;
462 height: 16px;
463 }
464 }
465
466 .mwai-close-button {
467 justify-content: center;
468 height: 32px;
469 width: 33px;
470 cursor: pointer;
471 border-radius: var(--mwai-borderRadius);
472
473 &:before {
474 transition: all 0.2s ease-out;
475 transform: translate(16px, 5px) rotate(45deg);
476 }
477 &:after {
478 transition: all 0.2s ease-out;
479 transform: translate(16px, 5px) rotate(-45deg);
480 }
481 }
482
483 .mwai-close-button:before, .mwai-close-button:after {
484 content: ' ';
485 cursor: pointer;
486 position: absolute;
487 height: 22px;
488 width: 1px;
489 background-color: var(--mwai-headerButtonsColor);
490 }
491
492 .mwai-close-button:hover {
493 &:before {
494 opacity: 1;
495 transform: translate(16px, 5px) rotate(135deg);
496 }
497 &:after {
498 opacity: 1;
499 transform: translate(16px, 5px) rotate(45deg);
500 }
501 }
502
503 }
504 }
505
506 .mwai-body {
507 display: none;
508 opacity: 0;
509 max-height: var(--mwai-maxHeight);
510 border-radius: 0 0 var(--mwai-borderRadius) var(--mwai-borderRadius);
511 }
512
513 &.mwai-bottom-left {
514 bottom: 30px;
515 right: inherit;
516 left: 30px;
517
518 .mwai-trigger {
519 right: inherit;
520 left: 0;
521 }
522 }
523
524 &.mwai-top-right {
525 top: 30px;
526 bottom: inherit;
527 right: 30px;
528
529 .mwai-trigger {
530 top: 0;
531 bottom: inherit;
532 }
533 }
534
535 &.mwai-top-left {
536 top: 30px;
537 bottom: inherit;
538 right: inherit;
539 left: 30px;
540
541 .mwai-trigger {
542 top: 0;
543 bottom: inherit;
544 right: inherit;
545 left: 0;
546 }
547 }
548
549 &.mwai-top-left, &.mwai-bottom-left {
550
551 .mwai-trigger {
552 align-items: flex-start;
553 }
554 }
555
556 &.mwai-top-right, &.mwai-top-left {
557
558 .mwai-trigger {
559 flex-direction: column-reverse;
560
561 .mwai-icon-text {
562 margin-bottom: 0;
563 margin-top: 15px;
564 }
565 }
566 }
567 }
568
569 // Popup chat is fullscreen
570
571 &.mwai-window.mwai-fullscreen {
572
573 .mwai-header {
574
575 .mwai-buttons {
576 margin-bottom: 0px;
577
578 .mwai-resize-button {
579 &:before {
580 width: 16px;
581 height: 16px;
582 }
583
584 &:hover:before {
585 width: 13px;
586 height: 13px;
587 }
588 }
589 }
590 }
591 }
592
593 // Standard chat is fullscreen
594
595 &.mwai-fullscreen:not(.mwai-window), &.mwai-fullscreen.mwai-window.mwai-open {
596 @include fullscreen-window;
597 }
598
599 // Popup chat is open
600
601 &.mwai-window.mwai-open {
602
603 .mwai-header {
604 display: flex;
605 }
606
607 .mwai-body {
608 display: flex;
609 transition: opacity 200ms ease-in-out 0s;
610 opacity: 1;
611 }
612
613 .mwai-trigger {
614 display: none;
615 }
616 }
617
618 .mwai-error {
619 margin: var(--mwai-spacing);
620 color: white;
621 background: rgba(180, 55, 55, 0.55);
622 padding: var(--mwai-spacing);
623 border-radius: var(--mwai-borderRadius);
624
625 &:hover {
626 cursor: pointer;
627 background: rgba(180, 44, 44, 0.85);
628 }
629 }
630
631 &.mwai-bubble .mwai-icon-container {
632 background: var(--mwai-bubbleColor);
633 width: 60px;
634 height: 60px;
635 border-radius: 100%;
636 transition: all 0.2s ease-out;
637 display: flex;
638 justify-content: center;
639 align-items: center;
640
641 .mwai-icon {
642 max-width: 50%;
643 max-height: 50%;
644 filter: none;
645
646 &:hover {
647 transform: none;
648 }
649 }
650
651 .mwai-emoji {
652 font-size: 30px !important;
653 }
654
655 &:hover {
656 cursor: pointer;
657 filter: brightness(1.1);
658 }
659 }
660
661 @media (max-width: 760px) {
662 &.mwai-window.mwai-open {
663 @include fullscreen-window;
664
665 .mwai-input {
666 flex-direction: column;
667
668 button {
669 font-size: 16px;
670 margin-left: 0;
671 width: 100%;
672 }
673
674 .mwai-input-text {
675 //margin-bottom: var(--mwai-spacing);
676 width: 100%;
677
678 // This is to avoid iOS from zooming in when focusing on an input field.
679 input, textarea {
680 font-size: 16px;
681 }
682 }
683 }
684
685 .mwai-body {
686 display: flex;
687 transition: opacity 200ms ease-in-out 0s;
688 opacity: 1;
689 height: 100%;
690 max-height: inherit;
691
692 .mwai-conversation {
693 flex: auto;
694 max-height: none;
695 }
696 }
697
698 .mwai-resize-button {
699 display: none !important;
700 }
701
702 .mwai-trigger {
703 display: none;
704 }
705 }
706 }
707
708 // Keyframes for buttons
709
710 @keyframes mwai-button-spinner {
711
712 from {
713 transform: rotate(0turn);
714 }
715 to {
716 transform: rotate(1turn);
717 }
718 }
719
720 // Safari-specific fix for spinner cleanup
721 button:not(.mwai-busy):before {
722 content: none !important;
723 display: none !important;
724 animation: none !important;
725 }
726
727 // WordPress Admin Bar
728
729 .admin-bar .mwai-fullscreen:not(.mwai-window),
730 .admin-bar .mwai-fullscreen.mwai-window.mwai-open {
731 top: 32px;
732 }
733 }
734
735 @mixin code-dark {
736
737 pre code.hljs {
738 display: block;
739 overflow-x: auto;
740 padding: 1em;
741 }
742
743 code.hljs {
744 padding: 3px 5px;
745 }
746
747 .hljs {
748 color: #fff;
749
750 &-subst {
751 color: #fff;
752 }
753
754 &-comment {
755 color: #999;
756 }
757
758 &-attr,
759 &-doctag,
760 &-keyword,
761 &-meta .hljs-keyword,
762 &-section,
763 &-selector-tag {
764 color: #88aece;
765 }
766
767 &-attribute {
768 color: #c59bc1;
769 }
770
771 &-name,
772 &-number,
773 &-quote,
774 &-selector-id,
775 &-template-tag,
776 &-type {
777 color: #f08d49;
778 }
779
780 &-selector-class {
781 color: #88aece;
782 }
783
784 &-link,
785 &-regexp,
786 &-selector-attr,
787 &-string,
788 &-symbol,
789 &-template-variable,
790 &-variable {
791 color: #b5bd68;
792 }
793
794 &-meta,
795 &-selector-pseudo {
796 color: #88aece;
797 }
798
799 &-built_in,
800 &-literal,
801 &-title {
802 color: #f08d49;
803 }
804
805 &-bullet,
806 &-code {
807 color: #ccc;
808 }
809
810 &-meta .hljs-string {
811 color: #b5bd68;
812 }
813
814 &-deletion {
815 color: #de7176;
816 }
817
818 &-addition {
819 color: #76c490;
820 }
821
822 &-emphasis {
823 font-style: italic;
824 }
825
826 &-strong {
827 font-weight: 700;
828 }
829 }
830 }
831
832 @mixin code-light {
833
834 pre code.hljs {
835 display: block;
836 overflow-x: auto;
837 padding: 1em;
838 }
839
840 code.hljs {
841 padding: 3px 5px;
842 }
843
844 .hljs {
845 color: #333;
846 background: #f0f0f0;
847
848 &-subst {
849 color: #333;
850 }
851
852 &-comment {
853 color: #888;
854 }
855
856 &-attr,
857 &-doctag,
858 &-keyword,
859 &-meta .hljs-keyword,
860 &-section,
861 &-selector-tag {
862 color: #0077cc;
863 }
864
865 &-attribute {
866 color: #aa3377;
867 }
868
869 &-name,
870 &-number,
871 &-quote,
872 &-selector-id,
873 &-template-tag,
874 &-type {
875 color: #c18401;
876 }
877
878 &-selector-class {
879 color: #0077cc;
880 }
881
882 &-link,
883 &-regexp,
884 &-selector-attr,
885 &-string,
886 &-symbol,
887 &-template-variable,
888 &-variable {
889 color: #689700;
890 }
891
892 &-meta,
893 &-selector-pseudo {
894 color: #0077cc;
895 }
896
897 &-built_in,
898 &-literal,
899 &-title {
900 color: #c18401;
901 }
902
903 &-bullet,
904 &-code {
905 color: #555;
906 }
907
908 &-meta .hljs-string {
909 color: #689700;
910 }
911
912 &-deletion {
913 color: #b71c1c;
914 }
915
916 &-addition {
917 color: #1b5e20;
918 }
919
920 &-emphasis {
921 font-style: italic;
922 }
923
924 &-strong {
925 font-weight: 700;
926 }
927 }
928 }
929
930 @mixin reply-actions {
931 .mwai-reply-actions {
932 position: absolute;
933 border-radius: 5px;
934 top: 10px;
935 right: 10px;
936 display: flex;
937 align-items: center;
938 padding: 2px 2px;
939 z-index: 100;
940 background: var(--mwai-backgroundPrimaryColor);
941 box-shadow: 0 0 8px rgba(0, 0, 0, 0.25);
942 z-index: 100;
943
944 .mwai-copy-button {
945 fill: var(--mwai-fontColor);
946 padding: 3px 5px;
947 width: 24px;
948 height: 24px;
949 background: var(--mwai-backgroundPrimaryColor);
950 cursor: pointer;
951 border-radius: 5px;
952
953 &:hover {
954 filter: brightness(1.2);
955 }
956 }
957
958 &.mwai-hidden {
959 opacity: 0;
960 }
961 }
962 }
963
964 @mixin realtime {
965 .mwai-realtime {
966 padding: var(--mwai-spacing);
967
968 .mwai-visualizer {
969 display: flex;
970 justify-content: center;
971 align-items: center;
972
973 hr {
974 width: 100px;
975 margin-right: var(--mwai-spacing);
976 margin-left: var(--mwai-spacing);
977 border: 1px solid var(--mwai-backgroundPrimaryColor);
978 }
979
980 .mwai-animation {
981 background: var(--mwai-backgroundPrimaryColor);
982 }
983 }
984
985 .mwai-controls {
986 display: flex;
987 justify-content: center;
988 align-items: center;
989 margin-bottom: var(--mwai-spacing);
990
991 > * + * {
992 margin-left: 10px;
993 }
994
995 button {
996 border-radius: 100%;
997 width: 50px;
998 height: 50px;
999 margin: 5px;
1000 padding: 5px;
1001 display: flex;
1002 align-items: center;
1003 justify-content: center;
1004 color: var(--mwai-fontColor);
1005 border: 2px solid var(--mwai-backgroundPrimaryColor);
1006 background: none;
1007 cursor: pointer;
1008 transition: all 0.2s ease-out;
1009 min-width: inherit;
1010 max-width: inherit;
1011
1012 &:hover:not(:disabled) {
1013 background: var(--mwai-backgroundPrimaryColor);
1014 }
1015
1016 &:disabled {
1017 opacity: 0.5;
1018 cursor: not-allowed;
1019 background: none;
1020 }
1021
1022 &.mwai-active {
1023 border: 2px solid var(--mwai-fontColor);
1024 }
1025 }
1026 }
1027
1028 .mwai-last-transcript {
1029 margin: var(--mwai-spacing);
1030 margin-top: 0;
1031 border: 2px solid var(--mwai-backgroundPrimaryColor);
1032 padding: calc(var(--mwai-spacing) / 2);
1033 border-radius: var(--mwai-borderRadius);
1034 display: flex;
1035 justify-content: center;
1036 font-size: 80%;
1037 }
1038
1039 .mwai-statistics {
1040 display: grid;
1041 grid-template-columns: 1fr 1fr 1fr;
1042 grid-row-gap: 10px;
1043 font-size: 14px;
1044
1045 div {
1046 display: flex;
1047 flex-direction: column;
1048 align-items: center;
1049 }
1050
1051 label {
1052 font-size: 11px;
1053 opacity: 0.5;
1054 text-transform: uppercase;
1055 }
1056 }
1057
1058 .mwai-options {
1059 margin-top: var(--mwai-spacing);
1060 display: flex;
1061 align-items: center;
1062
1063 .mwai-option {
1064 cursor: pointer;
1065 opacity: 0.5;
1066 margin-right: 2px;
1067
1068 &.mwai-active {
1069 opacity: 1;
1070 }
1071 }
1072 }
1073 }
1074 }
1075
1076 // Context Menu Portal (appears at document body level)
1077 .mwai-context-menu-portal {
1078 .mwai-context-menu {
1079 background: var(--mwai-backgroundHeaderColor);
1080 border: 1px solid rgba(0, 0, 0, 0.1);
1081 border-radius: var(--mwai-borderRadius);
1082 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1083 font-size: 13px;
1084 color: var(--mwai-fontColor);
1085
1086 .mwai-menu-item {
1087 display: flex;
1088 align-items: center;
1089 gap: 8px;
1090 padding: 8px 12px;
1091 cursor: pointer;
1092 transition: background-color 0.2s;
1093
1094 &:hover {
1095 background-color: rgba(0, 0, 0, 0.05);
1096 }
1097
1098 &.mwai-danger {
1099 color: #dc3545;
1100
1101 &:hover {
1102 background-color: rgba(220, 53, 69, 0.1);
1103 }
1104 }
1105
1106 svg {
1107 flex-shrink: 0;
1108 }
1109 }
1110 }
1111 }
1112
1113
1114 // ChatbotChunks - Debug Stream Events Display
1115 .mwai-chunks {
1116 padding: 8px;
1117 background: rgba(0, 0, 0, 0.03);
1118 font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
1119 font-size: 11px;
1120 border-top: 1px solid rgba(0, 0, 0, 0.06);
1121
1122 &.mwai-chunks-collapsed {
1123 .mwai-chunks-header {
1124 margin-bottom: 0 !important;
1125 }
1126 }
1127
1128 .mwai-chunks-header {
1129 display: flex;
1130 align-items: center;
1131 gap: 6px;
1132 margin-bottom: 8px;
1133 color: #6b7280;
1134 font-size: 10px;
1135 text-transform: uppercase;
1136 letter-spacing: 0.05em;
1137
1138 .mwai-chunks-title {
1139 flex: 1; // This pushes the buttons to the right
1140 overflow: hidden;
1141 text-overflow: ellipsis;
1142 white-space: nowrap;
1143 }
1144
1145 .mwai-chunks-status {
1146 margin-left: 4px;
1147 font-weight: 500;
1148 }
1149
1150 .mwai-chunks-toggle {
1151 background: none;
1152 border: 1px solid rgba(0, 0, 0, 0.1);
1153 border-radius: 3px;
1154 padding: 2px;
1155 width: 30px;
1156 height: 20px;
1157 cursor: pointer;
1158 color: #6b7280;
1159 display: flex;
1160 align-items: center;
1161 justify-content: center;
1162 transition: all 0.2s ease;
1163 margin-left: 4px;
1164
1165 &:hover {
1166 background: rgba(0, 0, 0, 0.05);
1167 color: #374151;
1168 }
1169 }
1170 }
1171
1172 .mwai-chunk {
1173 margin-bottom: 4px;
1174 padding: 6px 8px;
1175 background: white;
1176 border-radius: 4px;
1177 border: 1px solid rgba(0, 0, 0, 0.06);
1178 transition: all 0.2s ease;
1179
1180 .mwai-chunk-header {
1181 display: flex;
1182 align-items: center;
1183 gap: 8px;
1184 cursor: pointer;
1185 user-select: none;
1186
1187 .mwai-chunk-time {
1188 color: #9ca3af;
1189 font-size: 10px;
1190 font-variant-numeric: tabular-nums;
1191 }
1192
1193 .mwai-chunk-type {
1194 display: flex;
1195 align-items: center;
1196 gap: 4px;
1197 padding: 2px 6px;
1198 border-radius: 3px;
1199 font-size: 10px;
1200 font-weight: 500;
1201 color: white;
1202 }
1203
1204 .mwai-chunk-data {
1205 flex: 1;
1206 color: #374151;
1207 overflow: hidden;
1208 text-overflow: ellipsis;
1209 white-space: nowrap;
1210 }
1211
1212 .mwai-chunk-expand {
1213 color: #9ca3af;
1214 transition: transform 0.2s ease;
1215 }
1216 }
1217
1218 .mwai-chunk-details {
1219 margin-top: 8px;
1220 padding: 8px;
1221 background: rgba(0, 0, 0, 0.02);
1222 border-radius: 3px;
1223 overflow-x: auto;
1224
1225 pre {
1226 margin: 0;
1227 white-space: pre-wrap;
1228 word-break: break-word;
1229 color: #4b5563;
1230 }
1231 }
1232 }
1233 }