@arronqzy/abuilder 1.1.34 → 1.1.36

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
@@ -3853,6 +3853,10 @@ video {
3853
3853
  bottom: 0.375rem;
3854
3854
  }
3855
3855
 
3856
+ .bottom-3 {
3857
+ bottom: 0.75rem;
3858
+ }
3859
+
3856
3860
  .bottom-\[var\(--rv-ruler-size\)\] {
3857
3861
  bottom: var(--rv-ruler-size);
3858
3862
  }
@@ -3889,6 +3893,10 @@ video {
3889
3893
  right: 0px;
3890
3894
  }
3891
3895
 
3896
+ .right-1\.5 {
3897
+ right: 0.375rem;
3898
+ }
3899
+
3892
3900
  .right-2 {
3893
3901
  right: 0.5rem;
3894
3902
  }
@@ -3909,6 +3917,10 @@ video {
3909
3917
  top: 0.25rem;
3910
3918
  }
3911
3919
 
3920
+ .top-1\.5 {
3921
+ top: 0.375rem;
3922
+ }
3923
+
3912
3924
  .top-2 {
3913
3925
  top: 0.5rem;
3914
3926
  }
@@ -3917,6 +3929,10 @@ video {
3917
3929
  top: 1rem;
3918
3930
  }
3919
3931
 
3932
+ .top-\[calc\(100\%\+4px\)\] {
3933
+ top: calc(100% + 4px);
3934
+ }
3935
+
3920
3936
  .top-\[calc\(100\%\+6px\)\] {
3921
3937
  top: calc(100% + 6px);
3922
3938
  }
@@ -3929,6 +3945,10 @@ video {
3929
3945
  isolation: isolate;
3930
3946
  }
3931
3947
 
3948
+ .z-10 {
3949
+ z-index: 10;
3950
+ }
3951
+
3932
3952
  .z-20 {
3933
3953
  z-index: 20;
3934
3954
  }
@@ -3941,6 +3961,10 @@ video {
3941
3961
  z-index: 10000;
3942
3962
  }
3943
3963
 
3964
+ .z-\[10090\] {
3965
+ z-index: 10090;
3966
+ }
3967
+
3944
3968
  .z-\[10100\] {
3945
3969
  z-index: 10100;
3946
3970
  }
@@ -3953,6 +3977,14 @@ video {
3953
3977
  z-index: 10150;
3954
3978
  }
3955
3979
 
3980
+ .z-\[10200\] {
3981
+ z-index: 10200;
3982
+ }
3983
+
3984
+ .z-\[10300\] {
3985
+ z-index: 10300;
3986
+ }
3987
+
3956
3988
  .z-\[70\] {
3957
3989
  z-index: 70;
3958
3990
  }
@@ -4194,10 +4226,26 @@ video {
4194
4226
  height: 100%;
4195
4227
  }
4196
4228
 
4229
+ .h-px {
4230
+ height: 1px;
4231
+ }
4232
+
4233
+ .max-h-24 {
4234
+ max-height: 6rem;
4235
+ }
4236
+
4197
4237
  .max-h-28 {
4198
4238
  max-height: 7rem;
4199
4239
  }
4200
4240
 
4241
+ .max-h-32 {
4242
+ max-height: 8rem;
4243
+ }
4244
+
4245
+ .max-h-40 {
4246
+ max-height: 10rem;
4247
+ }
4248
+
4201
4249
  .max-h-44 {
4202
4250
  max-height: 11rem;
4203
4251
  }
@@ -4206,10 +4254,18 @@ video {
4206
4254
  max-height: 13rem;
4207
4255
  }
4208
4256
 
4257
+ .max-h-56 {
4258
+ max-height: 14rem;
4259
+ }
4260
+
4209
4261
  .max-h-\[160px\] {
4210
4262
  max-height: 160px;
4211
4263
  }
4212
4264
 
4265
+ .max-h-\[180px\] {
4266
+ max-height: 180px;
4267
+ }
4268
+
4213
4269
  .max-h-\[200px\] {
4214
4270
  max-height: 200px;
4215
4271
  }
@@ -4218,6 +4274,10 @@ video {
4218
4274
  max-height: 78vh;
4219
4275
  }
4220
4276
 
4277
+ .max-h-\[90vh\] {
4278
+ max-height: 90vh;
4279
+ }
4280
+
4221
4281
  .max-h-\[min\(78vh\2c 560px\)\] {
4222
4282
  max-height: min(78vh, 560px);
4223
4283
  }
@@ -4250,6 +4310,10 @@ video {
4250
4310
  min-height: 68px;
4251
4311
  }
4252
4312
 
4313
+ .min-h-\[min\(62vh\2c 640px\)\] {
4314
+ min-height: min(62vh, 640px);
4315
+ }
4316
+
4253
4317
  .min-h-full {
4254
4318
  min-height: 100%;
4255
4319
  }
@@ -4338,10 +4402,22 @@ video {
4338
4402
  width: 108px;
4339
4403
  }
4340
4404
 
4405
+ .w-\[148px\] {
4406
+ width: 148px;
4407
+ }
4408
+
4409
+ .w-\[168px\] {
4410
+ width: 168px;
4411
+ }
4412
+
4341
4413
  .w-\[220px\] {
4342
4414
  width: 220px;
4343
4415
  }
4344
4416
 
4417
+ .w-\[240px\] {
4418
+ width: 240px;
4419
+ }
4420
+
4345
4421
  .w-\[280px\] {
4346
4422
  width: 280px;
4347
4423
  }
@@ -4354,6 +4430,18 @@ video {
4354
4430
  width: min(94vw, 680px);
4355
4431
  }
4356
4432
 
4433
+ .w-\[min\(96vw\2c 1100px\)\] {
4434
+ width: min(96vw, 1100px);
4435
+ }
4436
+
4437
+ .w-\[min\(96vw\2c 960px\)\] {
4438
+ width: min(96vw, 960px);
4439
+ }
4440
+
4441
+ .w-\[var\(--radix-popover-trigger-width\)\] {
4442
+ width: var(--radix-popover-trigger-width);
4443
+ }
4444
+
4357
4445
  .w-\[var\(--rv-ruler-size\)\] {
4358
4446
  width: var(--rv-ruler-size);
4359
4447
  }
@@ -4390,10 +4478,18 @@ video {
4390
4478
  max-width: 140px;
4391
4479
  }
4392
4480
 
4481
+ .max-w-\[180px\] {
4482
+ max-width: 180px;
4483
+ }
4484
+
4393
4485
  .max-w-\[200px\] {
4394
4486
  max-width: 200px;
4395
4487
  }
4396
4488
 
4489
+ .max-w-\[260px\] {
4490
+ max-width: 260px;
4491
+ }
4492
+
4397
4493
  .max-w-\[360px\] {
4398
4494
  max-width: 360px;
4399
4495
  }
@@ -4426,6 +4522,10 @@ video {
4426
4522
  max-width: 90%;
4427
4523
  }
4428
4524
 
4525
+ .max-w-full {
4526
+ max-width: 100%;
4527
+ }
4528
+
4429
4529
  .max-w-lg {
4430
4530
  max-width: 32rem;
4431
4531
  }
@@ -4469,6 +4569,11 @@ video {
4469
4569
  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
4570
  }
4471
4571
 
4572
+ .rotate-180 {
4573
+ --tw-rotate: 180deg;
4574
+ 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));
4575
+ }
4576
+
4472
4577
  .transform {
4473
4578
  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
4579
  }
@@ -4536,6 +4641,10 @@ video {
4536
4641
  resize: none;
4537
4642
  }
4538
4643
 
4644
+ .resize-y {
4645
+ resize: vertical;
4646
+ }
4647
+
4539
4648
  .resize {
4540
4649
  resize: both;
4541
4650
  }
@@ -4652,6 +4761,11 @@ video {
4652
4761
  gap: 1.25rem;
4653
4762
  }
4654
4763
 
4764
+ .gap-x-2 {
4765
+ -moz-column-gap: 0.5rem;
4766
+ column-gap: 0.5rem;
4767
+ }
4768
+
4655
4769
  .gap-x-4 {
4656
4770
  -moz-column-gap: 1rem;
4657
4771
  column-gap: 1rem;
@@ -4888,10 +5002,18 @@ video {
4888
5002
  border-color: hsl(var(--border) / 0.8);
4889
5003
  }
4890
5004
 
5005
+ .border-destructive {
5006
+ border-color: hsl(var(--destructive));
5007
+ }
5008
+
4891
5009
  .border-destructive\/20 {
4892
5010
  border-color: hsl(var(--destructive) / 0.2);
4893
5011
  }
4894
5012
 
5013
+ .border-destructive\/30 {
5014
+ border-color: hsl(var(--destructive) / 0.3);
5015
+ }
5016
+
4895
5017
  .border-destructive\/40 {
4896
5018
  border-color: hsl(var(--destructive) / 0.4);
4897
5019
  }
@@ -4900,6 +5022,10 @@ video {
4900
5022
  border-color: hsl(var(--destructive) / 0.5);
4901
5023
  }
4902
5024
 
5025
+ .border-destructive\/60 {
5026
+ border-color: hsl(var(--destructive) / 0.6);
5027
+ }
5028
+
4903
5029
  .border-emerald-500\/30 {
4904
5030
  border-color: rgb(16 185 129 / 0.3);
4905
5031
  }
@@ -4917,10 +5043,18 @@ video {
4917
5043
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
4918
5044
  }
4919
5045
 
5046
+ .border-input {
5047
+ border-color: hsl(var(--input));
5048
+ }
5049
+
4920
5050
  .border-primary\/25 {
4921
5051
  border-color: hsl(var(--primary) / 0.25);
4922
5052
  }
4923
5053
 
5054
+ .border-primary\/30 {
5055
+ border-color: hsl(var(--primary) / 0.3);
5056
+ }
5057
+
4924
5058
  .border-primary\/40 {
4925
5059
  border-color: hsl(var(--primary) / 0.4);
4926
5060
  }
@@ -4941,6 +5075,10 @@ video {
4941
5075
  border-color: hsl(var(--primary) / 0.8);
4942
5076
  }
4943
5077
 
5078
+ .border-rose-500\/50 {
5079
+ border-color: rgb(244 63 94 / 0.5);
5080
+ }
5081
+
4944
5082
  .border-sky-500\/40 {
4945
5083
  border-color: rgb(14 165 233 / 0.4);
4946
5084
  }
@@ -5088,6 +5226,10 @@ video {
5088
5226
  background-color: hsl(var(--destructive) / 0.15);
5089
5227
  }
5090
5228
 
5229
+ .bg-destructive\/5 {
5230
+ background-color: hsl(var(--destructive) / 0.05);
5231
+ }
5232
+
5091
5233
  .bg-emerald-500 {
5092
5234
  --tw-bg-opacity: 1;
5093
5235
  background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
@@ -5097,6 +5239,10 @@ video {
5097
5239
  background-color: rgb(16 185 129 / 0.1);
5098
5240
  }
5099
5241
 
5242
+ .bg-emerald-500\/15 {
5243
+ background-color: rgb(16 185 129 / 0.15);
5244
+ }
5245
+
5100
5246
  .bg-muted {
5101
5247
  background-color: hsl(var(--muted));
5102
5248
  }
@@ -5209,6 +5355,10 @@ video {
5209
5355
  background-color: hsl(var(--primary) / 0.9);
5210
5356
  }
5211
5357
 
5358
+ .bg-rose-500\/15 {
5359
+ background-color: rgb(244 63 94 / 0.15);
5360
+ }
5361
+
5212
5362
  .bg-secondary {
5213
5363
  background-color: hsl(var(--secondary));
5214
5364
  }
@@ -5355,6 +5505,10 @@ video {
5355
5505
  padding: 0px;
5356
5506
  }
5357
5507
 
5508
+ .p-0\.5 {
5509
+ padding: 0.125rem;
5510
+ }
5511
+
5358
5512
  .p-1 {
5359
5513
  padding: 0.25rem;
5360
5514
  }
@@ -5475,6 +5629,11 @@ video {
5475
5629
  padding-bottom: 1.75rem;
5476
5630
  }
5477
5631
 
5632
+ .py-8 {
5633
+ padding-top: 2rem;
5634
+ padding-bottom: 2rem;
5635
+ }
5636
+
5478
5637
  .py-px {
5479
5638
  padding-top: 1px;
5480
5639
  padding-bottom: 1px;
@@ -5524,6 +5683,10 @@ video {
5524
5683
  padding-left: 1.25rem;
5525
5684
  }
5526
5685
 
5686
+ .pr-0\.5 {
5687
+ padding-right: 0.125rem;
5688
+ }
5689
+
5527
5690
  .pr-1 {
5528
5691
  padding-right: 0.25rem;
5529
5692
  }
@@ -5694,6 +5857,11 @@ video {
5694
5857
  color: rgb(4 120 87 / var(--tw-text-opacity, 1));
5695
5858
  }
5696
5859
 
5860
+ .text-emerald-800 {
5861
+ --tw-text-opacity: 1;
5862
+ color: rgb(6 95 70 / var(--tw-text-opacity, 1));
5863
+ }
5864
+
5697
5865
  .text-foreground {
5698
5866
  color: hsl(var(--foreground));
5699
5867
  }
@@ -5749,6 +5917,11 @@ video {
5749
5917
  color: hsl(var(--primary) / 0.8);
5750
5918
  }
5751
5919
 
5920
+ .text-rose-600 {
5921
+ --tw-text-opacity: 1;
5922
+ color: rgb(225 29 72 / var(--tw-text-opacity, 1));
5923
+ }
5924
+
5752
5925
  .text-secondary-foreground {
5753
5926
  color: hsl(var(--secondary-foreground));
5754
5927
  }
@@ -5833,6 +6006,10 @@ video {
5833
6006
  opacity: 0.6;
5834
6007
  }
5835
6008
 
6009
+ .opacity-90 {
6010
+ opacity: 0.9;
6011
+ }
6012
+
5836
6013
  .shadow {
5837
6014
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
5838
6015
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -6178,6 +6355,10 @@ video {
6178
6355
  background-color: rgb(245 158 11 / 0.15);
6179
6356
  }
6180
6357
 
6358
+ .hover\:bg-destructive\/10:hover {
6359
+ background-color: hsl(var(--destructive) / 0.1);
6360
+ }
6361
+
6181
6362
  .hover\:bg-destructive\/90:hover {
6182
6363
  background-color: hsl(var(--destructive) / 0.9);
6183
6364
  }
@@ -6202,6 +6383,10 @@ video {
6202
6383
  background-color: hsl(var(--primary) / 0.9);
6203
6384
  }
6204
6385
 
6386
+ .hover\:bg-rose-500\/25:hover {
6387
+ background-color: rgb(244 63 94 / 0.25);
6388
+ }
6389
+
6205
6390
  .hover\:bg-secondary\/80:hover {
6206
6391
  background-color: hsl(var(--secondary) / 0.8);
6207
6392
  }
@@ -6362,11 +6547,21 @@ video {
6362
6547
  color: rgb(252 211 77 / var(--tw-text-opacity, 1));
6363
6548
  }
6364
6549
 
6550
+ .dark\:text-emerald-200:is(.dark *) {
6551
+ --tw-text-opacity: 1;
6552
+ color: rgb(167 243 208 / var(--tw-text-opacity, 1));
6553
+ }
6554
+
6365
6555
  .dark\:text-emerald-300:is(.dark *) {
6366
6556
  --tw-text-opacity: 1;
6367
6557
  color: rgb(110 231 183 / var(--tw-text-opacity, 1));
6368
6558
  }
6369
6559
 
6560
+ .dark\:text-rose-300:is(.dark *) {
6561
+ --tw-text-opacity: 1;
6562
+ color: rgb(253 164 175 / var(--tw-text-opacity, 1));
6563
+ }
6564
+
6370
6565
  .dark\:text-sky-300:is(.dark *) {
6371
6566
  --tw-text-opacity: 1;
6372
6567
  color: rgb(125 211 252 / var(--tw-text-opacity, 1));
@@ -6400,6 +6595,10 @@ video {
6400
6595
  display: flex;
6401
6596
  }
6402
6597
 
6598
+ .sm\:max-w-\[1100px\] {
6599
+ max-width: 1100px;
6600
+ }
6601
+
6403
6602
  .sm\:max-w-\[520px\] {
6404
6603
  max-width: 520px;
6405
6604
  }
@@ -6408,6 +6607,18 @@ video {
6408
6607
  max-width: 860px;
6409
6608
  }
6410
6609
 
6610
+ .sm\:max-w-\[960px\] {
6611
+ max-width: 960px;
6612
+ }
6613
+
6614
+ .sm\:max-w-md {
6615
+ max-width: 28rem;
6616
+ }
6617
+
6618
+ .sm\:max-w-sm {
6619
+ max-width: 24rem;
6620
+ }
6621
+
6411
6622
  .sm\:grid-cols-2 {
6412
6623
  grid-template-columns: repeat(2, minmax(0, 1fr));
6413
6624
  }
@@ -6416,6 +6627,10 @@ video {
6416
6627
  grid-template-columns: repeat(3, minmax(0, 1fr));
6417
6628
  }
6418
6629
 
6630
+ .sm\:gap-0 {
6631
+ gap: 0px;
6632
+ }
6633
+
6419
6634
  .sm\:space-x-0 > :not([hidden]) ~ :not([hidden]) {
6420
6635
  --tw-space-x-reverse: 0;
6421
6636
  margin-right: calc(0px * var(--tw-space-x-reverse));
@@ -7297,13 +7512,13 @@ svg.react-flow__connectionline {
7297
7512
  .bp-flow.react-flow,
7298
7513
  [data-workspace-region="blueprint"] .react-flow {
7299
7514
  --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));
7515
+ --xy-edge-stroke: #94a3b8;
7516
+ --xy-edge-stroke-width: 1.75;
7517
+ --xy-edge-stroke-selected: #64748b;
7518
+ --xy-connectionline-stroke: #94a3b8;
7519
+ --xy-connectionline-stroke-width: 1.75;
7520
+ --xy-handle-background-color: #ffffff;
7521
+ --xy-handle-border-color: #94a3b8;
7307
7522
  background-color: transparent;
7308
7523
  }
7309
7524
 
@@ -7359,16 +7574,16 @@ svg.react-flow__connectionline {
7359
7574
  [data-workspace-region="blueprint"] .react-flow__edges path.react-flow__edge-path,
7360
7575
  [data-workspace-region="blueprint"] .react-flow__edges path.bp-edge-visible {
7361
7576
  fill: none !important;
7362
- stroke: #2563eb !important;
7363
- stroke-width: 2.5px !important;
7577
+ stroke: #94a3b8 !important;
7578
+ stroke-width: 1.75px !important;
7364
7579
  opacity: 1 !important;
7365
7580
  }
7366
7581
 
7367
7582
  .bp-canvas .react-flow__edge.selected path.react-flow__edge-path,
7368
7583
  .bp-flow .react-flow__edge.selected path.react-flow__edge-path,
7369
7584
  [data-workspace-region="blueprint"] .react-flow__edge.selected path.react-flow__edge-path {
7370
- stroke: #1d4ed8 !important;
7371
- stroke-width: 3px !important;
7585
+ stroke: #64748b !important;
7586
+ stroke-width: 2.25px !important;
7372
7587
  }
7373
7588
 
7374
7589
  .bp-canvas .react-flow__edge.bp-edge--signal-true path.react-flow__edge-path,
@@ -7416,16 +7631,16 @@ svg.react-flow__connectionline {
7416
7631
  .bp-canvas .react-flow__arrowhead polyline,
7417
7632
  .bp-flow .react-flow__arrowhead polyline,
7418
7633
  [data-workspace-region="blueprint"] .react-flow__arrowhead polyline {
7419
- stroke: #2563eb;
7420
- fill: #2563eb;
7634
+ stroke: #94a3b8;
7635
+ fill: #94a3b8;
7421
7636
  }
7422
7637
 
7423
7638
  .bp-canvas .react-flow__connection-path,
7424
7639
  .bp-flow .react-flow__connection-path,
7425
7640
  [data-workspace-region="blueprint"] .react-flow__connection-path {
7426
7641
  fill: none !important;
7427
- stroke: #2563eb !important;
7428
- stroke-width: 2.5px !important;
7642
+ stroke: #94a3b8 !important;
7643
+ stroke-width: 1.75px !important;
7429
7644
  }
7430
7645
 
7431
7646
  .bp-canvas .react-flow__edge-interaction,
@@ -7454,96 +7669,117 @@ svg.react-flow__connectionline {
7454
7669
  padding: 0;
7455
7670
  }
7456
7671
 
7457
- /* 连接点:禁止 transform,避免覆盖 React Flow 的 translate(-50%, -50%) 定位 */
7672
+ /* 以卡片壳为 handle 定位基准,避免挂到外层导致左右/垂直偏移 */
7673
+
7674
+ .bp-node {
7675
+ position: relative;
7676
+ display: block;
7677
+ width: max-content;
7678
+ min-height: 1px;
7679
+ }
7680
+
7681
+ /* 连接点:显式锚定左右中线(勿覆盖 transform 以外的 RF 行为) */
7458
7682
 
7459
7683
  .bp-canvas .react-flow__handle.bp-flow-handle,
7460
7684
  .bp-flow .react-flow__handle.bp-flow-handle,
7461
7685
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle {
7686
+ position: absolute !important;
7462
7687
  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;
7688
+ width: 8px;
7689
+ height: 8px;
7690
+ min-width: 8px;
7691
+ min-height: 8px;
7692
+ border: 1.5px solid hsl(var(--card)) !important;
7468
7693
  border-radius: 9999px;
7469
- background-color: hsl(var(--foreground) / 0.42) !important;
7694
+ background-color: #ffffff !important;
7695
+ box-shadow: 0 0 0 1px rgb(148 163 184 / 0.55);
7696
+ pointer-events: all !important;
7470
7697
  transition:
7471
7698
  background-color 0.15s ease,
7472
7699
  border-color 0.15s ease,
7473
7700
  box-shadow 0.15s ease;
7474
7701
  }
7475
7702
 
7703
+ .bp-node > .react-flow__handle.react-flow__handle-left,
7704
+ .bp-node > .react-flow__handle[data-handlepos="left"] {
7705
+ top: 50%;
7706
+ left: 0;
7707
+ right: auto;
7708
+ bottom: auto;
7709
+ transform: translate(-50%, -50%);
7710
+ }
7711
+
7712
+ .bp-node > .react-flow__handle.react-flow__handle-right,
7713
+ .bp-node > .react-flow__handle[data-handlepos="right"] {
7714
+ top: 50%;
7715
+ right: 0;
7716
+ left: auto;
7717
+ bottom: auto;
7718
+ transform: translate(50%, -50%);
7719
+ }
7720
+
7476
7721
  .bp-canvas .react-flow__handle.bp-flow-handle:hover,
7477
7722
  .bp-flow .react-flow__handle.bp-flow-handle:hover,
7478
7723
  [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);
7724
+ background-color: #ffffff !important;
7725
+ border-color: hsl(var(--primary)) !important;
7726
+ box-shadow: 0 0 0 3px hsl(var(--primary) / 0.22);
7482
7727
  }
7483
7728
 
7484
7729
  .bp-canvas .react-flow__handle.bp-flow-handle--target,
7485
7730
  .bp-flow .react-flow__handle.bp-flow-handle--target,
7486
7731
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle--target {
7487
- background-color: hsl(var(--foreground) / 0.48) !important;
7732
+ background-color: #ffffff !important;
7488
7733
  }
7489
7734
 
7490
7735
  .bp-canvas .react-flow__handle.bp-flow-handle--source,
7491
7736
  .bp-flow .react-flow__handle.bp-flow-handle--source,
7492
7737
  [data-workspace-region="blueprint"] .react-flow__handle.bp-flow-handle--source {
7493
- background-color: hsl(var(--primary) / 0.72) !important;
7738
+ background-color: #ffffff !important;
7494
7739
  }
7495
7740
 
7496
7741
  .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;
7742
+ border-color: hsl(var(--primary) / 0.55) !important;
7743
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
7503
7744
  }
7504
7745
 
7746
+ .bp-node--selected .bp-flow-handle--target,
7505
7747
  .bp-node--selected .bp-flow-handle--source {
7506
- background-color: hsl(var(--primary)) !important;
7748
+ background-color: #ffffff !important;
7507
7749
  }
7508
7750
 
7509
7751
  .bp-node--execution-true .bp-node-card {
7510
- border-color: rgb(22 163 74 / 0.65);
7752
+ border-color: rgb(22 163 74 / 0.55);
7511
7753
  box-shadow:
7512
- 0 0 0 1px rgb(22 163 74 / 0.35),
7513
- 0 4px 14px rgb(22 163 74 / 0.18);
7754
+ 0 0 0 1px rgb(22 163 74 / 0.28),
7755
+ 0 8px 24px rgb(22 163 74 / 0.14);
7514
7756
  }
7515
7757
 
7516
7758
  .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;
7759
+ border-color: rgb(22 163 74 / 0.7) !important;
7760
+ box-shadow: 0 0 0 2px rgb(22 163 74 / 0.28);
7523
7761
  }
7524
7762
 
7763
+ .bp-node--execution-true .bp-flow-handle--source,
7525
7764
  .bp-node--execution-true .bp-flow-handle--target {
7526
- background-color: rgb(22 163 74 / 0.55) !important;
7765
+ background-color: #ffffff !important;
7527
7766
  }
7528
7767
 
7529
7768
  .bp-node--execution-false .bp-node-card {
7530
- border-color: hsl(var(--destructive) / 0.65);
7769
+ border-color: hsl(var(--destructive) / 0.55);
7531
7770
  box-shadow:
7532
- 0 0 0 1px hsl(var(--destructive) / 0.4),
7533
- 0 4px 14px hsl(var(--destructive) / 0.16);
7771
+ 0 0 0 1px hsl(var(--destructive) / 0.3),
7772
+ 0 8px 24px hsl(var(--destructive) / 0.12);
7534
7773
  }
7535
7774
 
7536
7775
  .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;
7776
+ border-color: hsl(var(--destructive) / 0.65) !important;
7777
+ box-shadow: 0 0 0 2px hsl(var(--destructive) / 0.25);
7543
7778
  }
7544
7779
 
7780
+ .bp-node--execution-false .bp-flow-handle--source,
7545
7781
  .bp-node--execution-false .bp-flow-handle--target {
7546
- background-color: hsl(var(--destructive) / 0.55) !important;
7782
+ background-color: #ffffff !important;
7547
7783
  }
7548
7784
 
7549
7785
  /* 生命周期节点无输入口:隐藏任何左侧/目标连接点(含旧数据产生的幽灵 handle) */
@@ -7616,6 +7852,269 @@ svg.react-flow__connectionline {
7616
7852
  background: hsl(var(--border));
7617
7853
  }
7618
7854
 
7855
+ /* Soft UI 节点卡片(写入 CSS,避免 Tailwind content 未扫到 react-blueprint) */
7856
+
7857
+ .bp-node-card {
7858
+ width: 200px;
7859
+ overflow: hidden;
7860
+ border-radius: 1rem;
7861
+ border: 1px solid hsl(var(--border) / 0.7);
7862
+ background: hsl(var(--card));
7863
+ color: hsl(var(--card-foreground));
7864
+ box-shadow: 0 8px 24px rgb(15 23 42 / 0.08);
7865
+ cursor: grab;
7866
+ transition:
7867
+ box-shadow 0.15s ease,
7868
+ border-color 0.15s ease;
7869
+ }
7870
+
7871
+ .bp-node-card:active {
7872
+ cursor: grabbing;
7873
+ }
7874
+
7875
+ .bp-node-card.bp-node-card--selected {
7876
+ border-color: hsl(var(--primary) / 0.7);
7877
+ box-shadow:
7878
+ 0 0 0 2px hsl(var(--primary) / 0.35),
7879
+ 0 10px 28px hsl(var(--primary) / 0.18);
7880
+ }
7881
+
7882
+ .bp-node-card__body {
7883
+ display: flex;
7884
+ width: 100%;
7885
+ align-items: flex-start;
7886
+ padding: 10px 12px;
7887
+ border: none;
7888
+ background: transparent;
7889
+ color: inherit;
7890
+ text-align: left;
7891
+ cursor: inherit;
7892
+ outline: none;
7893
+ transition: background-color 0.15s ease;
7894
+ }
7895
+
7896
+ .bp-node-card__body:hover {
7897
+ background: hsl(var(--accent) / 0.25);
7898
+ }
7899
+
7900
+ .bp-node-card__body:focus-visible {
7901
+ box-shadow: inset 0 0 0 1px hsl(var(--primary));
7902
+ }
7903
+
7904
+ .bp-node-card__content {
7905
+ min-width: 0;
7906
+ flex: 1;
7907
+ }
7908
+
7909
+ .bp-node-card__title-row {
7910
+ display: flex;
7911
+ align-items: flex-start;
7912
+ gap: 6px;
7913
+ }
7914
+
7915
+ .bp-node-card__title {
7916
+ min-width: 0;
7917
+ flex: 1;
7918
+ overflow: hidden;
7919
+ text-overflow: ellipsis;
7920
+ white-space: nowrap;
7921
+ font-size: 13px;
7922
+ font-weight: 600;
7923
+ line-height: 1.35;
7924
+ color: hsl(var(--foreground));
7925
+ }
7926
+
7927
+ .bp-node-card__meta,
7928
+ .bp-node-card__subtitle {
7929
+ margin-top: 2px;
7930
+ overflow: hidden;
7931
+ text-overflow: ellipsis;
7932
+ white-space: nowrap;
7933
+ line-height: 1.3;
7934
+ color: hsl(var(--muted-foreground));
7935
+ }
7936
+
7937
+ .bp-node-card__meta {
7938
+ font-size: 11px;
7939
+ }
7940
+
7941
+ .bp-node-card__subtitle {
7942
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
7943
+ font-size: 10px;
7944
+ opacity: 0.85;
7945
+ }
7946
+
7947
+ .bp-node-card__badge {
7948
+ flex-shrink: 0;
7949
+ border-radius: 6px;
7950
+ padding: 2px 6px;
7951
+ font-size: 10px;
7952
+ font-weight: 600;
7953
+ line-height: 1;
7954
+ }
7955
+
7956
+ .bp-node-icon {
7957
+ display: flex;
7958
+ flex-shrink: 0;
7959
+ align-items: center;
7960
+ justify-content: center;
7961
+ width: 28px;
7962
+ height: 28px;
7963
+ margin-top: 2px;
7964
+ margin-right: 10px;
7965
+ border-radius: 8px;
7966
+ }
7967
+
7968
+ .bp-node-icon svg {
7969
+ width: 14px;
7970
+ height: 14px;
7971
+ }
7972
+
7973
+ .bp-node-icon--blueprint {
7974
+ background: hsl(var(--primary) / 0.14);
7975
+ color: hsl(var(--primary));
7976
+ }
7977
+
7978
+ .bp-node-icon--view {
7979
+ background: rgb(100 116 139 / 0.18);
7980
+ color: rgb(71 85 105);
7981
+ }
7982
+
7983
+ .bp-node-icon--logic {
7984
+ background: rgb(14 165 233 / 0.15);
7985
+ color: rgb(2 132 199);
7986
+ }
7987
+
7988
+ .bp-node-icon--and {
7989
+ background: rgb(99 102 241 / 0.15);
7990
+ color: rgb(79 70 229);
7991
+ }
7992
+
7993
+ .bp-node-icon--lifecycle {
7994
+ background: rgb(245 158 11 / 0.15);
7995
+ color: rgb(217 119 6);
7996
+ }
7997
+
7998
+ .bp-node-icon--event {
7999
+ background: rgb(217 70 239 / 0.15);
8000
+ color: rgb(192 38 211);
8001
+ }
8002
+
8003
+ .bp-node-icon--fetch {
8004
+ background: rgb(139 92 246 / 0.15);
8005
+ color: rgb(124 58 237);
8006
+ }
8007
+
8008
+ .bp-node-icon--json {
8009
+ background: rgb(20 184 166 / 0.15);
8010
+ color: rgb(13 148 136);
8011
+ }
8012
+
8013
+ .bp-node-icon--storage {
8014
+ background: rgb(16 185 129 / 0.15);
8015
+ color: rgb(5 150 105);
8016
+ }
8017
+
8018
+ .bp-node-icon--clock {
8019
+ background: rgb(244 63 94 / 0.15);
8020
+ color: rgb(225 29 72);
8021
+ }
8022
+
8023
+ .bp-node-card__badge--blueprint {
8024
+ background: hsl(var(--primary) / 0.1);
8025
+ color: hsl(var(--primary));
8026
+ }
8027
+
8028
+ .bp-node-card__badge--view {
8029
+ background: rgb(100 116 139 / 0.12);
8030
+ color: rgb(51 65 85);
8031
+ }
8032
+
8033
+ .bp-node-card__badge--logic {
8034
+ background: rgb(14 165 233 / 0.1);
8035
+ color: rgb(3 105 161);
8036
+ }
8037
+
8038
+ .bp-node-card__badge--and {
8039
+ background: rgb(99 102 241 / 0.1);
8040
+ color: rgb(67 56 202);
8041
+ }
8042
+
8043
+ .bp-node-card__badge--lifecycle {
8044
+ background: rgb(245 158 11 / 0.1);
8045
+ color: rgb(180 83 9);
8046
+ }
8047
+
8048
+ .bp-node-card__badge--event {
8049
+ background: rgb(217 70 239 / 0.1);
8050
+ color: rgb(162 28 175);
8051
+ }
8052
+
8053
+ .bp-node-card__badge--fetch {
8054
+ background: rgb(139 92 246 / 0.1);
8055
+ color: rgb(109 40 217);
8056
+ }
8057
+
8058
+ .bp-node-card__badge--json {
8059
+ background: rgb(20 184 166 / 0.1);
8060
+ color: rgb(15 118 110);
8061
+ }
8062
+
8063
+ .bp-node-card__badge--storage {
8064
+ background: rgb(16 185 129 / 0.1);
8065
+ color: rgb(4 120 87);
8066
+ }
8067
+
8068
+ .bp-node-card__badge--clock {
8069
+ background: rgb(244 63 94 / 0.1);
8070
+ color: rgb(190 18 60);
8071
+ }
8072
+
8073
+ .dark .bp-node-icon--logic,
8074
+ :root.dark .bp-node-icon--logic {
8075
+ color: rgb(125 211 252);
8076
+ }
8077
+
8078
+ .dark .bp-node-icon--view,
8079
+ :root.dark .bp-node-icon--view {
8080
+ color: rgb(203 213 225);
8081
+ }
8082
+
8083
+ .dark .bp-node-icon--and,
8084
+ :root.dark .bp-node-icon--and {
8085
+ color: rgb(165 180 252);
8086
+ }
8087
+
8088
+ .dark .bp-node-icon--lifecycle,
8089
+ :root.dark .bp-node-icon--lifecycle {
8090
+ color: rgb(252 211 77);
8091
+ }
8092
+
8093
+ .dark .bp-node-icon--event,
8094
+ :root.dark .bp-node-icon--event {
8095
+ color: rgb(240 171 252);
8096
+ }
8097
+
8098
+ .dark .bp-node-icon--fetch,
8099
+ :root.dark .bp-node-icon--fetch {
8100
+ color: rgb(196 181 253);
8101
+ }
8102
+
8103
+ .dark .bp-node-icon--json,
8104
+ :root.dark .bp-node-icon--json {
8105
+ color: rgb(94 234 212);
8106
+ }
8107
+
8108
+ .dark .bp-node-icon--storage,
8109
+ :root.dark .bp-node-icon--storage {
8110
+ color: rgb(110 231 183);
8111
+ }
8112
+
8113
+ .dark .bp-node-icon--clock,
8114
+ :root.dark .bp-node-icon--clock {
8115
+ color: rgb(253 164 175);
8116
+ }
8117
+
7619
8118
  /* 宿主应用根节点建议设置 height:100%,与 #app 配合占满视口 */
7620
8119
 
7621
8120
  *,