@w6w/ui 0.1.0 → 0.1.1

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/src/styles.css CHANGED
@@ -1,10 +1,677 @@
1
1
  /* GENERATED FILE — DO NOT EDIT.
2
2
  *
3
- * Compiled from src/styles.scss by scripts/build-css.mjs (`pnpm build:css`).
3
+ * Compiled from src/styles.build.scss by scripts/build-css.mjs (`pnpm build:css`).
4
4
  * Edit the .scss partials under src/styles/ instead; `pnpm check:css` fails
5
5
  * if this file has drifted from them.
6
6
  */
7
7
  @charset "UTF-8";
8
+ /* this gets exported as style.css and can be used for the default theming */
9
+ /* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */
10
+ .react-flow {
11
+ direction: ltr;
12
+ --xy-edge-stroke-default: #b1b1b7;
13
+ --xy-edge-stroke-width-default: 1;
14
+ --xy-edge-stroke-selected-default: #555;
15
+ --xy-connectionline-stroke-default: #b1b1b7;
16
+ --xy-connectionline-stroke-width-default: 1;
17
+ --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);
18
+ --xy-minimap-background-color-default: #fff;
19
+ --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);
20
+ --xy-minimap-mask-stroke-color-default: transparent;
21
+ --xy-minimap-mask-stroke-width-default: 1;
22
+ --xy-minimap-node-background-color-default: #e2e2e2;
23
+ --xy-minimap-node-stroke-color-default: transparent;
24
+ --xy-minimap-node-stroke-width-default: 2;
25
+ --xy-background-color-default: transparent;
26
+ --xy-background-pattern-dots-color-default: #91919a;
27
+ --xy-background-pattern-lines-color-default: #eee;
28
+ --xy-background-pattern-cross-color-default: #e2e2e2;
29
+ background-color: var(--xy-background-color, var(--xy-background-color-default));
30
+ --xy-node-color-default: inherit;
31
+ --xy-node-border-default: 1px solid #1a192b;
32
+ --xy-node-background-color-default: #fff;
33
+ --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
34
+ --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
35
+ --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;
36
+ --xy-node-border-radius-default: 3px;
37
+ --xy-handle-background-color-default: #1a192b;
38
+ --xy-handle-border-color-default: #fff;
39
+ --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);
40
+ --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);
41
+ --xy-controls-button-background-color-default: #fefefe;
42
+ --xy-controls-button-background-color-hover-default: #f4f4f4;
43
+ --xy-controls-button-color-default: inherit;
44
+ --xy-controls-button-color-hover-default: inherit;
45
+ --xy-controls-button-border-color-default: #eee;
46
+ --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
47
+ --xy-edge-label-background-color-default: #ffffff;
48
+ --xy-edge-label-color-default: inherit;
49
+ --xy-resize-background-color-default: #3367d9;
50
+ }
51
+
52
+ .react-flow.dark {
53
+ --xy-edge-stroke-default: #3e3e3e;
54
+ --xy-edge-stroke-width-default: 1;
55
+ --xy-edge-stroke-selected-default: #727272;
56
+ --xy-connectionline-stroke-default: #b1b1b7;
57
+ --xy-connectionline-stroke-width-default: 1;
58
+ --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);
59
+ --xy-minimap-background-color-default: #141414;
60
+ --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);
61
+ --xy-minimap-mask-stroke-color-default: transparent;
62
+ --xy-minimap-mask-stroke-width-default: 1;
63
+ --xy-minimap-node-background-color-default: #2b2b2b;
64
+ --xy-minimap-node-stroke-color-default: transparent;
65
+ --xy-minimap-node-stroke-width-default: 2;
66
+ --xy-background-color-default: #141414;
67
+ --xy-background-pattern-dots-color-default: #777;
68
+ --xy-background-pattern-lines-color-default: #777;
69
+ --xy-background-pattern-cross-color-default: #777;
70
+ --xy-node-color-default: #f8f8f8;
71
+ --xy-node-border-default: 1px solid #3c3c3c;
72
+ --xy-node-background-color-default: #1e1e1e;
73
+ --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
74
+ --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);
75
+ --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;
76
+ --xy-handle-background-color-default: #bebebe;
77
+ --xy-handle-border-color-default: #1e1e1e;
78
+ --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);
79
+ --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);
80
+ --xy-controls-button-background-color-default: #2b2b2b;
81
+ --xy-controls-button-background-color-hover-default: #3e3e3e;
82
+ --xy-controls-button-color-default: #f8f8f8;
83
+ --xy-controls-button-color-hover-default: #fff;
84
+ --xy-controls-button-border-color-default: #5b5b5b;
85
+ --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
86
+ --xy-edge-label-background-color-default: #141414;
87
+ --xy-edge-label-color-default: #f8f8f8;
88
+ }
89
+
90
+ .react-flow__background {
91
+ background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));
92
+ pointer-events: none;
93
+ z-index: -1;
94
+ }
95
+
96
+ .react-flow__container {
97
+ position: absolute;
98
+ width: 100%;
99
+ height: 100%;
100
+ top: 0;
101
+ left: 0;
102
+ }
103
+
104
+ .react-flow__pane {
105
+ z-index: 1;
106
+ touch-action: none;
107
+ }
108
+
109
+ .react-flow__pane.draggable {
110
+ cursor: grab;
111
+ }
112
+
113
+ .react-flow__pane.dragging {
114
+ cursor: grabbing;
115
+ }
116
+
117
+ .react-flow__pane.selection {
118
+ cursor: pointer;
119
+ }
120
+
121
+ .react-flow__viewport {
122
+ transform-origin: 0 0;
123
+ z-index: 2;
124
+ pointer-events: none;
125
+ }
126
+
127
+ .react-flow__renderer {
128
+ z-index: 4;
129
+ }
130
+
131
+ .react-flow__selection {
132
+ z-index: 6;
133
+ }
134
+
135
+ .react-flow__nodesselection-rect:focus,
136
+ .react-flow__nodesselection-rect:focus-visible {
137
+ outline: none;
138
+ }
139
+
140
+ .react-flow__edge-path {
141
+ stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
142
+ stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));
143
+ fill: none;
144
+ }
145
+
146
+ .react-flow__connection-path {
147
+ stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));
148
+ stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));
149
+ fill: none;
150
+ }
151
+
152
+ .react-flow .react-flow__edges {
153
+ position: absolute;
154
+ }
155
+
156
+ .react-flow .react-flow__edges svg {
157
+ overflow: visible;
158
+ position: absolute;
159
+ pointer-events: none;
160
+ }
161
+
162
+ .react-flow__edge {
163
+ pointer-events: visibleStroke;
164
+ }
165
+
166
+ .react-flow__edge.selectable {
167
+ cursor: pointer;
168
+ }
169
+
170
+ .react-flow__edge.animated path {
171
+ stroke-dasharray: 5;
172
+ animation: dashdraw 0.5s linear infinite;
173
+ }
174
+
175
+ .react-flow__edge.animated path.react-flow__edge-interaction {
176
+ stroke-dasharray: none;
177
+ animation: none;
178
+ }
179
+
180
+ .react-flow__edge.inactive {
181
+ pointer-events: none;
182
+ }
183
+
184
+ .react-flow__edge.selected,
185
+ .react-flow__edge:focus,
186
+ .react-flow__edge:focus-visible {
187
+ outline: none;
188
+ }
189
+
190
+ .react-flow__edge.selected .react-flow__edge-path,
191
+ .react-flow__edge.selectable:focus .react-flow__edge-path,
192
+ .react-flow__edge.selectable:focus-visible .react-flow__edge-path {
193
+ stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));
194
+ }
195
+
196
+ .react-flow__edge-textwrapper {
197
+ pointer-events: all;
198
+ }
199
+
200
+ .react-flow__edge .react-flow__edge-text {
201
+ pointer-events: none;
202
+ -webkit-user-select: none;
203
+ -moz-user-select: none;
204
+ user-select: none;
205
+ }
206
+
207
+ /* Arrowhead marker styles - use CSS custom properties as default */
208
+ .react-flow__arrowhead polyline {
209
+ stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
210
+ }
211
+
212
+ .react-flow__arrowhead polyline.arrowclosed {
213
+ fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
214
+ }
215
+
216
+ .react-flow__connection {
217
+ pointer-events: none;
218
+ }
219
+
220
+ .react-flow__connection .animated {
221
+ stroke-dasharray: 5;
222
+ animation: dashdraw 0.5s linear infinite;
223
+ }
224
+
225
+ svg.react-flow__connectionline {
226
+ z-index: 1001;
227
+ overflow: visible;
228
+ position: absolute;
229
+ }
230
+
231
+ .react-flow__nodes {
232
+ pointer-events: none;
233
+ transform-origin: 0 0;
234
+ }
235
+
236
+ .react-flow__node {
237
+ position: absolute;
238
+ -webkit-user-select: none;
239
+ -moz-user-select: none;
240
+ user-select: none;
241
+ pointer-events: all;
242
+ transform-origin: 0 0;
243
+ box-sizing: border-box;
244
+ cursor: default;
245
+ }
246
+
247
+ .react-flow__node.selectable {
248
+ cursor: pointer;
249
+ }
250
+
251
+ .react-flow__node.draggable {
252
+ cursor: grab;
253
+ pointer-events: all;
254
+ }
255
+
256
+ .react-flow__node.draggable.dragging {
257
+ cursor: grabbing;
258
+ }
259
+
260
+ .react-flow__nodesselection {
261
+ z-index: 3;
262
+ transform-origin: left top;
263
+ pointer-events: none;
264
+ }
265
+
266
+ .react-flow__nodesselection-rect {
267
+ position: absolute;
268
+ pointer-events: all;
269
+ cursor: grab;
270
+ }
271
+
272
+ .react-flow__handle {
273
+ position: absolute;
274
+ pointer-events: none;
275
+ min-width: 5px;
276
+ min-height: 5px;
277
+ width: 6px;
278
+ height: 6px;
279
+ background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
280
+ border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
281
+ border-radius: 100%;
282
+ }
283
+
284
+ .react-flow__handle.connectingfrom {
285
+ pointer-events: all;
286
+ }
287
+
288
+ .react-flow__handle.connectionindicator {
289
+ pointer-events: all;
290
+ cursor: crosshair;
291
+ }
292
+
293
+ .react-flow__handle-bottom {
294
+ top: auto;
295
+ left: 50%;
296
+ bottom: 0;
297
+ transform: translate(-50%, 50%);
298
+ }
299
+
300
+ .react-flow__handle-top {
301
+ top: 0;
302
+ left: 50%;
303
+ transform: translate(-50%, -50%);
304
+ }
305
+
306
+ .react-flow__handle-left {
307
+ top: 50%;
308
+ left: 0;
309
+ transform: translate(-50%, -50%);
310
+ }
311
+
312
+ .react-flow__handle-right {
313
+ top: 50%;
314
+ right: 0;
315
+ transform: translate(50%, -50%);
316
+ }
317
+
318
+ .react-flow__edgeupdater {
319
+ cursor: move;
320
+ pointer-events: all;
321
+ }
322
+
323
+ .react-flow__pane.selection .react-flow__panel {
324
+ pointer-events: none;
325
+ }
326
+
327
+ .react-flow__panel {
328
+ position: absolute;
329
+ z-index: 5;
330
+ margin: 15px;
331
+ }
332
+
333
+ .react-flow__panel.top {
334
+ top: 0;
335
+ }
336
+
337
+ .react-flow__panel.bottom {
338
+ bottom: 0;
339
+ }
340
+
341
+ .react-flow__panel.top.center, .react-flow__panel.bottom.center {
342
+ left: 50%;
343
+ transform: translateX(-15px) translateX(-50%);
344
+ }
345
+
346
+ .react-flow__panel.left {
347
+ left: 0;
348
+ }
349
+
350
+ .react-flow__panel.right {
351
+ right: 0;
352
+ }
353
+
354
+ .react-flow__panel.left.center, .react-flow__panel.right.center {
355
+ top: 50%;
356
+ transform: translateY(-15px) translateY(-50%);
357
+ }
358
+
359
+ .react-flow__attribution {
360
+ font-size: 10px;
361
+ background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
362
+ padding: 2px 3px;
363
+ margin: 0;
364
+ }
365
+
366
+ .react-flow__attribution a {
367
+ text-decoration: none;
368
+ color: #999;
369
+ }
370
+
371
+ @keyframes dashdraw {
372
+ from {
373
+ stroke-dashoffset: 10;
374
+ }
375
+ }
376
+ .react-flow__edgelabel-renderer {
377
+ position: absolute;
378
+ width: 100%;
379
+ height: 100%;
380
+ pointer-events: none;
381
+ -webkit-user-select: none;
382
+ -moz-user-select: none;
383
+ user-select: none;
384
+ left: 0;
385
+ top: 0;
386
+ }
387
+
388
+ .react-flow__viewport-portal {
389
+ position: absolute;
390
+ width: 100%;
391
+ height: 100%;
392
+ left: 0;
393
+ top: 0;
394
+ -webkit-user-select: none;
395
+ -moz-user-select: none;
396
+ user-select: none;
397
+ }
398
+
399
+ .react-flow__minimap {
400
+ background: var(--xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)));
401
+ }
402
+
403
+ .react-flow__minimap-svg {
404
+ display: block;
405
+ }
406
+
407
+ .react-flow__minimap-mask {
408
+ fill: var(--xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)));
409
+ stroke: var(--xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)));
410
+ stroke-width: var(--xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)));
411
+ }
412
+
413
+ .react-flow__minimap-node {
414
+ fill: var(--xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)));
415
+ stroke: var(--xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)));
416
+ stroke-width: var(--xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)));
417
+ }
418
+
419
+ .react-flow__background-pattern.dots {
420
+ fill: var(--xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)));
421
+ }
422
+
423
+ .react-flow__background-pattern.lines {
424
+ stroke: var(--xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)));
425
+ }
426
+
427
+ .react-flow__background-pattern.cross {
428
+ stroke: var(--xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)));
429
+ }
430
+
431
+ .react-flow__controls {
432
+ display: flex;
433
+ flex-direction: column;
434
+ box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
435
+ }
436
+
437
+ .react-flow__controls.horizontal {
438
+ flex-direction: row;
439
+ }
440
+
441
+ .react-flow__controls-button {
442
+ display: flex;
443
+ justify-content: center;
444
+ align-items: center;
445
+ height: 26px;
446
+ width: 26px;
447
+ padding: 4px;
448
+ border: none;
449
+ background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
450
+ border-bottom: 1px solid var(--xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)));
451
+ color: var(--xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)));
452
+ cursor: pointer;
453
+ -webkit-user-select: none;
454
+ -moz-user-select: none;
455
+ user-select: none;
456
+ }
457
+
458
+ .react-flow__controls-button svg {
459
+ width: 100%;
460
+ max-width: 12px;
461
+ max-height: 12px;
462
+ fill: currentColor;
463
+ }
464
+
465
+ .react-flow__edge.updating .react-flow__edge-path {
466
+ stroke: #777;
467
+ }
468
+
469
+ .react-flow__edge-text {
470
+ font-size: 10px;
471
+ }
472
+
473
+ .react-flow__node.selectable:focus,
474
+ .react-flow__node.selectable:focus-visible {
475
+ outline: none;
476
+ }
477
+
478
+ .react-flow__node-input,
479
+ .react-flow__node-default,
480
+ .react-flow__node-output,
481
+ .react-flow__node-group {
482
+ padding: 10px;
483
+ border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
484
+ width: 150px;
485
+ font-size: 12px;
486
+ color: var(--xy-node-color, var(--xy-node-color-default));
487
+ text-align: center;
488
+ border: var(--xy-node-border, var(--xy-node-border-default));
489
+ background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
490
+ }
491
+
492
+ .react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {
493
+ box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
494
+ }
495
+
496
+ .react-flow__node-input.selectable.selected,
497
+ .react-flow__node-input.selectable:focus,
498
+ .react-flow__node-input.selectable:focus-visible,
499
+ .react-flow__node-default.selectable.selected,
500
+ .react-flow__node-default.selectable:focus,
501
+ .react-flow__node-default.selectable:focus-visible,
502
+ .react-flow__node-output.selectable.selected,
503
+ .react-flow__node-output.selectable:focus,
504
+ .react-flow__node-output.selectable:focus-visible,
505
+ .react-flow__node-group.selectable.selected,
506
+ .react-flow__node-group.selectable:focus,
507
+ .react-flow__node-group.selectable:focus-visible {
508
+ box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
509
+ }
510
+
511
+ .react-flow__node-group {
512
+ background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
513
+ }
514
+
515
+ .react-flow__nodesselection-rect,
516
+ .react-flow__selection {
517
+ background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
518
+ border: var(--xy-selection-border, var(--xy-selection-border-default));
519
+ }
520
+
521
+ .react-flow__nodesselection-rect:focus,
522
+ .react-flow__nodesselection-rect:focus-visible,
523
+ .react-flow__selection:focus,
524
+ .react-flow__selection:focus-visible {
525
+ outline: none;
526
+ }
527
+
528
+ .react-flow__controls-button:hover {
529
+ background: var(--xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)));
530
+ color: var(--xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)));
531
+ }
532
+
533
+ .react-flow__controls-button:disabled {
534
+ pointer-events: none;
535
+ }
536
+
537
+ .react-flow__controls-button:disabled svg {
538
+ fill-opacity: 0.4;
539
+ }
540
+
541
+ .react-flow__controls-button:last-child {
542
+ border-bottom: none;
543
+ }
544
+
545
+ .react-flow__controls.horizontal .react-flow__controls-button {
546
+ border-bottom: none;
547
+ border-right: 1px solid var(--xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)));
548
+ }
549
+
550
+ .react-flow__controls.horizontal .react-flow__controls-button:last-child {
551
+ border-right: none;
552
+ }
553
+
554
+ .react-flow__resize-control {
555
+ position: absolute;
556
+ }
557
+
558
+ .react-flow__resize-control.left,
559
+ .react-flow__resize-control.right {
560
+ cursor: ew-resize;
561
+ }
562
+
563
+ .react-flow__resize-control.top,
564
+ .react-flow__resize-control.bottom {
565
+ cursor: ns-resize;
566
+ }
567
+
568
+ .react-flow__resize-control.top.left,
569
+ .react-flow__resize-control.bottom.right {
570
+ cursor: nwse-resize;
571
+ }
572
+
573
+ .react-flow__resize-control.bottom.left,
574
+ .react-flow__resize-control.top.right {
575
+ cursor: nesw-resize;
576
+ }
577
+
578
+ /* handle styles */
579
+ .react-flow__resize-control.handle {
580
+ width: 5px;
581
+ height: 5px;
582
+ border: 1px solid #fff;
583
+ border-radius: 1px;
584
+ background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
585
+ translate: -50% -50%;
586
+ }
587
+
588
+ .react-flow__resize-control.handle.left {
589
+ left: 0;
590
+ top: 50%;
591
+ }
592
+
593
+ .react-flow__resize-control.handle.right {
594
+ left: 100%;
595
+ top: 50%;
596
+ }
597
+
598
+ .react-flow__resize-control.handle.top {
599
+ left: 50%;
600
+ top: 0;
601
+ }
602
+
603
+ .react-flow__resize-control.handle.bottom {
604
+ left: 50%;
605
+ top: 100%;
606
+ }
607
+
608
+ .react-flow__resize-control.handle.top.left {
609
+ left: 0;
610
+ }
611
+
612
+ .react-flow__resize-control.handle.bottom.left {
613
+ left: 0;
614
+ }
615
+
616
+ .react-flow__resize-control.handle.top.right {
617
+ left: 100%;
618
+ }
619
+
620
+ .react-flow__resize-control.handle.bottom.right {
621
+ left: 100%;
622
+ }
623
+
624
+ /* line styles */
625
+ .react-flow__resize-control.line {
626
+ border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
627
+ border-width: 0;
628
+ border-style: solid;
629
+ }
630
+
631
+ .react-flow__resize-control.line.left,
632
+ .react-flow__resize-control.line.right {
633
+ width: 1px;
634
+ transform: translate(-50%, 0);
635
+ top: 0;
636
+ height: 100%;
637
+ }
638
+
639
+ .react-flow__resize-control.line.left {
640
+ left: 0;
641
+ border-left-width: 1px;
642
+ }
643
+
644
+ .react-flow__resize-control.line.right {
645
+ left: 100%;
646
+ border-right-width: 1px;
647
+ }
648
+
649
+ .react-flow__resize-control.line.top,
650
+ .react-flow__resize-control.line.bottom {
651
+ height: 1px;
652
+ transform: translate(0, -50%);
653
+ left: 0;
654
+ width: 100%;
655
+ }
656
+
657
+ .react-flow__resize-control.line.top {
658
+ top: 0;
659
+ border-top-width: 1px;
660
+ }
661
+
662
+ .react-flow__resize-control.line.bottom {
663
+ border-bottom-width: 1px;
664
+ top: 100%;
665
+ }
666
+
667
+ .react-flow__edge-textbg {
668
+ fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
669
+ }
670
+
671
+ .react-flow__edge-text {
672
+ fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
673
+ }
674
+
8
675
  /*
9
676
  * @w6w/ui — styles for the pure-presentation components.
10
677
  *
@@ -34,7 +701,6 @@
34
701
  */
35
702
  /* Light — the base defaults. */
36
703
  :where(:root) {
37
- color-scheme: light;
38
704
  --w6w-bg: #f7f8fa;
39
705
  --w6w-panel: #ffffff;
40
706
  --w6w-panel-2: #f0f2f6;
@@ -57,13 +723,13 @@
57
723
  --w6w-code-punctuation: #5f6875;
58
724
  --w6w-code-variable: #953800;
59
725
  --w6w-radius: 10px;
726
+ --w6w-scheme: light;
60
727
  }
61
728
 
62
729
  /* Dark — followed automatically from the OS preference (unless a host has
63
730
  forced a mode via data-theme, which is handled by the blocks below). */
64
731
  @media (prefers-color-scheme: dark) {
65
732
  :where(:root) {
66
- color-scheme: dark;
67
733
  --w6w-bg: #0f1115;
68
734
  --w6w-panel: #181b22;
69
735
  --w6w-panel-2: #1f232c;
@@ -78,6 +744,7 @@
78
744
  --w6w-health-down: var(--w6w-danger);
79
745
  --w6w-health-unknown: #9aa3b2;
80
746
  --w6w-icon-swatch: #1f232c;
747
+ --w6w-scheme: dark;
81
748
  --w6w-code-comment: #7d8797;
82
749
  --w6w-code-keyword: #d2a8ff;
83
750
  --w6w-code-string: #7ee787;
@@ -90,7 +757,7 @@
90
757
  /* Explicit mode. Declared AFTER the media query at equal (zero) specificity, so
91
758
  a forced data-theme always beats the OS preference. */
92
759
  :where([data-theme=light]) {
93
- color-scheme: light;
760
+ --w6w-scheme: light;
94
761
  --w6w-bg: #f7f8fa;
95
762
  --w6w-panel: #ffffff;
96
763
  --w6w-panel-2: #f0f2f6;
@@ -115,7 +782,7 @@
115
782
  }
116
783
 
117
784
  :where([data-theme=dark]) {
118
- color-scheme: dark;
785
+ --w6w-scheme: dark;
119
786
  --w6w-bg: #0f1115;
120
787
  --w6w-panel: #181b22;
121
788
  --w6w-panel-2: #1f232c;
@@ -147,6 +814,25 @@
147
814
  font-size: 0.85em;
148
815
  }
149
816
 
817
+ /* color-scheme — declared on ui COMPONENT ROOTS, never on the host's <html>.
818
+ `color-scheme` inherits and also themes the page canvas, scrollbars and form
819
+ controls, so setting it on :root / [data-theme] let importing this file flip a
820
+ host's whole document. Instead each token block above also sets the
821
+ `--w6w-scheme` custom property (light / dark), which INHERITS, so the nearest
822
+ themed ancestor wins however themes nest (a light panel inside a dark page and
823
+ the reverse). Elements ui renders (any `w6w-` class, which covers the native
824
+ <dialog> modals) and the native controls inside them read it with
825
+ `color-scheme: var(--w6w-scheme)`. Not a hand-picked root list: every ui
826
+ component carries a `w6w-` class. Only an element whose class LIST has a token
827
+ starting `w6w-` matches (`class^=` / `class*=" w6w-"`), so host elements are never
828
+ touched: not a host `data-theme` wrapper, not a host class that merely contains
829
+ `w6w-` (`my-w6w-card`), and not a host element's own color-scheme on inputs nested
830
+ in a ui root (color-scheme inherits, so no descendant rule is needed). Nothing here
831
+ ever matches <html>/:root. All zero specificity. */
832
+ :where([class^=w6w-]:not(:root), [class*=" w6w-"]:not(:root)) {
833
+ color-scheme: var(--w6w-scheme);
834
+ }
835
+
150
836
  /*
151
837
  * @w6w/ui — the spacing / typography scale.
152
838
  *
@@ -2659,10 +3345,10 @@ dialog.w6w-modal.w6w-modal-fullscreen .w6w-modal-header {
2659
3345
  added to that stack later inherits it with no styling of its own.
2660
3346
 
2661
3347
  Custom properties, deliberately, rather than a `.react-flow__controls-button`
2662
- override: `@xyflow/react/dist/style.css` is imported as a side effect from
2663
- WorkflowFlowEditor.tsx, so it rides in the LAZY chunk and is injected *after*
2664
- this stylesheet. A bare class override (0,1,0) would tie with the library's
2665
- own rule and lose on source order. Custom properties inherit and are
3348
+ override: React Flow's own stylesheet is compiled into the same
3349
+ styles.css (`@use` in the build-only styles.build.scss), but cascade
3350
+ order is not something to lean on: a bare class override (0,1,0) would tie
3351
+ with the library's own rule and lose if the order ever changed. Custom properties inherit and are
2666
3352
  order-independent, and scoping them on `.w6w-flow` keeps them off the rest of
2667
3353
  the page.
2668
3354