@pipelex/mthds-ui 0.6.3 → 0.6.5
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/{chunk-FHRUYFGV.js → chunk-ILX53OYM.js} +374 -98
- package/dist/chunk-ILX53OYM.js.map +1 -0
- package/dist/chunk-L24K3TZU.js +1 -0
- package/dist/graph/index.d.ts +62 -7
- package/dist/graph/index.js +20 -4
- package/dist/graph/react/detail/DetailPanel.css +82 -79
- package/dist/graph/react/graph-core.css +153 -76
- package/dist/graph/react/index.css +129 -160
- package/dist/graph/react/index.css.map +1 -1
- package/dist/graph/react/index.d.ts +23 -2
- package/dist/graph/react/index.js +266 -160
- package/dist/graph/react/index.js.map +1 -1
- package/dist/graph/react/stuff/StuffViewer.css +38 -11
- package/dist/graph/react/viewer/GraphToolbar.css +22 -24
- package/dist/index.d.ts +2 -2
- package/dist/index.js +20 -4
- package/dist/standalone/graph-standalone.html +304 -199
- package/dist/standalone/graph-viewer.css +295 -190
- package/dist/standalone/graph-viewer.js +9 -9
- package/dist/{types-C7rr1Egj.d.ts → types-DJTrDxjV.d.ts} +29 -10
- package/package.json +3 -1
- package/dist/chunk-FHRUYFGV.js.map +0 -1
- package/dist/chunk-IZ4FH2WM.js +0 -1
- /package/dist/{chunk-IZ4FH2WM.js.map → chunk-L24K3TZU.js.map} +0 -0
|
@@ -624,17 +624,103 @@ svg.react-flow__connectionline {
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
/* ReactFlow base styles — resolved by the consumer's bundler */
|
|
627
|
-
|
|
627
|
+
/**
|
|
628
|
+
* Tokens (--surface-*, --text-*, --border-*, --shadow-*, --color-*) are
|
|
629
|
+
* applied to `.react-flow-container` inline by `GraphViewer` based on the
|
|
630
|
+
* active theme (dark / light). Component CSS only references those tokens —
|
|
631
|
+
* never raw hex/rgba — so a new theme is just a new set of values.
|
|
632
|
+
*
|
|
633
|
+
* The block below provides STATIC dark-palette defaults so that any of these
|
|
634
|
+
* cases still render with valid colors / fonts / shadows:
|
|
635
|
+
* - first paint before the React inline-palette effect runs
|
|
636
|
+
* - SSR / hydration mismatches
|
|
637
|
+
* - a consumer rendering a graph subcomponent outside `GraphViewer`
|
|
638
|
+
* - JS disabled / failed
|
|
639
|
+
* Values mirror `DARK_PALETTE_COLORS` in `graphConfig.ts`. The runtime
|
|
640
|
+
* palette (dark or light) is applied as higher-specificity inline styles
|
|
641
|
+
* and wins automatically.
|
|
642
|
+
*/
|
|
628
643
|
.react-flow-container {
|
|
644
|
+
/* Surfaces */
|
|
645
|
+
--surface-page: #0a0a0a;
|
|
646
|
+
--surface-panel: #111118;
|
|
647
|
+
--surface-overlay: rgba(17, 17, 24, 0.8);
|
|
648
|
+
--surface-overlay-hover: rgba(30, 30, 40, 0.9);
|
|
649
|
+
--surface-overlay-disabled: rgba(17, 17, 24, 0.6);
|
|
650
|
+
--surface-elevated: rgba(255, 255, 255, 0.06);
|
|
651
|
+
--surface-elevated-hover: rgba(255, 255, 255, 0.1);
|
|
652
|
+
--surface-sunken: rgba(255, 255, 255, 0.03);
|
|
653
|
+
--surface-pill: rgba(255, 255, 255, 0.06);
|
|
654
|
+
--surface-pill-border: rgba(255, 255, 255, 0.08);
|
|
655
|
+
|
|
656
|
+
/* Borders */
|
|
657
|
+
--border-subtle: rgba(255, 255, 255, 0.06);
|
|
658
|
+
--border-default: rgba(255, 255, 255, 0.1);
|
|
659
|
+
--border-strong: rgba(255, 255, 255, 0.18);
|
|
660
|
+
--border-dashed: rgba(255, 255, 255, 0.15);
|
|
661
|
+
|
|
662
|
+
/* Text */
|
|
663
|
+
--text-primary: #f8fafc;
|
|
664
|
+
--text-default: #e2e8f0;
|
|
665
|
+
--text-secondary: #cbd5e1;
|
|
666
|
+
--text-muted: #94a3b8;
|
|
667
|
+
--text-dim: #64748b;
|
|
668
|
+
--text-on-accent: #0e0e0e;
|
|
669
|
+
|
|
670
|
+
/* Effects */
|
|
671
|
+
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
672
|
+
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.6);
|
|
673
|
+
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
|
|
674
|
+
--focus-ring: rgba(59, 130, 246, 0.6);
|
|
675
|
+
|
|
676
|
+
/* Domain-semantic colors */
|
|
677
|
+
--color-pipe: #ff6b6b;
|
|
678
|
+
--color-pipe-bg: rgba(224, 108, 117, 0.18);
|
|
679
|
+
--color-pipe-text: #ffffff;
|
|
680
|
+
--color-stuff: #4ecdc4;
|
|
681
|
+
--color-stuff-bg: rgba(78, 205, 196, 0.12);
|
|
682
|
+
--color-stuff-border: #9ddcfd;
|
|
683
|
+
--color-stuff-text: #98fb98;
|
|
684
|
+
--color-stuff-text-dim: #9ddcfd;
|
|
685
|
+
--color-edge: #fffacd;
|
|
686
|
+
--color-batch-item: #bd93f9;
|
|
687
|
+
--color-batch-aggregate: #50fa7b;
|
|
688
|
+
--color-parallel-combine: #d6a4ff;
|
|
689
|
+
--color-success: #50fa7b;
|
|
690
|
+
--color-success-bg: rgba(80, 250, 123, 0.15);
|
|
691
|
+
--color-error: #ff5555;
|
|
692
|
+
--color-error-bg: rgba(255, 85, 85, 0.15);
|
|
693
|
+
--color-error-border: rgba(255, 85, 85, 0.2);
|
|
694
|
+
--color-accent: #8be9fd;
|
|
695
|
+
--color-accent-strong: #3b82f6;
|
|
696
|
+
--color-warning: #ffb86c;
|
|
697
|
+
|
|
698
|
+
/* Controller-group palette */
|
|
699
|
+
--ctrl-sequence-border: rgba(148, 163, 184, 0.25);
|
|
700
|
+
--ctrl-sequence-bg: rgba(148, 163, 184, 0.03);
|
|
701
|
+
--ctrl-sequence-text: #94a3b8;
|
|
702
|
+
--ctrl-parallel-border: rgba(139, 233, 253, 0.35);
|
|
703
|
+
--ctrl-parallel-bg: rgba(139, 233, 253, 0.03);
|
|
704
|
+
--ctrl-parallel-text: #8be9fd;
|
|
705
|
+
--ctrl-condition-border: rgba(251, 191, 36, 0.35);
|
|
706
|
+
--ctrl-condition-bg: rgba(251, 191, 36, 0.03);
|
|
707
|
+
--ctrl-condition-text: #fbbf24;
|
|
708
|
+
--ctrl-batch-border: rgba(167, 139, 250, 0.35);
|
|
709
|
+
--ctrl-batch-bg: rgba(167, 139, 250, 0.03);
|
|
710
|
+
--ctrl-batch-text: #a78bfa;
|
|
711
|
+
--ctrl-folded-bg: rgba(148, 163, 184, 0.25);
|
|
712
|
+
--ctrl-folded-border: rgba(148, 163, 184, 0.4);
|
|
713
|
+
|
|
714
|
+
/* Legacy aliases — still consumed by some inline styles in graph builders */
|
|
629
715
|
--color-bg: #0a0a0a;
|
|
630
716
|
--color-bg-dots: rgba(255, 255, 255, 0.35);
|
|
631
717
|
--color-text-muted: #94a3b8;
|
|
632
718
|
--color-controller-text: #94a3b8;
|
|
719
|
+
|
|
720
|
+
/* Fonts */
|
|
633
721
|
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
634
722
|
--font-mono: "JetBrains Mono", "Monaco", "Menlo", monospace;
|
|
635
|
-
|
|
636
|
-
}
|
|
637
|
-
.react-flow-container {
|
|
723
|
+
|
|
638
724
|
position: absolute;
|
|
639
725
|
inset: 0;
|
|
640
726
|
background: var(--color-bg);
|
|
@@ -644,17 +730,17 @@ svg.react-flow__connectionline {
|
|
|
644
730
|
cursor: pointer;
|
|
645
731
|
}
|
|
646
732
|
.react-flow__background {
|
|
647
|
-
background: var(--color-bg) !important;
|
|
733
|
+
background: var(--color-bg, #0a0a0a) !important;
|
|
648
734
|
}
|
|
649
735
|
.react-flow__edge-path {
|
|
650
736
|
stroke-width: 2;
|
|
651
737
|
}
|
|
652
738
|
.react-flow__edge-text {
|
|
653
739
|
font-size: 11px;
|
|
654
|
-
fill: var(--
|
|
740
|
+
fill: var(--text-muted);
|
|
655
741
|
}
|
|
656
742
|
.react-flow__edge-textbg {
|
|
657
|
-
fill: var(--color-bg);
|
|
743
|
+
fill: var(--color-bg, #0a0a0a);
|
|
658
744
|
}
|
|
659
745
|
/* Selected node highlight */
|
|
660
746
|
.react-flow__node.selected {
|
|
@@ -677,8 +763,8 @@ svg.react-flow__connectionline {
|
|
|
677
763
|
}
|
|
678
764
|
.react-flow__node-pipeCard.selected .pipe-card {
|
|
679
765
|
box-shadow:
|
|
680
|
-
0 0 0 2px var(--color-accent
|
|
681
|
-
|
|
766
|
+
0 0 0 2px var(--color-accent),
|
|
767
|
+
var(--shadow-md);
|
|
682
768
|
}
|
|
683
769
|
.react-flow__node-controllerGroup.selected {
|
|
684
770
|
box-shadow:
|
|
@@ -690,9 +776,9 @@ svg.react-flow__connectionline {
|
|
|
690
776
|
}
|
|
691
777
|
/* ─── Controller Group Node ──────────────────────────────────────────── */
|
|
692
778
|
.controller-group-node {
|
|
693
|
-
--controller-border: 2px dashed
|
|
694
|
-
--controller-bg:
|
|
695
|
-
--controller-header-color:
|
|
779
|
+
--controller-border: 2px dashed var(--ctrl-sequence-border);
|
|
780
|
+
--controller-bg: var(--ctrl-sequence-bg);
|
|
781
|
+
--controller-header-color: var(--ctrl-sequence-text);
|
|
696
782
|
|
|
697
783
|
width: 100%;
|
|
698
784
|
height: 100%;
|
|
@@ -724,13 +810,13 @@ svg.react-flow__connectionline {
|
|
|
724
810
|
text-transform: uppercase;
|
|
725
811
|
letter-spacing: 0.06em;
|
|
726
812
|
color: var(--controller-header-color);
|
|
727
|
-
font-family: var(--font-mono
|
|
813
|
+
font-family: var(--font-mono);
|
|
728
814
|
}
|
|
729
815
|
.controller-group-label {
|
|
730
816
|
font-size: 11px;
|
|
731
|
-
font-family: var(--font-mono
|
|
817
|
+
font-family: var(--font-mono);
|
|
732
818
|
font-weight: 500;
|
|
733
|
-
color: var(--color-controller-text
|
|
819
|
+
color: var(--color-controller-text);
|
|
734
820
|
white-space: nowrap;
|
|
735
821
|
margin-left: auto;
|
|
736
822
|
}
|
|
@@ -742,23 +828,23 @@ svg.react-flow__connectionline {
|
|
|
742
828
|
bottom: 4px;
|
|
743
829
|
right: 8px;
|
|
744
830
|
font-size: 10px;
|
|
745
|
-
font-family: var(--font-mono
|
|
746
|
-
color: var(--controller-header-color
|
|
831
|
+
font-family: var(--font-mono);
|
|
832
|
+
color: var(--controller-header-color);
|
|
747
833
|
cursor: pointer;
|
|
748
834
|
padding: 2px 8px;
|
|
749
835
|
border-radius: 4px;
|
|
750
|
-
border: 1px dashed
|
|
836
|
+
border: 1px dashed var(--border-dashed);
|
|
751
837
|
pointer-events: auto;
|
|
752
838
|
z-index: 10;
|
|
753
839
|
white-space: nowrap;
|
|
754
840
|
}
|
|
755
841
|
.controller-group-collapse:hover {
|
|
756
|
-
color:
|
|
757
|
-
border-color:
|
|
758
|
-
background:
|
|
842
|
+
color: var(--text-primary);
|
|
843
|
+
border-color: var(--border-strong);
|
|
844
|
+
background: var(--surface-elevated);
|
|
759
845
|
}
|
|
760
846
|
.controller-group-collapse:focus-visible {
|
|
761
|
-
outline: 2px solid var(--controller-header-color
|
|
847
|
+
outline: 2px solid var(--controller-header-color);
|
|
762
848
|
outline-offset: 2px;
|
|
763
849
|
}
|
|
764
850
|
|
|
@@ -768,73 +854,64 @@ svg.react-flow__connectionline {
|
|
|
768
854
|
cursor: pointer;
|
|
769
855
|
font-size: 20px;
|
|
770
856
|
line-height: 1;
|
|
771
|
-
color: var(--controller-header-color
|
|
857
|
+
color: var(--controller-header-color);
|
|
772
858
|
padding: 4px 10px;
|
|
773
859
|
border-radius: 6px;
|
|
774
860
|
pointer-events: auto;
|
|
775
861
|
margin-left: auto;
|
|
776
862
|
}
|
|
777
863
|
.controller-group-fold:hover {
|
|
778
|
-
color:
|
|
779
|
-
background:
|
|
864
|
+
color: var(--text-primary);
|
|
865
|
+
background: var(--surface-elevated);
|
|
780
866
|
}
|
|
781
867
|
.controller-group-fold:focus-visible {
|
|
782
|
-
outline: 2px solid var(--controller-header-color
|
|
868
|
+
outline: 2px solid var(--controller-header-color);
|
|
783
869
|
outline-offset: 2px;
|
|
784
870
|
}
|
|
785
871
|
|
|
786
872
|
/* Sequence — solid thin border, calm flow */
|
|
787
873
|
.controller-group--sequence {
|
|
788
|
-
--controller-border: 1.5px solid
|
|
789
|
-
--controller-bg:
|
|
790
|
-
--controller-header-color:
|
|
874
|
+
--controller-border: 1.5px solid var(--ctrl-sequence-border);
|
|
875
|
+
--controller-bg: var(--ctrl-sequence-bg);
|
|
876
|
+
--controller-header-color: var(--ctrl-sequence-text);
|
|
791
877
|
}
|
|
792
878
|
|
|
793
879
|
/* Parallel — double border, forking lanes */
|
|
794
880
|
.controller-group--parallel {
|
|
795
|
-
--controller-border: 3px double
|
|
796
|
-
--controller-bg:
|
|
797
|
-
--controller-header-color:
|
|
881
|
+
--controller-border: 3px double var(--ctrl-parallel-border);
|
|
882
|
+
--controller-bg: var(--ctrl-parallel-bg);
|
|
883
|
+
--controller-header-color: var(--ctrl-parallel-text);
|
|
798
884
|
}
|
|
799
885
|
|
|
800
886
|
/* Condition — dashed with diamond accent */
|
|
801
887
|
.controller-group--condition {
|
|
802
|
-
--controller-border: 2px dashed
|
|
803
|
-
--controller-bg:
|
|
804
|
-
--controller-header-color:
|
|
888
|
+
--controller-border: 2px dashed var(--ctrl-condition-border);
|
|
889
|
+
--controller-bg: var(--ctrl-condition-bg);
|
|
890
|
+
--controller-header-color: var(--ctrl-condition-text);
|
|
805
891
|
}
|
|
806
892
|
|
|
807
893
|
/* Batch — dotted border, loop/repeat */
|
|
808
894
|
.controller-group--batch {
|
|
809
|
-
--controller-border: 2px dotted
|
|
810
|
-
--controller-bg:
|
|
811
|
-
--controller-header-color:
|
|
895
|
+
--controller-border: 2px dotted var(--ctrl-batch-border);
|
|
896
|
+
--controller-bg: var(--ctrl-batch-bg);
|
|
897
|
+
--controller-header-color: var(--ctrl-batch-text);
|
|
812
898
|
}
|
|
813
899
|
|
|
814
900
|
/* ─── Pipe Card Node ─────────────────────────────────────────────────── */
|
|
815
|
-
/* All tokens overridable via CSS custom properties on an ancestor. */
|
|
816
901
|
.pipe-card {
|
|
817
|
-
--pipe-card-accent:
|
|
818
|
-
--pipe-card-bg: rgba(148, 163, 184, 0.08);
|
|
819
|
-
--pipe-card-text: #e2e8f0;
|
|
820
|
-
--pipe-card-text-bright: #f8fafc;
|
|
821
|
-
--pipe-card-text-muted: #94a3b8;
|
|
822
|
-
--pipe-card-text-dim: #64748b;
|
|
823
|
-
--pipe-card-pill-bg: rgba(255, 255, 255, 0.06);
|
|
824
|
-
--pipe-card-pill-border: rgba(255, 255, 255, 0.08);
|
|
825
|
-
--pipe-card-pill-text: #cbd5e1;
|
|
902
|
+
--pipe-card-accent: var(--color-pipe);
|
|
826
903
|
--pipe-card-radius: 8px;
|
|
827
904
|
|
|
828
905
|
border-left: 4px solid var(--pipe-card-accent);
|
|
829
906
|
border-radius: var(--pipe-card-radius);
|
|
830
907
|
padding: 12px 14px;
|
|
831
|
-
background: var(--
|
|
832
|
-
font-family: var(--font-sans
|
|
833
|
-
color: var(--
|
|
908
|
+
background: var(--surface-elevated);
|
|
909
|
+
font-family: var(--font-sans);
|
|
910
|
+
color: var(--text-default);
|
|
834
911
|
display: flex;
|
|
835
912
|
flex-direction: column;
|
|
836
913
|
gap: 8px;
|
|
837
|
-
box-shadow:
|
|
914
|
+
box-shadow: var(--shadow-sm);
|
|
838
915
|
transition: box-shadow 0.2s;
|
|
839
916
|
/* Fill the ReactFlow wrapper whose size is locked to ELK's layout dimensions */
|
|
840
917
|
width: 100%;
|
|
@@ -843,7 +920,7 @@ svg.react-flow__connectionline {
|
|
|
843
920
|
overflow: hidden;
|
|
844
921
|
}
|
|
845
922
|
.pipe-card:hover {
|
|
846
|
-
box-shadow:
|
|
923
|
+
box-shadow: var(--shadow-md);
|
|
847
924
|
}
|
|
848
925
|
|
|
849
926
|
/* Direction-aware sizing: LR = narrow + tall, TB = wide + short */
|
|
@@ -872,10 +949,10 @@ svg.react-flow__connectionline {
|
|
|
872
949
|
white-space: nowrap;
|
|
873
950
|
line-height: 1.4;
|
|
874
951
|
background: var(--pipe-card-accent);
|
|
875
|
-
color:
|
|
952
|
+
color: var(--text-on-accent);
|
|
876
953
|
}
|
|
877
954
|
.pipe-card-code {
|
|
878
|
-
font-family: var(--font-mono
|
|
955
|
+
font-family: var(--font-mono);
|
|
879
956
|
font-size: 13px;
|
|
880
957
|
font-weight: 600;
|
|
881
958
|
color: var(--pipe-card-accent);
|
|
@@ -906,29 +983,29 @@ svg.react-flow__connectionline {
|
|
|
906
983
|
cursor: pointer;
|
|
907
984
|
font-size: 20px;
|
|
908
985
|
line-height: 1;
|
|
909
|
-
color: var(--
|
|
986
|
+
color: var(--text-muted);
|
|
910
987
|
padding: 4px 8px;
|
|
911
988
|
border-radius: 6px;
|
|
912
989
|
flex-shrink: 0;
|
|
913
990
|
}
|
|
914
991
|
.pipe-card-expand:hover {
|
|
915
|
-
color: var(--
|
|
916
|
-
background:
|
|
992
|
+
color: var(--text-primary);
|
|
993
|
+
background: var(--surface-elevated-hover);
|
|
917
994
|
}
|
|
918
995
|
.pipe-card-expand:focus-visible {
|
|
919
|
-
outline: 2px solid var(--
|
|
996
|
+
outline: 2px solid var(--text-primary);
|
|
920
997
|
outline-offset: 2px;
|
|
921
998
|
}
|
|
922
999
|
|
|
923
1000
|
/* Folded-controller card variant — slightly tinted badge to differentiate
|
|
924
1001
|
from operator cards. */
|
|
925
1002
|
.pipe-card-badge--controller {
|
|
926
|
-
background:
|
|
927
|
-
color: var(--
|
|
928
|
-
border: 1px solid
|
|
1003
|
+
background: var(--ctrl-folded-bg);
|
|
1004
|
+
color: var(--text-primary);
|
|
1005
|
+
border: 1px solid var(--ctrl-folded-border);
|
|
929
1006
|
}
|
|
930
1007
|
.pipe-card--controller {
|
|
931
|
-
--pipe-card-accent:
|
|
1008
|
+
--pipe-card-accent: var(--text-muted);
|
|
932
1009
|
}
|
|
933
1010
|
@keyframes pipe-card-pulse {
|
|
934
1011
|
0%,
|
|
@@ -956,7 +1033,7 @@ svg.react-flow__connectionline {
|
|
|
956
1033
|
TB gets 1 line (wide card, horizontal layout). Both truncate with ellipsis. */
|
|
957
1034
|
.pipe-card-description {
|
|
958
1035
|
font-size: 11.5px;
|
|
959
|
-
color: var(--
|
|
1036
|
+
color: var(--text-muted);
|
|
960
1037
|
line-height: 1.4;
|
|
961
1038
|
overflow: hidden;
|
|
962
1039
|
text-overflow: ellipsis;
|
|
@@ -977,7 +1054,7 @@ svg.react-flow__connectionline {
|
|
|
977
1054
|
font-weight: 700;
|
|
978
1055
|
text-transform: uppercase;
|
|
979
1056
|
letter-spacing: 0.06em;
|
|
980
|
-
color: var(--
|
|
1057
|
+
color: var(--text-dim);
|
|
981
1058
|
flex-shrink: 0;
|
|
982
1059
|
}
|
|
983
1060
|
.pipe-card-io-pills {
|
|
@@ -990,22 +1067,22 @@ svg.react-flow__connectionline {
|
|
|
990
1067
|
align-items: center;
|
|
991
1068
|
gap: 3px;
|
|
992
1069
|
font-size: 10px;
|
|
993
|
-
background: var(--
|
|
994
|
-
border: 1px solid var(--
|
|
1070
|
+
background: var(--surface-pill);
|
|
1071
|
+
border: 1px solid var(--surface-pill-border);
|
|
995
1072
|
border-radius: 4px;
|
|
996
1073
|
padding: 1px 5px;
|
|
997
1074
|
line-height: 1.4;
|
|
998
1075
|
min-width: 0;
|
|
999
1076
|
}
|
|
1000
1077
|
.pipe-card-io-pill-name {
|
|
1001
|
-
font-family: var(--font-mono
|
|
1002
|
-
color: var(--
|
|
1078
|
+
font-family: var(--font-mono);
|
|
1079
|
+
color: var(--text-secondary);
|
|
1003
1080
|
overflow: hidden;
|
|
1004
1081
|
text-overflow: ellipsis;
|
|
1005
1082
|
white-space: nowrap;
|
|
1006
1083
|
}
|
|
1007
1084
|
.pipe-card-io-pill-concept {
|
|
1008
|
-
color: var(--
|
|
1085
|
+
color: var(--text-dim);
|
|
1009
1086
|
font-size: 9px;
|
|
1010
1087
|
overflow: hidden;
|
|
1011
1088
|
text-overflow: ellipsis;
|
|
@@ -1014,21 +1091,21 @@ svg.react-flow__connectionline {
|
|
|
1014
1091
|
.pipe-card-io-more {
|
|
1015
1092
|
all: unset;
|
|
1016
1093
|
font-size: 10px;
|
|
1017
|
-
font-family: var(--font-mono
|
|
1018
|
-
color: var(--
|
|
1094
|
+
font-family: var(--font-mono);
|
|
1095
|
+
color: var(--text-muted);
|
|
1019
1096
|
cursor: pointer;
|
|
1020
1097
|
padding: 2px 6px;
|
|
1021
1098
|
border-radius: 4px;
|
|
1022
|
-
border: 1px dashed
|
|
1099
|
+
border: 1px dashed var(--border-default);
|
|
1023
1100
|
white-space: nowrap;
|
|
1024
1101
|
line-height: 1.4;
|
|
1025
1102
|
}
|
|
1026
1103
|
.pipe-card-io-more:hover {
|
|
1027
|
-
color: var(--
|
|
1028
|
-
border-color:
|
|
1104
|
+
color: var(--text-default);
|
|
1105
|
+
border-color: var(--border-strong);
|
|
1029
1106
|
}
|
|
1030
1107
|
.pipe-card-io-more:focus-visible {
|
|
1031
|
-
outline: 2px solid var(--
|
|
1108
|
+
outline: 2px solid var(--text-default);
|
|
1032
1109
|
outline-offset: 2px;
|
|
1033
1110
|
}
|
|
1034
1111
|
|
|
@@ -1087,18 +1164,23 @@ svg.react-flow__connectionline {
|
|
|
1087
1164
|
}
|
|
1088
1165
|
|
|
1089
1166
|
/* ─── StuffViewer component styles ────────────────────────────────────────── */
|
|
1090
|
-
/*
|
|
1167
|
+
/* StuffViewer is also exported standalone (used outside GraphViewer — e.g.
|
|
1168
|
+
* docs pages, embedded previews). The theme tokens are normally applied to
|
|
1169
|
+
* the GraphViewer container, but when this component is rendered on its own
|
|
1170
|
+
* those tokens may not be set. The fallbacks below match the dark palette
|
|
1171
|
+
* from `graphConfig.ts` (DARK_PALETTE_COLORS) so the component always
|
|
1172
|
+
* renders with valid colors and fonts. */
|
|
1091
1173
|
|
|
1092
1174
|
.stuff-viewer {
|
|
1093
|
-
--sv-bg: var(--
|
|
1094
|
-
--sv-surface: var(--
|
|
1095
|
-
--sv-surface-hover: var(--
|
|
1096
|
-
--sv-border: var(--
|
|
1097
|
-
--sv-text: var(--
|
|
1098
|
-
--sv-text-muted: var(--
|
|
1099
|
-
--sv-accent: var(--color-accent, #
|
|
1100
|
-
--sv-success: #
|
|
1101
|
-
--sv-success-bg: rgba(
|
|
1175
|
+
--sv-bg: var(--surface-page, #0a0a0a);
|
|
1176
|
+
--sv-surface: var(--surface-panel, #111118);
|
|
1177
|
+
--sv-surface-hover: var(--surface-elevated, rgba(255, 255, 255, 0.06));
|
|
1178
|
+
--sv-border: var(--border-default, rgba(255, 255, 255, 0.1));
|
|
1179
|
+
--sv-text: var(--text-default, #e2e8f0);
|
|
1180
|
+
--sv-text-muted: var(--text-muted, #94a3b8);
|
|
1181
|
+
--sv-accent: var(--color-accent, #8be9fd);
|
|
1182
|
+
--sv-success: var(--color-success, #50fa7b);
|
|
1183
|
+
--sv-success-bg: var(--color-success-bg, rgba(80, 250, 123, 0.15));
|
|
1102
1184
|
--sv-radius: 4px;
|
|
1103
1185
|
--sv-font-sans: var(
|
|
1104
1186
|
--font-sans,
|
|
@@ -1178,7 +1260,7 @@ svg.react-flow__connectionline {
|
|
|
1178
1260
|
|
|
1179
1261
|
.stuff-viewer-tab--active {
|
|
1180
1262
|
background: var(--sv-accent);
|
|
1181
|
-
color: #
|
|
1263
|
+
color: var(--text-on-accent, #0e0e0e);
|
|
1182
1264
|
}
|
|
1183
1265
|
|
|
1184
1266
|
/* ─── Action buttons ─────────────────────────────────────────────────────── */
|
|
@@ -1394,7 +1476,31 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1394
1476
|
font-size: 13px;
|
|
1395
1477
|
}
|
|
1396
1478
|
|
|
1479
|
+
.stuff-viewer-error {
|
|
1480
|
+
border: 1px solid var(--color-status-failed, #ff5555);
|
|
1481
|
+
border-radius: 6px;
|
|
1482
|
+
padding: 12px;
|
|
1483
|
+
background: rgba(255, 85, 85, 0.08);
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
.stuff-viewer-error-title {
|
|
1487
|
+
color: var(--color-status-failed, #ff5555);
|
|
1488
|
+
font-weight: 600;
|
|
1489
|
+
font-size: 13px;
|
|
1490
|
+
margin-bottom: 4px;
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
.stuff-viewer-error-detail {
|
|
1494
|
+
color: var(--sv-text-muted);
|
|
1495
|
+
font-family: var(--font-mono, monospace);
|
|
1496
|
+
font-size: 12px;
|
|
1497
|
+
white-space: pre-wrap;
|
|
1498
|
+
word-break: break-word;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1397
1501
|
/* ─── Detail Panel — sliding side panel for node inspection ─────────────── */
|
|
1502
|
+
/* Token-only — all colors come from the active theme palette on the */
|
|
1503
|
+
/* container. See `graphConfig.ts` for token definitions. */
|
|
1398
1504
|
|
|
1399
1505
|
.detail-panel {
|
|
1400
1506
|
position: absolute;
|
|
@@ -1402,13 +1508,13 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1402
1508
|
right: 0;
|
|
1403
1509
|
width: 380px;
|
|
1404
1510
|
height: 100%;
|
|
1405
|
-
background:
|
|
1406
|
-
border-left: 1px solid
|
|
1511
|
+
background: var(--surface-panel);
|
|
1512
|
+
border-left: 1px solid var(--border-default);
|
|
1407
1513
|
z-index: 10;
|
|
1408
1514
|
display: flex;
|
|
1409
1515
|
flex-direction: column;
|
|
1410
|
-
font-family:
|
|
1411
|
-
color:
|
|
1516
|
+
font-family: var(--font-sans);
|
|
1517
|
+
color: var(--text-default);
|
|
1412
1518
|
overflow: hidden;
|
|
1413
1519
|
transition: transform 0.2s ease;
|
|
1414
1520
|
}
|
|
@@ -1445,7 +1551,8 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1445
1551
|
|
|
1446
1552
|
.detail-panel-resize-handle:hover::before,
|
|
1447
1553
|
.detail-panel--dragging .detail-panel-resize-handle::before {
|
|
1448
|
-
background:
|
|
1554
|
+
background: var(--color-accent);
|
|
1555
|
+
opacity: 0.6;
|
|
1449
1556
|
}
|
|
1450
1557
|
|
|
1451
1558
|
/* Grip indicator — visible on hover */
|
|
@@ -1464,7 +1571,7 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1464
1571
|
|
|
1465
1572
|
.detail-panel-resize-handle:hover::after,
|
|
1466
1573
|
.detail-panel--dragging .detail-panel-resize-handle::after {
|
|
1467
|
-
background:
|
|
1574
|
+
background: var(--color-accent);
|
|
1468
1575
|
}
|
|
1469
1576
|
|
|
1470
1577
|
/* Disable transition during drag for smooth resizing */
|
|
@@ -1488,15 +1595,15 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1488
1595
|
align-items: center;
|
|
1489
1596
|
justify-content: center;
|
|
1490
1597
|
border-radius: 4px;
|
|
1491
|
-
color:
|
|
1598
|
+
color: var(--text-dim);
|
|
1492
1599
|
font-size: 18px;
|
|
1493
1600
|
line-height: 1;
|
|
1494
1601
|
z-index: 3;
|
|
1495
1602
|
}
|
|
1496
1603
|
|
|
1497
1604
|
.detail-panel-close:hover {
|
|
1498
|
-
color:
|
|
1499
|
-
background:
|
|
1605
|
+
color: var(--text-muted);
|
|
1606
|
+
background: var(--surface-elevated);
|
|
1500
1607
|
}
|
|
1501
1608
|
|
|
1502
1609
|
.detail-panel-content {
|
|
@@ -1514,7 +1621,7 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1514
1621
|
position: sticky;
|
|
1515
1622
|
top: -20px;
|
|
1516
1623
|
z-index: 1;
|
|
1517
|
-
background:
|
|
1624
|
+
background: var(--surface-panel);
|
|
1518
1625
|
padding-top: 20px;
|
|
1519
1626
|
margin-top: -20px;
|
|
1520
1627
|
display: flex;
|
|
@@ -1529,7 +1636,7 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1529
1636
|
font-weight: 700;
|
|
1530
1637
|
text-transform: uppercase;
|
|
1531
1638
|
letter-spacing: 0.06em;
|
|
1532
|
-
color:
|
|
1639
|
+
color: var(--text-dim);
|
|
1533
1640
|
margin-bottom: 6px;
|
|
1534
1641
|
}
|
|
1535
1642
|
|
|
@@ -1550,24 +1657,24 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1550
1657
|
}
|
|
1551
1658
|
|
|
1552
1659
|
.detail-badge--operator {
|
|
1553
|
-
background:
|
|
1554
|
-
color:
|
|
1660
|
+
background: var(--color-pipe);
|
|
1661
|
+
color: var(--text-on-accent);
|
|
1555
1662
|
}
|
|
1556
1663
|
|
|
1557
1664
|
.detail-badge--controller {
|
|
1558
|
-
background:
|
|
1559
|
-
color:
|
|
1665
|
+
background: var(--color-batch-item);
|
|
1666
|
+
color: var(--text-on-accent);
|
|
1560
1667
|
}
|
|
1561
1668
|
|
|
1562
1669
|
.detail-pipe-code {
|
|
1563
|
-
font-family:
|
|
1670
|
+
font-family: var(--font-mono);
|
|
1564
1671
|
font-size: 14px;
|
|
1565
1672
|
font-weight: 600;
|
|
1566
|
-
color:
|
|
1673
|
+
color: var(--color-pipe);
|
|
1567
1674
|
}
|
|
1568
1675
|
|
|
1569
1676
|
.detail-pipe-code--controller {
|
|
1570
|
-
color:
|
|
1677
|
+
color: var(--color-batch-item);
|
|
1571
1678
|
}
|
|
1572
1679
|
|
|
1573
1680
|
.detail-status {
|
|
@@ -1591,13 +1698,13 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1591
1698
|
|
|
1592
1699
|
.detail-duration {
|
|
1593
1700
|
font-size: 11px;
|
|
1594
|
-
color:
|
|
1595
|
-
font-family:
|
|
1701
|
+
color: var(--text-dim);
|
|
1702
|
+
font-family: var(--font-mono);
|
|
1596
1703
|
}
|
|
1597
1704
|
|
|
1598
1705
|
.detail-description {
|
|
1599
1706
|
font-size: 12px;
|
|
1600
|
-
color:
|
|
1707
|
+
color: var(--text-muted);
|
|
1601
1708
|
line-height: 1.5;
|
|
1602
1709
|
}
|
|
1603
1710
|
|
|
@@ -1610,17 +1717,17 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1610
1717
|
font-size: 11px;
|
|
1611
1718
|
padding: 3px 8px;
|
|
1612
1719
|
border-radius: 4px;
|
|
1613
|
-
background:
|
|
1614
|
-
border: 1px solid
|
|
1720
|
+
background: var(--surface-sunken);
|
|
1721
|
+
border: 1px solid var(--border-subtle);
|
|
1615
1722
|
}
|
|
1616
1723
|
|
|
1617
1724
|
.detail-io-name {
|
|
1618
|
-
font-family:
|
|
1619
|
-
color:
|
|
1725
|
+
font-family: var(--font-mono);
|
|
1726
|
+
color: var(--text-default);
|
|
1620
1727
|
}
|
|
1621
1728
|
|
|
1622
1729
|
.detail-io-concept {
|
|
1623
|
-
color:
|
|
1730
|
+
color: var(--text-dim);
|
|
1624
1731
|
font-size: 10px;
|
|
1625
1732
|
}
|
|
1626
1733
|
|
|
@@ -1633,11 +1740,11 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1633
1740
|
/* ─── Blueprint-specific sections ───────────────────────────────────────── */
|
|
1634
1741
|
|
|
1635
1742
|
.detail-prompt-block {
|
|
1636
|
-
font-family:
|
|
1743
|
+
font-family: var(--font-mono);
|
|
1637
1744
|
font-size: 11px;
|
|
1638
|
-
color:
|
|
1639
|
-
background:
|
|
1640
|
-
border: 1px solid
|
|
1745
|
+
color: var(--text-muted);
|
|
1746
|
+
background: var(--surface-sunken);
|
|
1747
|
+
border: 1px solid var(--border-subtle);
|
|
1641
1748
|
border-radius: 6px;
|
|
1642
1749
|
padding: 10px 12px;
|
|
1643
1750
|
white-space: pre-wrap;
|
|
@@ -1662,16 +1769,16 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1662
1769
|
align-items: center;
|
|
1663
1770
|
gap: 4px;
|
|
1664
1771
|
font-size: 9px;
|
|
1665
|
-
color:
|
|
1772
|
+
color: var(--text-dim);
|
|
1666
1773
|
padding: 2px 6px;
|
|
1667
1774
|
border-radius: 3px;
|
|
1668
|
-
background:
|
|
1669
|
-
border: 1px solid
|
|
1775
|
+
background: var(--surface-sunken);
|
|
1776
|
+
border: 1px solid var(--border-subtle);
|
|
1670
1777
|
transition: color 0.15s;
|
|
1671
1778
|
}
|
|
1672
1779
|
|
|
1673
1780
|
.detail-prompt-expand-btn:hover {
|
|
1674
|
-
color:
|
|
1781
|
+
color: var(--text-muted);
|
|
1675
1782
|
}
|
|
1676
1783
|
|
|
1677
1784
|
.detail-kv-row {
|
|
@@ -1684,13 +1791,13 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1684
1791
|
}
|
|
1685
1792
|
|
|
1686
1793
|
.detail-kv-key {
|
|
1687
|
-
color:
|
|
1794
|
+
color: var(--text-dim);
|
|
1688
1795
|
flex-shrink: 0; /* label stays at its natural width */
|
|
1689
1796
|
}
|
|
1690
1797
|
|
|
1691
1798
|
.detail-kv-value {
|
|
1692
|
-
font-family:
|
|
1693
|
-
color:
|
|
1799
|
+
font-family: var(--font-mono);
|
|
1800
|
+
color: var(--text-default);
|
|
1694
1801
|
flex: 1 1 0;
|
|
1695
1802
|
min-width: 0;
|
|
1696
1803
|
text-align: right;
|
|
@@ -1707,17 +1814,17 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1707
1814
|
}
|
|
1708
1815
|
|
|
1709
1816
|
.detail-field-block-label {
|
|
1710
|
-
font-family:
|
|
1817
|
+
font-family: var(--font-mono);
|
|
1711
1818
|
font-size: 10px;
|
|
1712
|
-
color:
|
|
1819
|
+
color: var(--text-dim);
|
|
1713
1820
|
}
|
|
1714
1821
|
|
|
1715
1822
|
.detail-field-block-value {
|
|
1716
|
-
font-family:
|
|
1823
|
+
font-family: var(--font-mono);
|
|
1717
1824
|
font-size: 11px;
|
|
1718
|
-
color:
|
|
1719
|
-
background:
|
|
1720
|
-
border: 1px solid
|
|
1825
|
+
color: var(--text-default);
|
|
1826
|
+
background: var(--surface-sunken);
|
|
1827
|
+
border: 1px solid var(--border-subtle);
|
|
1721
1828
|
border-radius: 6px;
|
|
1722
1829
|
padding: 8px 10px;
|
|
1723
1830
|
white-space: pre-wrap;
|
|
@@ -1741,20 +1848,20 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1741
1848
|
margin-top: 6px;
|
|
1742
1849
|
margin-bottom: 4px;
|
|
1743
1850
|
padding: 4px 0 4px 8px;
|
|
1744
|
-
border-left: 2px solid
|
|
1851
|
+
border-left: 2px solid var(--color-success);
|
|
1745
1852
|
}
|
|
1746
1853
|
|
|
1747
1854
|
.detail-nested-header-name {
|
|
1748
|
-
font-family:
|
|
1855
|
+
font-family: var(--font-mono);
|
|
1749
1856
|
font-size: 11px;
|
|
1750
1857
|
font-weight: 600;
|
|
1751
|
-
color:
|
|
1858
|
+
color: var(--text-default);
|
|
1752
1859
|
}
|
|
1753
1860
|
|
|
1754
1861
|
.detail-nested-header-meta {
|
|
1755
|
-
font-family:
|
|
1862
|
+
font-family: var(--font-mono);
|
|
1756
1863
|
font-size: 9px;
|
|
1757
|
-
color:
|
|
1864
|
+
color: var(--text-dim);
|
|
1758
1865
|
text-transform: uppercase;
|
|
1759
1866
|
letter-spacing: 0.04em;
|
|
1760
1867
|
}
|
|
@@ -1770,39 +1877,39 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1770
1877
|
.detail-schema-table th {
|
|
1771
1878
|
text-align: left;
|
|
1772
1879
|
font-weight: 700;
|
|
1773
|
-
color:
|
|
1880
|
+
color: var(--text-dim);
|
|
1774
1881
|
font-size: 9px;
|
|
1775
1882
|
text-transform: uppercase;
|
|
1776
1883
|
letter-spacing: 0.06em;
|
|
1777
1884
|
padding: 4px 6px;
|
|
1778
|
-
border-bottom: 1px solid
|
|
1885
|
+
border-bottom: 1px solid var(--border-default);
|
|
1779
1886
|
}
|
|
1780
1887
|
|
|
1781
1888
|
.detail-schema-table td {
|
|
1782
1889
|
padding: 4px 6px;
|
|
1783
|
-
border-bottom: 1px solid
|
|
1784
|
-
color:
|
|
1890
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
1891
|
+
color: var(--text-muted);
|
|
1785
1892
|
}
|
|
1786
1893
|
|
|
1787
1894
|
.detail-schema-field {
|
|
1788
|
-
font-family:
|
|
1789
|
-
color:
|
|
1895
|
+
font-family: var(--font-mono);
|
|
1896
|
+
color: var(--text-default);
|
|
1790
1897
|
}
|
|
1791
1898
|
|
|
1792
1899
|
.detail-schema-type {
|
|
1793
|
-
color:
|
|
1900
|
+
color: var(--color-accent);
|
|
1794
1901
|
}
|
|
1795
1902
|
|
|
1796
1903
|
.detail-schema-required {
|
|
1797
|
-
color:
|
|
1904
|
+
color: var(--color-pipe);
|
|
1798
1905
|
font-size: 9px;
|
|
1799
1906
|
}
|
|
1800
1907
|
|
|
1801
1908
|
/* ─── Error section ─────────────────────────────────────────────────────── */
|
|
1802
1909
|
|
|
1803
1910
|
.detail-error {
|
|
1804
|
-
background:
|
|
1805
|
-
border: 1px solid
|
|
1911
|
+
background: var(--color-error-bg);
|
|
1912
|
+
border: 1px solid var(--color-error-border);
|
|
1806
1913
|
border-radius: 6px;
|
|
1807
1914
|
padding: 10px 12px;
|
|
1808
1915
|
}
|
|
@@ -1810,20 +1917,20 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1810
1917
|
.detail-error-type {
|
|
1811
1918
|
font-size: 12px;
|
|
1812
1919
|
font-weight: 600;
|
|
1813
|
-
color:
|
|
1920
|
+
color: var(--color-error);
|
|
1814
1921
|
margin-bottom: 4px;
|
|
1815
1922
|
}
|
|
1816
1923
|
|
|
1817
1924
|
.detail-error-message {
|
|
1818
1925
|
font-size: 11px;
|
|
1819
|
-
color:
|
|
1926
|
+
color: var(--text-muted);
|
|
1820
1927
|
line-height: 1.5;
|
|
1821
1928
|
}
|
|
1822
1929
|
|
|
1823
1930
|
.detail-error-stack {
|
|
1824
|
-
font-family:
|
|
1931
|
+
font-family: var(--font-mono);
|
|
1825
1932
|
font-size: 10px;
|
|
1826
|
-
color:
|
|
1933
|
+
color: var(--text-dim);
|
|
1827
1934
|
margin-top: 8px;
|
|
1828
1935
|
max-height: 150px;
|
|
1829
1936
|
overflow-y: auto;
|
|
@@ -1846,20 +1953,20 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1846
1953
|
font-size: 11px;
|
|
1847
1954
|
padding: 4px 8px;
|
|
1848
1955
|
border-radius: 4px;
|
|
1849
|
-
background:
|
|
1850
|
-
border: 1px solid
|
|
1956
|
+
background: var(--surface-sunken);
|
|
1957
|
+
border: 1px solid var(--border-subtle);
|
|
1851
1958
|
}
|
|
1852
1959
|
|
|
1853
1960
|
.detail-step-index {
|
|
1854
|
-
color:
|
|
1961
|
+
color: var(--text-dim);
|
|
1855
1962
|
font-size: 10px;
|
|
1856
1963
|
font-weight: 700;
|
|
1857
1964
|
min-width: 16px;
|
|
1858
1965
|
}
|
|
1859
1966
|
|
|
1860
1967
|
.detail-step-code {
|
|
1861
|
-
font-family:
|
|
1862
|
-
color:
|
|
1968
|
+
font-family: var(--font-mono);
|
|
1969
|
+
color: var(--text-default);
|
|
1863
1970
|
}
|
|
1864
1971
|
|
|
1865
1972
|
/* ─── Tags/Metrics ──────────────────────────────────────────────────────── */
|
|
@@ -1874,53 +1981,55 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1874
1981
|
font-size: 10px;
|
|
1875
1982
|
padding: 2px 6px;
|
|
1876
1983
|
border-radius: 3px;
|
|
1877
|
-
background:
|
|
1878
|
-
border: 1px solid
|
|
1984
|
+
background: var(--surface-sunken);
|
|
1985
|
+
border: 1px solid var(--border-subtle);
|
|
1879
1986
|
}
|
|
1880
1987
|
|
|
1881
1988
|
.detail-tag-key {
|
|
1882
|
-
color:
|
|
1989
|
+
color: var(--text-dim);
|
|
1883
1990
|
}
|
|
1884
1991
|
|
|
1885
1992
|
.detail-tag-value {
|
|
1886
|
-
color:
|
|
1887
|
-
font-family:
|
|
1993
|
+
color: var(--text-default);
|
|
1994
|
+
font-family: var(--font-mono);
|
|
1888
1995
|
}
|
|
1889
1996
|
|
|
1890
1997
|
/* ─── Concept panel header ──────────────────────────────────────────────── */
|
|
1891
1998
|
|
|
1892
1999
|
.detail-concept-code {
|
|
1893
|
-
font-family:
|
|
2000
|
+
font-family: var(--font-mono);
|
|
1894
2001
|
font-size: 14px;
|
|
1895
2002
|
font-weight: 600;
|
|
1896
|
-
color:
|
|
2003
|
+
color: var(--color-success);
|
|
1897
2004
|
}
|
|
1898
2005
|
|
|
1899
2006
|
.detail-concept-domain {
|
|
1900
2007
|
font-size: 11px;
|
|
1901
|
-
color:
|
|
2008
|
+
color: var(--text-dim);
|
|
1902
2009
|
}
|
|
1903
2010
|
|
|
1904
2011
|
.detail-refines {
|
|
1905
2012
|
font-size: 11px;
|
|
1906
|
-
color:
|
|
2013
|
+
color: var(--text-muted);
|
|
1907
2014
|
}
|
|
1908
2015
|
|
|
1909
2016
|
.detail-refines-code {
|
|
1910
|
-
font-family:
|
|
1911
|
-
color:
|
|
2017
|
+
font-family: var(--font-mono);
|
|
2018
|
+
color: var(--color-accent);
|
|
1912
2019
|
}
|
|
1913
2020
|
|
|
1914
2021
|
/* ─── Not available fallback ────────────────────────────────────────────── */
|
|
1915
2022
|
|
|
1916
2023
|
.detail-not-available {
|
|
1917
2024
|
font-size: 12px;
|
|
1918
|
-
color:
|
|
2025
|
+
color: var(--text-dim);
|
|
1919
2026
|
font-style: italic;
|
|
1920
2027
|
padding: 8px 0;
|
|
1921
2028
|
}
|
|
1922
2029
|
|
|
1923
2030
|
/* ─── Graph Toolbar — floating controls over the graph background ─────── */
|
|
2031
|
+
/* Token-only styling: theme switching happens by swapping `--surface-*`, */
|
|
2032
|
+
/* `--text-*`, `--border-*`, and `--color-accent` values on the container. */
|
|
1924
2033
|
|
|
1925
2034
|
.graph-toolbar {
|
|
1926
2035
|
position: absolute;
|
|
@@ -1942,9 +2051,9 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1942
2051
|
align-items: center;
|
|
1943
2052
|
justify-content: center;
|
|
1944
2053
|
border-radius: 6px;
|
|
1945
|
-
background:
|
|
1946
|
-
border: 1px solid
|
|
1947
|
-
color:
|
|
2054
|
+
background: var(--surface-overlay);
|
|
2055
|
+
border: 1px solid var(--border-default);
|
|
2056
|
+
color: var(--text-secondary);
|
|
1948
2057
|
backdrop-filter: blur(6px);
|
|
1949
2058
|
transition:
|
|
1950
2059
|
background 0.15s,
|
|
@@ -1953,46 +2062,42 @@ button.stuff-viewer-local-file--button:focus-visible {
|
|
|
1953
2062
|
}
|
|
1954
2063
|
|
|
1955
2064
|
.graph-toolbar-btn:hover {
|
|
1956
|
-
background:
|
|
1957
|
-
color:
|
|
1958
|
-
border-color:
|
|
2065
|
+
background: var(--surface-overlay-hover);
|
|
2066
|
+
color: var(--text-primary);
|
|
2067
|
+
border-color: var(--border-strong);
|
|
1959
2068
|
}
|
|
1960
2069
|
|
|
1961
2070
|
.graph-toolbar-btn:focus-visible {
|
|
1962
|
-
outline: 2px solid
|
|
2071
|
+
outline: 2px solid var(--focus-ring);
|
|
1963
2072
|
outline-offset: 1px;
|
|
1964
2073
|
}
|
|
1965
2074
|
|
|
1966
2075
|
.graph-toolbar-btn--active {
|
|
1967
|
-
background:
|
|
1968
|
-
border-color:
|
|
1969
|
-
color:
|
|
2076
|
+
background: var(--color-accent);
|
|
2077
|
+
border-color: var(--color-accent);
|
|
2078
|
+
color: var(--text-on-accent);
|
|
1970
2079
|
}
|
|
1971
2080
|
|
|
1972
2081
|
.graph-toolbar-btn--active:hover {
|
|
1973
|
-
background:
|
|
1974
|
-
border-color:
|
|
1975
|
-
color:
|
|
2082
|
+
background: var(--color-accent);
|
|
2083
|
+
border-color: var(--color-accent);
|
|
2084
|
+
color: var(--text-on-accent);
|
|
2085
|
+
filter: brightness(1.1);
|
|
1976
2086
|
}
|
|
1977
2087
|
|
|
1978
|
-
.graph-toolbar-btn:disabled
|
|
2088
|
+
.graph-toolbar-btn:disabled,
|
|
2089
|
+
.graph-toolbar-btn:disabled:hover {
|
|
1979
2090
|
opacity: 0.4;
|
|
1980
2091
|
cursor: not-allowed;
|
|
1981
|
-
background:
|
|
1982
|
-
color:
|
|
1983
|
-
border-color:
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
|
-
.graph-toolbar-btn:disabled:hover {
|
|
1987
|
-
background: rgba(17, 17, 24, 0.6);
|
|
1988
|
-
color: #64748b;
|
|
1989
|
-
border-color: rgba(255, 255, 255, 0.06);
|
|
2092
|
+
background: var(--surface-overlay-disabled);
|
|
2093
|
+
color: var(--text-dim);
|
|
2094
|
+
border-color: var(--border-subtle);
|
|
1990
2095
|
}
|
|
1991
2096
|
|
|
1992
2097
|
.graph-toolbar-separator {
|
|
1993
2098
|
width: 1px;
|
|
1994
2099
|
height: 18px;
|
|
1995
|
-
background:
|
|
2100
|
+
background: var(--border-default);
|
|
1996
2101
|
margin: 0 2px;
|
|
1997
2102
|
}
|
|
1998
2103
|
|