@arronqzy/abuilder 1.1.34 → 1.1.37

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.
package/dist/styles.css CHANGED
@@ -566,13 +566,13 @@ video {
566
566
  --secondary: 210 40% 96.1%;
567
567
  --secondary-foreground: 222.2 47.4% 11.2%;
568
568
  --muted: 210 40% 96.1%;
569
- --muted-foreground: 215.4 16.3% 46.9%;
569
+ --muted-foreground: 215.4 16.7% 45.7%;
570
570
  --accent: 210 40% 96.1%;
571
571
  --accent-foreground: 222.2 47.4% 11.2%;
572
- --destructive: 0 84.2% 60.2%;
573
- --destructive-foreground: 210 40% 98%;
572
+ --destructive: 358.6 72.7% 53.5%;
573
+ --destructive-foreground: 0 0% 100%;
574
574
  --border: 214.3 31.8% 91.4%;
575
- --input: 214.3 31.8% 91.4%;
575
+ --input: 214.3 15.9% 83%;
576
576
  --ring: 222.2 84% 4.9%;
577
577
  --radius: 0.5rem;
578
578
  }
@@ -592,10 +592,10 @@ video {
592
592
  --muted-foreground: 215 20.2% 65.1%;
593
593
  --accent: 217.2 32.6% 17.5%;
594
594
  --accent-foreground: 210 40% 98%;
595
- --destructive: 0 62.8% 30.6%;
596
- --destructive-foreground: 210 40% 98%;
595
+ --destructive: 0 90.6% 70.8%;
596
+ --destructive-foreground: 222.2 47.4% 11.2%;
597
597
  --border: 217.2 32.6% 17.5%;
598
- --input: 217.2 32.6% 17.5%;
598
+ --input: 217.2 28.5% 20.4%;
599
599
  --ring: 212.7 26.8% 83.9%;
600
600
  }
601
601
 
@@ -636,6 +636,10 @@ body {
636
636
  visibility: hidden;
637
637
  }
638
638
 
639
+ .static {
640
+ position: static;
641
+ }
642
+
639
643
  .fixed {
640
644
  position: fixed;
641
645
  }
@@ -1946,6 +1950,10 @@ body {
1946
1950
  text-underline-offset: 4px;
1947
1951
  }
1948
1952
 
1953
+ .accent-foreground {
1954
+ accent-color: hsl(var(--foreground));
1955
+ }
1956
+
1949
1957
  .opacity-0 {
1950
1958
  opacity: 0;
1951
1959
  }
@@ -1999,6 +2007,12 @@ body {
1999
2007
  outline-style: solid;
2000
2008
  }
2001
2009
 
2010
+ .ring {
2011
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2012
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2013
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2014
+ }
2015
+
2002
2016
  .ring-0 {
2003
2017
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2004
2018
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
@@ -2121,6 +2135,8 @@ body {
2121
2135
  --cell-size: 2rem;
2122
2136
  }
2123
2137
 
2138
+ /* Static fallback; ThemeProvider overrides these with the chroma-js palette from lib/theme-palette.ts. */
2139
+
2124
2140
  /* 弹窗蒙层全屏覆盖,层级高于画布 Ruler / 工具栏 */
2125
2141
 
2126
2142
  [data-radix-dialog-overlay],
@@ -3853,6 +3869,10 @@ video {
3853
3869
  bottom: 0.375rem;
3854
3870
  }
3855
3871
 
3872
+ .bottom-3 {
3873
+ bottom: 0.75rem;
3874
+ }
3875
+
3856
3876
  .bottom-\[var\(--rv-ruler-size\)\] {
3857
3877
  bottom: var(--rv-ruler-size);
3858
3878
  }
@@ -3889,6 +3909,10 @@ video {
3889
3909
  right: 0px;
3890
3910
  }
3891
3911
 
3912
+ .right-1\.5 {
3913
+ right: 0.375rem;
3914
+ }
3915
+
3892
3916
  .right-2 {
3893
3917
  right: 0.5rem;
3894
3918
  }
@@ -3909,6 +3933,10 @@ video {
3909
3933
  top: 0.25rem;
3910
3934
  }
3911
3935
 
3936
+ .top-1\.5 {
3937
+ top: 0.375rem;
3938
+ }
3939
+
3912
3940
  .top-2 {
3913
3941
  top: 0.5rem;
3914
3942
  }
@@ -3917,6 +3945,10 @@ video {
3917
3945
  top: 1rem;
3918
3946
  }
3919
3947
 
3948
+ .top-\[calc\(100\%\+4px\)\] {
3949
+ top: calc(100% + 4px);
3950
+ }
3951
+
3920
3952
  .top-\[calc\(100\%\+6px\)\] {
3921
3953
  top: calc(100% + 6px);
3922
3954
  }
@@ -3929,6 +3961,10 @@ video {
3929
3961
  isolation: isolate;
3930
3962
  }
3931
3963
 
3964
+ .z-10 {
3965
+ z-index: 10;
3966
+ }
3967
+
3932
3968
  .z-20 {
3933
3969
  z-index: 20;
3934
3970
  }
@@ -3941,6 +3977,10 @@ video {
3941
3977
  z-index: 10000;
3942
3978
  }
3943
3979
 
3980
+ .z-\[10090\] {
3981
+ z-index: 10090;
3982
+ }
3983
+
3944
3984
  .z-\[10100\] {
3945
3985
  z-index: 10100;
3946
3986
  }
@@ -3953,6 +3993,14 @@ video {
3953
3993
  z-index: 10150;
3954
3994
  }
3955
3995
 
3996
+ .z-\[10200\] {
3997
+ z-index: 10200;
3998
+ }
3999
+
4000
+ .z-\[10300\] {
4001
+ z-index: 10300;
4002
+ }
4003
+
3956
4004
  .z-\[70\] {
3957
4005
  z-index: 70;
3958
4006
  }
@@ -4194,10 +4242,26 @@ video {
4194
4242
  height: 100%;
4195
4243
  }
4196
4244
 
4245
+ .h-px {
4246
+ height: 1px;
4247
+ }
4248
+
4249
+ .max-h-24 {
4250
+ max-height: 6rem;
4251
+ }
4252
+
4197
4253
  .max-h-28 {
4198
4254
  max-height: 7rem;
4199
4255
  }
4200
4256
 
4257
+ .max-h-32 {
4258
+ max-height: 8rem;
4259
+ }
4260
+
4261
+ .max-h-40 {
4262
+ max-height: 10rem;
4263
+ }
4264
+
4201
4265
  .max-h-44 {
4202
4266
  max-height: 11rem;
4203
4267
  }
@@ -4206,10 +4270,18 @@ video {
4206
4270
  max-height: 13rem;
4207
4271
  }
4208
4272
 
4273
+ .max-h-56 {
4274
+ max-height: 14rem;
4275
+ }
4276
+
4209
4277
  .max-h-\[160px\] {
4210
4278
  max-height: 160px;
4211
4279
  }
4212
4280
 
4281
+ .max-h-\[180px\] {
4282
+ max-height: 180px;
4283
+ }
4284
+
4213
4285
  .max-h-\[200px\] {
4214
4286
  max-height: 200px;
4215
4287
  }
@@ -4218,6 +4290,10 @@ video {
4218
4290
  max-height: 78vh;
4219
4291
  }
4220
4292
 
4293
+ .max-h-\[90vh\] {
4294
+ max-height: 90vh;
4295
+ }
4296
+
4221
4297
  .max-h-\[min\(78vh\2c 560px\)\] {
4222
4298
  max-height: min(78vh, 560px);
4223
4299
  }
@@ -4250,6 +4326,10 @@ video {
4250
4326
  min-height: 68px;
4251
4327
  }
4252
4328
 
4329
+ .min-h-\[min\(62vh\2c 640px\)\] {
4330
+ min-height: min(62vh, 640px);
4331
+ }
4332
+
4253
4333
  .min-h-full {
4254
4334
  min-height: 100%;
4255
4335
  }
@@ -4338,10 +4418,22 @@ video {
4338
4418
  width: 108px;
4339
4419
  }
4340
4420
 
4421
+ .w-\[148px\] {
4422
+ width: 148px;
4423
+ }
4424
+
4425
+ .w-\[168px\] {
4426
+ width: 168px;
4427
+ }
4428
+
4341
4429
  .w-\[220px\] {
4342
4430
  width: 220px;
4343
4431
  }
4344
4432
 
4433
+ .w-\[240px\] {
4434
+ width: 240px;
4435
+ }
4436
+
4345
4437
  .w-\[280px\] {
4346
4438
  width: 280px;
4347
4439
  }
@@ -4354,6 +4446,18 @@ video {
4354
4446
  width: min(94vw, 680px);
4355
4447
  }
4356
4448
 
4449
+ .w-\[min\(96vw\2c 1100px\)\] {
4450
+ width: min(96vw, 1100px);
4451
+ }
4452
+
4453
+ .w-\[min\(96vw\2c 960px\)\] {
4454
+ width: min(96vw, 960px);
4455
+ }
4456
+
4457
+ .w-\[var\(--radix-popover-trigger-width\)\] {
4458
+ width: var(--radix-popover-trigger-width);
4459
+ }
4460
+
4357
4461
  .w-\[var\(--rv-ruler-size\)\] {
4358
4462
  width: var(--rv-ruler-size);
4359
4463
  }
@@ -4390,10 +4494,18 @@ video {
4390
4494
  max-width: 140px;
4391
4495
  }
4392
4496
 
4497
+ .max-w-\[180px\] {
4498
+ max-width: 180px;
4499
+ }
4500
+
4393
4501
  .max-w-\[200px\] {
4394
4502
  max-width: 200px;
4395
4503
  }
4396
4504
 
4505
+ .max-w-\[260px\] {
4506
+ max-width: 260px;
4507
+ }
4508
+
4397
4509
  .max-w-\[360px\] {
4398
4510
  max-width: 360px;
4399
4511
  }
@@ -4426,6 +4538,10 @@ video {
4426
4538
  max-width: 90%;
4427
4539
  }
4428
4540
 
4541
+ .max-w-full {
4542
+ max-width: 100%;
4543
+ }
4544
+
4429
4545
  .max-w-lg {
4430
4546
  max-width: 32rem;
4431
4547
  }
@@ -4469,6 +4585,11 @@ video {
4469
4585
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4470
4586
  }
4471
4587
 
4588
+ .rotate-180 {
4589
+ --tw-rotate: 180deg;
4590
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4591
+ }
4592
+
4472
4593
  .transform {
4473
4594
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4474
4595
  }
@@ -4536,6 +4657,10 @@ video {
4536
4657
  resize: none;
4537
4658
  }
4538
4659
 
4660
+ .resize-y {
4661
+ resize: vertical;
4662
+ }
4663
+
4539
4664
  .resize {
4540
4665
  resize: both;
4541
4666
  }
@@ -4652,6 +4777,11 @@ video {
4652
4777
  gap: 1.25rem;
4653
4778
  }
4654
4779
 
4780
+ .gap-x-2 {
4781
+ -moz-column-gap: 0.5rem;
4782
+ column-gap: 0.5rem;
4783
+ }
4784
+
4655
4785
  .gap-x-4 {
4656
4786
  -moz-column-gap: 1rem;
4657
4787
  column-gap: 1rem;
@@ -4888,10 +5018,18 @@ video {
4888
5018
  border-color: hsl(var(--border) / 0.8);
4889
5019
  }
4890
5020
 
5021
+ .border-destructive {
5022
+ border-color: hsl(var(--destructive));
5023
+ }
5024
+
4891
5025
  .border-destructive\/20 {
4892
5026
  border-color: hsl(var(--destructive) / 0.2);
4893
5027
  }
4894
5028
 
5029
+ .border-destructive\/30 {
5030
+ border-color: hsl(var(--destructive) / 0.3);
5031
+ }
5032
+
4895
5033
  .border-destructive\/40 {
4896
5034
  border-color: hsl(var(--destructive) / 0.4);
4897
5035
  }
@@ -4900,6 +5038,10 @@ video {
4900
5038
  border-color: hsl(var(--destructive) / 0.5);
4901
5039
  }
4902
5040
 
5041
+ .border-destructive\/60 {
5042
+ border-color: hsl(var(--destructive) / 0.6);
5043
+ }
5044
+
4903
5045
  .border-emerald-500\/30 {
4904
5046
  border-color: rgb(16 185 129 / 0.3);
4905
5047
  }
@@ -4917,10 +5059,18 @@ video {
4917
5059
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
4918
5060
  }
4919
5061
 
5062
+ .border-input {
5063
+ border-color: hsl(var(--input));
5064
+ }
5065
+
4920
5066
  .border-primary\/25 {
4921
5067
  border-color: hsl(var(--primary) / 0.25);
4922
5068
  }
4923
5069
 
5070
+ .border-primary\/30 {
5071
+ border-color: hsl(var(--primary) / 0.3);
5072
+ }
5073
+
4924
5074
  .border-primary\/40 {
4925
5075
  border-color: hsl(var(--primary) / 0.4);
4926
5076
  }
@@ -4941,6 +5091,10 @@ video {
4941
5091
  border-color: hsl(var(--primary) / 0.8);
4942
5092
  }
4943
5093
 
5094
+ .border-rose-500\/50 {
5095
+ border-color: rgb(244 63 94 / 0.5);
5096
+ }
5097
+
4944
5098
  .border-sky-500\/40 {
4945
5099
  border-color: rgb(14 165 233 / 0.4);
4946
5100
  }
@@ -5088,6 +5242,10 @@ video {
5088
5242
  background-color: hsl(var(--destructive) / 0.15);
5089
5243
  }
5090
5244
 
5245
+ .bg-destructive\/5 {
5246
+ background-color: hsl(var(--destructive) / 0.05);
5247
+ }
5248
+
5091
5249
  .bg-emerald-500 {
5092
5250
  --tw-bg-opacity: 1;
5093
5251
  background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
@@ -5097,6 +5255,10 @@ video {
5097
5255
  background-color: rgb(16 185 129 / 0.1);
5098
5256
  }
5099
5257
 
5258
+ .bg-emerald-500\/15 {
5259
+ background-color: rgb(16 185 129 / 0.15);
5260
+ }
5261
+
5100
5262
  .bg-muted {
5101
5263
  background-color: hsl(var(--muted));
5102
5264
  }
@@ -5209,6 +5371,10 @@ video {
5209
5371
  background-color: hsl(var(--primary) / 0.9);
5210
5372
  }
5211
5373
 
5374
+ .bg-rose-500\/15 {
5375
+ background-color: rgb(244 63 94 / 0.15);
5376
+ }
5377
+
5212
5378
  .bg-secondary {
5213
5379
  background-color: hsl(var(--secondary));
5214
5380
  }
@@ -5355,6 +5521,10 @@ video {
5355
5521
  padding: 0px;
5356
5522
  }
5357
5523
 
5524
+ .p-0\.5 {
5525
+ padding: 0.125rem;
5526
+ }
5527
+
5358
5528
  .p-1 {
5359
5529
  padding: 0.25rem;
5360
5530
  }
@@ -5475,6 +5645,11 @@ video {
5475
5645
  padding-bottom: 1.75rem;
5476
5646
  }
5477
5647
 
5648
+ .py-8 {
5649
+ padding-top: 2rem;
5650
+ padding-bottom: 2rem;
5651
+ }
5652
+
5478
5653
  .py-px {
5479
5654
  padding-top: 1px;
5480
5655
  padding-bottom: 1px;
@@ -5524,6 +5699,10 @@ video {
5524
5699
  padding-left: 1.25rem;
5525
5700
  }
5526
5701
 
5702
+ .pr-0\.5 {
5703
+ padding-right: 0.125rem;
5704
+ }
5705
+
5527
5706
  .pr-1 {
5528
5707
  padding-right: 0.25rem;
5529
5708
  }
@@ -5564,6 +5743,10 @@ video {
5564
5743
  text-align: center;
5565
5744
  }
5566
5745
 
5746
+ .align-middle {
5747
+ vertical-align: middle;
5748
+ }
5749
+
5567
5750
  .font-mono {
5568
5751
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
5569
5752
  }
@@ -5694,6 +5877,11 @@ video {
5694
5877
  color: rgb(4 120 87 / var(--tw-text-opacity, 1));
5695
5878
  }
5696
5879
 
5880
+ .text-emerald-800 {
5881
+ --tw-text-opacity: 1;
5882
+ color: rgb(6 95 70 / var(--tw-text-opacity, 1));
5883
+ }
5884
+
5697
5885
  .text-foreground {
5698
5886
  color: hsl(var(--foreground));
5699
5887
  }
@@ -5749,6 +5937,11 @@ video {
5749
5937
  color: hsl(var(--primary) / 0.8);
5750
5938
  }
5751
5939
 
5940
+ .text-rose-600 {
5941
+ --tw-text-opacity: 1;
5942
+ color: rgb(225 29 72 / var(--tw-text-opacity, 1));
5943
+ }
5944
+
5752
5945
  .text-secondary-foreground {
5753
5946
  color: hsl(var(--secondary-foreground));
5754
5947
  }
@@ -5833,6 +6026,10 @@ video {
5833
6026
  opacity: 0.6;
5834
6027
  }
5835
6028
 
6029
+ .opacity-90 {
6030
+ opacity: 0.9;
6031
+ }
6032
+
5836
6033
  .shadow {
5837
6034
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
5838
6035
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -6178,6 +6375,10 @@ video {
6178
6375
  background-color: rgb(245 158 11 / 0.15);
6179
6376
  }
6180
6377
 
6378
+ .hover\:bg-destructive\/10:hover {
6379
+ background-color: hsl(var(--destructive) / 0.1);
6380
+ }
6381
+
6181
6382
  .hover\:bg-destructive\/90:hover {
6182
6383
  background-color: hsl(var(--destructive) / 0.9);
6183
6384
  }
@@ -6202,6 +6403,10 @@ video {
6202
6403
  background-color: hsl(var(--primary) / 0.9);
6203
6404
  }
6204
6405
 
6406
+ .hover\:bg-rose-500\/25:hover {
6407
+ background-color: rgb(244 63 94 / 0.25);
6408
+ }
6409
+
6205
6410
  .hover\:bg-secondary\/80:hover {
6206
6411
  background-color: hsl(var(--secondary) / 0.8);
6207
6412
  }
@@ -6270,6 +6475,10 @@ video {
6270
6475
  --tw-ring-color: hsl(var(--primary));
6271
6476
  }
6272
6477
 
6478
+ .focus-visible\:ring-ring:focus-visible {
6479
+ --tw-ring-color: hsl(var(--ring));
6480
+ }
6481
+
6273
6482
  .focus-visible\:ring-offset-0:focus-visible {
6274
6483
  --tw-ring-offset-width: 0px;
6275
6484
  }
@@ -6362,11 +6571,21 @@ video {
6362
6571
  color: rgb(252 211 77 / var(--tw-text-opacity, 1));
6363
6572
  }
6364
6573
 
6574
+ .dark\:text-emerald-200:is(.dark *) {
6575
+ --tw-text-opacity: 1;
6576
+ color: rgb(167 243 208 / var(--tw-text-opacity, 1));
6577
+ }
6578
+
6365
6579
  .dark\:text-emerald-300:is(.dark *) {
6366
6580
  --tw-text-opacity: 1;
6367
6581
  color: rgb(110 231 183 / var(--tw-text-opacity, 1));
6368
6582
  }
6369
6583
 
6584
+ .dark\:text-rose-300:is(.dark *) {
6585
+ --tw-text-opacity: 1;
6586
+ color: rgb(253 164 175 / var(--tw-text-opacity, 1));
6587
+ }
6588
+
6370
6589
  .dark\:text-sky-300:is(.dark *) {
6371
6590
  --tw-text-opacity: 1;
6372
6591
  color: rgb(125 211 252 / var(--tw-text-opacity, 1));
@@ -6400,6 +6619,10 @@ video {
6400
6619
  display: flex;
6401
6620
  }
6402
6621
 
6622
+ .sm\:max-w-\[1100px\] {
6623
+ max-width: 1100px;
6624
+ }
6625
+
6403
6626
  .sm\:max-w-\[520px\] {
6404
6627
  max-width: 520px;
6405
6628
  }
@@ -6408,6 +6631,18 @@ video {
6408
6631
  max-width: 860px;
6409
6632
  }
6410
6633
 
6634
+ .sm\:max-w-\[960px\] {
6635
+ max-width: 960px;
6636
+ }
6637
+
6638
+ .sm\:max-w-md {
6639
+ max-width: 28rem;
6640
+ }
6641
+
6642
+ .sm\:max-w-sm {
6643
+ max-width: 24rem;
6644
+ }
6645
+
6411
6646
  .sm\:grid-cols-2 {
6412
6647
  grid-template-columns: repeat(2, minmax(0, 1fr));
6413
6648
  }
@@ -6416,6 +6651,10 @@ video {
6416
6651
  grid-template-columns: repeat(3, minmax(0, 1fr));
6417
6652
  }
6418
6653
 
6654
+ .sm\:gap-0 {
6655
+ gap: 0px;
6656
+ }
6657
+
6419
6658
  .sm\:space-x-0 > :not([hidden]) ~ :not([hidden]) {
6420
6659
  --tw-space-x-reverse: 0;
6421
6660
  margin-right: calc(0px * var(--tw-space-x-reverse));
@@ -7297,13 +7536,13 @@ svg.react-flow__connectionline {
7297
7536
  .bp-flow.react-flow,
7298
7537
  [data-workspace-region="blueprint"] .react-flow {
7299
7538
  --xy-background-color: transparent;
7300
- --xy-edge-stroke: #2563eb;
7301
- --xy-edge-stroke-width: 2.5;
7302
- --xy-edge-stroke-selected: #1d4ed8;
7303
- --xy-connectionline-stroke: #2563eb;
7304
- --xy-connectionline-stroke-width: 2.5;
7305
- --xy-handle-background-color: hsl(var(--primary));
7306
- --xy-handle-border-color: hsl(var(--background));
7539
+ --xy-edge-stroke: #94a3b8;
7540
+ --xy-edge-stroke-width: 1.75;
7541
+ --xy-edge-stroke-selected: #64748b;
7542
+ --xy-connectionline-stroke: #94a3b8;
7543
+ --xy-connectionline-stroke-width: 1.75;
7544
+ --xy-handle-background-color: #ffffff;
7545
+ --xy-handle-border-color: #94a3b8;
7307
7546
  background-color: transparent;
7308
7547
  }
7309
7548
 
@@ -7359,16 +7598,16 @@ svg.react-flow__connectionline {
7359
7598
  [data-workspace-region="blueprint"] .react-flow__edges path.react-flow__edge-path,
7360
7599
  [data-workspace-region="blueprint"] .react-flow__edges path.bp-edge-visible {
7361
7600
  fill: none !important;
7362
- stroke: #2563eb !important;
7363
- stroke-width: 2.5px !important;
7601
+ stroke: #94a3b8 !important;
7602
+ stroke-width: 1.75px !important;
7364
7603
  opacity: 1 !important;
7365
7604
  }
7366
7605
 
7367
7606
  .bp-canvas .react-flow__edge.selected path.react-flow__edge-path,
7368
7607
  .bp-flow .react-flow__edge.selected path.react-flow__edge-path,
7369
7608
  [data-workspace-region="blueprint"] .react-flow__edge.selected path.react-flow__edge-path {
7370
- stroke: #1d4ed8 !important;
7371
- stroke-width: 3px !important;
7609
+ stroke: #64748b !important;
7610
+ stroke-width: 2.25px !important;
7372
7611
  }
7373
7612
 
7374
7613
  .bp-canvas .react-flow__edge.bp-edge--signal-true path.react-flow__edge-path,
@@ -7416,16 +7655,16 @@ svg.react-flow__connectionline {
7416
7655
  .bp-canvas .react-flow__arrowhead polyline,
7417
7656
  .bp-flow .react-flow__arrowhead polyline,
7418
7657
  [data-workspace-region="blueprint"] .react-flow__arrowhead polyline {
7419
- stroke: #2563eb;
7420
- fill: #2563eb;
7658
+ stroke: #94a3b8;
7659
+ fill: #94a3b8;
7421
7660
  }
7422
7661
 
7423
7662
  .bp-canvas .react-flow__connection-path,
7424
7663
  .bp-flow .react-flow__connection-path,
7425
7664
  [data-workspace-region="blueprint"] .react-flow__connection-path {
7426
7665
  fill: none !important;
7427
- stroke: #2563eb !important;
7428
- stroke-width: 2.5px !important;
7666
+ stroke: #94a3b8 !important;
7667
+ stroke-width: 1.75px !important;
7429
7668
  }
7430
7669
 
7431
7670
  .bp-canvas .react-flow__edge-interaction,
@@ -7454,96 +7693,117 @@ svg.react-flow__connectionline {
7454
7693
  padding: 0;
7455
7694
  }
7456
7695
 
7457
- /* 连接点:禁止 transform,避免覆盖 React Flow 的 translate(-50%, -50%) 定位 */
7696
+ /* 以卡片壳为 handle 定位基准,避免挂到外层导致左右/垂直偏移 */
7697
+
7698
+ .bp-node {
7699
+ position: relative;
7700
+ display: block;
7701
+ width: max-content;
7702
+ min-height: 1px;
7703
+ }
7704
+
7705
+ /* 连接点:显式锚定左右中线(勿覆盖 transform 以外的 RF 行为) */
7458
7706
 
7459
7707
  .bp-canvas .react-flow__handle.bp-flow-handle,
7460
7708
  .bp-flow .react-flow__handle.bp-flow-handle,
7461
7709
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle {
7710
+ position: absolute !important;
7462
7711
  z-index: 3;
7463
- width: 10px;
7464
- height: 10px;
7465
- min-width: 10px;
7466
- min-height: 10px;
7467
- border: 2px solid hsl(var(--background)) !important;
7712
+ width: 8px;
7713
+ height: 8px;
7714
+ min-width: 8px;
7715
+ min-height: 8px;
7716
+ border: 1.5px solid hsl(var(--card)) !important;
7468
7717
  border-radius: 9999px;
7469
- background-color: hsl(var(--foreground) / 0.42) !important;
7718
+ background-color: #ffffff !important;
7719
+ box-shadow: 0 0 0 1px rgb(148 163 184 / 0.55);
7720
+ pointer-events: all !important;
7470
7721
  transition:
7471
7722
  background-color 0.15s ease,
7472
7723
  border-color 0.15s ease,
7473
7724
  box-shadow 0.15s ease;
7474
7725
  }
7475
7726
 
7727
+ .bp-node > .react-flow__handle.react-flow__handle-left,
7728
+ .bp-node > .react-flow__handle[data-handlepos="left"] {
7729
+ top: 50%;
7730
+ left: 0;
7731
+ right: auto;
7732
+ bottom: auto;
7733
+ transform: translate(-50%, -50%);
7734
+ }
7735
+
7736
+ .bp-node > .react-flow__handle.react-flow__handle-right,
7737
+ .bp-node > .react-flow__handle[data-handlepos="right"] {
7738
+ top: 50%;
7739
+ right: 0;
7740
+ left: auto;
7741
+ bottom: auto;
7742
+ transform: translate(50%, -50%);
7743
+ }
7744
+
7476
7745
  .bp-canvas .react-flow__handle.bp-flow-handle:hover,
7477
7746
  .bp-flow .react-flow__handle.bp-flow-handle:hover,
7478
7747
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle:hover {
7479
- background-color: hsl(var(--primary)) !important;
7480
- border-color: hsl(var(--background)) !important;
7481
- box-shadow: 0 0 0 3px hsl(var(--primary) / 0.28);
7748
+ background-color: #ffffff !important;
7749
+ border-color: hsl(var(--primary)) !important;
7750
+ box-shadow: 0 0 0 3px hsl(var(--primary) / 0.22);
7482
7751
  }
7483
7752
 
7484
7753
  .bp-canvas .react-flow__handle.bp-flow-handle--target,
7485
7754
  .bp-flow .react-flow__handle.bp-flow-handle--target,
7486
7755
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle--target {
7487
- background-color: hsl(var(--foreground) / 0.48) !important;
7756
+ background-color: #ffffff !important;
7488
7757
  }
7489
7758
 
7490
7759
  .bp-canvas .react-flow__handle.bp-flow-handle--source,
7491
7760
  .bp-flow .react-flow__handle.bp-flow-handle--source,
7492
7761
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle--source {
7493
- background-color: hsl(var(--primary) / 0.72) !important;
7762
+ background-color: #ffffff !important;
7494
7763
  }
7495
7764
 
7496
7765
  .bp-node--selected .bp-flow-handle {
7497
- border-color: hsl(var(--card)) !important;
7498
- box-shadow: 0 0 0 2px hsl(var(--primary) / 0.35);
7499
- }
7500
-
7501
- .bp-node--selected .bp-flow-handle--target {
7502
- background-color: hsl(var(--foreground) / 0.55) !important;
7766
+ border-color: hsl(var(--primary) / 0.55) !important;
7767
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
7503
7768
  }
7504
7769
 
7770
+ .bp-node--selected .bp-flow-handle--target,
7505
7771
  .bp-node--selected .bp-flow-handle--source {
7506
- background-color: hsl(var(--primary)) !important;
7772
+ background-color: #ffffff !important;
7507
7773
  }
7508
7774
 
7509
7775
  .bp-node--execution-true .bp-node-card {
7510
- border-color: rgb(22 163 74 / 0.65);
7776
+ border-color: rgb(22 163 74 / 0.55);
7511
7777
  box-shadow:
7512
- 0 0 0 1px rgb(22 163 74 / 0.35),
7513
- 0 4px 14px rgb(22 163 74 / 0.18);
7778
+ 0 0 0 1px rgb(22 163 74 / 0.28),
7779
+ 0 8px 24px rgb(22 163 74 / 0.14);
7514
7780
  }
7515
7781
 
7516
7782
  .bp-node--execution-true .bp-flow-handle {
7517
- border-color: hsl(var(--card));
7518
- box-shadow: 0 0 0 2px rgb(22 163 74 / 0.45);
7519
- }
7520
-
7521
- .bp-node--execution-true .bp-flow-handle--source {
7522
- background-color: #16a34a !important;
7783
+ border-color: rgb(22 163 74 / 0.7) !important;
7784
+ box-shadow: 0 0 0 2px rgb(22 163 74 / 0.28);
7523
7785
  }
7524
7786
 
7787
+ .bp-node--execution-true .bp-flow-handle--source,
7525
7788
  .bp-node--execution-true .bp-flow-handle--target {
7526
- background-color: rgb(22 163 74 / 0.55) !important;
7789
+ background-color: #ffffff !important;
7527
7790
  }
7528
7791
 
7529
7792
  .bp-node--execution-false .bp-node-card {
7530
- border-color: hsl(var(--destructive) / 0.65);
7793
+ border-color: hsl(var(--destructive) / 0.55);
7531
7794
  box-shadow:
7532
- 0 0 0 1px hsl(var(--destructive) / 0.4),
7533
- 0 4px 14px hsl(var(--destructive) / 0.16);
7795
+ 0 0 0 1px hsl(var(--destructive) / 0.3),
7796
+ 0 8px 24px hsl(var(--destructive) / 0.12);
7534
7797
  }
7535
7798
 
7536
7799
  .bp-node--execution-false .bp-flow-handle {
7537
- border-color: hsl(var(--card));
7538
- box-shadow: 0 0 0 2px hsl(var(--destructive) / 0.4);
7539
- }
7540
-
7541
- .bp-node--execution-false .bp-flow-handle--source {
7542
- background-color: hsl(var(--destructive)) !important;
7800
+ border-color: hsl(var(--destructive) / 0.65) !important;
7801
+ box-shadow: 0 0 0 2px hsl(var(--destructive) / 0.25);
7543
7802
  }
7544
7803
 
7804
+ .bp-node--execution-false .bp-flow-handle--source,
7545
7805
  .bp-node--execution-false .bp-flow-handle--target {
7546
- background-color: hsl(var(--destructive) / 0.55) !important;
7806
+ background-color: #ffffff !important;
7547
7807
  }
7548
7808
 
7549
7809
  /* 生命周期节点无输入口:隐藏任何左侧/目标连接点(含旧数据产生的幽灵 handle) */
@@ -7616,6 +7876,269 @@ svg.react-flow__connectionline {
7616
7876
  background: hsl(var(--border));
7617
7877
  }
7618
7878
 
7879
+ /* Soft UI 节点卡片(写入 CSS,避免 Tailwind content 未扫到 react-blueprint) */
7880
+
7881
+ .bp-node-card {
7882
+ width: 200px;
7883
+ overflow: hidden;
7884
+ border-radius: 1rem;
7885
+ border: 1px solid hsl(var(--border) / 0.7);
7886
+ background: hsl(var(--card));
7887
+ color: hsl(var(--card-foreground));
7888
+ box-shadow: 0 8px 24px rgb(15 23 42 / 0.08);
7889
+ cursor: grab;
7890
+ transition:
7891
+ box-shadow 0.15s ease,
7892
+ border-color 0.15s ease;
7893
+ }
7894
+
7895
+ .bp-node-card:active {
7896
+ cursor: grabbing;
7897
+ }
7898
+
7899
+ .bp-node-card.bp-node-card--selected {
7900
+ border-color: hsl(var(--primary) / 0.7);
7901
+ box-shadow:
7902
+ 0 0 0 2px hsl(var(--primary) / 0.35),
7903
+ 0 10px 28px hsl(var(--primary) / 0.18);
7904
+ }
7905
+
7906
+ .bp-node-card__body {
7907
+ display: flex;
7908
+ width: 100%;
7909
+ align-items: flex-start;
7910
+ padding: 10px 12px;
7911
+ border: none;
7912
+ background: transparent;
7913
+ color: inherit;
7914
+ text-align: left;
7915
+ cursor: inherit;
7916
+ outline: none;
7917
+ transition: background-color 0.15s ease;
7918
+ }
7919
+
7920
+ .bp-node-card__body:hover {
7921
+ background: hsl(var(--accent) / 0.25);
7922
+ }
7923
+
7924
+ .bp-node-card__body:focus-visible {
7925
+ box-shadow: inset 0 0 0 1px hsl(var(--primary));
7926
+ }
7927
+
7928
+ .bp-node-card__content {
7929
+ min-width: 0;
7930
+ flex: 1;
7931
+ }
7932
+
7933
+ .bp-node-card__title-row {
7934
+ display: flex;
7935
+ align-items: flex-start;
7936
+ gap: 6px;
7937
+ }
7938
+
7939
+ .bp-node-card__title {
7940
+ min-width: 0;
7941
+ flex: 1;
7942
+ overflow: hidden;
7943
+ text-overflow: ellipsis;
7944
+ white-space: nowrap;
7945
+ font-size: 13px;
7946
+ font-weight: 600;
7947
+ line-height: 1.35;
7948
+ color: hsl(var(--foreground));
7949
+ }
7950
+
7951
+ .bp-node-card__meta,
7952
+ .bp-node-card__subtitle {
7953
+ margin-top: 2px;
7954
+ overflow: hidden;
7955
+ text-overflow: ellipsis;
7956
+ white-space: nowrap;
7957
+ line-height: 1.3;
7958
+ color: hsl(var(--muted-foreground));
7959
+ }
7960
+
7961
+ .bp-node-card__meta {
7962
+ font-size: 11px;
7963
+ }
7964
+
7965
+ .bp-node-card__subtitle {
7966
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
7967
+ font-size: 10px;
7968
+ opacity: 0.85;
7969
+ }
7970
+
7971
+ .bp-node-card__badge {
7972
+ flex-shrink: 0;
7973
+ border-radius: 6px;
7974
+ padding: 2px 6px;
7975
+ font-size: 10px;
7976
+ font-weight: 600;
7977
+ line-height: 1;
7978
+ }
7979
+
7980
+ .bp-node-icon {
7981
+ display: flex;
7982
+ flex-shrink: 0;
7983
+ align-items: center;
7984
+ justify-content: center;
7985
+ width: 28px;
7986
+ height: 28px;
7987
+ margin-top: 2px;
7988
+ margin-right: 10px;
7989
+ border-radius: 8px;
7990
+ }
7991
+
7992
+ .bp-node-icon svg {
7993
+ width: 14px;
7994
+ height: 14px;
7995
+ }
7996
+
7997
+ .bp-node-icon--blueprint {
7998
+ background: hsl(var(--primary) / 0.14);
7999
+ color: hsl(var(--primary));
8000
+ }
8001
+
8002
+ .bp-node-icon--view {
8003
+ background: rgb(100 116 139 / 0.18);
8004
+ color: rgb(71 85 105);
8005
+ }
8006
+
8007
+ .bp-node-icon--logic {
8008
+ background: rgb(14 165 233 / 0.15);
8009
+ color: rgb(2 132 199);
8010
+ }
8011
+
8012
+ .bp-node-icon--and {
8013
+ background: rgb(99 102 241 / 0.15);
8014
+ color: rgb(79 70 229);
8015
+ }
8016
+
8017
+ .bp-node-icon--lifecycle {
8018
+ background: rgb(245 158 11 / 0.15);
8019
+ color: rgb(217 119 6);
8020
+ }
8021
+
8022
+ .bp-node-icon--event {
8023
+ background: rgb(217 70 239 / 0.15);
8024
+ color: rgb(192 38 211);
8025
+ }
8026
+
8027
+ .bp-node-icon--fetch {
8028
+ background: rgb(139 92 246 / 0.15);
8029
+ color: rgb(124 58 237);
8030
+ }
8031
+
8032
+ .bp-node-icon--json {
8033
+ background: rgb(20 184 166 / 0.15);
8034
+ color: rgb(13 148 136);
8035
+ }
8036
+
8037
+ .bp-node-icon--storage {
8038
+ background: rgb(16 185 129 / 0.15);
8039
+ color: rgb(5 150 105);
8040
+ }
8041
+
8042
+ .bp-node-icon--clock {
8043
+ background: rgb(244 63 94 / 0.15);
8044
+ color: rgb(225 29 72);
8045
+ }
8046
+
8047
+ .bp-node-card__badge--blueprint {
8048
+ background: hsl(var(--primary) / 0.1);
8049
+ color: hsl(var(--primary));
8050
+ }
8051
+
8052
+ .bp-node-card__badge--view {
8053
+ background: rgb(100 116 139 / 0.12);
8054
+ color: rgb(51 65 85);
8055
+ }
8056
+
8057
+ .bp-node-card__badge--logic {
8058
+ background: rgb(14 165 233 / 0.1);
8059
+ color: rgb(3 105 161);
8060
+ }
8061
+
8062
+ .bp-node-card__badge--and {
8063
+ background: rgb(99 102 241 / 0.1);
8064
+ color: rgb(67 56 202);
8065
+ }
8066
+
8067
+ .bp-node-card__badge--lifecycle {
8068
+ background: rgb(245 158 11 / 0.1);
8069
+ color: rgb(180 83 9);
8070
+ }
8071
+
8072
+ .bp-node-card__badge--event {
8073
+ background: rgb(217 70 239 / 0.1);
8074
+ color: rgb(162 28 175);
8075
+ }
8076
+
8077
+ .bp-node-card__badge--fetch {
8078
+ background: rgb(139 92 246 / 0.1);
8079
+ color: rgb(109 40 217);
8080
+ }
8081
+
8082
+ .bp-node-card__badge--json {
8083
+ background: rgb(20 184 166 / 0.1);
8084
+ color: rgb(15 118 110);
8085
+ }
8086
+
8087
+ .bp-node-card__badge--storage {
8088
+ background: rgb(16 185 129 / 0.1);
8089
+ color: rgb(4 120 87);
8090
+ }
8091
+
8092
+ .bp-node-card__badge--clock {
8093
+ background: rgb(244 63 94 / 0.1);
8094
+ color: rgb(190 18 60);
8095
+ }
8096
+
8097
+ .dark .bp-node-icon--logic,
8098
+ :root.dark .bp-node-icon--logic {
8099
+ color: rgb(125 211 252);
8100
+ }
8101
+
8102
+ .dark .bp-node-icon--view,
8103
+ :root.dark .bp-node-icon--view {
8104
+ color: rgb(203 213 225);
8105
+ }
8106
+
8107
+ .dark .bp-node-icon--and,
8108
+ :root.dark .bp-node-icon--and {
8109
+ color: rgb(165 180 252);
8110
+ }
8111
+
8112
+ .dark .bp-node-icon--lifecycle,
8113
+ :root.dark .bp-node-icon--lifecycle {
8114
+ color: rgb(252 211 77);
8115
+ }
8116
+
8117
+ .dark .bp-node-icon--event,
8118
+ :root.dark .bp-node-icon--event {
8119
+ color: rgb(240 171 252);
8120
+ }
8121
+
8122
+ .dark .bp-node-icon--fetch,
8123
+ :root.dark .bp-node-icon--fetch {
8124
+ color: rgb(196 181 253);
8125
+ }
8126
+
8127
+ .dark .bp-node-icon--json,
8128
+ :root.dark .bp-node-icon--json {
8129
+ color: rgb(94 234 212);
8130
+ }
8131
+
8132
+ .dark .bp-node-icon--storage,
8133
+ :root.dark .bp-node-icon--storage {
8134
+ color: rgb(110 231 183);
8135
+ }
8136
+
8137
+ .dark .bp-node-icon--clock,
8138
+ :root.dark .bp-node-icon--clock {
8139
+ color: rgb(253 164 175);
8140
+ }
8141
+
7619
8142
  /* 宿主应用根节点建议设置 height:100%,与 #app 配合占满视口 */
7620
8143
 
7621
8144
  *,