@sequent-org/moodboard 1.4.55 → 1.4.57

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.
@@ -195,7 +195,7 @@
195
195
  flex-direction: row;
196
196
  align-items: center;
197
197
  gap: 8px;
198
- padding: 12px 22px;
198
+ padding: 0 22px;
199
199
  background-color: #ffffff;
200
200
  border: 1px solid #e0e0e0;
201
201
  border-radius: 9999px;
@@ -206,6 +206,27 @@
206
206
  height: 36px;
207
207
  }
208
208
 
209
+ .text-properties-panel.is-locked {
210
+ min-width: 0;
211
+ padding: 0 6px;
212
+ gap: 4px;
213
+ }
214
+
215
+ .text-properties-panel * {
216
+ max-height: 36px;
217
+ }
218
+
219
+ .text-properties-panel [id^="tpp-color-dropdown"],
220
+ .text-properties-panel [id^="tpp-color-dropdown"] *,
221
+ .text-properties-panel [id^="tpp-bgcolor-dropdown"],
222
+ .text-properties-panel [id^="tpp-bgcolor-dropdown"] *,
223
+ .text-properties-panel [id^="tpp-highlight-dropdown"],
224
+ .text-properties-panel [id^="tpp-highlight-dropdown"] *,
225
+ .text-properties-panel .tpp-more-dropdown,
226
+ .text-properties-panel .tpp-more-dropdown * {
227
+ max-height: none;
228
+ }
229
+
209
230
  /* Frame properties toolbar — mirror image toolbar look */
210
231
  .frame-properties-panel {
211
232
  position: absolute;
@@ -604,24 +625,156 @@
604
625
 
605
626
  .text-properties-panel .tpp-label--spaced { margin-left: 6px; }
606
627
 
607
- .text-properties-panel .font-select,
608
- .text-properties-panel .font-size-select {
609
- border: 1px solid #ddd;
610
- border-radius: 4px;
611
- padding: 4px 8px;
628
+ .text-properties-panel .font-select-wrapper {
629
+ position: relative;
630
+ display: inline-block;
631
+ }
632
+
633
+ .text-properties-panel .font-select {
634
+ box-sizing: border-box;
635
+ min-width: 70px;
636
+ width: 70px;
637
+ height: 38px;
638
+ padding: 4px 0px;
612
639
  font-size: 13px;
613
640
  background-color: #fff;
641
+ border: none;
642
+ border-radius: 4px;
643
+ cursor: pointer;
644
+ display: flex;
645
+ align-items: center;
646
+ user-select: none;
647
+ }
648
+
649
+ .text-properties-panel .font-select:focus { outline: none; box-shadow: none; }
650
+
651
+ .text-properties-panel .font-select__label {
652
+ flex: 1;
653
+ overflow: hidden;
654
+ text-overflow: ellipsis;
655
+ white-space: nowrap;
656
+ }
657
+
658
+ .text-properties-panel .font-dropdown {
659
+ position: absolute;
660
+ top: calc(100% + 4px);
661
+ left: 0;
662
+ min-width: 180px;
663
+ max-height: 280px;
664
+ overflow-y: auto;
665
+ background: #fff;
666
+ border: 1px solid #E5E7EB;
667
+ border-radius: 8px;
668
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.05);
669
+ padding: 4px;
670
+ display: none;
671
+ z-index: 10000;
672
+ scrollbar-width: thin;
673
+ scrollbar-color: transparent transparent;
674
+ }
675
+
676
+ .text-properties-panel .font-dropdown.is-open { display: block; }
677
+
678
+ .text-properties-panel .font-dropdown:hover {
679
+ scrollbar-color: rgba(170, 170, 170, 0.7) transparent;
680
+ }
681
+
682
+ .text-properties-panel .font-dropdown::-webkit-scrollbar { width: 9px; }
683
+ .text-properties-panel .font-dropdown::-webkit-scrollbar-button {
684
+ display: none;
685
+ height: 0;
686
+ width: 0;
687
+ }
688
+ .text-properties-panel .font-dropdown::-webkit-scrollbar-track { background: transparent; }
689
+ .text-properties-panel .font-dropdown::-webkit-scrollbar-thumb {
690
+ background: transparent;
691
+ border-radius: 4px;
692
+ }
693
+ .text-properties-panel .font-dropdown:hover::-webkit-scrollbar-thumb {
694
+ background: rgba(170, 170, 170, 0.7);
695
+ }
696
+
697
+ .text-properties-panel .font-dropdown__item {
698
+ display: block;
699
+ width: 100%;
700
+ padding: 6px 10px;
701
+ border: none;
702
+ background: transparent;
703
+ text-align: left;
704
+ font-size: 14px;
705
+ color: #111;
614
706
  cursor: pointer;
707
+ border-radius: 4px;
708
+ white-space: nowrap;
709
+ }
710
+
711
+ .text-properties-panel .font-dropdown__item:hover {
712
+ background: #f3f4f6;
615
713
  }
616
714
 
617
- .text-properties-panel .font-select { min-width: 110px; }
618
- .text-properties-panel .font-size-select { min-width: 56px; }
715
+ .text-properties-panel .font-dropdown__item.is-active {
716
+ background: #2563eb;
717
+ color: #fff;
718
+ }
719
+ .text-properties-panel .font-size-wrapper {
720
+ display: flex;
721
+ align-items: center;
722
+ position: relative;
723
+ border: none;
724
+ border-radius: 4px;
725
+ background-color: #fff;
726
+ height: 38px;
727
+ box-sizing: border-box;
728
+ }
729
+
730
+ .text-properties-panel .font-size-select {
731
+ outline: none;
732
+ height: 100%;
733
+ width: 32px;
734
+ border: none;
735
+ background: transparent;
736
+ appearance: none;
737
+ -webkit-appearance: none;
738
+ -moz-appearance: none;
739
+ padding: 0 4px 0 8px;
740
+ font-size: 13px;
741
+ cursor: pointer;
742
+ }
743
+
744
+ .text-properties-panel .font-size-steppers {
745
+ display: flex;
746
+ flex-direction: column;
747
+ height: 100%;
748
+ width: 20px;
749
+ border-left: none;
750
+ }
751
+
752
+ .text-properties-panel .font-size-stepper {
753
+ flex: 1;
754
+ display: flex;
755
+ align-items: center;
756
+ justify-content: center;
757
+ background: transparent;
758
+ border: none;
759
+ padding: 0;
760
+ cursor: pointer;
761
+ color: #6B7280;
762
+ }
763
+
764
+ .text-properties-panel .font-size-stepper:hover {
765
+ background: #f5f5f5;
766
+ color: #111827;
767
+ }
768
+
769
+ .text-properties-panel .font-size-stepper--down {
770
+ border-bottom-right-radius: 4px;
771
+ margin-top: -2px;
772
+ }
619
773
 
620
- .text-properties-panel .current-color-button,
621
774
  .text-properties-panel .current-bgcolor-button {
622
- width: 28px;
623
- height: 28px;
624
- border: 1px solid #ddd;
775
+ width: 20px;
776
+ height: 20px;
777
+ border: none;
625
778
  border-radius: 50%;
626
779
  background-color: #000;
627
780
  cursor: pointer;
@@ -632,6 +785,54 @@
632
785
  position: relative;
633
786
  }
634
787
 
788
+ .text-properties-panel .current-color-button {
789
+ width: 28px;
790
+ height: 28px;
791
+ border: 1px solid transparent;
792
+ border-radius: 4px;
793
+ background-color: transparent;
794
+ cursor: pointer;
795
+ margin: 0;
796
+ padding: 0;
797
+ display: flex;
798
+ flex-direction: column;
799
+ align-items: center;
800
+ justify-content: center;
801
+ box-sizing: border-box;
802
+ position: relative;
803
+ transition: background 0.15s;
804
+ color: #6B7280;
805
+ }
806
+
807
+ .text-properties-panel .current-color-button:hover {
808
+ background: #f0f0f0;
809
+ color: #111827;
810
+ }
811
+
812
+ .text-properties-panel .current-highlight-button {
813
+ width: 28px;
814
+ height: 28px;
815
+ border: 1px solid transparent;
816
+ border-radius: 4px;
817
+ background-color: transparent;
818
+ cursor: pointer;
819
+ margin: 0;
820
+ padding: 0;
821
+ display: flex;
822
+ flex-direction: column;
823
+ align-items: center;
824
+ justify-content: center;
825
+ box-sizing: border-box;
826
+ position: relative;
827
+ transition: background 0.15s;
828
+ color: #6B7280;
829
+ }
830
+
831
+ .text-properties-panel .current-highlight-button:hover {
832
+ background: #f0f0f0;
833
+ color: #111827;
834
+ }
835
+
635
836
  .text-properties-panel .tpp-format-btn {
636
837
  height: 28px;
637
838
  min-width: 28px;
@@ -643,30 +844,187 @@
643
844
  display: inline-flex;
644
845
  align-items: center;
645
846
  justify-content: center;
646
- color: #444;
847
+ color: #6B7280;
647
848
  flex-shrink: 0;
648
- transition: background 0.15s;
849
+ transition: background 0.15s, color 0.15s;
649
850
  }
650
- .text-properties-panel .tpp-format-btn:hover { background: #f0f0f0; }
851
+ .text-properties-panel .tpp-format-btn:hover { background: #f0f0f0; color: #111827; }
651
852
  .text-properties-panel .tpp-format-btn.is-active {
652
853
  background: #e8eaff;
653
854
  border-color: #6155F5;
654
855
  color: #6155F5;
655
856
  }
656
857
 
657
- .text-properties-panel .tpp-align-select,
658
- .text-properties-panel .tpp-list-select {
659
- border: 1px solid #ddd;
858
+ .text-properties-panel .tpp-format-btns-wrapper {
859
+ width: 24px;
860
+ height: 24px;
861
+ }
862
+
863
+ .text-properties-panel .tpp-format-btn.tpp-format-trigger {
864
+ width: 24px;
865
+ min-width: 24px;
866
+ height: 24px;
867
+ padding: 0;
868
+ }
869
+
870
+ .text-properties-panel .tpp-list-btns {
871
+ display: flex;
872
+ gap: 2px;
873
+ align-items: center;
874
+ position: relative;
875
+ }
876
+ .text-properties-panel .tpp-list-btns svg {
877
+ width: 22px;
878
+ height: 22px;
879
+ }
880
+
881
+ .text-properties-panel .tpp-list-modal {
882
+ max-height: none;
883
+ position: absolute;
884
+ top: calc(100% + 4px);
885
+ left: 0;
886
+ flex-direction: column;
887
+ gap: 2px;
888
+ background: #ffffff;
889
+ border: 1px solid #E5E7EB;
890
+ border-radius: 6px;
891
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.06);
892
+ padding: 4px;
893
+ z-index: 4000;
894
+ }
895
+
896
+ .text-properties-panel .tpp-format-modal {
897
+ max-height: none;
898
+ position: absolute;
899
+ top: calc(100% + 4px);
900
+ left: 0;
901
+ flex-direction: row;
902
+ gap: 2px;
903
+ background: #ffffff;
904
+ border: 1px solid #E5E7EB;
905
+ border-radius: 6px;
906
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.06);
907
+ padding: 4px;
908
+ z-index: 4000;
909
+ }
910
+
911
+ .text-properties-panel .tpp-list-modal-option {
912
+ display: flex;
913
+ align-items: center;
914
+ justify-content: center;
915
+ width: 28px;
916
+ height: 28px;
917
+ padding: 0;
918
+ border: none;
919
+ background: transparent;
660
920
  border-radius: 4px;
661
- padding: 4px 6px;
662
- font-size: 12px;
663
- background-color: #fff;
921
+ cursor: pointer;
922
+ color: #374151;
923
+ transition: background 0.1s;
924
+ flex-shrink: 0;
925
+ }
926
+
927
+ .text-properties-panel .tpp-format-modal-option {
928
+ display: flex;
929
+ align-items: center;
930
+ justify-content: center;
931
+ width: 28px;
664
932
  height: 28px;
933
+ padding: 0;
934
+ border: none;
935
+ background: transparent;
936
+ border-radius: 4px;
665
937
  cursor: pointer;
666
- font-family: 'Roboto', Arial, sans-serif;
938
+ color: #374151;
939
+ transition: background 0.1s;
940
+ flex-shrink: 0;
941
+ }
942
+
943
+ .text-properties-panel .tpp-format-modal-option:hover {
944
+ background: #f3f4f6;
945
+ }
946
+
947
+ .text-properties-panel .tpp-list-modal-option:hover {
948
+ background: #f3f4f6;
949
+ }
950
+
951
+ .text-properties-panel .tpp-align-btns {
952
+ display: flex;
953
+ gap: 2px;
954
+ align-items: center;
955
+ position: relative;
956
+ }
957
+
958
+ .text-properties-panel .tpp-align-btns img,
959
+ .text-properties-panel .tpp-align-btns svg,
960
+ .text-properties-panel .tpp-align-modal img,
961
+ .text-properties-panel .tpp-align-modal svg {
962
+ width: 24px;
963
+ height: 24px;
964
+ }
965
+
966
+ .text-properties-panel .tpp-align-modal {
967
+ max-height: none;
968
+ position: absolute;
969
+ top: calc(100% + 4px);
970
+ left: 0;
971
+ flex-direction: column;
972
+ gap: 2px;
973
+ background: #ffffff;
974
+ border: 1px solid #E5E7EB;
975
+ border-radius: 6px;
976
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.06);
977
+ padding: 4px;
978
+ z-index: 4000;
979
+ }
980
+
981
+ .text-properties-panel .tpp-align-modal-option {
982
+ display: flex;
983
+ align-items: center;
984
+ justify-content: center;
985
+ width: 28px;
986
+ height: 28px;
987
+ padding: 0;
988
+ border: none;
989
+ background: transparent;
990
+ border-radius: 4px;
991
+ cursor: pointer;
992
+ color: #374151;
993
+ transition: background 0.1s;
994
+ flex-shrink: 0;
995
+ }
996
+
997
+ .text-properties-panel .tpp-align-modal-option:hover {
998
+ background: #f3f4f6;
999
+ }
1000
+
1001
+ .text-properties-panel .tpp-lh-control {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ position: relative;
1005
+ }
1006
+
1007
+ .text-properties-panel .tpp-lh-control svg {
1008
+ width: 22px;
1009
+ height: 22px;
1010
+ }
1011
+
1012
+ .text-properties-panel .tpp-lh-modal {
1013
+ max-height: none;
1014
+ position: absolute;
1015
+ top: calc(100% + 4px);
1016
+ left: 50%;
1017
+ transform: translateX(-50%);
1018
+ flex-direction: row;
1019
+ align-items: center;
1020
+ justify-content: center;
1021
+ background: #ffffff;
1022
+ border: 1px solid #E5E7EB;
1023
+ border-radius: 6px;
1024
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.06);
1025
+ padding: 8px 12px;
1026
+ z-index: 4000;
667
1027
  }
668
- .text-properties-panel .tpp-align-select { min-width: 86px; }
669
- .text-properties-panel .tpp-list-select { min-width: 110px; }
670
1028
 
671
1029
  .text-properties-panel .tpp-lh-slider {
672
1030
  width: 68px;
@@ -872,7 +1230,7 @@
872
1230
  }
873
1231
 
874
1232
  /* More Dropdown */
875
- .ipp-more-dropdown {
1233
+ .ipp-more-dropdown, .tpp-more-dropdown {
876
1234
  position: absolute;
877
1235
  top: calc(100% + 6px);
878
1236
  right: 0;
@@ -887,11 +1245,15 @@
887
1245
  z-index: 1001;
888
1246
  }
889
1247
 
890
- .ipp-more-dropdown.is-open {
1248
+ .ipp-more-dropdown.is-open, .tpp-more-dropdown.is-open {
891
1249
  display: flex;
1250
+ position: fixed;
1251
+ min-width: 0;
1252
+ max-width: 214px;
1253
+ width: 214px;
892
1254
  }
893
1255
 
894
- .ipp-dropdown-item {
1256
+ .ipp-dropdown-item, .tpp-dropdown-item {
895
1257
  display: flex;
896
1258
  align-items: center;
897
1259
  padding: 6px 8px;
@@ -908,7 +1270,7 @@
908
1270
  width: 100%;
909
1271
  }
910
1272
 
911
- .ipp-dropdown-item:hover {
1273
+ .ipp-dropdown-item:hover, .tpp-dropdown-item:hover {
912
1274
  background: #F3F4F6;
913
1275
  }
914
1276
 
@@ -918,19 +1280,19 @@
918
1280
  font-size: 12px;
919
1281
  }
920
1282
 
921
- .ipp-dropdown-item-shortcut {
1283
+ .ipp-dropdown-item-shortcut, .tpp-dropdown-item-shortcut {
922
1284
  margin-left: auto;
923
1285
  color: #9CA3AF;
924
1286
  font-size: 12px;
925
1287
  }
926
1288
 
927
- .ipp-dropdown-divider {
1289
+ .ipp-dropdown-divider, .tpp-dropdown-divider {
928
1290
  height: 1px;
929
1291
  background: #E5E7EB;
930
1292
  margin: 4px 2px;
931
1293
  }
932
1294
 
933
- .ipp-dropdown-icon {
1295
+ .ipp-dropdown-icon, .tpp-dropdown-icon {
934
1296
  width: 16px;
935
1297
  height: 16px;
936
1298
  display: inline-flex;
@@ -1366,3 +1728,81 @@
1366
1728
  opacity: 1;
1367
1729
  }
1368
1730
 
1731
+ /* ── Кнопка «Ссылка» в панели свойств текста ────────────────── */
1732
+ .tpp-link-btn:disabled,
1733
+ .tpp-link-btn--disabled {
1734
+ opacity: 0.35;
1735
+ cursor: not-allowed;
1736
+ pointer-events: none;
1737
+ }
1738
+
1739
+ /* ── Форма ввода URL ─────────────────────────────────────────── */
1740
+ .tpp-link-form {
1741
+ position: fixed;
1742
+ z-index: 10010;
1743
+ display: flex;
1744
+ flex-direction: column;
1745
+ gap: 6px;
1746
+ background: #ffffff;
1747
+ border: 1px solid #E5E7EB;
1748
+ border-radius: 10px;
1749
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12), 0 4px 12px rgba(0, 0, 0, 0.07);
1750
+ padding: 10px 12px;
1751
+ min-width: 260px;
1752
+ max-width: 340px;
1753
+ }
1754
+
1755
+ .tpp-link-form-label {
1756
+ font-size: 11px;
1757
+ color: #6B7280;
1758
+ white-space: nowrap;
1759
+ overflow: hidden;
1760
+ text-overflow: ellipsis;
1761
+ max-width: 100%;
1762
+ }
1763
+
1764
+ .tpp-link-form-row {
1765
+ display: flex;
1766
+ gap: 6px;
1767
+ align-items: center;
1768
+ }
1769
+
1770
+ .tpp-link-input {
1771
+ flex: 1;
1772
+ height: 30px;
1773
+ padding: 0 8px;
1774
+ border: 1px solid #D1D5DB;
1775
+ border-radius: 6px;
1776
+ font-size: 13px;
1777
+ font-family: inherit;
1778
+ outline: none;
1779
+ color: #111827;
1780
+ transition: border-color 0.15s;
1781
+ }
1782
+
1783
+ .tpp-link-input:focus {
1784
+ border-color: #6366F1;
1785
+ }
1786
+
1787
+ .tpp-link-input--error {
1788
+ border-color: #EF4444;
1789
+ }
1790
+
1791
+ .tpp-link-form-ok {
1792
+ height: 30px;
1793
+ padding: 0 12px;
1794
+ background: #6366F1;
1795
+ color: #ffffff;
1796
+ border: none;
1797
+ border-radius: 6px;
1798
+ font-size: 13px;
1799
+ font-family: inherit;
1800
+ cursor: pointer;
1801
+ flex-shrink: 0;
1802
+ transition: background 0.15s;
1803
+ }
1804
+
1805
+ .tpp-link-form-ok:hover {
1806
+ background: #4F46E5;
1807
+ }
1808
+
@@ -288,7 +288,7 @@
288
288
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
289
289
  font-size: 13px;
290
290
  font-family: 'Roboto', Arial, sans-serif;
291
- min-width: 320px;
291
+ min-width: auto;
292
292
  height: 36px;
293
293
  }
294
294
 
@@ -321,6 +321,21 @@
321
321
  letter-spacing: normal;
322
322
  }
323
323
 
324
+ /* Веб-ссылка внутри текстового объекта. pointer-events: auto переопределяет
325
+ pointer-events: none у родительского .mb-text и .moodboard-html-layer,
326
+ чтобы по ссылке можно было реально перейти. */
327
+ .mb-text-link {
328
+ color: #2563EB;
329
+ text-decoration: underline;
330
+ text-underline-offset: 2px;
331
+ pointer-events: auto;
332
+ cursor: pointer;
333
+ }
334
+
335
+ .mb-text-link:hover {
336
+ color: #1D4ED8;
337
+ }
338
+
324
339
  /* Markdown-режим текстового объекта: блочный рендер, перенос по словам */
325
340
  .mb-text--md {
326
341
  white-space: normal;
@@ -684,13 +699,10 @@
684
699
  }
685
700
 
686
701
  .text-properties-panel .font-select { min-width: 110px; }
687
- .text-properties-panel .font-size-select { min-width: 56px; }
702
+ .text-properties-panel .font-size-select { min-width: 32px; }
688
703
 
689
704
  .text-properties-panel .current-color-button,
690
705
  .text-properties-panel .current-bgcolor-button {
691
- width: 28px;
692
- height: 20px;
693
- border: 1px solid #ddd;
694
706
  border-radius: 4px;
695
707
  background-color: #000;
696
708
  cursor: pointer;
@@ -700,6 +712,18 @@
700
712
  box-sizing: border-box;
701
713
  position: relative;
702
714
  }
715
+
716
+ .text-properties-panel .current-color-button {
717
+ width: 20px;
718
+ height: 20px;
719
+ border: 1px solid #ddd;
720
+ }
721
+
722
+ .text-properties-panel .current-bgcolor-button {
723
+ width: 20px;
724
+ height: 20px;
725
+ border: none;
726
+ }
703
727
  /* MoodBoard Workspace Styles */
704
728
 
705
729
  /* Основные контейнеры */
@@ -1548,8 +1572,8 @@
1548
1572
  transition: all 0.2s ease;
1549
1573
  outline: none;
1550
1574
  outline-offset: 0;
1551
- padding-top: 5px;
1552
- padding-bottom: 5px;
1575
+ padding-top: 1px;
1576
+ padding-bottom: 1px;
1553
1577
  }
1554
1578
 
1555
1579
  .moodboard-text-input:focus {