@sequent-org/moodboard 1.4.26 → 1.4.27

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 (30) hide show
  1. package/package.json +2 -1
  2. package/src/assets/fonts/geist/geist-sans-latin-100-normal.ttf +0 -0
  3. package/src/assets/fonts/geist/geist-sans-latin-200-normal.ttf +0 -0
  4. package/src/assets/fonts/geist/geist-sans-latin-300-normal.ttf +0 -0
  5. package/src/assets/fonts/geist/geist-sans-latin-400-normal.ttf +0 -0
  6. package/src/assets/fonts/geist/geist-sans-latin-500-normal.ttf +0 -0
  7. package/src/assets/fonts/geist/geist-sans-latin-600-normal.ttf +0 -0
  8. package/src/assets/fonts/geist/geist-sans-latin-700-normal.ttf +0 -0
  9. package/src/assets/fonts/geist/geist-sans-latin-800-normal.ttf +0 -0
  10. package/src/assets/fonts/geist/geist-sans-latin-900-normal.ttf +0 -0
  11. package/src/core/SaveManager.js +6 -0
  12. package/src/core/flows/ClipboardFlow.js +16 -6
  13. package/src/moodboard/bootstrap/MoodBoardUiFactory.js +10 -0
  14. package/src/moodboard/lifecycle/MoodBoardDestroyer.js +3 -0
  15. package/src/services/ai/AiClient.js +220 -0
  16. package/src/services/ai/ChatHistoryStore.js +55 -0
  17. package/src/services/ai/ChatPresets.js +40 -0
  18. package/src/services/ai/ChatSessionController.js +220 -0
  19. package/src/ui/chat/ChatComposer.js +198 -0
  20. package/src/ui/chat/ChatExtendedPromptModal.js +131 -0
  21. package/src/ui/chat/ChatMessageList.js +92 -0
  22. package/src/ui/chat/ChatPillMenu.js +141 -0
  23. package/src/ui/chat/ChatSettingsPopup.js +171 -0
  24. package/src/ui/chat/ChatWindow.js +407 -0
  25. package/src/ui/chat/ChatWindowRenderer.js +214 -0
  26. package/src/ui/chat/icons.js +113 -0
  27. package/src/ui/styles/chat.css +920 -0
  28. package/src/ui/styles/index.css +1 -0
  29. package/src/ui/styles/workspace.css +73 -1
  30. package/src/utils/styleLoader.js +2 -1
@@ -0,0 +1,920 @@
1
+ @font-face {
2
+ font-family: 'GeistSans';
3
+ src: url('../../assets/fonts/geist/geist-sans-latin-400-normal.ttf') format('truetype');
4
+ font-weight: 400;
5
+ font-style: normal;
6
+ font-display: swap;
7
+ }
8
+
9
+ /* Чат-окно ИИ-ассистента (фикс-позиционирование в нижней части мудборда) */
10
+
11
+ .moodboard-chat {
12
+ position: absolute;
13
+ left: 50%;
14
+ bottom: 32px;
15
+ transform: translateX(-50%);
16
+ width: min(720px, 96%);
17
+ z-index: 2500;
18
+ pointer-events: auto;
19
+ font-family: 'Roboto', Arial, sans-serif;
20
+ color: #374151;
21
+ }
22
+
23
+ .moodboard-chat__history {
24
+ max-height: 360px;
25
+ overflow-y: auto;
26
+ background: #ffffff;
27
+ border-radius: 16px;
28
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
29
+ padding: 12px 16px;
30
+ margin-bottom: 8px;
31
+ display: none;
32
+ flex-direction: column;
33
+ gap: 10px;
34
+ scroll-behavior: smooth;
35
+ }
36
+
37
+ .moodboard-chat__history.is-visible {
38
+ display: none;
39
+ }
40
+
41
+ .moodboard-chat__msg {
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: 4px;
45
+ max-width: 100%;
46
+ }
47
+
48
+ .moodboard-chat__msg-role {
49
+ font-size: 11px;
50
+ color: #9CA3AF;
51
+ text-transform: uppercase;
52
+ letter-spacing: 0.04em;
53
+ }
54
+
55
+ .moodboard-chat__msg-body {
56
+ font-size: 14px;
57
+ line-height: 1.5;
58
+ color: #374151;
59
+ white-space: pre-wrap;
60
+ word-break: break-word;
61
+ }
62
+
63
+ .moodboard-chat__msg--user .moodboard-chat__msg-body {
64
+ color: #111827;
65
+ font-weight: 500;
66
+ }
67
+
68
+ .moodboard-chat__msg--error .moodboard-chat__msg-body {
69
+ color: #B91C1C;
70
+ }
71
+
72
+ .moodboard-chat__generated-image {
73
+ display: block;
74
+ max-width: min(100%, 320px);
75
+ height: auto;
76
+ border-radius: 12px;
77
+ box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);
78
+ }
79
+
80
+ .moodboard-chat__add-to-board-btn {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ margin-top: 8px;
84
+ padding: 6px 14px;
85
+ border: none;
86
+ border-radius: 8px;
87
+ background: rgba(99, 102, 241, 0.15);
88
+ color: #818CF8;
89
+ font-size: 12px;
90
+ font-weight: 500;
91
+ cursor: pointer;
92
+ transition: background 0.15s, color 0.15s;
93
+ }
94
+
95
+ .moodboard-chat__add-to-board-btn:hover {
96
+ background: rgba(99, 102, 241, 0.28);
97
+ color: #A5B4FC;
98
+ }
99
+
100
+ .moodboard-chat__add-to-board-btn:active {
101
+ background: rgba(99, 102, 241, 0.4);
102
+ }
103
+
104
+ .moodboard-chat__msg-cursor {
105
+ display: inline-block;
106
+ width: 6px;
107
+ height: 1em;
108
+ margin-left: 2px;
109
+ background: #9CA3AF;
110
+ vertical-align: text-bottom;
111
+ animation: moodboard-chat-blink 1s steps(1) infinite;
112
+ }
113
+
114
+ @keyframes moodboard-chat-blink {
115
+ 50% { opacity: 0; }
116
+ }
117
+
118
+ .moodboard-chat__composer {
119
+ box-sizing: border-box;
120
+ min-height: 103px;
121
+ background: #ffffff;
122
+ border-radius: 12px;
123
+ --color-shadow: lab(5.0601% 0 0 / .04);
124
+ box-shadow:
125
+ 0 0 0 1px lab(5.0601% 0 0 / .0784),
126
+ 0 2px 8px -1.5px var(--color-shadow),
127
+ 0 5px 8px -3px var(--color-shadow),
128
+ 0 12px 12px -8px var(--color-shadow),
129
+ 0 24px 24px -8px var(--color-shadow);
130
+ padding: 0px 8px 8px 10px;
131
+ display: flex;
132
+ flex-direction: column;
133
+ justify-content: space-between;
134
+ gap: 10px;
135
+ }
136
+
137
+ .moodboard-chat__status-bar {
138
+ display: none;
139
+ align-items: center;
140
+ gap: 8px;
141
+ padding: 4px 12px;
142
+ margin: 0px 14px 0px 14px;
143
+ background: #f0f0f0;
144
+ border-top-right-radius: 10px;
145
+ border-top-left-radius: 10px;
146
+ border-bottom-left-radius: 0px;
147
+ border-bottom-right-radius: 0px;
148
+ font-size: 13px;
149
+ color: #6B7280;
150
+ line-height: 1.4;
151
+ max-height: 24px;
152
+ }
153
+
154
+ .moodboard-chat__status-bar-text {
155
+ color: #6B7280;
156
+ -webkit-text-fill-color: #6B7280;
157
+ }
158
+
159
+ .moodboard-chat__status-bar.is-visible {
160
+ display: flex;
161
+ }
162
+
163
+ .moodboard-chat__status-bar.is-generating {
164
+ background: #f0f0f0;
165
+ }
166
+
167
+ .moodboard-chat__status-bar.is-generating .moodboard-chat__status-bar-text {
168
+ background: linear-gradient(
169
+ 90deg,
170
+ #9ca3af 0%,
171
+ #9ca3af 20%,
172
+ #6B7280 40%,
173
+ #6B7280 50%,
174
+ #6B7280 60%,
175
+ #9ca3af 80%,
176
+ #9ca3af 100%
177
+ );
178
+ background-size: 200% 100%;
179
+ background-clip: text;
180
+ -webkit-background-clip: text;
181
+ color: transparent;
182
+ -webkit-text-fill-color: transparent;
183
+ animation: moodboard-chat-shimmer 1.8s linear infinite;
184
+ }
185
+
186
+ @keyframes moodboard-chat-shimmer {
187
+ 0% { background-position: 200% center; }
188
+ 100% { background-position: -200% center; }
189
+ }
190
+
191
+ @keyframes moodboard-chat-spin {
192
+ to { transform: rotate(360deg); }
193
+ }
194
+
195
+ .moodboard-chat__input-row {
196
+ position: relative;
197
+ display: flex;
198
+ flex-direction: column;
199
+ gap: 0;
200
+ padding-bottom: 10px;
201
+ }
202
+
203
+ .moodboard-chat__textarea-row {
204
+ display: flex;
205
+ align-items: flex-start;
206
+ gap: 8px;
207
+ }
208
+
209
+ .moodboard-chat__input-row.has-attachments .moodboard-chat__textarea-row .moodboard-chat__pill-wrapper {
210
+ position: absolute;
211
+ top: 0;
212
+ right: 0;
213
+ }
214
+
215
+ .moodboard-chat__input-row.has-attachments .moodboard-chat__textarea-row {
216
+ padding-right: 72px;
217
+ }
218
+
219
+ .moodboard-chat__input-row::after {
220
+ content: '';
221
+ position: absolute;
222
+ bottom: 0;
223
+ left: 0;
224
+ right: 0;
225
+ height: 1px;
226
+ background-color: #ededed;
227
+ mask-image: linear-gradient(to right, #000 0%, rgba(0, 0, 0, 0.8) 30%, transparent 100%);
228
+ -webkit-mask-image: linear-gradient(to right, #000 0%, rgba(0, 0, 0, 0.8) 30%, transparent 100%);
229
+ pointer-events: none;
230
+ }
231
+
232
+ .moodboard-chat__textarea {
233
+ box-sizing: border-box;
234
+ flex: 1;
235
+ border: 0;
236
+ outline: 0;
237
+ resize: none;
238
+ font-family: inherit;
239
+ font-size: 14px;
240
+ line-height: 1.4;
241
+ color: #374151;
242
+ background: transparent;
243
+ padding: 17px 0 6px;
244
+ min-height: 47px;
245
+ height: 47px;
246
+ overflow-y: hidden;
247
+ }
248
+
249
+ .moodboard-chat__textarea::placeholder {
250
+ color: #9CA3AF;
251
+ }
252
+
253
+ .moodboard-chat__input-icon-btn {
254
+ flex: 0 0 auto;
255
+ width: 32px;
256
+ height: 32px;
257
+ padding: 0;
258
+ border: 0;
259
+ background: transparent;
260
+ cursor: pointer;
261
+ display: inline-flex;
262
+ align-items: center;
263
+ justify-content: center;
264
+ color: #6B7280;
265
+ transition: color 120ms ease;
266
+ }
267
+
268
+ .moodboard-chat__input-icon-btn:hover {
269
+ color: #374151;
270
+ }
271
+
272
+ .moodboard-chat__input-icon-btn--enhance-prompt[data-empty="true"] {
273
+ color: lab(5.0601 0 0 / 0.3216);
274
+ }
275
+
276
+ .moodboard-chat__input-icon-btn--enhance-prompt[data-empty="true"]:hover {
277
+ color: lab(5.0601 0 0 / 0.3216);
278
+ }
279
+
280
+ .moodboard-chat__actions-row {
281
+ display: flex;
282
+ align-items: center;
283
+ gap: 4px;
284
+ flex-wrap: nowrap;
285
+ flex-shrink: 0;
286
+ overflow: visible;
287
+ }
288
+
289
+ .moodboard-chat__pills {
290
+ display: inline-flex;
291
+ align-items: center;
292
+ gap: 14px;
293
+ flex: 1;
294
+ min-width: 0;
295
+ overflow: visible;
296
+ flex-wrap: wrap;
297
+ }
298
+
299
+ .moodboard-chat__pill {
300
+ appearance: none;
301
+ border: 0;
302
+ background: transparent;
303
+ padding: 0;
304
+ border-radius: 8px;
305
+ display: inline-flex;
306
+ align-items: center;
307
+ gap: 6px;
308
+ font-size: 13px;
309
+ color: #6B7280;
310
+ cursor: pointer;
311
+ white-space: nowrap;
312
+ transition: background-color 120ms ease, color 120ms ease;
313
+ }
314
+
315
+ .moodboard-chat__pill:hover:not(:disabled) {
316
+ background: #F3F4F6;
317
+ color: #374151;
318
+ }
319
+
320
+ .moodboard-chat__pill[disabled] {
321
+ cursor: not-allowed;
322
+ opacity: 0.45;
323
+ }
324
+
325
+ .moodboard-chat__pill[data-active="true"] {
326
+ background: #EEF2FF;
327
+ color: #4338CA;
328
+ }
329
+
330
+ .moodboard-chat__pill-icon {
331
+ width: 16px;
332
+ height: 16px;
333
+ flex: 0 0 auto;
334
+ display: inline-flex;
335
+ }
336
+
337
+ .moodboard-chat__pill img,
338
+ .moodboard-chat__pill svg {
339
+ width: 16px;
340
+ height: 16px;
341
+ flex: 0 0 auto;
342
+ }
343
+
344
+ .moodboard-chat__pill-icon-wrap {
345
+ display: inline-flex;
346
+ color: lab(5.0601 0 0 / 0.6392);
347
+ }
348
+
349
+ .moodboard-chat__pill-label {
350
+ font-family: 'GeistSans', 'GeistSans Fallback', 'Roboto', Arial, sans-serif;
351
+ font-size: 12px;
352
+ font-weight: 400;
353
+ line-height: normal;
354
+ color: lab(5.0601 0 0);
355
+ }
356
+
357
+ .moodboard-chat__send-row {
358
+ display: inline-flex;
359
+ align-items: center;
360
+ gap: 6px;
361
+ flex: 0 0 auto;
362
+ }
363
+
364
+ .moodboard-chat__attach {
365
+ width: 32px;
366
+ height: 32px;
367
+ border: 0;
368
+ border-radius: 8px;
369
+ background: transparent;
370
+ cursor: pointer;
371
+ color: lab(5.0601 0 0 / 0.6392);
372
+ display: inline-flex;
373
+ align-items: center;
374
+ justify-content: center;
375
+ transition: color 120ms ease, background-color 120ms ease;
376
+ }
377
+
378
+ .moodboard-chat__attach:hover {
379
+ color: #374151;
380
+ background: #F3F4F6;
381
+ }
382
+
383
+ .moodboard-chat__attach:active {
384
+ background: #E5E7EB;
385
+ }
386
+
387
+ .moodboard-chat__send {
388
+ width: 32px;
389
+ height: 32px;
390
+ border: 1px solid lab(5.0601 0 0 / 0.0588);
391
+ border-radius: 50%;
392
+ background: lab(5.0601 0 0 / 0.0196);
393
+ color: #9CA3AF;
394
+ cursor: pointer;
395
+ display: inline-flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ transition: background-color 120ms ease, color 120ms ease;
399
+ }
400
+
401
+ .moodboard-chat__send[data-state="ready"] {
402
+ background: #111827;
403
+ color: #ffffff;
404
+ }
405
+
406
+ .moodboard-chat__send[data-state="streaming"] {
407
+ background: #EF4444;
408
+ color: #ffffff;
409
+ }
410
+
411
+ .moodboard-chat__send:disabled {
412
+ cursor: not-allowed;
413
+ }
414
+
415
+ /* Скрытый file input */
416
+ .moodboard-chat__file-input {
417
+ position: absolute;
418
+ width: 0;
419
+ height: 0;
420
+ opacity: 0;
421
+ pointer-events: none;
422
+ }
423
+
424
+ /* Превью вложений */
425
+ .moodboard-chat__attachments {
426
+ display: none;
427
+ flex-direction: row;
428
+ flex-wrap: wrap;
429
+ gap: 8px;
430
+ width: 100%;
431
+ padding: 4px 0 6px;
432
+ }
433
+
434
+ .moodboard-chat__attachments.is-visible {
435
+ display: flex;
436
+ }
437
+
438
+ .moodboard-chat__attachment-item {
439
+ position: relative;
440
+ width: 60px;
441
+ height: 60px;
442
+ border-radius: 6px;
443
+ overflow: hidden;
444
+ flex: 0 0 auto;
445
+ background: #E5E7EB;
446
+ }
447
+
448
+ .moodboard-chat__attachment-thumb {
449
+ width: 100%;
450
+ height: 100%;
451
+ object-fit: cover;
452
+ display: block;
453
+ }
454
+
455
+ .moodboard-chat__attachment-icon {
456
+ width: 100%;
457
+ height: 100%;
458
+ display: flex;
459
+ align-items: center;
460
+ justify-content: center;
461
+ font-size: 10px;
462
+ font-weight: 700;
463
+ letter-spacing: 0.04em;
464
+ color: #6B7280;
465
+ }
466
+
467
+ .moodboard-chat__attachment-badge {
468
+ position: absolute;
469
+ bottom: 4px;
470
+ left: 4px;
471
+ width: 20px;
472
+ height: 20px;
473
+ border-radius: 4px;
474
+ background: #ffffff;
475
+ display: flex;
476
+ align-items: center;
477
+ justify-content: center;
478
+ font-family: 'GeistSans', 'GeistSans Fallback', 'Roboto', Arial, sans-serif;
479
+ font-size: 12px;
480
+ font-weight: 600;
481
+ line-height: 1;
482
+ color: #374151;
483
+ pointer-events: none;
484
+ }
485
+
486
+ .moodboard-chat__attachment-remove {
487
+ position: absolute;
488
+ top: 4px;
489
+ right: 4px;
490
+ width: 20px;
491
+ height: 20px;
492
+ border: 0;
493
+ border-radius: 4px;
494
+ background: rgba(0, 0, 0, 0.45);
495
+ cursor: pointer;
496
+ padding: 0;
497
+ display: flex;
498
+ align-items: center;
499
+ justify-content: center;
500
+ color: #ffffff;
501
+ transition: background-color 100ms ease;
502
+ }
503
+
504
+ .moodboard-chat__attachment-remove:hover {
505
+ background: rgba(0, 0, 0, 0.65);
506
+ }
507
+
508
+ /* Выпадающее меню (общее для switch / preset) */
509
+ .moodboard-chat__menu {
510
+ position: absolute;
511
+ bottom: calc(100% + 6px);
512
+ left: 0;
513
+ background: #ffffff;
514
+ border-radius: 12px;
515
+ padding: 3px;
516
+ min-width: 200px;
517
+ display: none;
518
+ flex-direction: column;
519
+ gap: 2px;
520
+ z-index: 10;
521
+ }
522
+
523
+ .moodboard-chat__menu.is-open {
524
+ display: flex;
525
+ overflow-y: hidden;
526
+ --color-shadow: lab(5.0601% 0 0 / .04);
527
+ box-shadow:
528
+ 0 0 0 1px lab(5.0601% 0 0 / .0784),
529
+ 0 2px 8px -1.5px var(--color-shadow),
530
+ 0 5px 8px -3px var(--color-shadow),
531
+ 0 12px 12px -8px var(--color-shadow);
532
+ }
533
+
534
+ .moodboard-chat__menu-item {
535
+ appearance: none;
536
+ border: 0;
537
+ background: transparent;
538
+ text-align: left;
539
+ padding: 8px 10px;
540
+ border-radius: 8px;
541
+ font-size: 13px;
542
+ color: #374151;
543
+ cursor: pointer;
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: space-between;
547
+ gap: 8px;
548
+ }
549
+
550
+ .moodboard-chat__menu-item--rich {
551
+ align-items: flex-start;
552
+ justify-content: flex-start;
553
+ min-width: 340px;
554
+ padding: 8px;
555
+ gap: 10px;
556
+ }
557
+
558
+ .moodboard-chat__menu-item-icon {
559
+ width: 36px;
560
+ height: 36px;
561
+ border-radius: 6px;
562
+ overflow: hidden;
563
+ background: #F3F4F6;
564
+ color: #6B7280;
565
+ display: inline-flex;
566
+ align-items: center;
567
+ justify-content: center;
568
+ flex: 0 0 auto;
569
+ }
570
+
571
+ .moodboard-chat__menu-item-text {
572
+ min-width: 0;
573
+ display: flex;
574
+ flex-direction: column;
575
+ gap: 2px;
576
+ flex: 1;
577
+ }
578
+
579
+ .moodboard-chat__menu-item-label {
580
+ font-size: 13px;
581
+ line-height: 1.25;
582
+ color: #374151;
583
+ }
584
+
585
+ .moodboard-chat__menu-item-description,
586
+ .moodboard-chat__menu-item-hint {
587
+ font-size: 11px;
588
+ line-height: 1.25;
589
+ color: #9CA3AF;
590
+ }
591
+
592
+ .moodboard-chat__menu-item:hover { background: #F3F4F6; }
593
+ .moodboard-chat__menu-item[data-active="true"] { background: #EEF2FF; color: #4338CA; }
594
+ .moodboard-chat__menu-item[data-active="true"] .moodboard-chat__menu-item-label { color: #4338CA; }
595
+ .moodboard-chat__menu-item[disabled] { opacity: 0.45; cursor: not-allowed; }
596
+
597
+ .moodboard-chat__pill-wrapper {
598
+ position: relative;
599
+ display: inline-flex;
600
+ align-items: center;
601
+ gap: 2px;
602
+ padding: 0;
603
+ }
604
+
605
+ /* Грид-меню выбора формата изображения */
606
+ .moodboard-chat__menu--grid {
607
+ min-width: 0;
608
+ width: max-content;
609
+ }
610
+
611
+ .moodboard-chat__menu--grid.is-open {
612
+ display: grid;
613
+ grid-template-columns: repeat(7, 1fr);
614
+ gap: 2px;
615
+ }
616
+
617
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item {
618
+ flex-direction: column;
619
+ align-items: center;
620
+ justify-content: flex-start;
621
+ padding: 6px 4px 5px;
622
+ gap: 4px;
623
+ min-width: 0;
624
+ }
625
+
626
+ /* Сброс rich-стилей внутри грида */
627
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item--rich {
628
+ align-items: center;
629
+ min-width: 0;
630
+ }
631
+
632
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item-icon {
633
+ width: auto;
634
+ height: auto;
635
+ background: transparent;
636
+ outline: none;
637
+ border-radius: 0;
638
+ color: #6B7280;
639
+ }
640
+
641
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item-text {
642
+ flex: none;
643
+ text-align: center;
644
+ }
645
+
646
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item-label {
647
+ font-size: 10px;
648
+ line-height: 1;
649
+ color: #6B7280;
650
+ }
651
+
652
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item[data-active="true"] .moodboard-chat__menu-item-icon {
653
+ color: #374151;
654
+ }
655
+
656
+ .moodboard-chat__menu--grid .moodboard-chat__menu-item[data-active="true"] .moodboard-chat__menu-item-label {
657
+ color: #374151;
658
+ }
659
+
660
+ .moodboard-chat__ratio-icon {
661
+ display: block;
662
+ }
663
+
664
+ /* Попап настроек */
665
+ .moodboard-chat__settings-popup {
666
+ position: absolute;
667
+ right: 0;
668
+ bottom: calc(100% + 6px);
669
+ background: #ffffff;
670
+ border-radius: 12px;
671
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.12);
672
+ border: 1px solid #E5E7EB;
673
+ padding: 12px;
674
+ width: 320px;
675
+ display: none;
676
+ flex-direction: column;
677
+ gap: 10px;
678
+ z-index: 10;
679
+ }
680
+ .moodboard-chat__settings-popup.is-open { display: flex; }
681
+
682
+ .moodboard-chat__settings-field { display: flex; flex-direction: column; gap: 4px; }
683
+ .moodboard-chat__settings-label { font-size: 11px; color: #6B7280; text-transform: uppercase; letter-spacing: 0.04em; }
684
+ .moodboard-chat__settings-textarea,
685
+ .moodboard-chat__settings-input {
686
+ border: 1px solid #E5E7EB;
687
+ border-radius: 8px;
688
+ padding: 6px 8px;
689
+ font-size: 13px;
690
+ font-family: inherit;
691
+ color: #111827;
692
+ background: #ffffff;
693
+ outline: none;
694
+ resize: vertical;
695
+ }
696
+ .moodboard-chat__settings-textarea { min-height: 60px; }
697
+ .moodboard-chat__settings-textarea:focus,
698
+ .moodboard-chat__settings-input:focus { border-color: #6366F1; }
699
+
700
+ .moodboard-chat__settings-popup-row {
701
+ display: flex; align-items: center; gap: 8px; justify-content: flex-end;
702
+ }
703
+
704
+ .moodboard-chat__settings-clear {
705
+ appearance: none;
706
+ border: 0;
707
+ background: transparent;
708
+ color: #B91C1C;
709
+ font-size: 12px;
710
+ cursor: pointer;
711
+ padding: 4px 6px;
712
+ border-radius: 6px;
713
+ }
714
+ .moodboard-chat__settings-clear:hover { background: #FEF2F2; }
715
+
716
+ /* Меню выбора типа контента */
717
+ #chat-menu-content-type .moodboard-chat__menu-item[data-active="true"] {
718
+ background: transparent;
719
+ color: #374151;
720
+ }
721
+
722
+ #chat-menu-content-type .moodboard-chat__menu-item[data-active="true"] .moodboard-chat__menu-item-label {
723
+ color: #374151;
724
+ }
725
+
726
+ #chat-menu-content-type .moodboard-chat__menu-item[data-active="true"]::after {
727
+ content: '';
728
+ display: block;
729
+ width: 12px;
730
+ height: 12px;
731
+ margin-left: auto;
732
+ align-self: center;
733
+ flex-shrink: 0;
734
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' viewBox='0 0 12 12'%3E%3Cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.2' d='M1.25 5.5 5 9.25 10.75 2'/%3E%3C/svg%3E");
735
+ background-repeat: no-repeat;
736
+ background-position: center;
737
+ background-size: 12px 12px;
738
+ }
739
+
740
+ /* Меню выбора количества изображений */
741
+ #chat-menu-count {
742
+ width: auto;
743
+ min-width: 166px;
744
+ height: 166px;
745
+ overflow-y: hidden;
746
+ }
747
+
748
+ #chat-menu-count .moodboard-chat__menu-item--rich {
749
+ height: 32px;
750
+ padding: 8px;
751
+ min-width: 0;
752
+ align-items: center;
753
+ gap: 8px;
754
+ }
755
+
756
+ #chat-menu-count .moodboard-chat__menu-item-icon {
757
+ width: auto;
758
+ height: auto;
759
+ background: none;
760
+ outline: none;
761
+ }
762
+
763
+ #chat-menu-count .moodboard-chat__menu-item-text {
764
+ min-width: 108px;
765
+ }
766
+
767
+ #chat-menu-count .moodboard-chat__menu-item[data-active="true"] {
768
+ background: transparent;
769
+ color: #374151;
770
+ }
771
+
772
+ #chat-menu-count .moodboard-chat__menu-item[data-active="true"] .moodboard-chat__menu-item-label {
773
+ color: #374151;
774
+ }
775
+
776
+ #chat-menu-count .moodboard-chat__menu-item[data-active="true"]::after {
777
+ content: '';
778
+ display: block;
779
+ width: 12px;
780
+ height: 12px;
781
+ margin-left: auto;
782
+ flex-shrink: 0;
783
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' viewBox='0 0 12 12'%3E%3Cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.2' d='M1.25 5.5 5 9.25 10.75 2'/%3E%3C/svg%3E");
784
+ background-repeat: no-repeat;
785
+ background-position: center;
786
+ background-size: 12px 12px;
787
+ }
788
+
789
+ /* Развернутое поле ввода (Extended Prompt Modal) */
790
+ .moodboard-chat__extended-overlay {
791
+ position: fixed;
792
+ top: 0; left: 0; right: 0; bottom: 0;
793
+ background: rgba(0, 0, 0, 0.4);
794
+ z-index: 3000;
795
+ display: none;
796
+ align-items: center;
797
+ justify-content: center;
798
+ padding: 32px 0;
799
+ }
800
+
801
+ .moodboard-chat__extended-overlay.is-visible {
802
+ display: flex;
803
+ }
804
+
805
+ .moodboard-chat__extended-modal {
806
+ width: 600px;
807
+ height: 100%;
808
+ max-height: calc(100vh - 64px);
809
+ background: #ffffff;
810
+ border-radius: 12px;
811
+ padding: 32px;
812
+ box-sizing: border-box;
813
+ display: flex;
814
+ flex-direction: column;
815
+ gap: 16px;
816
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
817
+ }
818
+
819
+ .moodboard-chat__extended-header {
820
+ display: flex;
821
+ justify-content: space-between;
822
+ align-items: center;
823
+ flex: 0 0 auto;
824
+ }
825
+
826
+ .moodboard-chat__extended-title {
827
+ font-size: 16px;
828
+ font-weight: 500;
829
+ color: #111827;
830
+ }
831
+
832
+ .moodboard-chat__extended-close {
833
+ background: transparent;
834
+ border: none;
835
+ color: #9CA3AF;
836
+ cursor: pointer;
837
+ padding: 4px;
838
+ display: flex;
839
+ align-items: center;
840
+ justify-content: center;
841
+ border-radius: 6px;
842
+ transition: color 120ms ease, background-color 120ms ease;
843
+ }
844
+
845
+ .moodboard-chat__extended-close:hover {
846
+ color: #374151;
847
+ background-color: #F3F4F6;
848
+ }
849
+
850
+ .moodboard-chat__extended-body {
851
+ flex: 1;
852
+ display: flex;
853
+ flex-direction: column;
854
+ background: #F3F4F6;
855
+ border-radius: 8px;
856
+ padding: 16px;
857
+ gap: 12px;
858
+ }
859
+
860
+ .moodboard-chat__extended-textarea {
861
+ flex: 1;
862
+ background: transparent;
863
+ border: none;
864
+ resize: none;
865
+ outline: none;
866
+ font-family: inherit;
867
+ font-size: 14px;
868
+ line-height: 1.5;
869
+ color: #374151;
870
+ }
871
+
872
+ .moodboard-chat__extended-actions {
873
+ display: flex;
874
+ justify-content: space-between;
875
+ align-items: center;
876
+ flex: 0 0 auto;
877
+ }
878
+
879
+ .moodboard-chat__extended-clear {
880
+ background: transparent;
881
+ border: none;
882
+ color: #9CA3AF;
883
+ font-size: 13px;
884
+ font-weight: 500;
885
+ cursor: pointer;
886
+ padding: 0;
887
+ transition: color 120ms ease;
888
+ }
889
+
890
+ .moodboard-chat__extended-clear:hover {
891
+ color: #374151;
892
+ }
893
+
894
+ .moodboard-chat__extended-enhance {
895
+ background: transparent;
896
+ border: none;
897
+ color: #6B7280;
898
+ font-size: 13px;
899
+ font-weight: 500;
900
+ cursor: pointer;
901
+ padding: 0;
902
+ display: inline-flex;
903
+ align-items: center;
904
+ gap: 6px;
905
+ transition: color 120ms ease;
906
+ }
907
+
908
+ .moodboard-chat__extended-enhance:hover {
909
+ color: #374151;
910
+ }
911
+
912
+ .moodboard-chat__extended-enhance-icon {
913
+ display: inline-flex;
914
+ color: inherit;
915
+ }
916
+
917
+ .moodboard-chat__extended-enhance-icon svg {
918
+ width: 16px;
919
+ height: 16px;
920
+ }