@sequent-org/moodboard 1.4.45 → 1.4.48

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.
@@ -745,6 +745,179 @@
745
745
  text-align: left;
746
746
  }
747
747
 
748
+ /* ── Прогресс генерации 3D-модели в композере ───────────────────────── */
749
+ .moodboard-chat__3d-overlay {
750
+ box-sizing: border-box;
751
+ width: 100%;
752
+ padding: 2px 6px 4px 10px;
753
+ }
754
+
755
+ .moodboard-chat__3d-overlay-inner {
756
+ display: flex;
757
+ align-items: center;
758
+ gap: 10px;
759
+ }
760
+
761
+ .moodboard-chat__3d-overlay-stage {
762
+ flex: 0 0 auto;
763
+ font-family: 'GeistSans', 'GeistSans Fallback', 'Roboto', Arial, sans-serif;
764
+ font-size: 12px;
765
+ line-height: 1;
766
+ white-space: nowrap;
767
+ /* «Живой» переливающийся текст, как у статус-бара генерации изображений */
768
+ background: linear-gradient(
769
+ 90deg,
770
+ #9CA3AF 0%,
771
+ #9CA3AF 20%,
772
+ #4B5563 40%,
773
+ #4B5563 60%,
774
+ #9CA3AF 80%,
775
+ #9CA3AF 100%
776
+ );
777
+ background-size: 200% 100%;
778
+ background-clip: text;
779
+ -webkit-background-clip: text;
780
+ color: transparent;
781
+ -webkit-text-fill-color: transparent;
782
+ animation: moodboard-chat-shimmer 1.8s linear infinite;
783
+ }
784
+
785
+ .moodboard-chat__3d-overlay-bar-wrap {
786
+ position: relative;
787
+ flex: 1 1 auto;
788
+ min-width: 0;
789
+ height: 6px;
790
+ border-radius: 999px;
791
+ background: rgba(17, 24, 39, 0.08);
792
+ overflow: hidden;
793
+ }
794
+
795
+ .moodboard-chat__3d-overlay-bar-fill {
796
+ height: 100%;
797
+ width: 0;
798
+ border-radius: inherit;
799
+ /* Двухцветная гамма мудборда: тёмный → светло-серый → тёмный, мягкое переливание */
800
+ background-image: linear-gradient(90deg, #111827 0%, #9CA3AF 50%, #111827 100%);
801
+ background-size: 300% 100%;
802
+ transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
803
+ animation: moodboard-chat-bar-shimmer 2.5s linear infinite;
804
+ }
805
+
806
+ /* Indeterminate: прогресс ещё не пришёл — скользящая полоса вместо застывшего 0% */
807
+ .moodboard-chat__3d-overlay-bar-fill.is-indeterminate {
808
+ width: 35% !important;
809
+ transition: none;
810
+ animation: moodboard-chat-bar-indeterminate 1.5s ease-in-out infinite;
811
+ }
812
+
813
+ @keyframes moodboard-chat-bar-shimmer {
814
+ from { background-position: 100% 0; }
815
+ to { background-position: 0% 0; }
816
+ }
817
+
818
+ @keyframes moodboard-chat-bar-indeterminate {
819
+ 0% { transform: translateX(-160%); }
820
+ 100% { transform: translateX(450%); }
821
+ }
822
+
823
+ .moodboard-chat__3d-overlay-percent {
824
+ flex: 0 0 auto;
825
+ min-width: 30px;
826
+ text-align: right;
827
+ font-family: 'GeistSans', 'GeistSans Fallback', 'Roboto', Arial, sans-serif;
828
+ font-size: 12px;
829
+ font-weight: 500;
830
+ line-height: 1;
831
+ color: #111827;
832
+ font-variant-numeric: tabular-nums;
833
+ }
834
+
835
+ /* Состояние ошибки: красный текст, полоса и проценты скрыты */
836
+ .moodboard-chat__3d-overlay.is-error .moodboard-chat__3d-overlay-stage {
837
+ background: none;
838
+ -webkit-text-fill-color: #B91C1C;
839
+ color: #B91C1C;
840
+ animation: none;
841
+ }
842
+
843
+ .moodboard-chat__3d-overlay.is-error .moodboard-chat__3d-overlay-bar-wrap,
844
+ .moodboard-chat__3d-overlay.is-error .moodboard-chat__3d-overlay-percent {
845
+ display: none;
846
+ }
847
+
848
+ /* ── Скелетон 3D-модели на доске ─────────────────────────────────────── */
849
+ .moodboard-chat__3d-skeleton {
850
+ position: fixed;
851
+ box-sizing: border-box;
852
+ background: #ffffff;
853
+ border-radius: 12px;
854
+ box-shadow:
855
+ 0 0 0 1px rgba(17, 24, 39, 0.08),
856
+ 0 8px 24px rgba(15, 23, 42, 0.10);
857
+ overflow: hidden;
858
+ pointer-events: none;
859
+ z-index: 10;
860
+ display: flex;
861
+ align-items: center;
862
+ justify-content: center;
863
+ transition:
864
+ left var(--moodboard-chat-board-animation-ms, 520ms) cubic-bezier(0.22, 1, 0.36, 1),
865
+ top var(--moodboard-chat-board-animation-ms, 520ms) cubic-bezier(0.22, 1, 0.36, 1),
866
+ opacity 360ms ease,
867
+ transform 360ms cubic-bezier(0.22, 1, 0.36, 1);
868
+ will-change: transform, opacity;
869
+ }
870
+
871
+ /* Бегущий блик по поверхности скелетона */
872
+ .moodboard-chat__3d-skeleton::after {
873
+ content: '';
874
+ position: absolute;
875
+ inset: 0;
876
+ background: linear-gradient(
877
+ 100deg,
878
+ transparent 30%,
879
+ rgba(17, 24, 39, 0.07) 50%,
880
+ transparent 70%
881
+ );
882
+ background-size: 220% 100%;
883
+ animation: moodboard-chat-skeleton-sweep 1.6s linear infinite;
884
+ }
885
+
886
+ .moodboard-chat__3d-skeleton-icon {
887
+ position: relative;
888
+ z-index: 1;
889
+ width: 34%;
890
+ max-width: 72px;
891
+ color: #9CA3AF;
892
+ animation: moodboard-chat-skeleton-pulse 1.8s ease-in-out infinite;
893
+ }
894
+
895
+ .moodboard-chat__3d-skeleton-icon svg {
896
+ width: 100%;
897
+ height: 100%;
898
+ display: block;
899
+ }
900
+
901
+ .moodboard-chat__3d-skeleton--enter {
902
+ opacity: 0;
903
+ transform: scale(0.92);
904
+ }
905
+
906
+ .moodboard-chat__3d-skeleton--entered {
907
+ opacity: 1;
908
+ transform: scale(1);
909
+ }
910
+
911
+ @keyframes moodboard-chat-skeleton-sweep {
912
+ from { background-position: 160% 0; }
913
+ to { background-position: -60% 0; }
914
+ }
915
+
916
+ @keyframes moodboard-chat-skeleton-pulse {
917
+ 0%, 100% { opacity: 0.4; transform: translateY(0) scale(1); }
918
+ 50% { opacity: 0.85; transform: translateY(-2px) scale(1.05); }
919
+ }
920
+
748
921
  /* Блок ошибки сервера */
749
922
  .moodboard-chat__error-block {
750
923
  display: none;
@@ -805,6 +978,43 @@
805
978
  .moodboard-chat__settings-textarea:focus,
806
979
  .moodboard-chat__settings-input:focus { border-color: #6366F1; }
807
980
 
981
+ /* Мини-поповер видео-пилюли (Seed / CFG / Негатив) */
982
+ .moodboard-chat__pill-popover {
983
+ padding: 10px;
984
+ min-width: 220px;
985
+ }
986
+ .moodboard-chat__pill-popover-body {
987
+ display: flex;
988
+ flex-direction: column;
989
+ gap: 6px;
990
+ }
991
+ .moodboard-chat__pill-popover-body .moodboard-chat__settings-input {
992
+ width: 100%;
993
+ box-sizing: border-box;
994
+ }
995
+ .moodboard-chat__settings-hint {
996
+ font-size: 11px;
997
+ line-height: 1.4;
998
+ color: #6B7280;
999
+ }
1000
+
1001
+ /* Тумблеры видео (Звук, Водяной знак): однозначное вкл/выкл */
1002
+ .moodboard-chat__pill--toggle {
1003
+ border: 1px solid #E5E7EB;
1004
+ padding: 3px 8px;
1005
+ }
1006
+ .moodboard-chat__pill--toggle[data-active="true"] {
1007
+ background: #4F46E5;
1008
+ border-color: #4F46E5;
1009
+ }
1010
+ .moodboard-chat__pill--toggle[data-active="true"]:hover:not(:disabled) {
1011
+ background: #4338CA;
1012
+ }
1013
+ .moodboard-chat__pill--toggle[data-active="true"] .moodboard-chat__pill-label,
1014
+ .moodboard-chat__pill--toggle[data-active="true"] .moodboard-chat__pill-icon-wrap {
1015
+ color: #FFFFFF;
1016
+ }
1017
+
808
1018
  .moodboard-chat__settings-popup-row {
809
1019
  display: flex; align-items: center; gap: 8px; justify-content: flex-end;
810
1020
  }
@@ -845,6 +1055,31 @@
845
1055
  background-size: 12px 12px;
846
1056
  }
847
1057
 
1058
+ /* Меню выбора модели — компактные строки с иконкой единого размера */
1059
+ #chat-menu-model {
1060
+ min-width: 0;
1061
+ }
1062
+
1063
+ #chat-menu-model .moodboard-chat__menu-item--rich {
1064
+ align-items: center;
1065
+ min-width: 268px;
1066
+ padding: 6px 8px;
1067
+ gap: 10px;
1068
+ }
1069
+
1070
+ #chat-menu-model .moodboard-chat__menu-item-icon {
1071
+ width: 24px;
1072
+ height: 24px;
1073
+ background: transparent;
1074
+ border-radius: 0;
1075
+ }
1076
+
1077
+ #chat-menu-model .moodboard-chat__menu-item-icon svg {
1078
+ width: 22px;
1079
+ height: 22px;
1080
+ display: block;
1081
+ }
1082
+
848
1083
  /* Меню выбора количества изображений */
849
1084
  #chat-menu-count {
850
1085
  width: auto;
@@ -340,3 +340,267 @@
340
340
  flex-shrink: 0;
341
341
  }
342
342
 
343
+ /* Image properties toolbar */
344
+ .image-properties-panel {
345
+ position: absolute;
346
+ pointer-events: auto;
347
+ display: flex;
348
+ flex-direction: row;
349
+ align-items: center;
350
+ gap: 2px;
351
+ padding: 4px 8px;
352
+ background: #ffffff;
353
+ border: 1px solid #E5E7EB;
354
+ border-radius: 8px;
355
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.06);
356
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
357
+ font-size: 13px;
358
+ z-index: 1000;
359
+ user-select: none;
360
+ white-space: nowrap;
361
+ }
362
+
363
+ .ipp-filename {
364
+ padding: 0 6px;
365
+ font-size: 13px;
366
+ color: #374151;
367
+ font-weight: 400;
368
+ max-width: 140px;
369
+ overflow: hidden;
370
+ text-overflow: ellipsis;
371
+ white-space: nowrap;
372
+ cursor: text;
373
+ border-radius: 4px;
374
+ outline: none;
375
+ transition: background 0.15s;
376
+ }
377
+
378
+ .ipp-filename:hover,
379
+ .ipp-filename:focus {
380
+ background: #F3F4F6;
381
+ }
382
+
383
+ .ipp-filename:focus {
384
+ text-overflow: clip;
385
+ }
386
+
387
+ .ipp-divider {
388
+ width: 1px;
389
+ height: 18px;
390
+ background: #E5E7EB;
391
+ margin: 0 4px;
392
+ flex-shrink: 0;
393
+ }
394
+
395
+ .ipp-btn {
396
+ display: inline-flex;
397
+ align-items: center;
398
+ justify-content: center;
399
+ width: 28px;
400
+ height: 28px;
401
+ padding: 0;
402
+ border: none;
403
+ border-radius: 6px;
404
+ background: none;
405
+ color: #6B7280;
406
+ cursor: pointer;
407
+ flex-shrink: 0;
408
+ transition: background 0.15s, color 0.15s;
409
+ }
410
+
411
+ .ipp-btn:hover {
412
+ background: #F3F4F6;
413
+ color: #111827;
414
+ }
415
+
416
+ .ipp-btn:active,
417
+ .ipp-btn.is-active {
418
+ background: #E5E7EB;
419
+ color: #111827;
420
+ }
421
+
422
+ .ipp-icon-frame-wrap {
423
+ position: relative;
424
+ display: inline-block;
425
+ width: 20px;
426
+ height: 20px;
427
+ border-radius: 50%;
428
+ overflow: hidden;
429
+ transition: transform 100ms ease-in-out;
430
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAySURBVHgB3Y2xDQAwDMJIr+D/5+CLtAewVMoUjyDLJakRIJlmHHyyQah+pMM2RgobhAuV0grHtNJqlwAAAABJRU5ErkJggg==);
431
+ }
432
+
433
+ .ipp-icon-frame {
434
+ position: relative;
435
+ display: inline-block;
436
+ width: inherit;
437
+ height: inherit;
438
+ border-radius: 50%;
439
+ box-shadow: rgba(0, 0, 0, 0.25) 0 0 0 1px inset;
440
+ }
441
+
442
+ .ipp-icon-frame::after {
443
+ content: "";
444
+ position: absolute;
445
+ left: 50%;
446
+ top: 50%;
447
+ transform: translate(-50%, -50%);
448
+ width: 50%;
449
+ height: 50%;
450
+ background-color: rgb(250, 250, 250);
451
+ box-shadow: rgba(0, 0, 0, 0.25) 0 0 0 1px;
452
+ border-radius: 50%;
453
+ pointer-events: none;
454
+ }
455
+
456
+ /* Split Button (Crop) */
457
+ .ipp-btn-split-wrapper {
458
+ position: relative;
459
+ display: inline-flex;
460
+ align-items: center;
461
+ border-radius: 6px;
462
+ background: transparent;
463
+ transition: background 0.15s;
464
+ flex-shrink: 0;
465
+ }
466
+
467
+ .ipp-btn-split-wrapper:hover {
468
+ background: #F3F4F6;
469
+ }
470
+
471
+ .ipp-btn-split-main {
472
+ display: inline-flex;
473
+ align-items: center;
474
+ justify-content: center;
475
+ width: 28px;
476
+ height: 28px;
477
+ padding: 0;
478
+ border: none;
479
+ border-radius: 6px 0 0 6px;
480
+ background: transparent;
481
+ color: #6B7280;
482
+ cursor: pointer;
483
+ transition: color 0.15s;
484
+ }
485
+
486
+ .ipp-btn-split-expand {
487
+ display: inline-flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ width: 18px;
491
+ height: 28px;
492
+ padding: 0;
493
+ border: none;
494
+ border-radius: 0 6px 6px 0;
495
+ background: transparent;
496
+ color: #6B7280;
497
+ cursor: pointer;
498
+ transition: color 0.15s;
499
+ }
500
+
501
+ .ipp-btn-split-main:hover,
502
+ .ipp-btn-split-expand:hover {
503
+ color: #111827;
504
+ }
505
+
506
+ .ipp-btn-split-wrapper:active {
507
+ background: #E5E7EB;
508
+ }
509
+
510
+ .ipp-btn-split-expand svg {
511
+ transition: transform 0.2s ease;
512
+ }
513
+
514
+ .ipp-btn-split-expand.is-expanded svg {
515
+ transform: rotate(180deg);
516
+ }
517
+
518
+ /* Crop Dropdown */
519
+ .ipp-crop-dropdown {
520
+ position: absolute;
521
+ top: calc(100% + 6px);
522
+ left: 50%;
523
+ transform: translateX(-50%);
524
+ background: #ffffff;
525
+ border: 1px solid #E5E7EB;
526
+ border-radius: 8px;
527
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.05);
528
+ padding: 6px;
529
+ display: none;
530
+ flex-direction: column;
531
+ min-width: 170px;
532
+ z-index: 1001;
533
+ }
534
+
535
+ .ipp-crop-dropdown.is-open {
536
+ display: flex;
537
+ }
538
+
539
+ /* More Dropdown */
540
+ .ipp-more-dropdown {
541
+ position: absolute;
542
+ top: calc(100% + 6px);
543
+ right: 0;
544
+ background: #ffffff;
545
+ border: 1px solid #E5E7EB;
546
+ border-radius: 8px;
547
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.05);
548
+ padding: 6px;
549
+ display: none;
550
+ flex-direction: column;
551
+ min-width: 220px;
552
+ z-index: 1001;
553
+ }
554
+
555
+ .ipp-more-dropdown.is-open {
556
+ display: flex;
557
+ }
558
+
559
+ .ipp-dropdown-item {
560
+ display: flex;
561
+ align-items: center;
562
+ padding: 6px 8px;
563
+ border: none;
564
+ background: transparent;
565
+ border-radius: 6px;
566
+ cursor: pointer;
567
+ color: #374151;
568
+ gap: 10px;
569
+ font-size: 13px;
570
+ font-family: inherit;
571
+ text-align: left;
572
+ transition: background 0.15s;
573
+ width: 100%;
574
+ }
575
+
576
+ .ipp-dropdown-item:hover {
577
+ background: #F3F4F6;
578
+ }
579
+
580
+ .ipp-dropdown-item-ratio {
581
+ margin-left: auto;
582
+ color: #9CA3AF;
583
+ font-size: 12px;
584
+ }
585
+
586
+ .ipp-dropdown-item-shortcut {
587
+ margin-left: auto;
588
+ color: #9CA3AF;
589
+ font-size: 12px;
590
+ }
591
+
592
+ .ipp-dropdown-divider {
593
+ height: 1px;
594
+ background: #E5E7EB;
595
+ margin: 4px 2px;
596
+ }
597
+
598
+ .ipp-dropdown-icon {
599
+ width: 16px;
600
+ height: 16px;
601
+ display: inline-flex;
602
+ align-items: center;
603
+ justify-content: center;
604
+ color: #6B7280;
605
+ }
606
+