@arronqzy/react-view 1.0.3 → 1.0.7

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 (43) hide show
  1. package/dist/styles.css +555 -15
  2. package/package.json +14 -7
  3. package/readme.md +74 -5
  4. package/src/core/template.tsx +12 -2
  5. package/src/panel/ReactViewOnlinePreview.tsx +18 -8
  6. package/src/panel/ReactViewPanel.tsx +403 -177
  7. package/src/panel/ai/AssistantChatPanel.tsx +895 -0
  8. package/src/panel/ai/AssistantMarkdown.tsx +256 -0
  9. package/src/panel/ai/applyAssistantAction.ts +652 -0
  10. package/src/panel/ai/revealConfigField.ts +137 -0
  11. package/src/panel/components/ConfigHintIcon.tsx +50 -0
  12. package/src/panel/components/ElementsLayer.tsx +39 -22
  13. package/src/panel/components/MaterialSidebar.tsx +157 -109
  14. package/src/panel/components/MoveableLayer.tsx +75 -61
  15. package/src/panel/components/PanelCanvas.tsx +81 -64
  16. package/src/panel/components/PanelConfigSidebar.tsx +471 -448
  17. package/src/panel/components/SelectLayer.tsx +1 -0
  18. package/src/panel/components/ViewElementScopePanel.tsx +13 -12
  19. package/src/panel/components/WorkspaceConfigSidebar.tsx +5 -2
  20. package/src/panel/components/WorkspaceProjectNav.tsx +25 -14
  21. package/src/panel/components/WorkspaceStageSplit.tsx +3 -1
  22. package/src/panel/components/scope-config/ScopeConfigContext.tsx +9 -0
  23. package/src/panel/components/scope-config/ScopeTemplatePreviewHost.tsx +242 -0
  24. package/src/panel/components/scope-config/ScopeTemplateUsageHint.tsx +12 -0
  25. package/src/panel/components/scope-config/ScopeTemplateWarningsPanel.tsx +6 -3
  26. package/src/panel/components/table/ConditionEditor.tsx +205 -0
  27. package/src/panel/components/table/JsonCodeEditor.tsx +115 -0
  28. package/src/panel/components/table/PanelConfigTableSection.tsx +2192 -0
  29. package/src/panel/components/table/TableNodeContent.tsx +544 -0
  30. package/src/panel/constants/messages.ts +76 -34
  31. package/src/panel/hooks/usePanelElements.ts +64 -52
  32. package/src/panel/hooks/useRafThrottledScroll.ts +30 -0
  33. package/src/panel/hooks/useWorkspaceProjects.ts +11 -8
  34. package/src/panel/types.ts +6 -0
  35. package/src/panel/utils/chartOptionBuilder.ts +12 -1
  36. package/src/panel/utils/panelElementDefaults.ts +69 -39
  37. package/src/panel/utils/scope-field-labels.ts +51 -37
  38. package/src/panel/utils/scope-template-chart.ts +92 -0
  39. package/src/panel/utils/scope-template-preview.ts +128 -0
  40. package/src/panel/utils/scope-template-spread.ts +252 -0
  41. package/src/panel/utils/scope-template-warnings.ts +131 -11
  42. package/src/panel/utils/scope-template.ts +105 -3
  43. package/src/tailwind.css +36 -15
package/dist/styles.css CHANGED
@@ -584,8 +584,8 @@ video {
584
584
  pointer-events: none;
585
585
  }
586
586
 
587
- .visible {
588
- visibility: visible;
587
+ .pointer-events-auto {
588
+ pointer-events: auto;
589
589
  }
590
590
 
591
591
  .collapse {
@@ -620,6 +620,11 @@ video {
620
620
  inset: 0.5rem;
621
621
  }
622
622
 
623
+ .inset-x-0 {
624
+ left: 0px;
625
+ right: 0px;
626
+ }
627
+
623
628
  .bottom-0 {
624
629
  bottom: 0px;
625
630
  }
@@ -739,6 +744,10 @@ video {
739
744
  margin-bottom: 0.25rem;
740
745
  }
741
746
 
747
+ .mb-1\.5 {
748
+ margin-bottom: 0.375rem;
749
+ }
750
+
742
751
  .mb-2 {
743
752
  margin-bottom: 0.5rem;
744
753
  }
@@ -763,6 +772,10 @@ video {
763
772
  margin-top: 0px;
764
773
  }
765
774
 
775
+ .mt-0\.5 {
776
+ margin-top: 0.125rem;
777
+ }
778
+
766
779
  .mt-1 {
767
780
  margin-top: 0.25rem;
768
781
  }
@@ -775,6 +788,17 @@ video {
775
788
  margin-top: 0.5rem;
776
789
  }
777
790
 
791
+ .mt-4 {
792
+ margin-top: 1rem;
793
+ }
794
+
795
+ .line-clamp-1 {
796
+ overflow: hidden;
797
+ display: -webkit-box;
798
+ -webkit-box-orient: vertical;
799
+ -webkit-line-clamp: 1;
800
+ }
801
+
778
802
  .line-clamp-3 {
779
803
  overflow: hidden;
780
804
  display: -webkit-box;
@@ -786,6 +810,14 @@ video {
786
810
  display: block;
787
811
  }
788
812
 
813
+ .inline-block {
814
+ display: inline-block;
815
+ }
816
+
817
+ .\!flex {
818
+ display: flex !important;
819
+ }
820
+
789
821
  .flex {
790
822
  display: flex;
791
823
  }
@@ -794,6 +826,14 @@ video {
794
826
  display: inline-flex;
795
827
  }
796
828
 
829
+ .\!table {
830
+ display: table !important;
831
+ }
832
+
833
+ .table {
834
+ display: table;
835
+ }
836
+
797
837
  .\!grid {
798
838
  display: grid !important;
799
839
  }
@@ -814,10 +854,22 @@ video {
814
854
  height: 0px;
815
855
  }
816
856
 
857
+ .h-0\.5 {
858
+ height: 0.125rem;
859
+ }
860
+
817
861
  .h-1\.5 {
818
862
  height: 0.375rem;
819
863
  }
820
864
 
865
+ .h-10 {
866
+ height: 2.5rem;
867
+ }
868
+
869
+ .h-12 {
870
+ height: 3rem;
871
+ }
872
+
821
873
  .h-16 {
822
874
  height: 4rem;
823
875
  }
@@ -874,10 +926,22 @@ video {
874
926
  height: 2rem;
875
927
  }
876
928
 
929
+ .h-9 {
930
+ height: 2.25rem;
931
+ }
932
+
877
933
  .h-\[180px\] {
878
934
  height: 180px;
879
935
  }
880
936
 
937
+ .h-\[min\(72vh\2c 580px\)\] {
938
+ height: min(72vh, 580px);
939
+ }
940
+
941
+ .h-\[min\(78vh\2c 560px\)\] {
942
+ height: min(78vh, 560px);
943
+ }
944
+
881
945
  .h-\[var\(--rv-ruler-size\)\] {
882
946
  height: var(--rv-ruler-size);
883
947
  }
@@ -890,6 +954,10 @@ video {
890
954
  height: 100%;
891
955
  }
892
956
 
957
+ .max-h-28 {
958
+ max-height: 7rem;
959
+ }
960
+
893
961
  .max-h-44 {
894
962
  max-height: 11rem;
895
963
  }
@@ -898,6 +966,10 @@ video {
898
966
  max-height: 13rem;
899
967
  }
900
968
 
969
+ .max-h-\[160px\] {
970
+ max-height: 160px;
971
+ }
972
+
901
973
  .max-h-\[200px\] {
902
974
  max-height: 200px;
903
975
  }
@@ -906,6 +978,14 @@ video {
906
978
  max-height: 78vh;
907
979
  }
908
980
 
981
+ .max-h-\[min\(78vh\2c 560px\)\] {
982
+ max-height: min(78vh, 560px);
983
+ }
984
+
985
+ .max-h-full {
986
+ max-height: 100%;
987
+ }
988
+
909
989
  .min-h-0 {
910
990
  min-height: 0px;
911
991
  }
@@ -918,6 +998,18 @@ video {
918
998
  min-height: 120px;
919
999
  }
920
1000
 
1001
+ .min-h-\[140px\] {
1002
+ min-height: 140px;
1003
+ }
1004
+
1005
+ .min-h-\[68px\] {
1006
+ min-height: 68px;
1007
+ }
1008
+
1009
+ .min-h-full {
1010
+ min-height: 100%;
1011
+ }
1012
+
921
1013
  .w-0 {
922
1014
  width: 0px;
923
1015
  }
@@ -934,6 +1026,10 @@ video {
934
1026
  width: 91.666667%;
935
1027
  }
936
1028
 
1029
+ .w-12 {
1030
+ width: 3rem;
1031
+ }
1032
+
937
1033
  .w-14 {
938
1034
  width: 3.5rem;
939
1035
  }
@@ -990,6 +1086,10 @@ video {
990
1086
  width: 66.666667%;
991
1087
  }
992
1088
 
1089
+ .w-9 {
1090
+ width: 2.25rem;
1091
+ }
1092
+
993
1093
  .w-\[220px\] {
994
1094
  width: 220px;
995
1095
  }
@@ -998,6 +1098,18 @@ video {
998
1098
  width: 280px;
999
1099
  }
1000
1100
 
1101
+ .w-\[96px\] {
1102
+ width: 96px;
1103
+ }
1104
+
1105
+ .w-\[min\(92vw\2c 720px\)\] {
1106
+ width: min(92vw, 720px);
1107
+ }
1108
+
1109
+ .w-\[min\(94vw\2c 680px\)\] {
1110
+ width: min(94vw, 680px);
1111
+ }
1112
+
1001
1113
  .w-\[var\(--rv-ruler-size\)\] {
1002
1114
  width: var(--rv-ruler-size);
1003
1115
  }
@@ -1030,22 +1142,54 @@ video {
1030
1142
  max-width: 200px;
1031
1143
  }
1032
1144
 
1033
- .max-w-\[260px\] {
1034
- max-width: 260px;
1035
- }
1036
-
1037
1145
  .max-w-\[360px\] {
1038
1146
  max-width: 360px;
1039
1147
  }
1040
1148
 
1149
+ .max-w-\[380px\] {
1150
+ max-width: 380px;
1151
+ }
1152
+
1041
1153
  .max-w-\[420px\] {
1042
1154
  max-width: 420px;
1043
1155
  }
1044
1156
 
1157
+ .max-w-\[520px\] {
1158
+ max-width: 520px;
1159
+ }
1160
+
1161
+ .max-w-\[680px\] {
1162
+ max-width: 680px;
1163
+ }
1164
+
1165
+ .max-w-\[720px\] {
1166
+ max-width: 720px;
1167
+ }
1168
+
1169
+ .max-w-\[85\%\] {
1170
+ max-width: 85%;
1171
+ }
1172
+
1173
+ .max-w-\[90\%\] {
1174
+ max-width: 90%;
1175
+ }
1176
+
1177
+ .max-w-lg {
1178
+ max-width: 32rem;
1179
+ }
1180
+
1181
+ .max-w-xs {
1182
+ max-width: 20rem;
1183
+ }
1184
+
1045
1185
  .flex-1 {
1046
1186
  flex: 1 1 0%;
1047
1187
  }
1048
1188
 
1189
+ .flex-none {
1190
+ flex: none;
1191
+ }
1192
+
1049
1193
  .shrink-0 {
1050
1194
  flex-shrink: 0;
1051
1195
  }
@@ -1112,10 +1256,22 @@ video {
1112
1256
  user-select: none;
1113
1257
  }
1114
1258
 
1259
+ .resize-none {
1260
+ resize: none;
1261
+ }
1262
+
1115
1263
  .resize {
1116
1264
  resize: both;
1117
1265
  }
1118
1266
 
1267
+ .list-decimal {
1268
+ list-style-type: decimal;
1269
+ }
1270
+
1271
+ .list-disc {
1272
+ list-style-type: disc;
1273
+ }
1274
+
1119
1275
  .grid-cols-1 {
1120
1276
  grid-template-columns: repeat(1, minmax(0, 1fr));
1121
1277
  }
@@ -1136,6 +1292,10 @@ video {
1136
1292
  grid-template-columns: 110px 1fr;
1137
1293
  }
1138
1294
 
1295
+ .grid-cols-\[1fr_1fr_auto\] {
1296
+ grid-template-columns: 1fr 1fr auto;
1297
+ }
1298
+
1139
1299
  .grid-rows-2 {
1140
1300
  grid-template-rows: repeat(2, minmax(0, 1fr));
1141
1301
  }
@@ -1144,6 +1304,10 @@ video {
1144
1304
  flex-direction: row;
1145
1305
  }
1146
1306
 
1307
+ .\!flex-col {
1308
+ flex-direction: column !important;
1309
+ }
1310
+
1147
1311
  .flex-col {
1148
1312
  flex-direction: column;
1149
1313
  }
@@ -1184,6 +1348,10 @@ video {
1184
1348
  justify-content: space-between;
1185
1349
  }
1186
1350
 
1351
+ .gap-0 {
1352
+ gap: 0px;
1353
+ }
1354
+
1187
1355
  .gap-0\.5 {
1188
1356
  gap: 0.125rem;
1189
1357
  }
@@ -1204,6 +1372,19 @@ video {
1204
1372
  gap: 0.75rem;
1205
1373
  }
1206
1374
 
1375
+ .gap-5 {
1376
+ gap: 1.25rem;
1377
+ }
1378
+
1379
+ .gap-x-4 {
1380
+ -moz-column-gap: 1rem;
1381
+ column-gap: 1rem;
1382
+ }
1383
+
1384
+ .gap-y-2 {
1385
+ row-gap: 0.5rem;
1386
+ }
1387
+
1207
1388
  .space-y-0 > :not([hidden]) ~ :not([hidden]) {
1208
1389
  --tw-space-y-reverse: 0;
1209
1390
  margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
@@ -1252,6 +1433,10 @@ video {
1252
1433
  margin-bottom: calc(0.875rem * var(--tw-space-y-reverse));
1253
1434
  }
1254
1435
 
1436
+ .self-start {
1437
+ align-self: flex-start;
1438
+ }
1439
+
1255
1440
  .overflow-auto {
1256
1441
  overflow: auto;
1257
1442
  }
@@ -1268,6 +1453,14 @@ video {
1268
1453
  overflow-x: auto;
1269
1454
  }
1270
1455
 
1456
+ .overflow-y-auto {
1457
+ overflow-y: auto;
1458
+ }
1459
+
1460
+ .overflow-x-hidden {
1461
+ overflow-x: hidden;
1462
+ }
1463
+
1271
1464
  .truncate {
1272
1465
  overflow: hidden;
1273
1466
  text-overflow: ellipsis;
@@ -1278,14 +1471,26 @@ video {
1278
1471
  white-space: nowrap;
1279
1472
  }
1280
1473
 
1474
+ .whitespace-pre-wrap {
1475
+ white-space: pre-wrap;
1476
+ }
1477
+
1281
1478
  .break-words {
1282
1479
  overflow-wrap: break-word;
1283
1480
  }
1284
1481
 
1482
+ .break-all {
1483
+ word-break: break-all;
1484
+ }
1485
+
1285
1486
  .rounded {
1286
1487
  border-radius: 0.25rem;
1287
1488
  }
1288
1489
 
1490
+ .rounded-2xl {
1491
+ border-radius: 1rem;
1492
+ }
1493
+
1289
1494
  .rounded-full {
1290
1495
  border-radius: 9999px;
1291
1496
  }
@@ -1330,6 +1535,10 @@ video {
1330
1535
  border-left-width: 1px;
1331
1536
  }
1332
1537
 
1538
+ .border-l-2 {
1539
+ border-left-width: 2px;
1540
+ }
1541
+
1333
1542
  .border-l-\[11px\] {
1334
1543
  border-left-width: 11px;
1335
1544
  }
@@ -1350,6 +1559,10 @@ video {
1350
1559
  border-style: dashed;
1351
1560
  }
1352
1561
 
1562
+ .border-amber-300\/70 {
1563
+ border-color: rgb(252 211 77 / 0.7);
1564
+ }
1565
+
1353
1566
  .border-amber-500\/30 {
1354
1567
  border-color: rgb(245 158 11 / 0.3);
1355
1568
  }
@@ -1386,6 +1599,10 @@ video {
1386
1599
  border-color: hsl(var(--border) / 0.8);
1387
1600
  }
1388
1601
 
1602
+ .border-destructive\/20 {
1603
+ border-color: hsl(var(--destructive) / 0.2);
1604
+ }
1605
+
1389
1606
  .border-destructive\/40 {
1390
1607
  border-color: hsl(var(--destructive) / 0.4);
1391
1608
  }
@@ -1406,6 +1623,10 @@ video {
1406
1623
  border-color: hsl(var(--foreground) / 0.8);
1407
1624
  }
1408
1625
 
1626
+ .border-primary\/25 {
1627
+ border-color: hsl(var(--primary) / 0.25);
1628
+ }
1629
+
1409
1630
  .border-primary\/40 {
1410
1631
  border-color: hsl(var(--primary) / 0.4);
1411
1632
  }
@@ -1430,6 +1651,10 @@ video {
1430
1651
  border-color: rgb(14 165 233 / 0.4);
1431
1652
  }
1432
1653
 
1654
+ .border-slate-700\/60 {
1655
+ border-color: rgb(51 65 85 / 0.6);
1656
+ }
1657
+
1433
1658
  .border-violet-500\/50 {
1434
1659
  border-color: rgb(139 92 246 / 0.5);
1435
1660
  }
@@ -1443,6 +1668,10 @@ video {
1443
1668
  border-color: rgb(124 58 237 / var(--tw-border-opacity, 1));
1444
1669
  }
1445
1670
 
1671
+ .border-white\/5 {
1672
+ border-color: rgb(255 255 255 / 0.05);
1673
+ }
1674
+
1446
1675
  .border-b-transparent {
1447
1676
  border-bottom-color: transparent;
1448
1677
  }
@@ -1455,6 +1684,11 @@ video {
1455
1684
  border-top-color: transparent;
1456
1685
  }
1457
1686
 
1687
+ .bg-\[\#0c1220\] {
1688
+ --tw-bg-opacity: 1;
1689
+ background-color: rgb(12 18 32 / var(--tw-bg-opacity, 1));
1690
+ }
1691
+
1458
1692
  .bg-accent {
1459
1693
  background-color: hsl(var(--accent));
1460
1694
  }
@@ -1463,6 +1697,21 @@ video {
1463
1697
  background-color: hsl(var(--accent) / 0.6);
1464
1698
  }
1465
1699
 
1700
+ .bg-amber-400 {
1701
+ --tw-bg-opacity: 1;
1702
+ background-color: rgb(251 191 36 / var(--tw-bg-opacity, 1));
1703
+ }
1704
+
1705
+ .bg-amber-50 {
1706
+ --tw-bg-opacity: 1;
1707
+ background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
1708
+ }
1709
+
1710
+ .bg-amber-500 {
1711
+ --tw-bg-opacity: 1;
1712
+ background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));
1713
+ }
1714
+
1466
1715
  .bg-amber-500\/10 {
1467
1716
  background-color: rgb(245 158 11 / 0.1);
1468
1717
  }
@@ -1527,6 +1776,11 @@ video {
1527
1776
  background-color: hsl(var(--destructive) / 0.15);
1528
1777
  }
1529
1778
 
1779
+ .bg-emerald-500 {
1780
+ --tw-bg-opacity: 1;
1781
+ background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
1782
+ }
1783
+
1530
1784
  .bg-emerald-500\/10 {
1531
1785
  background-color: rgb(16 185 129 / 0.1);
1532
1786
  }
@@ -1535,6 +1789,10 @@ video {
1535
1789
  background-color: hsl(var(--muted));
1536
1790
  }
1537
1791
 
1792
+ .bg-muted-foreground\/40 {
1793
+ background-color: hsl(var(--muted-foreground) / 0.4);
1794
+ }
1795
+
1538
1796
  .bg-muted-foreground\/45 {
1539
1797
  background-color: hsl(var(--muted-foreground) / 0.45);
1540
1798
  }
@@ -1559,6 +1817,10 @@ video {
1559
1817
  background-color: hsl(var(--muted) / 0.4);
1560
1818
  }
1561
1819
 
1820
+ .bg-muted\/60 {
1821
+ background-color: hsl(var(--muted) / 0.6);
1822
+ }
1823
+
1562
1824
  .bg-muted\/\[0\.14\] {
1563
1825
  background-color: hsl(var(--muted) / 0.14);
1564
1826
  }
@@ -1591,6 +1853,10 @@ video {
1591
1853
  background-color: hsl(var(--primary) / 0.35);
1592
1854
  }
1593
1855
 
1856
+ .bg-primary\/5 {
1857
+ background-color: hsl(var(--primary) / 0.05);
1858
+ }
1859
+
1594
1860
  .bg-primary\/50 {
1595
1861
  background-color: hsl(var(--primary) / 0.5);
1596
1862
  }
@@ -1784,6 +2050,11 @@ video {
1784
2050
  padding: 1rem;
1785
2051
  }
1786
2052
 
2053
+ .px-0 {
2054
+ padding-left: 0px;
2055
+ padding-right: 0px;
2056
+ }
2057
+
1787
2058
  .px-1 {
1788
2059
  padding-left: 0.25rem;
1789
2060
  padding-right: 0.25rem;
@@ -1809,6 +2080,16 @@ video {
1809
2080
  padding-right: 0.75rem;
1810
2081
  }
1811
2082
 
2083
+ .px-3\.5 {
2084
+ padding-left: 0.875rem;
2085
+ padding-right: 0.875rem;
2086
+ }
2087
+
2088
+ .px-4 {
2089
+ padding-left: 1rem;
2090
+ padding-right: 1rem;
2091
+ }
2092
+
1812
2093
  .px-6 {
1813
2094
  padding-left: 1.5rem;
1814
2095
  padding-right: 1.5rem;
@@ -1859,6 +2140,11 @@ video {
1859
2140
  padding-bottom: 1.25rem;
1860
2141
  }
1861
2142
 
2143
+ .py-6 {
2144
+ padding-top: 1.5rem;
2145
+ padding-bottom: 1.5rem;
2146
+ }
2147
+
1862
2148
  .py-7 {
1863
2149
  padding-top: 1.75rem;
1864
2150
  padding-bottom: 1.75rem;
@@ -1868,30 +2154,58 @@ video {
1868
2154
  padding-bottom: 0.375rem;
1869
2155
  }
1870
2156
 
2157
+ .pb-12 {
2158
+ padding-bottom: 3rem;
2159
+ }
2160
+
1871
2161
  .pb-2 {
1872
2162
  padding-bottom: 0.5rem;
1873
2163
  }
1874
2164
 
2165
+ .pb-2\.5 {
2166
+ padding-bottom: 0.625rem;
2167
+ }
2168
+
1875
2169
  .pb-3 {
1876
2170
  padding-bottom: 0.75rem;
1877
2171
  }
1878
2172
 
2173
+ .pl-1 {
2174
+ padding-left: 0.25rem;
2175
+ }
2176
+
1879
2177
  .pl-2 {
1880
2178
  padding-left: 0.5rem;
1881
2179
  }
1882
2180
 
2181
+ .pl-2\.5 {
2182
+ padding-left: 0.625rem;
2183
+ }
2184
+
1883
2185
  .pl-3 {
1884
2186
  padding-left: 0.75rem;
1885
2187
  }
1886
2188
 
2189
+ .pl-5 {
2190
+ padding-left: 1.25rem;
2191
+ }
2192
+
1887
2193
  .pr-1 {
1888
2194
  padding-right: 0.25rem;
1889
2195
  }
1890
2196
 
2197
+ .pr-12 {
2198
+ padding-right: 3rem;
2199
+ }
2200
+
1891
2201
  .pt-0 {
1892
2202
  padding-top: 0px;
1893
2203
  }
1894
2204
 
2205
+ .pt-1 {
2206
+ padding-top: 0.25rem;
2207
+ }
2208
+
1895
2209
  .pt-1\.5 {
1896
2210
  padding-top: 0.375rem;
1897
2211
  }
@@ -1904,6 +2218,10 @@ video {
1904
2218
  padding-top: 0.625rem;
1905
2219
  }
1906
2220
 
2221
+ .pt-3 {
2222
+ padding-top: 0.75rem;
2223
+ }
2224
+
1907
2225
  .text-left {
1908
2226
  text-align: left;
1909
2227
  }
@@ -1924,6 +2242,30 @@ video {
1924
2242
  font-size: 11px;
1925
2243
  }
1926
2244
 
2245
+ .text-\[12px\] {
2246
+ font-size: 12px;
2247
+ }
2248
+
2249
+ .text-\[13px\] {
2250
+ font-size: 13px;
2251
+ }
2252
+
2253
+ .text-\[14px\] {
2254
+ font-size: 14px;
2255
+ }
2256
+
2257
+ .text-\[15px\] {
2258
+ font-size: 15px;
2259
+ }
2260
+
2261
+ .text-\[16px\] {
2262
+ font-size: 16px;
2263
+ }
2264
+
2265
+ .text-\[20px\] {
2266
+ font-size: 20px;
2267
+ }
2268
+
1927
2269
  .text-sm {
1928
2270
  font-size: 0.875rem;
1929
2271
  line-height: 1.25rem;
@@ -1950,6 +2292,10 @@ video {
1950
2292
  font-style: italic;
1951
2293
  }
1952
2294
 
2295
+ .leading-4 {
2296
+ line-height: 1rem;
2297
+ }
2298
+
1953
2299
  .leading-5 {
1954
2300
  line-height: 1.25rem;
1955
2301
  }
@@ -1966,6 +2312,10 @@ video {
1966
2312
  line-height: 1.625;
1967
2313
  }
1968
2314
 
2315
+ .tracking-tight {
2316
+ letter-spacing: -0.025em;
2317
+ }
2318
+
1969
2319
  .tracking-wide {
1970
2320
  letter-spacing: 0.025em;
1971
2321
  }
@@ -2010,6 +2360,10 @@ video {
2010
2360
  color: hsl(var(--foreground));
2011
2361
  }
2012
2362
 
2363
+ .text-foreground\/80 {
2364
+ color: hsl(var(--foreground) / 0.8);
2365
+ }
2366
+
2013
2367
  .text-foreground\/90 {
2014
2368
  color: hsl(var(--foreground) / 0.9);
2015
2369
  }
@@ -2071,6 +2425,16 @@ video {
2071
2425
  color: rgb(3 105 161 / var(--tw-text-opacity, 1));
2072
2426
  }
2073
2427
 
2428
+ .text-slate-300 {
2429
+ --tw-text-opacity: 1;
2430
+ color: rgb(203 213 225 / var(--tw-text-opacity, 1));
2431
+ }
2432
+
2433
+ .text-slate-400 {
2434
+ --tw-text-opacity: 1;
2435
+ color: rgb(148 163 184 / var(--tw-text-opacity, 1));
2436
+ }
2437
+
2074
2438
  .text-violet-300 {
2075
2439
  --tw-text-opacity: 1;
2076
2440
  color: rgb(196 181 253 / var(--tw-text-opacity, 1));
@@ -2090,14 +2454,30 @@ video {
2090
2454
  text-decoration-line: underline;
2091
2455
  }
2092
2456
 
2457
+ .line-through {
2458
+ text-decoration-line: line-through;
2459
+ }
2460
+
2461
+ .underline-offset-2 {
2462
+ text-underline-offset: 2px;
2463
+ }
2464
+
2093
2465
  .opacity-0 {
2094
2466
  opacity: 0;
2095
2467
  }
2096
2468
 
2469
+ .opacity-100 {
2470
+ opacity: 1;
2471
+ }
2472
+
2097
2473
  .opacity-40 {
2098
2474
  opacity: 0.4;
2099
2475
  }
2100
2476
 
2477
+ .opacity-45 {
2478
+ opacity: 0.45;
2479
+ }
2480
+
2101
2481
  .opacity-60 {
2102
2482
  opacity: 0.6;
2103
2483
  }
@@ -2108,12 +2488,24 @@ video {
2108
2488
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2109
2489
  }
2110
2490
 
2491
+ .shadow-2xl {
2492
+ --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
2493
+ --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
2494
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2495
+ }
2496
+
2111
2497
  .shadow-\[inset_0_1px_0_0_rgba\(139\2c 92\2c 246\2c 0\.22\)\] {
2112
2498
  --tw-shadow: inset 0 1px 0 0 rgba(139,92,246,0.22);
2113
2499
  --tw-shadow-colored: inset 0 1px 0 0 var(--tw-shadow-color);
2114
2500
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2115
2501
  }
2116
2502
 
2503
+ .shadow-\[inset_0_1px_0_rgba\(255\2c 255\2c 255\2c 0\.04\)\] {
2504
+ --tw-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
2505
+ --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
2506
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2507
+ }
2508
+
2117
2509
  .shadow-lg {
2118
2510
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
2119
2511
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
@@ -2183,6 +2575,10 @@ video {
2183
2575
  --tw-ring-color: hsl(var(--foreground) / 0.4);
2184
2576
  }
2185
2577
 
2578
+ .ring-primary\/20 {
2579
+ --tw-ring-color: hsl(var(--primary) / 0.2);
2580
+ }
2581
+
2186
2582
  .ring-primary\/45 {
2187
2583
  --tw-ring-color: hsl(var(--primary) / 0.45);
2188
2584
  }
@@ -2226,6 +2622,18 @@ video {
2226
2622
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2227
2623
  }
2228
2624
 
2625
+ .transition {
2626
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2627
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2628
+ transition-duration: 150ms;
2629
+ }
2630
+
2631
+ .transition-all {
2632
+ transition-property: all;
2633
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2634
+ transition-duration: 150ms;
2635
+ }
2636
+
2229
2637
  .transition-colors {
2230
2638
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
2231
2639
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -2307,10 +2715,47 @@ video {
2307
2715
  background: hsl(var(--foreground) / 0.45);
2308
2716
  }
2309
2717
 
2310
- /* Moveable:仅角点控制柄固定屏幕像素;勿作用于 moveable-direction 边线 */
2718
+ /*
2719
+ * Moveable 控制框:
2720
+ * - 根节点必须高于画布元素 zIndex(节点默认 ≥1),否则多选组框线会被节点盖住,只剩锚点可见
2721
+ * - 勿把 .moveable-group 压到 z-index:1(会覆盖根节点的 9999)
2722
+ */
2311
2723
 
2312
2724
  .rv-moveable-layer {
2313
2725
  --moveable-color: #1990ff;
2726
+ z-index: 9999 !important;
2727
+ }
2728
+
2729
+ .rv-moveable-layer.moveable-group,
2730
+ .rv-moveable-layer.moveable-control-box {
2731
+ z-index: 9999 !important;
2732
+ }
2733
+
2734
+ /* Moveable 默认 .group { z-index: -1 },必须覆盖,避免整组掉到节点下方 */
2735
+
2736
+ .rv-moveable-layer.moveable-group {
2737
+ z-index: 9999 !important;
2738
+ }
2739
+
2740
+ .rv-moveable-layer .moveable-line {
2741
+ --moveable-color: #1990ff;
2742
+ background: var(--moveable-color) !important;
2743
+ }
2744
+
2745
+ /* 组选/边线:保持颜色;厚度仍由 moveable zoom 的 scaleY 补偿 */
2746
+
2747
+ .rv-moveable-layer .moveable-line.moveable-direction:not(.moveable-edge) {
2748
+ background: var(--moveable-color) !important;
2749
+ }
2750
+
2751
+ /* 子 control-box 相对组内层叠,勿压低根节点 */
2752
+
2753
+ .rv-moveable-layer.moveable-group > .moveable-control-box {
2754
+ z-index: 2 !important;
2755
+ }
2756
+
2757
+ .rv-moveable-layer .moveable-around-control {
2758
+ background: transparent !important;
2314
2759
  }
2315
2760
 
2316
2761
  .rv-moveable-layer .moveable-control {
@@ -2323,20 +2768,23 @@ video {
2323
2768
  border: 2px solid hsl(var(--background)) !important;
2324
2769
  background: #1990ff !important;
2325
2770
  background: var(--moveable-color) !important;
2771
+ z-index: 10 !important;
2326
2772
  }
2327
2773
 
2328
- .rv-moveable-layer .moveable-line.moveable-direction {
2329
- width: 1px !important;
2330
- height: 1px !important;
2331
- margin: 0 !important;
2774
+ .placeholder\:text-muted-foreground::-moz-placeholder {
2775
+ color: hsl(var(--muted-foreground));
2332
2776
  }
2333
2777
 
2334
- .rv-moveable-layer .moveable-line {
2335
- --moveable-color: #1990ff;
2778
+ .placeholder\:text-muted-foreground::placeholder {
2779
+ color: hsl(var(--muted-foreground));
2336
2780
  }
2337
2781
 
2338
- .rv-moveable-layer .moveable-around-control {
2339
- background: transparent !important;
2782
+ .focus-within\:border-sky-500\/40:focus-within {
2783
+ border-color: rgb(14 165 233 / 0.4);
2784
+ }
2785
+
2786
+ .focus-within\:bg-background:focus-within {
2787
+ background-color: hsl(var(--background));
2340
2788
  }
2341
2789
 
2342
2790
  .hover\:border-border:hover {
@@ -2367,6 +2815,14 @@ video {
2367
2815
  background-color: hsl(var(--destructive) / 0.9);
2368
2816
  }
2369
2817
 
2818
+ .hover\:bg-muted:hover {
2819
+ background-color: hsl(var(--muted));
2820
+ }
2821
+
2822
+ .hover\:bg-muted\/30:hover {
2823
+ background-color: hsl(var(--muted) / 0.3);
2824
+ }
2825
+
2370
2826
  .hover\:bg-muted\/35:hover {
2371
2827
  background-color: hsl(var(--muted) / 0.35);
2372
2828
  }
@@ -2379,6 +2835,10 @@ video {
2379
2835
  background-color: hsl(var(--secondary) / 0.8);
2380
2836
  }
2381
2837
 
2838
+ .hover\:bg-white\/10:hover {
2839
+ background-color: rgb(255 255 255 / 0.1);
2840
+ }
2841
+
2382
2842
  .hover\:text-accent-foreground:hover {
2383
2843
  color: hsl(var(--accent-foreground));
2384
2844
  }
@@ -2391,6 +2851,15 @@ video {
2391
2851
  color: hsl(var(--foreground));
2392
2852
  }
2393
2853
 
2854
+ .hover\:text-white:hover {
2855
+ --tw-text-opacity: 1;
2856
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
2857
+ }
2858
+
2859
+ .hover\:underline:hover {
2860
+ text-decoration-line: underline;
2861
+ }
2862
+
2394
2863
  .focus\:border-border\/60:focus {
2395
2864
  border-color: hsl(var(--border) / 0.6);
2396
2865
  }
@@ -2466,6 +2935,10 @@ video {
2466
2935
  }
2467
2936
  }
2468
2937
 
2938
+ .dark\:border-amber-500\/40:is(.dark *) {
2939
+ border-color: rgb(245 158 11 / 0.4);
2940
+ }
2941
+
2469
2942
  .dark\:border-violet-400:is(.dark *) {
2470
2943
  --tw-border-opacity: 1;
2471
2944
  border-color: rgb(167 139 250 / var(--tw-border-opacity, 1));
@@ -2475,6 +2948,10 @@ video {
2475
2948
  border-color: rgb(167 139 250 / 0.65);
2476
2949
  }
2477
2950
 
2951
+ .dark\:bg-amber-950\/40:is(.dark *) {
2952
+ background-color: rgb(69 26 3 / 0.4);
2953
+ }
2954
+
2478
2955
  .dark\:bg-violet-500\/35:is(.dark *) {
2479
2956
  background-color: rgb(139 92 246 / 0.35);
2480
2957
  }
@@ -2538,6 +3015,10 @@ video {
2538
3015
  }
2539
3016
 
2540
3017
  @media (min-width: 640px) {
3018
+ .sm\:flex {
3019
+ display: flex;
3020
+ }
3021
+
2541
3022
  .sm\:max-w-\[520px\] {
2542
3023
  max-width: 520px;
2543
3024
  }
@@ -2545,6 +3026,30 @@ video {
2545
3026
  .sm\:max-w-\[860px\] {
2546
3027
  max-width: 860px;
2547
3028
  }
3029
+
3030
+ .sm\:grid-cols-2 {
3031
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3032
+ }
3033
+
3034
+ .sm\:grid-cols-3 {
3035
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3036
+ }
3037
+
3038
+ .sm\:space-x-0 > :not([hidden]) ~ :not([hidden]) {
3039
+ --tw-space-x-reverse: 0;
3040
+ margin-right: calc(0px * var(--tw-space-x-reverse));
3041
+ margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse)));
3042
+ }
3043
+
3044
+ .sm\:rounded-xl {
3045
+ border-radius: 0.75rem;
3046
+ }
3047
+ }
3048
+
3049
+ @media (min-width: 768px) {
3050
+ .md\:text-\[14px\] {
3051
+ font-size: 14px;
3052
+ }
2548
3053
  }
2549
3054
 
2550
3055
  .\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb {
@@ -2575,10 +3080,45 @@ video {
2575
3080
  width: 0.5rem;
2576
3081
  }
2577
3082
 
3083
+ .\[\&_\.cm-editor\]\:h-full .cm-editor {
3084
+ height: 100%;
3085
+ }
3086
+
3087
+ .\[\&_\.cm-editor\]\:max-h-full .cm-editor {
3088
+ max-height: 100%;
3089
+ }
3090
+
3091
+ .\[\&_\.cm-editor\]\:outline-none .cm-editor {
3092
+ outline: 2px solid transparent;
3093
+ outline-offset: 2px;
3094
+ }
3095
+
3096
+ .\[\&_\.config-field--highlight\]\:rounded-md .config-field--highlight {
3097
+ border-radius: calc(var(--radius) - 2px);
3098
+ }
3099
+
3100
+ .\[\&_\.config-field--highlight\]\:ring-2 .config-field--highlight {
3101
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3102
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
3103
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
3104
+ }
3105
+
3106
+ .\[\&_\.config-field--highlight\]\:ring-sky-400\/80 .config-field--highlight {
3107
+ --tw-ring-color: rgb(56 189 248 / 0.8);
3108
+ }
3109
+
3110
+ .\[\&_\.moveable-area\]\:pointer-events-auto .moveable-area {
3111
+ pointer-events: auto;
3112
+ }
3113
+
2578
3114
  .\[\&_\.moveable-control-box\]\:pointer-events-auto .moveable-control-box {
2579
3115
  pointer-events: auto;
2580
3116
  }
2581
3117
 
3118
+ .\[\&_\.moveable-group\]\:pointer-events-auto .moveable-group {
3119
+ pointer-events: auto;
3120
+ }
3121
+
2582
3122
  .\[\&_\.scope-field--highlight\]\:rounded-md .scope-field--highlight {
2583
3123
  border-radius: calc(var(--radius) - 2px);
2584
3124
  }