@ai-digital-factory/state-flow 0.0.0-stage → 0.1.0

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.
@@ -0,0 +1,716 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --sf-ink: #f1f3f6;
4
+ --sf-muted: #98a1ad;
5
+ --sf-paper: #0e1016;
6
+ --sf-panel: #171a22;
7
+ --sf-line: #2d333f;
8
+ --sf-accent: #f59e0b;
9
+ --sf-accent-strong: #fbbf24;
10
+ --sf-selected: #2a2214;
11
+ --sf-glow: rgba(251, 191, 36, 0.42);
12
+ --sf-warning: #fbbf24;
13
+ --sf-warning-muted: #3d2f10;
14
+ --sf-warning-ink: #fef3c7;
15
+ }
16
+
17
+ .sf-root {
18
+ color: var(--sf-ink);
19
+ font:
20
+ 17px/1.6 system-ui,
21
+ -apple-system,
22
+ BlinkMacSystemFont,
23
+ "Segoe UI",
24
+ sans-serif;
25
+ background: var(--sf-paper);
26
+ padding: 24px;
27
+ border-radius: 8px;
28
+ }
29
+
30
+ .sf-root * {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ .sf-root button {
35
+ font: inherit;
36
+ color: var(--sf-ink);
37
+ background: var(--sf-panel);
38
+ border: 1px solid var(--sf-line);
39
+ border-radius: 5px;
40
+ min-height: 44px;
41
+ cursor: pointer;
42
+ padding: 10px 14px;
43
+ text-align: left;
44
+ }
45
+
46
+ .sf-root button:hover {
47
+ border-color: var(--sf-accent);
48
+ }
49
+
50
+ .sf-root :focus-visible {
51
+ outline: 2px solid var(--sf-accent);
52
+ outline-offset: 3px;
53
+ }
54
+
55
+ .sf-root button[aria-pressed="true"],
56
+ .sf-root button[aria-selected="true"] {
57
+ background: var(--sf-selected);
58
+ border-color: var(--sf-accent);
59
+ }
60
+
61
+ .sf-eyebrow {
62
+ font-size: 13px;
63
+ color: var(--sf-accent);
64
+ margin: 0 0 8px;
65
+ }
66
+
67
+ .sf-intro {
68
+ max-width: 760px;
69
+ margin: 0 0 24px;
70
+ }
71
+
72
+ .sf-machine-tabs {
73
+ margin-top: 8px;
74
+ }
75
+
76
+ .sf-tablist {
77
+ display: flex;
78
+ gap: 0;
79
+ margin: 0 0 20px;
80
+ border: 1px solid var(--sf-line);
81
+ border-radius: 6px;
82
+ overflow: hidden;
83
+ width: fit-content;
84
+ max-width: 100%;
85
+ }
86
+
87
+ .sf-tab {
88
+ flex: 1;
89
+ min-width: 120px;
90
+ padding: 12px 22px;
91
+ text-align: center;
92
+ font-size: 15px;
93
+ font-weight: 500;
94
+ background: var(--sf-paper);
95
+ border: none;
96
+ border-right: 1px solid var(--sf-line);
97
+ border-radius: 0;
98
+ min-height: 44px;
99
+ }
100
+
101
+ .sf-tab:last-child {
102
+ border-right: none;
103
+ }
104
+
105
+ .sf-tab[aria-selected="true"] {
106
+ background: var(--sf-selected);
107
+ color: var(--sf-ink);
108
+ }
109
+
110
+ .sf-tabpanel {
111
+ min-width: 0;
112
+ }
113
+
114
+ .sf-details-lede {
115
+ font-size: 15px;
116
+ color: var(--sf-muted);
117
+ max-width: 680px;
118
+ margin: 0 0 20px;
119
+ }
120
+
121
+ .sf-chart-page-header {
122
+ display: flex;
123
+ align-items: flex-start;
124
+ gap: 14px;
125
+ margin-bottom: 1.25rem;
126
+ }
127
+
128
+ .sf-chart-page-header-icon {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ width: 52px;
133
+ height: 52px;
134
+ border-radius: 12px;
135
+ border: 1px solid color-mix(in srgb, var(--sf-accent) 35%, var(--sf-line));
136
+ background: color-mix(in srgb, var(--sf-selected) 70%, var(--sf-panel));
137
+ color: var(--sf-accent-strong);
138
+ flex-shrink: 0;
139
+ }
140
+
141
+ .sf-chart-page-header-text {
142
+ min-width: 0;
143
+ }
144
+
145
+ .sf-chart-page-header .sf-title {
146
+ margin: 0 0 0.35rem;
147
+ }
148
+
149
+ .sf-chart-page-header .sf-intro {
150
+ margin: 0;
151
+ }
152
+
153
+ .sf-diagram-workspace {
154
+ display: grid;
155
+ gap: 1rem;
156
+ align-items: start;
157
+ }
158
+
159
+ @media (min-width: 960px) {
160
+ .sf-diagram-workspace {
161
+ grid-template-columns: minmax(0, 1.45fr) minmax(280px, 360px);
162
+ gap: 1.15rem;
163
+ }
164
+ }
165
+
166
+ .sf-diagram-workspace-aside {
167
+ display: grid;
168
+ gap: 0.85rem;
169
+ align-content: start;
170
+ }
171
+
172
+ .sf-diagram-overview {
173
+ margin: 0;
174
+ padding: 16px 18px 18px;
175
+ border: 1px solid var(--sf-line);
176
+ border-radius: 12px;
177
+ background: color-mix(in srgb, var(--sf-panel) 95%, black);
178
+ max-width: none;
179
+ }
180
+
181
+ .sf-diagram-overview-label {
182
+ font-size: 13px;
183
+ color: var(--sf-muted);
184
+ margin: 0 0 6px;
185
+ text-transform: uppercase;
186
+ letter-spacing: 0.08em;
187
+ }
188
+
189
+ .sf-diagram-overview-hint {
190
+ font-size: 14px;
191
+ color: var(--sf-muted);
192
+ margin: 0;
193
+ max-width: 680px;
194
+ }
195
+
196
+ .sf-diagram-overview-header {
197
+ display: flex;
198
+ flex-wrap: wrap;
199
+ align-items: flex-start;
200
+ justify-content: space-between;
201
+ gap: 12px 16px;
202
+ margin-bottom: 14px;
203
+ }
204
+
205
+ .sf-diagram-overview-zoom {
206
+ display: inline-flex;
207
+ align-items: center;
208
+ gap: 6px;
209
+ flex-shrink: 0;
210
+ padding: 6px 8px;
211
+ border: 1px solid var(--sf-line);
212
+ border-radius: 8px;
213
+ background: var(--sf-panel);
214
+ }
215
+
216
+ .sf-diagram-zoom-btn {
217
+ font: inherit;
218
+ font-size: 20px;
219
+ font-weight: 600;
220
+ line-height: 1;
221
+ min-width: 40px;
222
+ min-height: 40px;
223
+ padding: 0 12px;
224
+ border: 1px solid var(--sf-line);
225
+ border-radius: 6px;
226
+ background: var(--sf-paper);
227
+ color: var(--sf-ink);
228
+ cursor: pointer;
229
+ box-shadow: 0 1px 0 color-mix(in srgb, var(--sf-line) 80%, transparent);
230
+ }
231
+
232
+ .sf-diagram-zoom-btn:hover:not(:disabled) {
233
+ border-color: var(--sf-accent);
234
+ color: var(--sf-accent);
235
+ }
236
+
237
+ .sf-diagram-zoom-btn:disabled {
238
+ opacity: 0.45;
239
+ cursor: not-allowed;
240
+ }
241
+
242
+ .sf-diagram-zoom-level {
243
+ font-size: 13px;
244
+ color: var(--sf-muted);
245
+ min-width: 3.25rem;
246
+ text-align: center;
247
+ font-variant-numeric: tabular-nums;
248
+ }
249
+
250
+ .sf-diagram-reset-btn {
251
+ font-size: 13px;
252
+ font-weight: 500;
253
+ min-width: auto;
254
+ padding: 0 10px;
255
+ }
256
+
257
+ .sf-diagram-overview-viewport {
258
+ overflow: hidden;
259
+ max-width: 100%;
260
+ max-height: min(72vh, 640px);
261
+ padding: 8px 4px 12px;
262
+ border: 1px solid color-mix(in srgb, var(--sf-line) 65%, transparent);
263
+ border-radius: 4px;
264
+ background: color-mix(in srgb, var(--sf-paper) 40%, transparent);
265
+ cursor: grab;
266
+ touch-action: none;
267
+ user-select: none;
268
+ }
269
+
270
+ .sf-diagram-overview-viewport.is-panning {
271
+ cursor: grabbing;
272
+ }
273
+
274
+ .sf-diagram-overview-figure {
275
+ overflow: visible;
276
+ width: max-content;
277
+ min-width: 100%;
278
+ padding: 4px 8px 8px;
279
+ transform-origin: top left;
280
+ }
281
+
282
+ .sf-diagram-overview-figure svg {
283
+ display: block;
284
+ width: auto;
285
+ min-width: min(100%, 520px);
286
+ height: auto;
287
+ margin: 0;
288
+ overflow: visible;
289
+ }
290
+
291
+ .sf-flow-svg .flow-edge {
292
+ stroke-linecap: square;
293
+ stroke-linejoin: miter;
294
+ opacity: 0.95;
295
+ transition:
296
+ opacity 0.15s ease,
297
+ stroke-width 0.15s ease;
298
+ }
299
+
300
+ .sf-flow-svg.has-edge-selection .flow-edge:not(.is-selected) {
301
+ opacity: 0.28;
302
+ }
303
+
304
+ .sf-flow-svg .flow-edge.is-selected {
305
+ stroke: var(--sf-accent-strong);
306
+ stroke-width: 3.75;
307
+ opacity: 1;
308
+ }
309
+
310
+ .sf-flow-svg .flow-edge.is-guard-blocked {
311
+ stroke: var(--sf-warning);
312
+ stroke-width: 3.75;
313
+ opacity: 1;
314
+ filter: drop-shadow(
315
+ 0 0 10px color-mix(in srgb, var(--sf-warning) 65%, transparent)
316
+ );
317
+ }
318
+
319
+ .sf-flow-svg.has-edge-selection .flow-edge.is-guard-blocked,
320
+ .sf-flow-svg.has-edge-selection .flow-edge.is-guard-blocked.is-selected {
321
+ stroke: var(--sf-warning);
322
+ opacity: 1;
323
+ filter: drop-shadow(
324
+ 0 0 10px color-mix(in srgb, var(--sf-warning) 75%, transparent)
325
+ );
326
+ }
327
+
328
+ .sf-flow-svg .overview-edge-hit.is-guard-blocked .overview-edge-badge,
329
+ .sf-flow-svg
330
+ .overview-edge-hit.is-guard-blocked.is-selected
331
+ .overview-edge-badge {
332
+ fill: var(--sf-warning-muted);
333
+ stroke: var(--sf-warning);
334
+ stroke-width: 3;
335
+ filter: drop-shadow(
336
+ 0 0 8px color-mix(in srgb, var(--sf-warning) 55%, transparent)
337
+ );
338
+ }
339
+
340
+ .sf-flow-svg .overview-edge-hit.is-guard-blocked text,
341
+ .sf-flow-svg .overview-edge-hit.is-guard-blocked.is-selected text {
342
+ fill: var(--sf-warning-ink);
343
+ }
344
+
345
+ .sf-overview-edge-detail.is-guard-blocked {
346
+ border-color: var(--sf-warning);
347
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--sf-warning) 35%, transparent);
348
+ }
349
+
350
+ .sf-overview-guard-blocked-note {
351
+ margin: 0 0 8px;
352
+ font-size: 14px;
353
+ font-weight: 600;
354
+ color: var(--sf-warning);
355
+ }
356
+
357
+ .sf-flow-svg .overview-edge-badge {
358
+ filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.4));
359
+ }
360
+
361
+ .sf-flow-svg .overview-edge-badge + text {
362
+ letter-spacing: 0.01em;
363
+ }
364
+
365
+ .sf-flow-svg .overview-edge-hit {
366
+ cursor: pointer;
367
+ outline: none;
368
+ }
369
+
370
+ .sf-flow-svg .overview-edge-hit:focus-visible .overview-edge-badge {
371
+ stroke-width: 3;
372
+ filter: drop-shadow(0 0 4px var(--sf-glow));
373
+ }
374
+
375
+ .sf-flow-svg .overview-edge-hit.is-selected .overview-edge-badge {
376
+ fill: var(--sf-selected);
377
+ stroke-width: 3;
378
+ }
379
+
380
+ .sf-flow-svg .overview-state-hit {
381
+ cursor: pointer;
382
+ outline: none;
383
+ }
384
+
385
+ .sf-flow-svg .overview-state-hit:focus-visible .overview-state-box {
386
+ stroke-width: 3;
387
+ filter: drop-shadow(0 0 6px var(--sf-glow));
388
+ }
389
+
390
+ .sf-flow-svg.has-state-selection
391
+ .overview-state-hit:not(.is-selected)
392
+ .overview-state-box {
393
+ opacity: 0.45;
394
+ }
395
+
396
+ .sf-flow-svg .overview-state-hit.is-selected .overview-state-box {
397
+ fill: var(--sf-selected);
398
+ stroke: var(--sf-accent-strong);
399
+ stroke-width: 3.5;
400
+ }
401
+
402
+ .sf-overview-edge-detail {
403
+ margin-top: 16px;
404
+ padding: 14px 16px;
405
+ border: 1px solid var(--sf-accent);
406
+ border-radius: 6px;
407
+ background: var(--sf-paper);
408
+ }
409
+
410
+ .sf-overview-legend-title {
411
+ margin: 0 0 6px;
412
+ font-size: 15px;
413
+ line-height: 1.4;
414
+ }
415
+
416
+ .sf-overview-legend-mark {
417
+ display: inline-flex;
418
+ align-items: center;
419
+ justify-content: center;
420
+ width: 22px;
421
+ height: 22px;
422
+ border-radius: 50%;
423
+ background: var(--sf-selected);
424
+ border: 1px solid var(--sf-accent);
425
+ font-size: 12px;
426
+ font-weight: 700;
427
+ color: var(--sf-ink);
428
+ vertical-align: middle;
429
+ margin-right: 4px;
430
+ }
431
+
432
+ .sf-overview-legend-route {
433
+ margin: 0 0 6px;
434
+ font-size: 13px;
435
+ color: var(--sf-muted);
436
+ }
437
+
438
+ .sf-overview-legend-event {
439
+ margin: 0 0 4px;
440
+ font-size: 14px;
441
+ font-weight: 500;
442
+ color: var(--sf-ink);
443
+ }
444
+
445
+ .sf-overview-legend-detail {
446
+ margin: 0;
447
+ font-size: 13px;
448
+ color: var(--sf-muted);
449
+ line-height: 1.45;
450
+ }
451
+
452
+ .sf-caption {
453
+ font-size: 13px;
454
+ color: var(--sf-muted);
455
+ }
456
+
457
+ .sf-title {
458
+ font:
459
+ 500 clamp(28px, 4vw, 40px) / 1.18 Georgia,
460
+ serif;
461
+ margin: 7px 0 14px;
462
+ font-weight: 500;
463
+ }
464
+
465
+ .sf-notice {
466
+ border-left: 3px solid var(--sf-accent);
467
+ padding: 12px 18px;
468
+ background: var(--sf-selected);
469
+ font-size: 15px;
470
+ margin: 24px 0;
471
+ }
472
+
473
+ .sf-state-heading {
474
+ display: flex;
475
+ gap: 15px;
476
+ justify-content: space-between;
477
+ align-items: baseline;
478
+ margin-bottom: 10px;
479
+ }
480
+
481
+ .sf-state-heading h3 {
482
+ font-size: 15px;
483
+ margin: 0;
484
+ font-weight: 600;
485
+ }
486
+
487
+ .sf-overview-detail-card {
488
+ border: 1px solid color-mix(in srgb, var(--sf-accent) 55%, var(--sf-line));
489
+ border-radius: 12px;
490
+ background: color-mix(in srgb, var(--sf-panel) 92%, black);
491
+ padding: 14px 16px;
492
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--sf-accent) 12%, transparent);
493
+ }
494
+
495
+ .sf-overview-detail-card.is-guard-blocked {
496
+ border-color: var(--sf-warning);
497
+ }
498
+
499
+ .sf-overview-detail-heading {
500
+ display: flex;
501
+ align-items: center;
502
+ gap: 0.45rem;
503
+ margin: 0 0 0.75rem;
504
+ font-size: 0.8125rem;
505
+ font-weight: 600;
506
+ text-transform: uppercase;
507
+ letter-spacing: 0.05em;
508
+ color: var(--sf-muted);
509
+ }
510
+
511
+ .sf-overview-detail-heading-icon {
512
+ color: var(--sf-accent-strong);
513
+ }
514
+
515
+ .sf-overview-detail-title-row {
516
+ display: flex;
517
+ align-items: center;
518
+ justify-content: space-between;
519
+ gap: 0.75rem;
520
+ flex-wrap: wrap;
521
+ }
522
+
523
+ .sf-overview-detail-kind-tag {
524
+ border: 1px solid color-mix(in srgb, var(--sf-accent) 45%, var(--sf-line));
525
+ border-radius: 999px;
526
+ padding: 0.15rem 0.55rem;
527
+ font-size: 0.6875rem;
528
+ font-weight: 600;
529
+ text-transform: uppercase;
530
+ letter-spacing: 0.04em;
531
+ color: var(--sf-accent-strong);
532
+ background: var(--sf-selected);
533
+ }
534
+
535
+ .sf-overview-legend-route code {
536
+ font:
537
+ 0.75rem ui-monospace,
538
+ SFMono-Regular,
539
+ Menlo,
540
+ monospace;
541
+ color: var(--sf-muted);
542
+ background: color-mix(in srgb, var(--sf-paper) 65%, var(--sf-panel));
543
+ border-radius: 6px;
544
+ padding: 0.2rem 0.45rem;
545
+ }
546
+
547
+ .sf-overview-transitions-card {
548
+ border: 1px solid var(--sf-line);
549
+ border-radius: 12px;
550
+ background: color-mix(in srgb, var(--sf-panel) 90%, black);
551
+ padding: 12px 14px;
552
+ }
553
+
554
+ .sf-overview-transitions-heading {
555
+ margin: 0 0 0.65rem;
556
+ font-size: 0.8125rem;
557
+ font-weight: 600;
558
+ color: var(--sf-muted);
559
+ }
560
+
561
+ .sf-overview-transitions-list {
562
+ list-style: none;
563
+ margin: 0;
564
+ padding: 0;
565
+ display: grid;
566
+ gap: 0.45rem;
567
+ }
568
+
569
+ .sf-overview-transitions-button {
570
+ width: 100%;
571
+ display: grid;
572
+ grid-template-columns: auto 1fr;
573
+ grid-template-rows: auto auto;
574
+ gap: 0.2rem 0.55rem;
575
+ align-items: center;
576
+ text-align: left;
577
+ border: 1px solid var(--sf-line);
578
+ border-radius: 10px;
579
+ background: var(--sf-paper);
580
+ padding: 0.55rem 0.65rem;
581
+ cursor: pointer;
582
+ color: var(--sf-ink);
583
+ }
584
+
585
+ .sf-overview-transitions-button:hover {
586
+ border-color: color-mix(in srgb, var(--sf-accent) 50%, var(--sf-line));
587
+ }
588
+
589
+ .sf-overview-transitions-dot {
590
+ width: 0.45rem;
591
+ height: 0.45rem;
592
+ border-radius: 50%;
593
+ background: var(--sf-accent);
594
+ }
595
+
596
+ .sf-overview-transitions-name {
597
+ font-size: 0.875rem;
598
+ font-weight: 600;
599
+ }
600
+
601
+ .sf-overview-transitions-route {
602
+ grid-column: 2;
603
+ font:
604
+ 0.75rem ui-monospace,
605
+ SFMono-Regular,
606
+ Menlo,
607
+ monospace;
608
+ color: var(--sf-muted);
609
+ }
610
+
611
+ .sf-overview-detail-empty {
612
+ border: 1px dashed var(--sf-line);
613
+ border-radius: 12px;
614
+ padding: 1.25rem 1rem;
615
+ text-align: center;
616
+ color: var(--sf-muted);
617
+ }
618
+
619
+ .sf-overview-detail-empty-title {
620
+ margin: 0 0 0.35rem;
621
+ font-weight: 600;
622
+ color: var(--sf-ink);
623
+ }
624
+
625
+ .sf-overview-detail-empty-hint {
626
+ margin: 0;
627
+ font-size: 0.875rem;
628
+ line-height: 1.45;
629
+ }
630
+
631
+ .sf-diagram-workspace-wrap {
632
+ display: grid;
633
+ gap: 1rem;
634
+ }
635
+
636
+ .sf-diagram-legend {
637
+ margin: 0;
638
+ padding: 1rem 1.1rem;
639
+ border: 1px solid var(--sf-line);
640
+ border-radius: 12px;
641
+ background: color-mix(in srgb, var(--sf-panel) 94%, black);
642
+ }
643
+
644
+ .sf-diagram-legend-title {
645
+ margin: 0 0 0.65rem;
646
+ font-size: 0.8125rem;
647
+ font-weight: 600;
648
+ text-transform: uppercase;
649
+ letter-spacing: 0.05em;
650
+ color: var(--sf-muted);
651
+ }
652
+
653
+ .sf-diagram-legend-list {
654
+ list-style: none;
655
+ margin: 0;
656
+ padding: 0;
657
+ display: grid;
658
+ gap: 0.5rem;
659
+ }
660
+
661
+ @media (min-width: 720px) {
662
+ .sf-diagram-legend-list {
663
+ grid-template-columns: repeat(2, minmax(0, 1fr));
664
+ gap: 0.45rem 1.25rem;
665
+ }
666
+ }
667
+
668
+ .sf-diagram-legend-list li {
669
+ display: flex;
670
+ align-items: center;
671
+ gap: 0.55rem;
672
+ font-size: 0.8125rem;
673
+ color: var(--sf-muted);
674
+ }
675
+
676
+ .sf-diagram-legend-list strong {
677
+ color: var(--sf-ink);
678
+ font-weight: 600;
679
+ }
680
+
681
+ .sf-diagram-legend-swatch {
682
+ flex-shrink: 0;
683
+ width: 2.25rem;
684
+ height: 1.25rem;
685
+ border-radius: 6px;
686
+ border: 1px solid var(--sf-line);
687
+ background: var(--sf-paper);
688
+ }
689
+
690
+ .sf-diagram-legend-swatch.is-active-state {
691
+ border-color: var(--sf-accent-strong);
692
+ background: var(--sf-selected);
693
+ box-shadow: inset 0 0 0 1px
694
+ color-mix(in srgb, var(--sf-accent) 40%, transparent);
695
+ }
696
+
697
+ .sf-diagram-legend-swatch.is-state {
698
+ background: var(--sf-panel);
699
+ }
700
+
701
+ .sf-diagram-legend-swatch.is-connector {
702
+ border: none;
703
+ border-radius: 0;
704
+ width: 2.5rem;
705
+ height: 0;
706
+ border-top: 3px solid var(--sf-accent);
707
+ background: transparent;
708
+ }
709
+
710
+ .sf-diagram-legend-swatch.is-label {
711
+ border-radius: 999px;
712
+ border-color: var(--sf-accent);
713
+ background: var(--sf-selected);
714
+ width: 2.75rem;
715
+ height: 1.1rem;
716
+ }