schematex 0.9.0 → 0.9.2
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/ai/ai-sdk.cjs +24 -24
- package/dist/ai/ai-sdk.d.cts +2 -2
- package/dist/ai/ai-sdk.d.ts +2 -2
- package/dist/ai/ai-sdk.js +19 -19
- package/dist/ai/index.cjs +33 -33
- package/dist/ai/index.js +20 -20
- package/dist/browser.cjs +25 -25
- package/dist/browser.js +19 -19
- package/dist/{chunk-YMFYPB5Y.cjs → chunk-2A5HJFOX.cjs} +4 -4
- package/dist/{chunk-YMFYPB5Y.cjs.map → chunk-2A5HJFOX.cjs.map} +1 -1
- package/dist/{chunk-6L46VIXI.cjs → chunk-2ASZMLC3.cjs} +20 -28
- package/dist/chunk-2ASZMLC3.cjs.map +1 -0
- package/dist/{chunk-6NUAGU6O.js → chunk-2RFFCZ3I.js} +3 -3
- package/dist/{chunk-6NUAGU6O.js.map → chunk-2RFFCZ3I.js.map} +1 -1
- package/dist/{chunk-HKOPXQYU.cjs → chunk-3DSNGR26.cjs} +5 -5
- package/dist/{chunk-HKOPXQYU.cjs.map → chunk-3DSNGR26.cjs.map} +1 -1
- package/dist/{chunk-D34VGLSE.cjs → chunk-4MGALM2C.cjs} +5 -5
- package/dist/{chunk-D34VGLSE.cjs.map → chunk-4MGALM2C.cjs.map} +1 -1
- package/dist/{chunk-ABCMTAOZ.js → chunk-56DSMSXK.js} +7 -4
- package/dist/chunk-56DSMSXK.js.map +1 -0
- package/dist/{chunk-Q2YRJHFB.cjs → chunk-6BJKQULN.cjs} +7 -7
- package/dist/chunk-6BJKQULN.cjs.map +1 -0
- package/dist/{chunk-NFZMNKOR.cjs → chunk-7JJQEECD.cjs} +15 -15
- package/dist/{chunk-NFZMNKOR.cjs.map → chunk-7JJQEECD.cjs.map} +1 -1
- package/dist/{chunk-JN6FHUC6.js → chunk-7SVB3XA7.js} +3 -3
- package/dist/{chunk-JN6FHUC6.js.map → chunk-7SVB3XA7.js.map} +1 -1
- package/dist/{chunk-HPEAE3JM.js → chunk-7Z2GDS4G.js} +58 -8
- package/dist/chunk-7Z2GDS4G.js.map +1 -0
- package/dist/{chunk-PR6IAGVP.js → chunk-CURAZVOH.js} +3 -3
- package/dist/{chunk-PR6IAGVP.js.map → chunk-CURAZVOH.js.map} +1 -1
- package/dist/{chunk-KGOZBABH.cjs → chunk-GYTU7L4L.cjs} +12 -12
- package/dist/{chunk-KGOZBABH.cjs.map → chunk-GYTU7L4L.cjs.map} +1 -1
- package/dist/{chunk-B5AQ3CG3.cjs → chunk-HILYXWGJ.cjs} +16 -13
- package/dist/chunk-HILYXWGJ.cjs.map +1 -0
- package/dist/{chunk-E3CAJGJM.js → chunk-HJA7MIMV.js} +6 -6
- package/dist/chunk-HJA7MIMV.js.map +1 -0
- package/dist/{chunk-DX44TBFZ.js → chunk-IQLZUCWI.js} +20 -28
- package/dist/chunk-IQLZUCWI.js.map +1 -0
- package/dist/{chunk-NXU4XKLY.cjs → chunk-JHJJT5H5.cjs} +9 -7
- package/dist/chunk-JHJJT5H5.cjs.map +1 -0
- package/dist/{chunk-CDK7KDIW.js → chunk-JR6JNQEZ.js} +4 -4
- package/dist/{chunk-CDK7KDIW.js.map → chunk-JR6JNQEZ.js.map} +1 -1
- package/dist/{chunk-YTGOLTLJ.js → chunk-KR7PPCC4.js} +4 -4
- package/dist/{chunk-YTGOLTLJ.js.map → chunk-KR7PPCC4.js.map} +1 -1
- package/dist/{chunk-AJJYWXZB.cjs → chunk-L2NY4XEY.cjs} +4 -4
- package/dist/{chunk-AJJYWXZB.cjs.map → chunk-L2NY4XEY.cjs.map} +1 -1
- package/dist/{chunk-T3GV7OVF.js → chunk-MERU76LW.js} +21 -4
- package/dist/chunk-MERU76LW.js.map +1 -0
- package/dist/{chunk-IXRPRMHI.js → chunk-MTIZIHWE.js} +9 -7
- package/dist/chunk-MTIZIHWE.js.map +1 -0
- package/dist/{chunk-DR3DDDQY.cjs → chunk-MUE45N2A.cjs} +59 -9
- package/dist/chunk-MUE45N2A.cjs.map +1 -0
- package/dist/{chunk-DHI7YAQJ.cjs → chunk-MYVY55DO.cjs} +15 -15
- package/dist/{chunk-DHI7YAQJ.cjs.map → chunk-MYVY55DO.cjs.map} +1 -1
- package/dist/{chunk-NZT5P2XZ.cjs → chunk-NT6VVMLW.cjs} +291 -2
- package/dist/chunk-NT6VVMLW.cjs.map +1 -0
- package/dist/{chunk-UGB42BGK.cjs → chunk-NTQBNBBP.cjs} +486 -437
- package/dist/chunk-NTQBNBBP.cjs.map +1 -0
- package/dist/{chunk-T5KHNJ67.cjs → chunk-PSQGLE6U.cjs} +6 -6
- package/dist/{chunk-T5KHNJ67.cjs.map → chunk-PSQGLE6U.cjs.map} +1 -1
- package/dist/{chunk-GDZNTILD.js → chunk-TMAOPJCT.js} +4 -4
- package/dist/chunk-TMAOPJCT.js.map +1 -0
- package/dist/{chunk-LM5X7ZNR.js → chunk-TP7LQ5PF.js} +312 -263
- package/dist/chunk-TP7LQ5PF.js.map +1 -0
- package/dist/{chunk-UOM3EDE6.js → chunk-TWTUIUNK.js} +3 -3
- package/dist/{chunk-UOM3EDE6.js.map → chunk-TWTUIUNK.js.map} +1 -1
- package/dist/{chunk-UK6HF6PE.js → chunk-TYEQC7PV.js} +288 -3
- package/dist/chunk-TYEQC7PV.js.map +1 -0
- package/dist/{chunk-2SZJQVPN.cjs → chunk-V3JTVTPY.cjs} +87 -30
- package/dist/chunk-V3JTVTPY.cjs.map +1 -0
- package/dist/{chunk-KF3DFASA.js → chunk-VMUNKEB2.js} +3 -3
- package/dist/{chunk-KF3DFASA.js.map → chunk-VMUNKEB2.js.map} +1 -1
- package/dist/{chunk-K2D6VFLP.js → chunk-VWIKDJNV.js} +78 -22
- package/dist/chunk-VWIKDJNV.js.map +1 -0
- package/dist/{chunk-JGCKW5RS.js → chunk-VY4JOTM2.js} +5 -5
- package/dist/chunk-VY4JOTM2.js.map +1 -0
- package/dist/{chunk-LENRV7ZJ.cjs → chunk-VYAUTNHC.cjs} +5 -5
- package/dist/chunk-VYAUTNHC.cjs.map +1 -0
- package/dist/{chunk-E7LXMEKX.js → chunk-VZVREOTM.js} +3 -3
- package/dist/{chunk-E7LXMEKX.js.map → chunk-VZVREOTM.js.map} +1 -1
- package/dist/{chunk-JIUC4DRS.cjs → chunk-WFVRUUJW.cjs} +6 -6
- package/dist/chunk-WFVRUUJW.cjs.map +1 -0
- package/dist/{chunk-JIJWGHRN.cjs → chunk-XA6XIAMN.cjs} +22 -5
- package/dist/chunk-XA6XIAMN.cjs.map +1 -0
- package/dist/diagrams/blockdiagram/index.cjs +6 -5
- package/dist/diagrams/blockdiagram/index.d.cts +2 -2
- package/dist/diagrams/blockdiagram/index.d.ts +2 -2
- package/dist/diagrams/blockdiagram/index.js +2 -1
- package/dist/diagrams/circuit/index.cjs +9 -9
- package/dist/diagrams/circuit/index.js +2 -2
- package/dist/diagrams/ecomap/index.cjs +7 -7
- package/dist/diagrams/ecomap/index.js +2 -2
- package/dist/diagrams/entity/index.cjs +6 -6
- package/dist/diagrams/entity/index.js +2 -2
- package/dist/diagrams/fishbone/index.cjs +8 -8
- package/dist/diagrams/fishbone/index.js +2 -2
- package/dist/diagrams/flowchart/index.cjs +8 -8
- package/dist/diagrams/flowchart/index.d.cts +1 -1
- package/dist/diagrams/flowchart/index.d.ts +1 -1
- package/dist/diagrams/flowchart/index.js +2 -2
- package/dist/diagrams/genogram/index.cjs +9 -9
- package/dist/diagrams/genogram/index.js +2 -2
- package/dist/diagrams/ladder/index.cjs +6 -6
- package/dist/diagrams/ladder/index.js +2 -2
- package/dist/diagrams/logic/index.cjs +8 -8
- package/dist/diagrams/logic/index.js +2 -2
- package/dist/diagrams/orgchart/index.cjs +8 -8
- package/dist/diagrams/orgchart/index.js +2 -2
- package/dist/diagrams/pedigree/index.cjs +7 -7
- package/dist/diagrams/pedigree/index.js +2 -2
- package/dist/diagrams/phylo/index.cjs +7 -7
- package/dist/diagrams/phylo/index.js +2 -2
- package/dist/diagrams/sld/index.cjs +8 -8
- package/dist/diagrams/sld/index.js +2 -2
- package/dist/diagrams/sociogram/index.cjs +6 -6
- package/dist/diagrams/sociogram/index.js +2 -2
- package/dist/diagrams/timing/index.cjs +4 -4
- package/dist/diagrams/timing/index.js +1 -1
- package/dist/diagrams/venn/index.cjs +9 -9
- package/dist/diagrams/venn/index.js +2 -2
- package/dist/{index-B0YO7rx8.d.cts → index-BiXWjQht.d.cts} +10 -4
- package/dist/{index-u3KZBdas.d.ts → index-Cq8y1aaa.d.ts} +10 -4
- package/dist/index.cjs +87 -87
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +23 -23
- package/dist/react.cjs +19 -19
- package/dist/react.js +18 -18
- package/package.json +1 -1
- package/dist/chunk-2SZJQVPN.cjs.map +0 -1
- package/dist/chunk-6L46VIXI.cjs.map +0 -1
- package/dist/chunk-ABCMTAOZ.js.map +0 -1
- package/dist/chunk-B5AQ3CG3.cjs.map +0 -1
- package/dist/chunk-DR3DDDQY.cjs.map +0 -1
- package/dist/chunk-DX44TBFZ.js.map +0 -1
- package/dist/chunk-E3CAJGJM.js.map +0 -1
- package/dist/chunk-GDZNTILD.js.map +0 -1
- package/dist/chunk-HPEAE3JM.js.map +0 -1
- package/dist/chunk-IXRPRMHI.js.map +0 -1
- package/dist/chunk-JGCKW5RS.js.map +0 -1
- package/dist/chunk-JIJWGHRN.cjs.map +0 -1
- package/dist/chunk-JIUC4DRS.cjs.map +0 -1
- package/dist/chunk-K2D6VFLP.js.map +0 -1
- package/dist/chunk-LENRV7ZJ.cjs.map +0 -1
- package/dist/chunk-LM5X7ZNR.js.map +0 -1
- package/dist/chunk-NXU4XKLY.cjs.map +0 -1
- package/dist/chunk-NZT5P2XZ.cjs.map +0 -1
- package/dist/chunk-Q2YRJHFB.cjs.map +0 -1
- package/dist/chunk-T3GV7OVF.js.map +0 -1
- package/dist/chunk-UGB42BGK.cjs.map +0 -1
- package/dist/chunk-UK6HF6PE.js.map +0 -1
|
@@ -690,6 +690,289 @@ function resolveUmlClassTheme(name) {
|
|
|
690
690
|
const themeName = name in BASE_THEMES ? name : "default";
|
|
691
691
|
return { ...BASE_THEMES[themeName], ...UMLCLASS_TOKENS[themeName] };
|
|
692
692
|
}
|
|
693
|
+
var DEFAULT_BPMN = {
|
|
694
|
+
bpmnStroke: "#334155",
|
|
695
|
+
bpmnText: "#0f172a",
|
|
696
|
+
poolFill: "#ffffff",
|
|
697
|
+
laneFill: "#fbfcfe",
|
|
698
|
+
labelBandFill: "#eef2f7",
|
|
699
|
+
taskFill: "#eff6ff",
|
|
700
|
+
// blue-50 — "work happens here"
|
|
701
|
+
taskStroke: "#3b82f6",
|
|
702
|
+
// blue-500
|
|
703
|
+
gatewayFill: "#fef3c7",
|
|
704
|
+
// amber-100 — de-facto gateway yellow
|
|
705
|
+
gatewayStroke: "#d97706",
|
|
706
|
+
// amber-600
|
|
707
|
+
gatewayGlyph: "#92400e",
|
|
708
|
+
// amber-800
|
|
709
|
+
startFill: "#dcfce7",
|
|
710
|
+
// green-100 — de-facto start green
|
|
711
|
+
startStroke: "#059669",
|
|
712
|
+
endFill: "#fee2e2",
|
|
713
|
+
// red-100 — de-facto end red
|
|
714
|
+
endStroke: "#dc2626",
|
|
715
|
+
intermediateFill: "#ffffff",
|
|
716
|
+
intermediateStroke: "#334155",
|
|
717
|
+
flowStroke: "#334155",
|
|
718
|
+
msgFlowStroke: "#94a3b8"
|
|
719
|
+
};
|
|
720
|
+
var MONOCHROME_BPMN = {
|
|
721
|
+
bpmnStroke: "#000000",
|
|
722
|
+
bpmnText: "#000000",
|
|
723
|
+
poolFill: "#ffffff",
|
|
724
|
+
laneFill: "#ffffff",
|
|
725
|
+
labelBandFill: "#f0f0f0",
|
|
726
|
+
taskFill: "#ffffff",
|
|
727
|
+
taskStroke: "#000000",
|
|
728
|
+
gatewayFill: "#ffffff",
|
|
729
|
+
gatewayStroke: "#000000",
|
|
730
|
+
gatewayGlyph: "#000000",
|
|
731
|
+
startFill: "#ffffff",
|
|
732
|
+
startStroke: "#000000",
|
|
733
|
+
endFill: "#ffffff",
|
|
734
|
+
endStroke: "#000000",
|
|
735
|
+
intermediateFill: "#ffffff",
|
|
736
|
+
intermediateStroke: "#000000",
|
|
737
|
+
flowStroke: "#000000",
|
|
738
|
+
msgFlowStroke: "#555555"
|
|
739
|
+
};
|
|
740
|
+
var DARK_BPMN = {
|
|
741
|
+
bpmnStroke: "#cdd6f4",
|
|
742
|
+
bpmnText: "#cdd6f4",
|
|
743
|
+
poolFill: "#1e1e2e",
|
|
744
|
+
laneFill: "#272736",
|
|
745
|
+
labelBandFill: "#313244",
|
|
746
|
+
taskFill: "#1e3a5f",
|
|
747
|
+
taskStroke: "#89b4fa",
|
|
748
|
+
gatewayFill: "#45413a",
|
|
749
|
+
gatewayStroke: "#f9e2af",
|
|
750
|
+
gatewayGlyph: "#f9e2af",
|
|
751
|
+
startFill: "#1e3a2a",
|
|
752
|
+
startStroke: "#a6e3a1",
|
|
753
|
+
endFill: "#3a231f",
|
|
754
|
+
endStroke: "#f38ba8",
|
|
755
|
+
intermediateFill: "#313244",
|
|
756
|
+
intermediateStroke: "#cdd6f4",
|
|
757
|
+
flowStroke: "#cdd6f4",
|
|
758
|
+
msgFlowStroke: "#7f849c"
|
|
759
|
+
};
|
|
760
|
+
var BPMN_TOKENS = {
|
|
761
|
+
default: DEFAULT_BPMN,
|
|
762
|
+
monochrome: MONOCHROME_BPMN,
|
|
763
|
+
dark: DARK_BPMN
|
|
764
|
+
};
|
|
765
|
+
function resolveBpmnTheme(name) {
|
|
766
|
+
const themeName = name in BASE_THEMES ? name : "default";
|
|
767
|
+
return { ...BASE_THEMES[themeName], ...BPMN_TOKENS[themeName] };
|
|
768
|
+
}
|
|
769
|
+
var DEFAULT_STATE = {
|
|
770
|
+
stateFill: "#ffffff",
|
|
771
|
+
stateStroke: "#334155",
|
|
772
|
+
stateText: "#0f172a",
|
|
773
|
+
activityText: "#475569",
|
|
774
|
+
compositeFill: "#f8fafc",
|
|
775
|
+
compositeTitlebar: "#eef2f7",
|
|
776
|
+
regionDiv: "#94a3b8",
|
|
777
|
+
psInk: "#0f172a",
|
|
778
|
+
transitionStroke: "#334155",
|
|
779
|
+
transitionLabel: "#0f172a",
|
|
780
|
+
labelBg: "#ffffff",
|
|
781
|
+
noteFill: "#fef9c3",
|
|
782
|
+
noteStroke: "#ca8a04",
|
|
783
|
+
noteText: "#374151"
|
|
784
|
+
};
|
|
785
|
+
var MONOCHROME_STATE = {
|
|
786
|
+
stateFill: "#ffffff",
|
|
787
|
+
stateStroke: "#000000",
|
|
788
|
+
stateText: "#000000",
|
|
789
|
+
activityText: "#333333",
|
|
790
|
+
compositeFill: "#ffffff",
|
|
791
|
+
compositeTitlebar: "#f0f0f0",
|
|
792
|
+
regionDiv: "#888888",
|
|
793
|
+
psInk: "#000000",
|
|
794
|
+
transitionStroke: "#000000",
|
|
795
|
+
transitionLabel: "#000000",
|
|
796
|
+
labelBg: "#ffffff",
|
|
797
|
+
noteFill: "#ffffff",
|
|
798
|
+
noteStroke: "#000000",
|
|
799
|
+
noteText: "#000000"
|
|
800
|
+
};
|
|
801
|
+
var DARK_STATE = {
|
|
802
|
+
stateFill: "#313244",
|
|
803
|
+
stateStroke: "#cdd6f4",
|
|
804
|
+
stateText: "#cdd6f4",
|
|
805
|
+
activityText: "#a6adc8",
|
|
806
|
+
compositeFill: "#272736",
|
|
807
|
+
compositeTitlebar: "#313244",
|
|
808
|
+
regionDiv: "#6c7086",
|
|
809
|
+
psInk: "#cdd6f4",
|
|
810
|
+
transitionStroke: "#cdd6f4",
|
|
811
|
+
transitionLabel: "#cdd6f4",
|
|
812
|
+
labelBg: "#1e1e2e",
|
|
813
|
+
noteFill: "#45413a",
|
|
814
|
+
noteStroke: "#f9e2af",
|
|
815
|
+
noteText: "#cdd6f4"
|
|
816
|
+
};
|
|
817
|
+
var STATE_TOKENS = {
|
|
818
|
+
default: DEFAULT_STATE,
|
|
819
|
+
monochrome: MONOCHROME_STATE,
|
|
820
|
+
dark: DARK_STATE
|
|
821
|
+
};
|
|
822
|
+
function resolveStateTheme(name) {
|
|
823
|
+
const themeName = name in BASE_THEMES ? name : "default";
|
|
824
|
+
return { ...BASE_THEMES[themeName], ...STATE_TOKENS[themeName] };
|
|
825
|
+
}
|
|
826
|
+
var DEFAULT_MATRIX = {
|
|
827
|
+
inkStrong: "#111827",
|
|
828
|
+
ink: "#1f2937",
|
|
829
|
+
inkMuted: "#374151",
|
|
830
|
+
inkFaint: "#6b7280",
|
|
831
|
+
gridFaint: "#e5e7eb",
|
|
832
|
+
grid: "#d1d5db",
|
|
833
|
+
gridMid: "#cbd5e1",
|
|
834
|
+
gridStrong: "#94a3b8",
|
|
835
|
+
border: "#374151",
|
|
836
|
+
surface: "#ffffff",
|
|
837
|
+
surfaceAlt: "#f8fafc",
|
|
838
|
+
surfaceTint: "#f0fdf4",
|
|
839
|
+
cornerFill: "#f1f5f9",
|
|
840
|
+
headerFill: "#e2e8f0",
|
|
841
|
+
accent: "#2563eb",
|
|
842
|
+
accentSoft: "#93c5fd",
|
|
843
|
+
accentTint: "#eff6ff",
|
|
844
|
+
accentDeep: "#1e3a8a",
|
|
845
|
+
roofFilled: "#eef2ff",
|
|
846
|
+
positive: "#16a34a",
|
|
847
|
+
positiveDeep: "#15803d",
|
|
848
|
+
negative: "#dc2626",
|
|
849
|
+
negativeDeep: "#b91c1c",
|
|
850
|
+
warnDeep: "#ea580c",
|
|
851
|
+
onHeader: "#ffffff"
|
|
852
|
+
};
|
|
853
|
+
var MONOCHROME_MATRIX = {
|
|
854
|
+
inkStrong: "#000000",
|
|
855
|
+
ink: "#000000",
|
|
856
|
+
inkMuted: "#333333",
|
|
857
|
+
inkFaint: "#555555",
|
|
858
|
+
gridFaint: "#dddddd",
|
|
859
|
+
grid: "#bbbbbb",
|
|
860
|
+
gridMid: "#aaaaaa",
|
|
861
|
+
gridStrong: "#777777",
|
|
862
|
+
border: "#000000",
|
|
863
|
+
surface: "#ffffff",
|
|
864
|
+
surfaceAlt: "#f7f7f7",
|
|
865
|
+
surfaceTint: "#f0f0f0",
|
|
866
|
+
cornerFill: "#f0f0f0",
|
|
867
|
+
headerFill: "#e5e5e5",
|
|
868
|
+
accent: "#000000",
|
|
869
|
+
accentSoft: "#bbbbbb",
|
|
870
|
+
accentTint: "#f0f0f0",
|
|
871
|
+
accentDeep: "#000000",
|
|
872
|
+
roofFilled: "#e5e5e5",
|
|
873
|
+
positive: "#000000",
|
|
874
|
+
positiveDeep: "#000000",
|
|
875
|
+
negative: "#000000",
|
|
876
|
+
negativeDeep: "#000000",
|
|
877
|
+
warnDeep: "#000000",
|
|
878
|
+
onHeader: "#ffffff"
|
|
879
|
+
};
|
|
880
|
+
var DARK_MATRIX = {
|
|
881
|
+
inkStrong: "#cdd6f4",
|
|
882
|
+
ink: "#cdd6f4",
|
|
883
|
+
inkMuted: "#bac2de",
|
|
884
|
+
inkFaint: "#a6adc8",
|
|
885
|
+
gridFaint: "#313244",
|
|
886
|
+
grid: "#45475a",
|
|
887
|
+
gridMid: "#45475a",
|
|
888
|
+
gridStrong: "#6c7086",
|
|
889
|
+
border: "#cdd6f4",
|
|
890
|
+
surface: "#1e1e2e",
|
|
891
|
+
surfaceAlt: "#272736",
|
|
892
|
+
surfaceTint: "rgba(166,227,161,0.08)",
|
|
893
|
+
cornerFill: "#313244",
|
|
894
|
+
headerFill: "#45475a",
|
|
895
|
+
accent: "#89b4fa",
|
|
896
|
+
accentSoft: "#45557a",
|
|
897
|
+
accentTint: "#1e3a5f",
|
|
898
|
+
accentDeep: "#89b4fa",
|
|
899
|
+
roofFilled: "#2a2a45",
|
|
900
|
+
positive: "#a6e3a1",
|
|
901
|
+
positiveDeep: "#a6e3a1",
|
|
902
|
+
negative: "#f38ba8",
|
|
903
|
+
negativeDeep: "#f38ba8",
|
|
904
|
+
warnDeep: "#fab387",
|
|
905
|
+
onHeader: "#1e1e2e"
|
|
906
|
+
};
|
|
907
|
+
var MATRIX_TOKENS = {
|
|
908
|
+
default: DEFAULT_MATRIX,
|
|
909
|
+
monochrome: MONOCHROME_MATRIX,
|
|
910
|
+
dark: DARK_MATRIX
|
|
911
|
+
};
|
|
912
|
+
function resolveMatrixTheme(name) {
|
|
913
|
+
const themeName = name in BASE_THEMES ? name : "default";
|
|
914
|
+
return { ...BASE_THEMES[themeName], ...MATRIX_TOKENS[themeName] };
|
|
915
|
+
}
|
|
916
|
+
var DEFAULT_BLOCK = {
|
|
917
|
+
blockStroke: "#334155",
|
|
918
|
+
blockText: "#0f172a",
|
|
919
|
+
blockName: "#64748b",
|
|
920
|
+
sumFill: "#ffffff",
|
|
921
|
+
signalStroke: "#334155",
|
|
922
|
+
roleFills: {
|
|
923
|
+
plant: "#ffffff",
|
|
924
|
+
controller: "#dbeafe",
|
|
925
|
+
sensor: "#f3e8ff",
|
|
926
|
+
actuator: "#dcfce7",
|
|
927
|
+
filter: "#fef9c3",
|
|
928
|
+
reference: "#ffffff",
|
|
929
|
+
disturbance: "#ffedd5",
|
|
930
|
+
generic: "#ffffff"
|
|
931
|
+
}
|
|
932
|
+
};
|
|
933
|
+
var MONOCHROME_BLOCK = {
|
|
934
|
+
blockStroke: "#000000",
|
|
935
|
+
blockText: "#000000",
|
|
936
|
+
blockName: "#333333",
|
|
937
|
+
sumFill: "#ffffff",
|
|
938
|
+
signalStroke: "#000000",
|
|
939
|
+
roleFills: {
|
|
940
|
+
plant: "#ffffff",
|
|
941
|
+
controller: "#ffffff",
|
|
942
|
+
sensor: "#ffffff",
|
|
943
|
+
actuator: "#ffffff",
|
|
944
|
+
filter: "#ffffff",
|
|
945
|
+
reference: "#ffffff",
|
|
946
|
+
disturbance: "#ffffff",
|
|
947
|
+
generic: "#ffffff"
|
|
948
|
+
}
|
|
949
|
+
};
|
|
950
|
+
var DARK_BLOCK = {
|
|
951
|
+
blockStroke: "#cdd6f4",
|
|
952
|
+
blockText: "#cdd6f4",
|
|
953
|
+
blockName: "#a6adc8",
|
|
954
|
+
sumFill: "#313244",
|
|
955
|
+
signalStroke: "#cdd6f4",
|
|
956
|
+
roleFills: {
|
|
957
|
+
plant: "#313244",
|
|
958
|
+
controller: "#1e3a5f",
|
|
959
|
+
sensor: "#2e2a52",
|
|
960
|
+
actuator: "#1e3a2a",
|
|
961
|
+
filter: "#3a3326",
|
|
962
|
+
reference: "#313244",
|
|
963
|
+
disturbance: "#3a2d1a",
|
|
964
|
+
generic: "#313244"
|
|
965
|
+
}
|
|
966
|
+
};
|
|
967
|
+
var BLOCK_TOKENS = {
|
|
968
|
+
default: DEFAULT_BLOCK,
|
|
969
|
+
monochrome: MONOCHROME_BLOCK,
|
|
970
|
+
dark: DARK_BLOCK
|
|
971
|
+
};
|
|
972
|
+
function resolveBlockTheme(name) {
|
|
973
|
+
const themeName = name in BASE_THEMES ? name : "default";
|
|
974
|
+
return { ...BASE_THEMES[themeName], ...BLOCK_TOKENS[themeName] };
|
|
975
|
+
}
|
|
693
976
|
function resolveBaseTheme(name) {
|
|
694
977
|
return BASE_THEMES[name] ?? BASE_THEMES["default"];
|
|
695
978
|
}
|
|
@@ -723,6 +1006,8 @@ var FONT_SIZE = {
|
|
|
723
1006
|
label: 12,
|
|
724
1007
|
small: 9
|
|
725
1008
|
};
|
|
1009
|
+
({
|
|
1010
|
+
size: FONT_SIZE.title});
|
|
726
1011
|
var STROKE_WIDTH = {
|
|
727
1012
|
thin: 1,
|
|
728
1013
|
normal: 2,
|
|
@@ -751,6 +1036,6 @@ function cssCustomProperties(theme) {
|
|
|
751
1036
|
--schematex-stroke-thick: ${STROKE_WIDTH.thick};`;
|
|
752
1037
|
}
|
|
753
1038
|
|
|
754
|
-
export { BASE_THEMES, BIOLOGY_TOKENS, DEFAULT_FONT_FAMILY, FONT_SIZE, NETWORK_TOKENS, PERSON_TOKENS, PETRI_TOKENS, STROKE_WIDTH, VENN_TOKENS, cssCustomProperties, resolveBaseTheme, resolveBiologyTheme, resolveBowtieTheme, resolveFishboneTheme, resolveFlowchartTheme, resolveGenogramTheme, resolveIndustrialTheme, resolveMindmapTheme, resolveNetworkTheme, resolvePersonTheme, resolvePetriTheme, resolveReliabilityTheme, resolveTimelineTheme, resolveUmlClassTheme, resolveVennTheme };
|
|
755
|
-
//# sourceMappingURL=chunk-
|
|
756
|
-
//# sourceMappingURL=chunk-
|
|
1039
|
+
export { BASE_THEMES, BIOLOGY_TOKENS, DEFAULT_FONT_FAMILY, FONT_SIZE, NETWORK_TOKENS, PERSON_TOKENS, PETRI_TOKENS, STROKE_WIDTH, VENN_TOKENS, cssCustomProperties, resolveBaseTheme, resolveBiologyTheme, resolveBlockTheme, resolveBowtieTheme, resolveBpmnTheme, resolveFishboneTheme, resolveFlowchartTheme, resolveGenogramTheme, resolveIndustrialTheme, resolveMatrixTheme, resolveMindmapTheme, resolveNetworkTheme, resolvePersonTheme, resolvePetriTheme, resolveReliabilityTheme, resolveStateTheme, resolveTimelineTheme, resolveUmlClassTheme, resolveVennTheme };
|
|
1040
|
+
//# sourceMappingURL=chunk-TYEQC7PV.js.map
|
|
1041
|
+
//# sourceMappingURL=chunk-TYEQC7PV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/theme.ts"],"names":[],"mappings":";AA+KA,IAAM,eAAA,GAAkB;AAAA,EACtB,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAA;AAEA,IAAM,kBAAA,GAAqB;AAAA,EACzB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAA;AAEA,IAAM,aAAA,GAA2B;AAAA,EAC/B,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,gBAAA,GAA8B;AAAA,EAClC,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,UAAA,GAAwB;AAAA,EAC5B,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,WAAA,GAA4C;AAAA,EACvD,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,gBAAA;AAAA,EACZ,IAAA,EAAM;AACR;AAIA,IAAM,cAAA,GAA+B;AAAA,EACnC,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe;AACjB,CAAA;AAEA,IAAM,iBAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe;AACjB,CAAA;AAEA,IAAM,WAAA,GAA4B;AAAA,EAChC,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe;AACjB,CAAA;AAEO,IAAM,aAAA,GAAiD;AAAA,EAC5D,OAAA,EAAS,cAAA;AAAA,EACT,UAAA,EAAY,iBAAA;AAAA,EACZ,IAAA,EAAM;AACR;AAIA,IAAM,eAAA,GAAiC;AAAA,EACrC,WAAA,EAAa,eAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,kBAAA,GAAoC;AAAA,EACxC,WAAA,EAAa,kBAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,YAAA,GAA8B;AAAA,EAClC,WAAA,EAAa,YAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,cAAA,GAAmD;AAAA,EAC9D,OAAA,EAAS,eAAA;AAAA,EACT,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM;AACR;AAIA,IAAM,YAAA,GAA2B;AAAA,EAC/B,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,UAAA;AAAA,EACf,cAAA,EAAgB,IAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,eAAA,EAAiB;AACnB,CAAA;AAEA,IAAM,eAAA,GAA8B;AAAA,EAClC,aAAA,EAAe,CAAC,SAAA,EAAW,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAAA,EACtG,aAAA,EAAe,MAAA;AAAA,EACf,cAAA,EAAgB,IAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,eAAA,EAAiB;AACnB,CAAA;AAEA,IAAM,SAAA,GAAwB;AAAA,EAC5B,aAAA,EAAe,YAAA;AAAA,EACf,aAAA,EAAe,QAAA;AAAA,EACf,cAAA,EAAgB,IAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,eAAA,EAAiB;AACnB,CAAA;AAEO,IAAM,WAAA,GAA6C;AAAA,EACxD,OAAA,EAAS,YAAA;AAAA,EACT,UAAA,EAAY,eAAA;AAAA,EACZ,IAAA,EAAM;AACR;AASA,IAAM,eAAA,GAAiC;AAAA,EACrC,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,eAAA;AAAA,EACf,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,kBAAA,GAAoC;AAAA,EACxC,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,CAAC,SAAS,CAAA;AAAA,EACzB,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,YAAA,GAA8B;AAAA,EAClC,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,YAAA;AAAA,EACf,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,cAAA,GAAmD;AAAA,EAC9D,OAAA,EAAS,eAAA;AAAA,EACT,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAIA,IAAM,kBAAA,GAAuC;AAAA,EAC3C,EAAA,EAAI,SAAA;AAAA,EACJ,MAAA,EAAQ,SAAA;AAAA,EACR,WAAA,EAAa,SAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,qBAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,SAAA;AAAA,EACJ,MAAA,EAAQ,SAAA;AAAA,EACR,WAAA,EAAa,SAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAGA,IAAM,eAAA,GAAoC;AAAA,EACxC,EAAA,EAAI,SAAA;AAAA,EACJ,MAAA,EAAQ,SAAA;AAAA,EACR,WAAA,EAAa,SAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,iBAAA,GAAyD;AAAA,EACpE,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,qBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,uBAAuB,IAAA,EAA+C;AACpF,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,iBAAA,CAAkB,SAAS,CAAA,EAAE;AACtE;AAIA,IAAM,iBAAA,GAAqC;AAAA,EACzC,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS;AAAA,IACP,OAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,UAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,QAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA;AAAU;AAEpE,CAAA;AAEA,IAAM,oBAAA,GAAwC;AAAA,EAC5C,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS;AAAA,IACP,OAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,UAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,QAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA;AAAU;AAEpE,CAAA;AAEA,IAAM,cAAA,GAAkC;AAAA,EACtC,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS;AAAA,IACP,OAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,UAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,QAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,IAChE,SAAU,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,SAAA;AAAU;AAEpE,CAAA;AAEO,IAAM,gBAAA,GAAuD;AAAA,EAClE,OAAA,EAAS,iBAAA;AAAA,EACT,UAAA,EAAY,oBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,sBAAsB,IAAA,EAA8C;AAClF,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,gBAAA,CAAiB,SAAS,CAAA,EAAE;AACrE;AAEO,SAAS,oBAAoB,IAAA,EAA4C;AAC9E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,cAAA,CAAe,SAAS,CAAA,EAAE;AACnE;AAIA,IAAM,gBAAA,GAAmC;AAAA,EACvC,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,IAAA;AAAA,EACZ,cAAA,EAAgB,IAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,iBAAA,EAAmB,GAAA;AAAA,EACnB,eAAA,EAAiB,eAAA;AAAA,EACjB,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,qBAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,mBAAA,GAAsC;AAAA,EAC1C,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,cAAA,EAAgB,IAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,iBAAA,EAAmB,GAAA;AAAA,EACnB,eAAA,EAAiB,kBAAA;AAAA,EACjB,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,aAAA,GAAgC;AAAA,EACpC,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,cAAA,EAAgB,IAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,iBAAA,EAAmB,GAAA;AAAA,EACnB,eAAA,EAAiB,YAAA;AAAA,EACjB,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,eAAA,GAAqD;AAAA,EAChE,OAAA,EAAS,gBAAA;AAAA,EACT,UAAA,EAAY,mBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,qBAAqB,IAAA,EAA6C;AAChF,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,eAAA,CAAgB,SAAS,CAAA,EAAE;AACpE;AAoCA,IAAM,aAAA,GAA6B;AAAA,EACjC,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,iBAAA,EAAmB,SAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,gBAAA,EAAkB,SAAA;AAAA,EAClB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc;AAChB,CAAA;AAIA,IAAM,gBAAA,GAAgC;AAAA,EACpC,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,iBAAA,EAAmB,SAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,gBAAA,EAAkB,SAAA;AAAA,EAClB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,MAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,UAAA,GAA0B;AAAA,EAC9B,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,iBAAA,EAAmB,SAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,gBAAA,EAAkB,SAAA;AAAA,EAClB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,wBAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,YAAA,GAA+C;AAAA,EAC1D,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,gBAAA;AAAA,EACZ,IAAA,EAAM;AACR;AAEO,SAAS,kBAAkB,IAAA,EAA0C;AAC1E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,YAAA,CAAa,SAAS,CAAA,EAAE;AACjE;AA6BA,IAAM,mBAAA,GAAyC;AAAA,EAC7C,SAAA,EAAW,SAAA;AAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,cAAA,EAAgB,SAAA;AAAA,EAChB,SAAA,EAAW,SAAA;AAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,sBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAIA,IAAM,sBAAA,GAA4C;AAAA,EAChD,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,cAAA,EAAgB,SAAA;AAAA,EAChB,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,gBAAA,GAAsC;AAAA,EAC1C,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,cAAA,EAAgB,SAAA;AAAA,EAChB,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,eAAA,EAAiB,SAAA;AAAA,EACjB,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,wBAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,wBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,kBAAA,GAA2D;AAAA,EACtE,OAAA,EAAS,mBAAA;AAAA,EACT,UAAA,EAAY,sBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,wBAAwB,IAAA,EAAgD;AACtF,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,kBAAA,CAAmB,SAAS,CAAA,EAAE;AACvE;AA6BA,IAAM,cAAA,GAA+B;AAAA,EACnC,UAAA,EAAY,SAAA;AAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,eAAA,EAAiB,SAAA;AAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,cAAA,EAAgB,SAAA;AAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,aAAA,EAAe,SAAA;AAAA,EACf,UAAA,EAAY,SAAA;AAAA,EACZ,oBAAA,EAAsB,SAAA;AAAA,EACtB,SAAA,EAAW;AACb,CAAA;AAIA,IAAM,iBAAA,GAAkC;AAAA,EACtC,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,eAAA,EAAiB,SAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,cAAA,EAAgB,SAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,aAAA,EAAe,SAAA;AAAA,EACf,UAAA,EAAY,SAAA;AAAA,EACZ,oBAAA,EAAsB,SAAA;AAAA,EACtB,SAAA,EAAW;AACb,CAAA;AAGA,IAAM,WAAA,GAA4B;AAAA,EAChC,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,eAAA,EAAiB,SAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,cAAA,EAAgB,SAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,aAAA,EAAe,SAAA;AAAA,EACf,UAAA,EAAY,SAAA;AAAA,EACZ,oBAAA,EAAsB,SAAA;AAAA,EACtB,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,aAAA,GAAiD;AAAA,EAC5D,OAAA,EAAS,cAAA;AAAA,EACT,UAAA,EAAY,iBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,mBAAmB,IAAA,EAA2C;AAC5E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,aAAA,CAAc,SAAS,CAAA,EAAE;AAClE;AA+BA,IAAM,eAAA,GAAiC;AAAA,EACrC,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,eAAA;AAAA,EACb,IAAA,EAAM;AACR,CAAA;AAGA,IAAM,kBAAA,GAAoC;AAAA,EACxC,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,kBAAA;AAAA,EACb,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,YAAA,GAA8B;AAAA,EAClC,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,wBAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,YAAA;AAAA,EACb,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,cAAA,GAAmD;AAAA,EAC9D,OAAA,EAAS,eAAA;AAAA,EACT,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM;AACR;AAEO,SAAS,oBAAoB,IAAA,EAA4C;AAC9E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,cAAA,CAAe,SAAS,CAAA,EAAE;AACnE;AAyCA,IAAM,gBAAA,GAAmC;AAAA,EACvC,cAAA,EAAgB,SAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,mBAAA,EAAqB,SAAA;AAAA,EACrB,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,WAAA,EAAa,wBAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc;AAChB,CAAA;AAIA,IAAM,mBAAA,GAAsC;AAAA,EAC1C,cAAA,EAAgB,SAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,mBAAA,EAAqB,SAAA;AAAA,EACrB,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,WAAA,EAAa,MAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,aAAA,GAAgC;AAAA,EACpC,cAAA,EAAgB,SAAA;AAAA,EAChB,gBAAA,EAAkB,SAAA;AAAA,EAClB,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EAAgB,SAAA;AAAA,EAChB,UAAA,EAAY,SAAA;AAAA,EACZ,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,mBAAA,EAAqB,SAAA;AAAA,EACrB,SAAA,EAAW,SAAA;AAAA,EACX,cAAA,EAAgB,SAAA;AAAA,EAChB,WAAA,EAAa,wBAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,eAAA,GAAqD;AAAA,EAChE,OAAA,EAAS,gBAAA;AAAA,EACT,UAAA,EAAY,mBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,qBAAqB,IAAA,EAA6C;AAChF,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,eAAA,CAAgB,SAAS,CAAA,EAAE;AACpE;AAqCA,IAAM,YAAA,GAA2B;AAAA,EAC/B,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,kBAAA,EAAoB,SAAA;AAAA,EACpB,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAGA,IAAM,eAAA,GAA8B;AAAA,EAClC,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,kBAAA,EAAoB,SAAA;AAAA,EACpB,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAEA,IAAM,SAAA,GAAwB;AAAA,EAC5B,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,aAAA,EAAe,SAAA;AAAA,EACf,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,kBAAA,EAAoB,SAAA;AAAA,EACpB,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAEO,IAAM,WAAA,GAA6C;AAAA,EACxD,OAAA,EAAS,YAAA;AAAA,EACT,UAAA,EAAY,eAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,iBAAiB,IAAA,EAAyC;AACxE,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,WAAA,CAAY,SAAS,CAAA,EAAE;AAChE;AA6BA,IAAM,aAAA,GAA6B;AAAA,EACjC,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EACf,iBAAA,EAAmB,SAAA;AAAA,EACnB,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,gBAAA,EAAkB,SAAA;AAAA,EAClB,eAAA,EAAiB,SAAA;AAAA,EACjB,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,gBAAA,GAAgC;AAAA,EACpC,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EACf,iBAAA,EAAmB,SAAA;AAAA,EACnB,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,gBAAA,EAAkB,SAAA;AAAA,EAClB,eAAA,EAAiB,SAAA;AAAA,EACjB,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,UAAA,GAA0B;AAAA,EAC9B,SAAA,EAAW,SAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EACf,iBAAA,EAAmB,SAAA;AAAA,EACnB,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,gBAAA,EAAkB,SAAA;AAAA,EAClB,eAAA,EAAiB,SAAA;AAAA,EACjB,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEO,IAAM,YAAA,GAA+C;AAAA,EAC1D,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,gBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,kBAAkB,IAAA,EAA0C;AAC1E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,YAAA,CAAa,SAAS,CAAA,EAAE;AACjE;AAkDA,IAAM,cAAA,GAA+B;AAAA,EACnC,SAAA,EAAW,SAAA;AAAA,EACX,GAAA,EAAK,SAAA;AAAA,EACL,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,SAAA,EAAW,SAAA;AAAA,EACX,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAA;AAIA,IAAM,iBAAA,GAAkC;AAAA,EACtC,SAAA,EAAW,SAAA;AAAA,EACX,GAAA,EAAK,SAAA;AAAA,EACL,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,SAAA,EAAW,SAAA;AAAA,EACX,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,WAAA,GAA4B;AAAA,EAChC,SAAA,EAAW,SAAA;AAAA,EACX,GAAA,EAAK,SAAA;AAAA,EACL,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,SAAA,EAAW,SAAA;AAAA,EACX,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,wBAAA;AAAA,EACb,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAA;AAEO,IAAM,aAAA,GAAiD;AAAA,EAC5D,OAAA,EAAS,cAAA;AAAA,EACT,UAAA,EAAY,iBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,mBAAmB,IAAA,EAA2C;AAC5E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,aAAA,CAAc,SAAS,CAAA,EAAE;AAClE;AAmBA,IAAM,aAAA,GAA6B;AAAA,EACjC,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb,CAAA;AAEA,IAAM,gBAAA,GAAgC;AAAA,EACpC,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb,CAAA;AAEA,IAAM,UAAA,GAA0B;AAAA,EAC9B,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,SAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,SAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb,CAAA;AAEO,IAAM,YAAA,GAA+C;AAAA,EAC1D,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,gBAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,kBAAkB,IAAA,EAA0C;AAC1E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,YAAA,CAAa,SAAS,CAAA,EAAE;AACjE;AAIO,SAAS,iBAAiB,IAAA,EAAyB;AACxD,EAAA,OAAO,WAAA,CAAY,IAAiB,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA;AAChE;AAEO,SAAS,mBAAmB,IAAA,EAA2C;AAC5E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,aAAA,CAAc,SAAS,CAAA,EAAE;AAClE;AAEO,SAAS,oBAAoB,IAAA,EAA4C;AAC9E,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,cAAA,CAAe,SAAS,CAAA,EAAE;AACnE;AAMO,SAAS,qBAAqB,IAAA,EAAyB;AAC5D,EAAA,OAAO,iBAAiB,IAAI,CAAA;AAC9B;AAEO,SAAS,iBAAiB,IAAA,EAAyC;AACxE,EAAA,MAAM,SAAA,GAAa,IAAA,IAAQ,WAAA,GAAc,IAAA,GAAO,SAAA;AAChD,EAAA,OAAO,EAAE,GAAG,WAAA,CAAY,SAAS,GAAG,GAAG,WAAA,CAAY,SAAS,CAAA,EAAE;AAChE;AAIA,IAAM,gBAAA,GAA8C;AAAA,EAClD,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAI;AACN,CAAA;AAEO,SAAS,qBAAqB,IAAA,EAA2C;AAC9E,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,IAAI,CAAA,IAAK,IAAA;AAC3C,EAAA,OAAO,mBAAmB,QAAQ,CAAA;AACpC;AAQO,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO,EAAA;AAAA,EACP,KAAA,EAAO,EAAA;AAAA,EACP,KAAA,EAAO;AACT;CAUqB;AAAA,EACnB,MAAM,SAAA,CAAU,KAMlB;AAWO,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM,CAAA;AAAA,EACN,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO;AACT;AAYO,IAAM,mBAAA,GAAsB;AAI5B,SAAS,oBAAoB,KAAA,EAA2B;AAC7D,EAAA,MAAM,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,SAAS,CAAA;AACxC,EAAA,OAAO;AAAA,kBAAA,EACW,EAAE,EAAE,CAAA;AAAA,oBAAA,EACF,EAAE,IAAI,CAAA;AAAA,0BAAA,EACA,EAAE,SAAS,CAAA;AAAA,sBAAA,EACf,EAAE,MAAM,CAAA;AAAA,oBAAA,EACV,EAAE,IAAI,CAAA;AAAA,0BAAA,EACA,EAAE,SAAS,CAAA;AAAA,sBAAA,EACf,EAAE,MAAM,CAAA;AAAA,wBAAA,EACN,EAAE,QAAQ,CAAA;AAAA,wBAAA,EACV,EAAE,QAAQ,CAAA;AAAA,uBAAA,EACX,EAAE,OAAO,CAAA;AAAA,oBAAA,EACZ,EAAE,IAAI,CAAA;AAAA,0BAAA,EACA,UAAU,KAAK,CAAA;AAAA,0BAAA,EACf,UAAU,KAAK,CAAA;AAAA,0BAAA,EACf,UAAU,KAAK,CAAA;AAAA,2BAAA,EACd,aAAa,IAAI,CAAA;AAAA,6BAAA,EACf,aAAa,MAAM,CAAA;AAAA,4BAAA,EACpB,aAAa,KAAK,CAAA,CAAA,CAAA;AAChD","file":"chunk-TYEQC7PV.js","sourcesContent":["/**\n * Shared design-token system for all Schematex diagram renderers.\n *\n * Two-layer architecture:\n * 1. BaseTheme — universal tokens every diagram uses\n * 2. Semantic extensions — diagram-family tokens (PersonTokens, BiologyTokens, …)\n *\n * Three built-in presets: default, monochrome, dark.\n * All tokens are also exposed as CSS custom properties (--schematex-*)\n * so consumers can override them.\n */\n\n// ─── Theme Name ────────────────────────────────────────────\n\nexport type ThemeName = \"default\" | \"monochrome\" | \"dark\";\n\n// ─── Base Theme ────────────────────────────────────────────\n\nexport interface BaseTheme {\n bg: string;\n text: string;\n textMuted: string;\n stroke: string;\n fill: string;\n fillMuted: string;\n /** Emphasis / interactive / link color. Use for net labels, focus, selected. */\n accent: string;\n positive: string;\n negative: string;\n /** Mid-gray. Use for muted strokes, neutral-valence edges, dashed separators. */\n neutral: string;\n warn: string;\n /** Category palette — 8 distinguishable colors for ecomap systems, sociogram groups, etc. */\n palette: readonly string[];\n}\n\n// ─── Diagram-Family Semantic Extensions ────────────────────\n\nexport interface PersonTokens {\n maleFill: string;\n femaleFill: string;\n unknownFill: string;\n deceasedMark: string;\n conditionFill: string;\n}\n\nexport interface BiologyTokens {\n cladeColors: readonly string[];\n supportGood: string;\n supportMedium: string;\n supportWarn: string;\n supportBad: string;\n}\n\n/**\n * Tokens for set-theory diagrams (Venn / Euler). Paletteof set fills is\n * tuned slightly softer than BaseTheme to blend nicely under\n * `mix-blend-mode: multiply`.\n */\nexport interface VennTokens {\n vennSetColors: readonly string[];\n vennBlendMode: \"multiply\" | \"screen\" | \"none\";\n vennSetOpacity: number;\n vennSetStroke: string;\n vennLabelColor: string;\n vennCountColor: string;\n vennLeaderColor: string;\n}\n\n/**\n * Tokens for industrial / compliance diagrams (circuit, ladder, SLD, logic gate).\n * These diagrams must stay monochrome under IEEE 315 / IEC 61131-3 standards, so\n * `default` and `monochrome` resolve to pure black-on-white. `dark` is the only\n * variant that shifts — it inverts luminance (light-on-dark) for dark-mode UI.\n * No colorful variant is exposed by design.\n */\nexport interface IndustrialTokens {\n bg: string;\n stroke: string;\n strokeHeavy: string;\n text: string;\n textMuted: string;\n /** Reserved accent for net/bus labels (not for body lines). */\n accent: string;\n /** Fault/missing-symbol indicator. */\n error: string;\n}\n\n/**\n * Tokens for flowchart semantic node classes. Kept separate from BaseTheme so\n * the class-fill palette can be themed without touching structural tokens.\n */\nexport interface FlowchartClassPair {\n fill: string;\n stroke: string;\n text: string;\n}\n\nexport interface FlowchartTokens {\n stadiumFill: string;\n diamondFill: string;\n roundFill: string;\n classes: {\n start: FlowchartClassPair;\n process: FlowchartClassPair;\n decision: FlowchartClassPair;\n success: FlowchartClassPair;\n danger: FlowchartClassPair;\n neutral: FlowchartClassPair;\n };\n}\n\n/**\n * Tokens for knowledge / brainstorming diagrams (mindmap).\n * Pure color tokens — stroke widths live in mindmap-internal constants.\n */\nexport interface MindmapTokens {\n centralFill: string;\n branchPalette: readonly string[];\n /** Inline `code` foreground/background. */\n codeFg: string;\n codeBg: string;\n /** Link color (with underline). */\n linkColor: string;\n /** Checkbox stroke color (unchecked state). */\n checkboxStroke: string;\n /** Checkbox fill when checked. */\n checkboxFill: string;\n}\n\n/**\n * Tokens for timeline diagrams. Palette-driven so categories/tracks share\n * colors with the rest of the diagram family (ecomap/sociogram/phylo).\n * Era bands and card surfaces use theme-neutral tints so no magic hex codes\n * leak into the renderer.\n */\nexport interface TimelineTokens {\n axis: string;\n axisLabel: string;\n eraLabel: string;\n eraOpacity: number;\n eraPlotOpacity: number;\n /** Alternating lane stripe fill. */\n laneStripe: string;\n laneStripeOpacity: number;\n /** Category / task bar palette. Cycled by `category` (fallback to trackIdx). */\n categoryPalette: readonly string[];\n /** Point/milestone ring — defaults to accent but configurable. */\n markerRing: string;\n markerFill: string;\n milestoneFill: string;\n /** Gantt vertical pin shaft. */\n pinShaft: string;\n /** Lollipop card. */\n cardBg: string;\n cardStroke: string;\n cardText: string;\n cardShadow: string;\n /** Gantt legend chip background. */\n legendBg: string;\n legendStroke: string;\n}\n\n// ─── Resolved Theme ────────────────────────────────────────\n\nexport type ResolvedTheme<T = object> = BaseTheme & T;\n\n// ─── Built-in Presets ──────────────────────────────────────\n\n/**\n * Unified 8-color category palettes. Single source of truth for every\n * diagram family — ecomap systems, sociogram groups, phylo clades, fishbone\n * bones, Venn sets all cycle through the same colors per theme.\n * Default uses Tailwind 600; dark uses Catppuccin Mocha; mono uses greys.\n */\nconst DEFAULT_PALETTE = [\n \"#2563eb\", // blue-600\n \"#059669\", // emerald-600\n \"#d97706\", // amber-600\n \"#7c3aed\", // violet-600\n \"#dc2626\", // red-600\n \"#0891b2\", // cyan-600\n \"#db2777\", // pink-600\n \"#475569\", // slate-600\n] as const;\n\nconst MONOCHROME_PALETTE = [\n \"#1f2937\",\n \"#374151\",\n \"#4b5563\",\n \"#6b7280\",\n \"#9ca3af\",\n \"#7a7a7a\",\n \"#525252\",\n \"#262626\",\n] as const;\n\nconst DARK_PALETTE = [\n \"#89b4fa\", // blue\n \"#a6e3a1\", // green\n \"#fab387\", // peach\n \"#cba6f7\", // mauve\n \"#f38ba8\", // red\n \"#94e2d5\", // teal\n \"#f5c2e7\", // pink\n \"#89dceb\", // sky\n] as const;\n\nconst DEFAULT_THEME: BaseTheme = {\n bg: \"#ffffff\",\n text: \"#0f172a\",\n textMuted: \"#475569\",\n stroke: \"#334155\",\n fill: \"#ffffff\",\n fillMuted: \"#f1f5f9\",\n accent: \"#2563eb\",\n positive: \"#059669\",\n negative: \"#dc2626\",\n neutral: \"#94a3b8\",\n warn: \"#d97706\",\n palette: DEFAULT_PALETTE,\n};\n\nconst MONOCHROME_THEME: BaseTheme = {\n bg: \"#ffffff\",\n text: \"#000000\",\n textMuted: \"#555555\",\n stroke: \"#000000\",\n fill: \"#ffffff\",\n fillMuted: \"#f0f0f0\",\n accent: \"#000000\",\n positive: \"#000000\",\n negative: \"#000000\",\n neutral: \"#888888\",\n warn: \"#000000\",\n palette: MONOCHROME_PALETTE,\n};\n\nconst DARK_THEME: BaseTheme = {\n bg: \"#1e1e2e\",\n text: \"#cdd6f4\",\n textMuted: \"#7f849c\",\n stroke: \"#cdd6f4\",\n fill: \"#313244\",\n fillMuted: \"#45475a\",\n accent: \"#89b4fa\",\n positive: \"#a6e3a1\",\n negative: \"#f38ba8\",\n neutral: \"#6c7086\",\n warn: \"#fab387\",\n palette: DARK_PALETTE,\n};\n\nexport const BASE_THEMES: Record<ThemeName, BaseTheme> = {\n default: DEFAULT_THEME,\n monochrome: MONOCHROME_THEME,\n dark: DARK_THEME,\n};\n\n// ─── Person Tokens Per Theme ───────────────────────────────\n\nconst DEFAULT_PERSON: PersonTokens = {\n maleFill: \"#dbeafe\",\n femaleFill: \"#fce7f3\",\n unknownFill: \"#f5f5f5\",\n deceasedMark: \"#b71c1c\",\n conditionFill: \"#1565c0\",\n};\n\nconst MONOCHROME_PERSON: PersonTokens = {\n maleFill: \"#ffffff\",\n femaleFill: \"#ffffff\",\n unknownFill: \"#ffffff\",\n deceasedMark: \"#000000\",\n conditionFill: \"#000000\",\n};\n\nconst DARK_PERSON: PersonTokens = {\n maleFill: \"#1e3a5f\",\n femaleFill: \"#3e1f3e\",\n unknownFill: \"#45475a\",\n deceasedMark: \"#f38ba8\",\n conditionFill: \"#89b4fa\",\n};\n\nexport const PERSON_TOKENS: Record<ThemeName, PersonTokens> = {\n default: DEFAULT_PERSON,\n monochrome: MONOCHROME_PERSON,\n dark: DARK_PERSON,\n};\n\n// ─── Biology Tokens Per Theme ──────────────────────────────\n\nconst DEFAULT_BIOLOGY: BiologyTokens = {\n cladeColors: DEFAULT_PALETTE,\n supportGood: \"#059669\",\n supportMedium: \"#ca8a04\",\n supportWarn: \"#d97706\",\n supportBad: \"#dc2626\",\n};\n\nconst MONOCHROME_BIOLOGY: BiologyTokens = {\n cladeColors: MONOCHROME_PALETTE,\n supportGood: \"#000000\",\n supportMedium: \"#555555\",\n supportWarn: \"#888888\",\n supportBad: \"#aaaaaa\",\n};\n\nconst DARK_BIOLOGY: BiologyTokens = {\n cladeColors: DARK_PALETTE,\n supportGood: \"#a6e3a1\",\n supportMedium: \"#f9e2af\",\n supportWarn: \"#fab387\",\n supportBad: \"#f38ba8\",\n};\n\nexport const BIOLOGY_TOKENS: Record<ThemeName, BiologyTokens> = {\n default: DEFAULT_BIOLOGY,\n monochrome: MONOCHROME_BIOLOGY,\n dark: DARK_BIOLOGY,\n};\n\n// ─── Venn Tokens Per Theme ─────────────────────────────────\n\nconst DEFAULT_VENN: VennTokens = {\n vennSetColors: DEFAULT_PALETTE,\n vennBlendMode: \"multiply\",\n vennSetOpacity: 0.38,\n vennSetStroke: \"#94a3b8\",\n vennLabelColor: \"#0f172a\",\n vennCountColor: \"#0f172a\",\n vennLeaderColor: \"#64748b\",\n};\n\nconst MONOCHROME_VENN: VennTokens = {\n vennSetColors: [\"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\"],\n vennBlendMode: \"none\",\n vennSetOpacity: 0.22,\n vennSetStroke: \"#000000\",\n vennLabelColor: \"#000000\",\n vennCountColor: \"#000000\",\n vennLeaderColor: \"#444444\",\n};\n\nconst DARK_VENN: VennTokens = {\n vennSetColors: DARK_PALETTE,\n vennBlendMode: \"screen\",\n vennSetOpacity: 0.55,\n vennSetStroke: \"#585b70\",\n vennLabelColor: \"#cdd6f4\",\n vennCountColor: \"#f9e2af\",\n vennLeaderColor: \"#7f849c\",\n};\n\nexport const VENN_TOKENS: Record<ThemeName, VennTokens> = {\n default: DEFAULT_VENN,\n monochrome: MONOCHROME_VENN,\n dark: DARK_VENN,\n};\n\n// ─── Mindmap Tokens Per Theme ──────────────────────────────\n\n// Kept as its own struct so the mindmap palette can diverge from BaseTheme\n// later if we want (e.g., a softer / more organic set of branch colors).\n// Today the values mirror BaseTheme.palette so mindmap visually belongs with\n// the rest of the diagram family.\n\nconst DEFAULT_MINDMAP: MindmapTokens = {\n centralFill: \"#0f172a\",\n branchPalette: DEFAULT_PALETTE,\n codeFg: \"#be185d\",\n codeBg: \"#fdf2f8\",\n linkColor: \"#2563eb\",\n checkboxStroke: \"#64748b\",\n checkboxFill: \"#10b981\",\n};\n\nconst MONOCHROME_MINDMAP: MindmapTokens = {\n centralFill: \"#000000\",\n branchPalette: [\"#000000\"],\n codeFg: \"#000000\",\n codeBg: \"#e5e5e5\",\n linkColor: \"#000000\",\n checkboxStroke: \"#000000\",\n checkboxFill: \"#000000\",\n};\n\nconst DARK_MINDMAP: MindmapTokens = {\n centralFill: \"#cdd6f4\",\n branchPalette: DARK_PALETTE,\n codeFg: \"#f5c2e7\",\n codeBg: \"#313244\",\n linkColor: \"#89b4fa\",\n checkboxStroke: \"#a6adc8\",\n checkboxFill: \"#a6e3a1\",\n};\n\nexport const MINDMAP_TOKENS: Record<ThemeName, MindmapTokens> = {\n default: DEFAULT_MINDMAP,\n monochrome: MONOCHROME_MINDMAP,\n dark: DARK_MINDMAP,\n};\n\n// ─── Industrial Tokens Per Theme ───────────────────────────\n\nconst DEFAULT_INDUSTRIAL: IndustrialTokens = {\n bg: \"#ffffff\",\n stroke: \"#222222\",\n strokeHeavy: \"#111111\",\n text: \"#111111\",\n textMuted: \"#555555\",\n accent: \"#1d4e89\",\n error: \"#cc0000\",\n};\n\nconst MONOCHROME_INDUSTRIAL: IndustrialTokens = {\n bg: \"#ffffff\",\n stroke: \"#000000\",\n strokeHeavy: \"#000000\",\n text: \"#000000\",\n textMuted: \"#333333\",\n accent: \"#000000\",\n error: \"#000000\",\n};\n\n// Dark = inverted luminance only. No colorful semantics — still compliance-grade.\nconst DARK_INDUSTRIAL: IndustrialTokens = {\n bg: \"#1e1e2e\",\n stroke: \"#cdd6f4\",\n strokeHeavy: \"#ffffff\",\n text: \"#cdd6f4\",\n textMuted: \"#9399b2\",\n accent: \"#89b4fa\",\n error: \"#f38ba8\",\n};\n\nexport const INDUSTRIAL_TOKENS: Record<ThemeName, IndustrialTokens> = {\n default: DEFAULT_INDUSTRIAL,\n monochrome: MONOCHROME_INDUSTRIAL,\n dark: DARK_INDUSTRIAL,\n};\n\nexport function resolveIndustrialTheme(name: string): ResolvedTheme<IndustrialTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...INDUSTRIAL_TOKENS[themeName] };\n}\n\n// ─── Flowchart Tokens Per Theme ────────────────────────────\n\nconst DEFAULT_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#dbeafe\",\n diamondFill: \"#fef3c7\",\n roundFill: \"#dcfce7\",\n classes: {\n start: { fill: \"#f0ece0\", stroke: \"#9a8b6a\", text: \"#5c4e2e\" },\n process: { fill: \"#e8e4ff\", stroke: \"#8b7dd8\", text: \"#4c3a8f\" },\n decision: { fill: \"#fde8c8\", stroke: \"#d4985c\", text: \"#8a5a1f\" },\n success: { fill: \"#d4f0e0\", stroke: \"#7bc19a\", text: \"#1e5a3a\" },\n danger: { fill: \"#fbe0dc\", stroke: \"#d89181\", text: \"#8a3525\" },\n neutral: { fill: \"#ececec\", stroke: \"#a0a0a0\", text: \"#555555\" },\n },\n};\n\nconst MONOCHROME_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#ffffff\",\n diamondFill: \"#ffffff\",\n roundFill: \"#ffffff\",\n classes: {\n start: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n process: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n decision: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n success: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n danger: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n neutral: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n },\n};\n\nconst DARK_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#1e3a5f\",\n diamondFill: \"#3a3a2a\",\n roundFill: \"#1f3a2a\",\n classes: {\n start: { fill: \"#3a3326\", stroke: \"#c9b88a\", text: \"#f5e7c7\" },\n process: { fill: \"#2e2a52\", stroke: \"#a89ee0\", text: \"#d9d2ff\" },\n decision: { fill: \"#3a2d1a\", stroke: \"#d4985c\", text: \"#f2d5a8\" },\n success: { fill: \"#1e3a2a\", stroke: \"#7bc19a\", text: \"#cdefd8\" },\n danger: { fill: \"#3a231f\", stroke: \"#d89181\", text: \"#f2d0c8\" },\n neutral: { fill: \"#313244\", stroke: \"#7f849c\", text: \"#cdd6f4\" },\n },\n};\n\nexport const FLOWCHART_TOKENS: Record<ThemeName, FlowchartTokens> = {\n default: DEFAULT_FLOWCHART,\n monochrome: MONOCHROME_FLOWCHART,\n dark: DARK_FLOWCHART,\n};\n\nexport function resolveFlowchartTheme(name: string): ResolvedTheme<FlowchartTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...FLOWCHART_TOKENS[themeName] };\n}\n\nexport function resolveMindmapTheme(name: string): ResolvedTheme<MindmapTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...MINDMAP_TOKENS[themeName] };\n}\n\n// ─── Timeline Tokens Per Theme ─────────────────────────────\n\nconst DEFAULT_TIMELINE: TimelineTokens = {\n axis: \"#334155\",\n axisLabel: \"#475569\",\n eraLabel: \"#0f172a\",\n eraOpacity: 0.55,\n eraPlotOpacity: 0.14,\n laneStripe: \"#f1f5f9\",\n laneStripeOpacity: 0.6,\n categoryPalette: DEFAULT_PALETTE,\n markerRing: \"#2563eb\",\n markerFill: \"#ffffff\",\n milestoneFill: \"#d97706\",\n pinShaft: \"#94a3b8\",\n cardBg: \"#ffffff\",\n cardStroke: \"#cbd5e1\",\n cardText: \"#0f172a\",\n cardShadow: \"rgba(15,23,42,0.08)\",\n legendBg: \"#f8fafc\",\n legendStroke: \"#e2e8f0\",\n};\n\nconst MONOCHROME_TIMELINE: TimelineTokens = {\n axis: \"#000000\",\n axisLabel: \"#333333\",\n eraLabel: \"#000000\",\n eraOpacity: 0.2,\n eraPlotOpacity: 0.08,\n laneStripe: \"#f0f0f0\",\n laneStripeOpacity: 0.6,\n categoryPalette: MONOCHROME_PALETTE,\n markerRing: \"#000000\",\n markerFill: \"#ffffff\",\n milestoneFill: \"#000000\",\n pinShaft: \"#888888\",\n cardBg: \"#ffffff\",\n cardStroke: \"#000000\",\n cardText: \"#000000\",\n cardShadow: \"rgba(0,0,0,0.06)\",\n legendBg: \"#ffffff\",\n legendStroke: \"#000000\",\n};\n\nconst DARK_TIMELINE: TimelineTokens = {\n axis: \"#cdd6f4\",\n axisLabel: \"#9399b2\",\n eraLabel: \"#cdd6f4\",\n eraOpacity: 0.5,\n eraPlotOpacity: 0.18,\n laneStripe: \"#313244\",\n laneStripeOpacity: 0.5,\n categoryPalette: DARK_PALETTE,\n markerRing: \"#89b4fa\",\n markerFill: \"#1e1e2e\",\n milestoneFill: \"#fab387\",\n pinShaft: \"#6c7086\",\n cardBg: \"#313244\",\n cardStroke: \"#45475a\",\n cardText: \"#cdd6f4\",\n cardShadow: \"rgba(0,0,0,0.35)\",\n legendBg: \"#181825\",\n legendStroke: \"#45475a\",\n};\n\nexport const TIMELINE_TOKENS: Record<ThemeName, TimelineTokens> = {\n default: DEFAULT_TIMELINE,\n monochrome: MONOCHROME_TIMELINE,\n dark: DARK_TIMELINE,\n};\n\nexport function resolveTimelineTheme(name: string): ResolvedTheme<TimelineTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...TIMELINE_TOKENS[themeName] };\n}\n\n// ─── Petri-net Tokens Per Theme ────────────────────────────\n\n/**\n * Tokens for Petri nets (place/transition nets). Petri net is a CS/maths\n * formalism, not an IEC/IEEE compliance drawing — so unlike IndustrialTokens it\n * gets a tasteful colour theme in `default`. The house rule (see\n * 34-PETRINET-STANDARD §6): body in neutral strokes; green (`positive`) reserved\n * for \"enabled\", red (`negative`) reserved for \"inhibitor / dead\", blue\n * (`accent`) only for weight/rate annotations. `monochrome` reproduces the\n * Murata-1989 textbook look faithfully — colour falls back to shape there.\n */\nexport interface PetriTokens {\n placeFill: string;\n placeStroke: string;\n /** Immediate transition: solid bar — the \"ink\" colour. */\n transitionBarFill: string;\n /** Timed transition: hollow box interior. */\n transitionBoxFill: string;\n transitionStroke: string;\n /** Marking dot colour. */\n tokenFill: string;\n /** Enabled (fireable) transition highlight. */\n enabledStroke: string;\n enabledFill: string;\n /** Dead / disabled transition. */\n deadStroke: string;\n /** Inhibitor + reset arcs. */\n inhibitorStroke: string;\n arcStroke: string;\n weightLabel: string;\n /** Coloured-token (CPN) palette. */\n tokenPalette: readonly string[];\n}\n\nconst DEFAULT_PETRI: PetriTokens = {\n placeFill: \"#ffffff\",\n placeStroke: \"#334155\",\n transitionBarFill: \"#334155\",\n transitionBoxFill: \"#ffffff\",\n transitionStroke: \"#334155\",\n tokenFill: \"#0f172a\",\n enabledStroke: \"#059669\",\n enabledFill: \"#ecfdf5\",\n deadStroke: \"#94a3b8\",\n inhibitorStroke: \"#dc2626\",\n arcStroke: \"#334155\",\n weightLabel: \"#2563eb\",\n tokenPalette: DEFAULT_PALETTE,\n};\n\n// Faithful Murata-1989 textbook: pure black/white. Enabled is shown by a bold\n// ring (not green); inhibitor by its hollow-circle head (not red).\nconst MONOCHROME_PETRI: PetriTokens = {\n placeFill: \"#ffffff\",\n placeStroke: \"#000000\",\n transitionBarFill: \"#000000\",\n transitionBoxFill: \"#ffffff\",\n transitionStroke: \"#000000\",\n tokenFill: \"#000000\",\n enabledStroke: \"#000000\",\n enabledFill: \"none\",\n deadStroke: \"#888888\",\n inhibitorStroke: \"#000000\",\n arcStroke: \"#000000\",\n weightLabel: \"#000000\",\n tokenPalette: MONOCHROME_PALETTE,\n};\n\nconst DARK_PETRI: PetriTokens = {\n placeFill: \"#313244\",\n placeStroke: \"#cdd6f4\",\n transitionBarFill: \"#cdd6f4\",\n transitionBoxFill: \"#313244\",\n transitionStroke: \"#cdd6f4\",\n tokenFill: \"#cdd6f4\",\n enabledStroke: \"#a6e3a1\",\n enabledFill: \"rgba(166,227,161,0.15)\",\n deadStroke: \"#6c7086\",\n inhibitorStroke: \"#f38ba8\",\n arcStroke: \"#cdd6f4\",\n weightLabel: \"#89b4fa\",\n tokenPalette: DARK_PALETTE,\n};\n\nexport const PETRI_TOKENS: Record<ThemeName, PetriTokens> = {\n default: DEFAULT_PETRI,\n monochrome: MONOCHROME_PETRI,\n dark: DARK_PETRI,\n};\n\nexport function resolvePetriTheme(name: string): ResolvedTheme<PetriTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...PETRI_TOKENS[themeName] };\n}\n\n// ─── Reliability Tokens Per Theme ──────────────────────────\n// 37-FAULT-TREE-STANDARD §6. Cluster-shared by fault tree + (sibling) bowtie.\n// Coloured-house family like pert/petri: neutral body; green reserved for gate\n// bodies (\"logic proceeds\"); red reserved for the computed minimal cut sets /\n// single points of failure; blue only for probability numerals. In monochrome,\n// semantics fall back to shape/weight (bold-dashed cut-set box, dome/shield).\n\nexport interface ReliabilityTokens {\n eventFill: string;\n eventStroke: string;\n topEventStroke: string;\n basicFill: string;\n basicStroke: string;\n undevelopedFill: string;\n houseFill: string;\n conditionFill: string;\n gateFill: string;\n gateStroke: string;\n edgeStroke: string;\n probText: string;\n /** Computed minimal cut sets — red = \"this is the risk\". Reserved accent. */\n cutsetStroke: string;\n cutsetFill: string;\n /** Single point of failure (order-1 cut set) — strongest red. */\n spofStroke: string;\n}\n\nconst DEFAULT_RELIABILITY: ReliabilityTokens = {\n eventFill: \"#eef2f7\", // soft slate-blue — gives event boxes presence (cool tones pair with the red cut-set accent)\n eventStroke: \"#334155\",\n topEventStroke: \"#1e293b\",\n basicFill: \"#ffffff\", // white circles read clean inside a red cut-set frame\n basicStroke: \"#334155\",\n undevelopedFill: \"#e2e8f0\",\n houseFill: \"#fef9c3\",\n conditionFill: \"#f1f5f9\",\n gateFill: \"#dcfce7\", // green gates (\"logic proceeds\")\n gateStroke: \"#059669\",\n edgeStroke: \"#475569\",\n probText: \"#2563eb\",\n cutsetStroke: \"#dc2626\",\n cutsetFill: \"rgba(220,38,38,0.05)\",\n spofStroke: \"#b91c1c\",\n};\n\n// Faithful NUREG-0492 textbook: pure black/white. Cut sets shown by a bold\n// dashed box (not red); gate type by dome/shield shape (not fill).\nconst MONOCHROME_RELIABILITY: ReliabilityTokens = {\n eventFill: \"#ffffff\",\n eventStroke: \"#000000\",\n topEventStroke: \"#000000\",\n basicFill: \"#ffffff\",\n basicStroke: \"#000000\",\n undevelopedFill: \"#ffffff\",\n houseFill: \"#ffffff\",\n conditionFill: \"#ffffff\",\n gateFill: \"#ffffff\",\n gateStroke: \"#000000\",\n edgeStroke: \"#000000\",\n probText: \"#000000\",\n cutsetStroke: \"#000000\",\n cutsetFill: \"none\",\n spofStroke: \"#000000\",\n};\n\nconst DARK_RELIABILITY: ReliabilityTokens = {\n eventFill: \"#313244\",\n eventStroke: \"#cdd6f4\",\n topEventStroke: \"#cdd6f4\",\n basicFill: \"#313244\",\n basicStroke: \"#cdd6f4\",\n undevelopedFill: \"#45475a\",\n houseFill: \"#45413a\",\n conditionFill: \"#45475a\",\n gateFill: \"rgba(166,227,161,0.18)\",\n gateStroke: \"#a6e3a1\",\n edgeStroke: \"#cdd6f4\",\n probText: \"#89b4fa\",\n cutsetStroke: \"#f38ba8\",\n cutsetFill: \"rgba(243,139,168,0.12)\",\n spofStroke: \"#eba0ac\",\n};\n\nexport const RELIABILITY_TOKENS: Record<ThemeName, ReliabilityTokens> = {\n default: DEFAULT_RELIABILITY,\n monochrome: MONOCHROME_RELIABILITY,\n dark: DARK_RELIABILITY,\n};\n\nexport function resolveReliabilityTheme(name: string): ResolvedTheme<ReliabilityTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...RELIABILITY_TOKENS[themeName] };\n}\n\n// ─── Bowtie Tokens Per Theme ───────────────────────────────\n// 38-BOWTIE-STANDARD §6. Coloured-house family like prisma/pert/petri, but the\n// field has a strongly-recognised palette (BowTieXP / bowtiemaster.com): orange\n// threats (left), red consequences (right), green top-event disc (centre knot),\n// grey barriers on the line, amber escalation factors dropping below. In\n// monochrome the element distinction rides on shape/border + position (escalation\n// dashed, knot doubled-ring) since regulator submissions are often black-and-white.\n\nexport interface BowtieTokens {\n hazardFill: string;\n hazardStroke: string;\n topEventFill: string;\n topEventStroke: string;\n threatFill: string;\n threatStroke: string;\n barrierFill: string;\n barrierStroke: string;\n consequenceFill: string;\n consequenceStroke: string;\n escalationFill: string;\n escalationStroke: string;\n efBarrierFill: string;\n lineStroke: string;\n escalationLineStroke: string;\n labelText: string;\n}\n\nconst DEFAULT_BOWTIE: BowtieTokens = {\n hazardFill: \"#fef9c3\", // pale yellow hazard header (conventional)\n hazardStroke: \"#ca8a04\",\n topEventFill: \"#dcfce7\", // green disc knot (bowtiemaster)\n topEventStroke: \"#16a34a\",\n threatFill: \"#fed7aa\", // orange threats (de-facto)\n threatStroke: \"#ea580c\",\n barrierFill: \"#e5e7eb\", // grey barriers (de-facto)\n barrierStroke: \"#6b7280\",\n consequenceFill: \"#fecaca\", // red consequences (de-facto)\n consequenceStroke: \"#dc2626\",\n escalationFill: \"#fde68a\", // amber escalation factors (de-facto)\n escalationStroke: \"#d97706\",\n efBarrierFill: \"#e5e7eb\",\n lineStroke: \"#334155\",\n escalationLineStroke: \"#9ca3af\",\n labelText: \"#0f172a\",\n};\n\n// Regulator-print: colour can't carry meaning, so element distinction rides on\n// shape/border + position (escalation dashed border, knot doubled ring).\nconst MONOCHROME_BOWTIE: BowtieTokens = {\n hazardFill: \"#ffffff\",\n hazardStroke: \"#000000\",\n topEventFill: \"#ffffff\",\n topEventStroke: \"#000000\",\n threatFill: \"#ffffff\",\n threatStroke: \"#000000\",\n barrierFill: \"#f2f2f2\",\n barrierStroke: \"#000000\",\n consequenceFill: \"#ffffff\",\n consequenceStroke: \"#000000\",\n escalationFill: \"#ffffff\",\n escalationStroke: \"#000000\",\n efBarrierFill: \"#f2f2f2\",\n lineStroke: \"#000000\",\n escalationLineStroke: \"#000000\",\n labelText: \"#000000\",\n};\n\n// Catppuccin Mocha, mirroring DARK_THEME.\nconst DARK_BOWTIE: BowtieTokens = {\n hazardFill: \"#45413a\",\n hazardStroke: \"#f9e2af\",\n topEventFill: \"#a6e3a1\",\n topEventStroke: \"#40a02b\",\n threatFill: \"#fab387\",\n threatStroke: \"#e8a06a\",\n barrierFill: \"#9399b2\", // light-grey surface so the single dark label reads\n barrierStroke: \"#6c7086\",\n consequenceFill: \"#f38ba8\",\n consequenceStroke: \"#e06c85\",\n escalationFill: \"#f9e2af\",\n escalationStroke: \"#d8bd84\",\n efBarrierFill: \"#9399b2\",\n lineStroke: \"#cdd6f4\",\n escalationLineStroke: \"#7f849c\",\n labelText: \"#1e1e2e\",\n};\n\nexport const BOWTIE_TOKENS: Record<ThemeName, BowtieTokens> = {\n default: DEFAULT_BOWTIE,\n monochrome: MONOCHROME_BOWTIE,\n dark: DARK_BOWTIE,\n};\n\nexport function resolveBowtieTheme(name: string): ResolvedTheme<BowtieTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...BOWTIE_TOKENS[themeName] };\n}\n\n// ─── Network Tokens Per Theme ──────────────────────────────\n// 35-NETWORK-STANDARD §6. Coloured-house family (not forced-mono industrial):\n// device bodies in \"network blue\", link type by colour in default / line-style\n// + tag in monochrome, logical overlays dashed-tinted.\n\nexport interface NetworkTokens {\n deviceFill: string;\n deviceStroke: string;\n deviceAccent: string;\n cloudFill: string;\n cloudStroke: string;\n label: string;\n subLabel: string;\n linkCopper: string;\n linkFiber: string;\n linkWireless: string;\n linkSerial: string;\n linkPoe: string;\n linkVpn: string;\n linkLag: string;\n linkLabel: string;\n siteStroke: string;\n subnetStroke: string;\n subnetFill: string;\n zoneStroke: string;\n vlanPalette: readonly string[];\n warn: string;\n}\n\nconst DEFAULT_NETWORK: NetworkTokens = {\n deviceFill: \"#1d6fb8\",\n deviceStroke: \"#0f3a5f\",\n deviceAccent: \"#bfe0f7\",\n cloudFill: \"#ffffff\",\n cloudStroke: \"#334155\",\n label: \"#0f172a\",\n subLabel: \"#64748b\",\n linkCopper: \"#334155\",\n linkFiber: \"#ea7a17\",\n linkWireless: \"#2563eb\",\n linkSerial: \"#7c3aed\",\n linkPoe: \"#059669\",\n linkVpn: \"#0891b2\",\n linkLag: \"#334155\",\n linkLabel: \"#475569\",\n siteStroke: \"#334155\",\n subnetStroke: \"#2563eb\",\n subnetFill: \"#eff6ff\",\n zoneStroke: \"#dc2626\",\n vlanPalette: DEFAULT_PALETTE,\n warn: \"#d97706\",\n};\n\n// Clean line-art for print/audit: meaning rides on line-style + text tag, not colour.\nconst MONOCHROME_NETWORK: NetworkTokens = {\n deviceFill: \"#ffffff\",\n deviceStroke: \"#000000\",\n deviceAccent: \"#000000\",\n cloudFill: \"#ffffff\",\n cloudStroke: \"#000000\",\n label: \"#000000\",\n subLabel: \"#444444\",\n linkCopper: \"#000000\",\n linkFiber: \"#000000\",\n linkWireless: \"#000000\",\n linkSerial: \"#000000\",\n linkPoe: \"#000000\",\n linkVpn: \"#000000\",\n linkLag: \"#000000\",\n linkLabel: \"#222222\",\n siteStroke: \"#000000\",\n subnetStroke: \"#000000\",\n subnetFill: \"none\",\n zoneStroke: \"#000000\",\n vlanPalette: MONOCHROME_PALETTE,\n warn: \"#000000\",\n};\n\nconst DARK_NETWORK: NetworkTokens = {\n deviceFill: \"#89b4fa\",\n deviceStroke: \"#1e1e2e\",\n deviceAccent: \"#1e1e2e\",\n cloudFill: \"#313244\",\n cloudStroke: \"#cdd6f4\",\n label: \"#cdd6f4\",\n subLabel: \"#a6adc8\",\n linkCopper: \"#cdd6f4\",\n linkFiber: \"#fab387\",\n linkWireless: \"#89b4fa\",\n linkSerial: \"#cba6f7\",\n linkPoe: \"#a6e3a1\",\n linkVpn: \"#94e2d5\",\n linkLag: \"#cdd6f4\",\n linkLabel: \"#a6adc8\",\n siteStroke: \"#cdd6f4\",\n subnetStroke: \"#89b4fa\",\n subnetFill: \"rgba(137,180,250,0.12)\",\n zoneStroke: \"#f38ba8\",\n vlanPalette: DARK_PALETTE,\n warn: \"#fab387\",\n};\n\nexport const NETWORK_TOKENS: Record<ThemeName, NetworkTokens> = {\n default: DEFAULT_NETWORK,\n monochrome: MONOCHROME_NETWORK,\n dark: DARK_NETWORK,\n};\n\nexport function resolveNetworkTheme(name: string): ResolvedTheme<NetworkTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...NETWORK_TOKENS[themeName] };\n}\n\n// ─── UML Class Diagram Tokens ──────────────────────────────\n// 36-UMLCLASS-STANDARD §6. Coloured-house family (with `c4`, `flowchart`,\n// `sequence`): blue/grey neutrals in default, true black/white in monochrome,\n// Catppuccin in dark. Relationship semantics ride entirely on adornment SHAPE\n// (diamond/triangle/arrow, filled/hollow, solid/dashed) so the diagram is\n// identical in monochrome — see spec §6.5 house-style rule.\n\nexport interface UmlClassTokens {\n /** Classifier box body + borders. */\n classifierFill: string;\n classifierStroke: string;\n /** Name-compartment header band (slightly tinted to set off the name). */\n headerFill: string;\n /** Bold class name. */\n nameText: string;\n /** «interface» / «enumeration» keyword (muted). */\n stereotypeText: string;\n /** Attribute / operation rows. */\n memberText: string;\n /** Visibility glyphs (+ - # ~) — slightly muted so names read first. */\n visibilityText: string;\n /** Relationship lines + adornments. */\n relationStroke: string;\n /** Filled composition diamond + filled arrowheads. */\n adornmentFill: string;\n /** Hollow aggregation diamond + hollow triangle interior (= box bg). */\n adornmentHollowFill: string;\n /** Edge labels: association name, multiplicity, role. */\n edgeLabel: string;\n /** Interface / abstract accent — used sparingly for the «» keyword italic tint. */\n abstractAccent: string;\n /** Package/namespace frame fill (use a translucent tint so nested frames stack). */\n packageFill: string;\n /** Package/namespace frame border. */\n packageStroke: string;\n /** Package/namespace label text. */\n packageLabel: string;\n}\n\nconst DEFAULT_UMLCLASS: UmlClassTokens = {\n classifierFill: \"#ffffff\",\n classifierStroke: \"#334155\",\n headerFill: \"#eef2f7\",\n nameText: \"#0f172a\",\n stereotypeText: \"#64748b\",\n memberText: \"#0f172a\",\n visibilityText: \"#64748b\",\n relationStroke: \"#334155\",\n adornmentFill: \"#334155\",\n adornmentHollowFill: \"#ffffff\",\n edgeLabel: \"#475569\",\n abstractAccent: \"#2563eb\",\n packageFill: \"rgba(100,116,139,0.06)\",\n packageStroke: \"#94a3b8\",\n packageLabel: \"#475569\",\n};\n\n// Faithful UML textbook (Fowler/Booch print stance) — pure black/white. Every\n// distinction that rides on colour in default falls back to shape/weight here.\nconst MONOCHROME_UMLCLASS: UmlClassTokens = {\n classifierFill: \"#ffffff\",\n classifierStroke: \"#000000\",\n headerFill: \"#ffffff\",\n nameText: \"#000000\",\n stereotypeText: \"#000000\",\n memberText: \"#000000\",\n visibilityText: \"#000000\",\n relationStroke: \"#000000\",\n adornmentFill: \"#000000\",\n adornmentHollowFill: \"#ffffff\",\n edgeLabel: \"#000000\",\n abstractAccent: \"#000000\",\n packageFill: \"none\",\n packageStroke: \"#000000\",\n packageLabel: \"#000000\",\n};\n\nconst DARK_UMLCLASS: UmlClassTokens = {\n classifierFill: \"#313244\",\n classifierStroke: \"#cdd6f4\",\n headerFill: \"#45475a\",\n nameText: \"#cdd6f4\",\n stereotypeText: \"#a6adc8\",\n memberText: \"#cdd6f4\",\n visibilityText: \"#a6adc8\",\n relationStroke: \"#cdd6f4\",\n adornmentFill: \"#cdd6f4\",\n adornmentHollowFill: \"#313244\",\n edgeLabel: \"#bac2de\",\n abstractAccent: \"#89b4fa\",\n packageFill: \"rgba(205,214,244,0.05)\",\n packageStroke: \"#6c7086\",\n packageLabel: \"#a6adc8\",\n};\n\nexport const UMLCLASS_TOKENS: Record<ThemeName, UmlClassTokens> = {\n default: DEFAULT_UMLCLASS,\n monochrome: MONOCHROME_UMLCLASS,\n dark: DARK_UMLCLASS,\n};\n\nexport function resolveUmlClassTheme(name: string): ResolvedTheme<UmlClassTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...UMLCLASS_TOKENS[themeName] };\n}\n\n// ─── BPMN Tokens Per Theme ─────────────────────────────────\n// Coloured-house family (with flowchart/prisma): BPMN tools (Camunda, Bizagi,\n// Signavio) established a de-facto colour language — green start events, red\n// end events, yellow gateway diamonds, blue-tinted tasks — which `default`\n// adopts in the house tint-fill + 600-stroke pairing. `monochrome` is the pure\n// OMG-spec print look (the standard itself prescribes no colour); `dark` is\n// Catppuccin like the rest of the family.\n\nexport interface BpmnTokens {\n /** Pool body + lane/pool borders + glyph strokes. */\n bpmnStroke: string;\n /** Element label text (task names, pool labels, edge labels). */\n bpmnText: string;\n poolFill: string;\n laneFill: string;\n /** Rotated pool/lane label band. */\n labelBandFill: string;\n taskFill: string;\n taskStroke: string;\n gatewayFill: string;\n gatewayStroke: string;\n /** X / + / O glyph inside the gateway diamond. */\n gatewayGlyph: string;\n startFill: string;\n startStroke: string;\n endFill: string;\n endStroke: string;\n intermediateFill: string;\n intermediateStroke: string;\n /** Sequence flows + arrowheads. */\n flowStroke: string;\n /** Message flows (dashed, lighter). */\n msgFlowStroke: string;\n}\n\nconst DEFAULT_BPMN: BpmnTokens = {\n bpmnStroke: \"#334155\",\n bpmnText: \"#0f172a\",\n poolFill: \"#ffffff\",\n laneFill: \"#fbfcfe\",\n labelBandFill: \"#eef2f7\",\n taskFill: \"#eff6ff\", // blue-50 — \"work happens here\"\n taskStroke: \"#3b82f6\", // blue-500\n gatewayFill: \"#fef3c7\", // amber-100 — de-facto gateway yellow\n gatewayStroke: \"#d97706\", // amber-600\n gatewayGlyph: \"#92400e\", // amber-800\n startFill: \"#dcfce7\", // green-100 — de-facto start green\n startStroke: \"#059669\",\n endFill: \"#fee2e2\", // red-100 — de-facto end red\n endStroke: \"#dc2626\",\n intermediateFill: \"#ffffff\",\n intermediateStroke: \"#334155\",\n flowStroke: \"#334155\",\n msgFlowStroke: \"#94a3b8\",\n};\n\n// OMG BPMN 2.0.2 print stance: the spec prescribes shapes, not colours.\nconst MONOCHROME_BPMN: BpmnTokens = {\n bpmnStroke: \"#000000\",\n bpmnText: \"#000000\",\n poolFill: \"#ffffff\",\n laneFill: \"#ffffff\",\n labelBandFill: \"#f0f0f0\",\n taskFill: \"#ffffff\",\n taskStroke: \"#000000\",\n gatewayFill: \"#ffffff\",\n gatewayStroke: \"#000000\",\n gatewayGlyph: \"#000000\",\n startFill: \"#ffffff\",\n startStroke: \"#000000\",\n endFill: \"#ffffff\",\n endStroke: \"#000000\",\n intermediateFill: \"#ffffff\",\n intermediateStroke: \"#000000\",\n flowStroke: \"#000000\",\n msgFlowStroke: \"#555555\",\n};\n\nconst DARK_BPMN: BpmnTokens = {\n bpmnStroke: \"#cdd6f4\",\n bpmnText: \"#cdd6f4\",\n poolFill: \"#1e1e2e\",\n laneFill: \"#272736\",\n labelBandFill: \"#313244\",\n taskFill: \"#1e3a5f\",\n taskStroke: \"#89b4fa\",\n gatewayFill: \"#45413a\",\n gatewayStroke: \"#f9e2af\",\n gatewayGlyph: \"#f9e2af\",\n startFill: \"#1e3a2a\",\n startStroke: \"#a6e3a1\",\n endFill: \"#3a231f\",\n endStroke: \"#f38ba8\",\n intermediateFill: \"#313244\",\n intermediateStroke: \"#cdd6f4\",\n flowStroke: \"#cdd6f4\",\n msgFlowStroke: \"#7f849c\",\n};\n\nexport const BPMN_TOKENS: Record<ThemeName, BpmnTokens> = {\n default: DEFAULT_BPMN,\n monochrome: MONOCHROME_BPMN,\n dark: DARK_BPMN,\n};\n\nexport function resolveBpmnTheme(name: string): ResolvedTheme<BpmnTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...BPMN_TOKENS[themeName] };\n}\n\n// ─── State Diagram Tokens Per Theme ────────────────────────\n// UML 2.5 / Harel statechart. Neutral-house family like umlclass: slate body\n// in default (it previously carried two hardcoded blacks, #1a1a1a and #2a2a2a),\n// the conventional sticky-note yellow for UML notes, pure black/white in\n// monochrome, Catppuccin in dark.\n\nexport interface StateTokens {\n stateFill: string;\n stateStroke: string;\n stateText: string;\n /** entry/do/exit activity rows (monospace, muted). */\n activityText: string;\n compositeFill: string;\n compositeTitlebar: string;\n /** Dashed divider between orthogonal regions. */\n regionDiv: string;\n /** Pseudo-state ink: initial/final/junction dots, fork/join bars, H glyph. */\n psInk: string;\n transitionStroke: string;\n transitionLabel: string;\n /** Backing rect behind transition labels. */\n labelBg: string;\n noteFill: string;\n noteStroke: string;\n noteText: string;\n}\n\nconst DEFAULT_STATE: StateTokens = {\n stateFill: \"#ffffff\",\n stateStroke: \"#334155\",\n stateText: \"#0f172a\",\n activityText: \"#475569\",\n compositeFill: \"#f8fafc\",\n compositeTitlebar: \"#eef2f7\",\n regionDiv: \"#94a3b8\",\n psInk: \"#0f172a\",\n transitionStroke: \"#334155\",\n transitionLabel: \"#0f172a\",\n labelBg: \"#ffffff\",\n noteFill: \"#fef9c3\",\n noteStroke: \"#ca8a04\",\n noteText: \"#374151\",\n};\n\nconst MONOCHROME_STATE: StateTokens = {\n stateFill: \"#ffffff\",\n stateStroke: \"#000000\",\n stateText: \"#000000\",\n activityText: \"#333333\",\n compositeFill: \"#ffffff\",\n compositeTitlebar: \"#f0f0f0\",\n regionDiv: \"#888888\",\n psInk: \"#000000\",\n transitionStroke: \"#000000\",\n transitionLabel: \"#000000\",\n labelBg: \"#ffffff\",\n noteFill: \"#ffffff\",\n noteStroke: \"#000000\",\n noteText: \"#000000\",\n};\n\nconst DARK_STATE: StateTokens = {\n stateFill: \"#313244\",\n stateStroke: \"#cdd6f4\",\n stateText: \"#cdd6f4\",\n activityText: \"#a6adc8\",\n compositeFill: \"#272736\",\n compositeTitlebar: \"#313244\",\n regionDiv: \"#6c7086\",\n psInk: \"#cdd6f4\",\n transitionStroke: \"#cdd6f4\",\n transitionLabel: \"#cdd6f4\",\n labelBg: \"#1e1e2e\",\n noteFill: \"#45413a\",\n noteStroke: \"#f9e2af\",\n noteText: \"#cdd6f4\",\n};\n\nexport const STATE_TOKENS: Record<ThemeName, StateTokens> = {\n default: DEFAULT_STATE,\n monochrome: MONOCHROME_STATE,\n dark: DARK_STATE,\n};\n\nexport function resolveStateTheme(name: string): ResolvedTheme<StateTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...STATE_TOKENS[themeName] };\n}\n\n// ─── Matrix Tokens Per Theme ───────────────────────────────\n// Quadrant / heatmap / correlation / SIPOC / QFD / Punnett share one renderer\n// stylesheet; these tokens parameterise it. Data palettes (category colors,\n// heat ramp, quadrant tints) stay renderer-local: they encode data semantics\n// (green→red severity, per-category hue) that hold across themes.\n\nexport interface MatrixTokens {\n /** Strongest text: titles, values, best-margin highlights. */\n inkStrong: string;\n /** Body text: cell labels, items. */\n ink: string;\n /** Secondary text: axis labels, weight heads, direction glyphs. */\n inkMuted: string;\n /** Faintest text: subtitles, axis ends, hints. */\n inkFaint: string;\n gridFaint: string;\n grid: string;\n gridMid: string;\n gridStrong: string;\n /** Plot border + axis arrows. */\n border: string;\n surface: string;\n surfaceAlt: string;\n /** Correlation alternating row tint. */\n surfaceTint: string;\n /** Punnett corner cell. */\n cornerFill: string;\n /** Punnett gamete header band. */\n headerFill: string;\n accent: string;\n /** QFD medium-relationship dot fill. */\n accentSoft: string;\n /** QFD importance band / SIPOC process column fill. */\n accentTint: string;\n /** Deep accent text (importance values, punnett parents, sipoc steps). */\n accentDeep: string;\n /** QFD roof declared-cell fill. */\n roofFilled: string;\n positive: string;\n positiveDeep: string;\n negative: string;\n negativeDeep: string;\n /** Off-chart marker. */\n warnDeep: string;\n /** Text on saturated SIPOC header boxes. */\n onHeader: string;\n}\n\nconst DEFAULT_MATRIX: MatrixTokens = {\n inkStrong: \"#111827\",\n ink: \"#1f2937\",\n inkMuted: \"#374151\",\n inkFaint: \"#6b7280\",\n gridFaint: \"#e5e7eb\",\n grid: \"#d1d5db\",\n gridMid: \"#cbd5e1\",\n gridStrong: \"#94a3b8\",\n border: \"#374151\",\n surface: \"#ffffff\",\n surfaceAlt: \"#f8fafc\",\n surfaceTint: \"#f0fdf4\",\n cornerFill: \"#f1f5f9\",\n headerFill: \"#e2e8f0\",\n accent: \"#2563eb\",\n accentSoft: \"#93c5fd\",\n accentTint: \"#eff6ff\",\n accentDeep: \"#1e3a8a\",\n roofFilled: \"#eef2ff\",\n positive: \"#16a34a\",\n positiveDeep: \"#15803d\",\n negative: \"#dc2626\",\n negativeDeep: \"#b91c1c\",\n warnDeep: \"#ea580c\",\n onHeader: \"#ffffff\",\n};\n\n// Print/clinical: QFD relationship strength falls back to fill-vs-hollow,\n// correlation sign to its glyph — both already shape-encoded.\nconst MONOCHROME_MATRIX: MatrixTokens = {\n inkStrong: \"#000000\",\n ink: \"#000000\",\n inkMuted: \"#333333\",\n inkFaint: \"#555555\",\n gridFaint: \"#dddddd\",\n grid: \"#bbbbbb\",\n gridMid: \"#aaaaaa\",\n gridStrong: \"#777777\",\n border: \"#000000\",\n surface: \"#ffffff\",\n surfaceAlt: \"#f7f7f7\",\n surfaceTint: \"#f0f0f0\",\n cornerFill: \"#f0f0f0\",\n headerFill: \"#e5e5e5\",\n accent: \"#000000\",\n accentSoft: \"#bbbbbb\",\n accentTint: \"#f0f0f0\",\n accentDeep: \"#000000\",\n roofFilled: \"#e5e5e5\",\n positive: \"#000000\",\n positiveDeep: \"#000000\",\n negative: \"#000000\",\n negativeDeep: \"#000000\",\n warnDeep: \"#000000\",\n onHeader: \"#ffffff\",\n};\n\nconst DARK_MATRIX: MatrixTokens = {\n inkStrong: \"#cdd6f4\",\n ink: \"#cdd6f4\",\n inkMuted: \"#bac2de\",\n inkFaint: \"#a6adc8\",\n gridFaint: \"#313244\",\n grid: \"#45475a\",\n gridMid: \"#45475a\",\n gridStrong: \"#6c7086\",\n border: \"#cdd6f4\",\n surface: \"#1e1e2e\",\n surfaceAlt: \"#272736\",\n surfaceTint: \"rgba(166,227,161,0.08)\",\n cornerFill: \"#313244\",\n headerFill: \"#45475a\",\n accent: \"#89b4fa\",\n accentSoft: \"#45557a\",\n accentTint: \"#1e3a5f\",\n accentDeep: \"#89b4fa\",\n roofFilled: \"#2a2a45\",\n positive: \"#a6e3a1\",\n positiveDeep: \"#a6e3a1\",\n negative: \"#f38ba8\",\n negativeDeep: \"#f38ba8\",\n warnDeep: \"#fab387\",\n onHeader: \"#1e1e2e\",\n};\n\nexport const MATRIX_TOKENS: Record<ThemeName, MatrixTokens> = {\n default: DEFAULT_MATRIX,\n monochrome: MONOCHROME_MATRIX,\n dark: DARK_MATRIX,\n};\n\nexport function resolveMatrixTheme(name: string): ResolvedTheme<MatrixTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...MATRIX_TOKENS[themeName] };\n}\n\n// ─── Block Diagram Tokens Per Theme ────────────────────────\n// Control-engineering block diagrams. The default role fills move from the\n// renderer's old Material-Design tints onto the house Tailwind-100 tints so\n// blockdiagram sits in the same colour family as flowchart/bpmn.\n\nexport interface BlockTokens {\n blockStroke: string;\n /** Transfer-function text, port labels (strong ink). */\n blockText: string;\n /** Small role-name caption under the TF. */\n blockName: string;\n sumFill: string;\n /** Signal lines, arrowheads, sum signs, signal labels, branch dots. */\n signalStroke: string;\n roleFills: Readonly<Record<string, string>>;\n}\n\nconst DEFAULT_BLOCK: BlockTokens = {\n blockStroke: \"#334155\",\n blockText: \"#0f172a\",\n blockName: \"#64748b\",\n sumFill: \"#ffffff\",\n signalStroke: \"#334155\",\n roleFills: {\n plant: \"#ffffff\",\n controller: \"#dbeafe\",\n sensor: \"#f3e8ff\",\n actuator: \"#dcfce7\",\n filter: \"#fef9c3\",\n reference: \"#ffffff\",\n disturbance: \"#ffedd5\",\n generic: \"#ffffff\",\n },\n};\n\nconst MONOCHROME_BLOCK: BlockTokens = {\n blockStroke: \"#000000\",\n blockText: \"#000000\",\n blockName: \"#333333\",\n sumFill: \"#ffffff\",\n signalStroke: \"#000000\",\n roleFills: {\n plant: \"#ffffff\",\n controller: \"#ffffff\",\n sensor: \"#ffffff\",\n actuator: \"#ffffff\",\n filter: \"#ffffff\",\n reference: \"#ffffff\",\n disturbance: \"#ffffff\",\n generic: \"#ffffff\",\n },\n};\n\nconst DARK_BLOCK: BlockTokens = {\n blockStroke: \"#cdd6f4\",\n blockText: \"#cdd6f4\",\n blockName: \"#a6adc8\",\n sumFill: \"#313244\",\n signalStroke: \"#cdd6f4\",\n roleFills: {\n plant: \"#313244\",\n controller: \"#1e3a5f\",\n sensor: \"#2e2a52\",\n actuator: \"#1e3a2a\",\n filter: \"#3a3326\",\n reference: \"#313244\",\n disturbance: \"#3a2d1a\",\n generic: \"#313244\",\n },\n};\n\nexport const BLOCK_TOKENS: Record<ThemeName, BlockTokens> = {\n default: DEFAULT_BLOCK,\n monochrome: MONOCHROME_BLOCK,\n dark: DARK_BLOCK,\n};\n\nexport function resolveBlockTheme(name: string): ResolvedTheme<BlockTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...BLOCK_TOKENS[themeName] };\n}\n\n// ─── Theme Resolution ──────────────────────────────────────\n\nexport function resolveBaseTheme(name: string): BaseTheme {\n return BASE_THEMES[name as ThemeName] ?? BASE_THEMES[\"default\"];\n}\n\nexport function resolvePersonTheme(name: string): ResolvedTheme<PersonTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...PERSON_TOKENS[themeName] };\n}\n\nexport function resolveBiologyTheme(name: string): ResolvedTheme<BiologyTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...BIOLOGY_TOKENS[themeName] };\n}\n\n/**\n * Fishbone uses BaseTheme directly — its bone colors come from `theme.palette`.\n * Kept as a named resolver so callers don't have to know that.\n */\nexport function resolveFishboneTheme(name: string): BaseTheme {\n return resolveBaseTheme(name);\n}\n\nexport function resolveVennTheme(name: string): ResolvedTheme<VennTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...VENN_TOKENS[themeName] };\n}\n\n// ─── Genogram Theme Aliases ────────────────────────────────\n\nconst GENOGRAM_ALIASES: Record<string, ThemeName> = {\n clinical: \"monochrome\",\n colorful: \"default\",\n mono: \"monochrome\",\n bw: \"monochrome\",\n};\n\nexport function resolveGenogramTheme(name: string): ResolvedTheme<PersonTokens> {\n const resolved = GENOGRAM_ALIASES[name] ?? name;\n return resolvePersonTheme(resolved);\n}\n\n// ─── Font Sizes ────────────────────────────────────────────\n\n/**\n * Three-tier typography scale. Diagram-specific font sizes (e.g., 14px section\n * labels, 20px hero titles) live as local constants inside their renderer.\n */\nexport const FONT_SIZE = {\n title: 16,\n label: 12,\n small: 9,\n} as const;\n\n// ─── Diagram Title ─────────────────────────────────────────\n\n/**\n * House style for the optional diagram title — one look across every family:\n * 16px / 700, centered on the canvas (`text-anchor: middle` at width/2),\n * baseline `TITLE.y` from the top of the reserved title band. Layouts that\n * reserve vertical space for the title should reserve `TITLE.bandH`.\n */\nexport const TITLE = {\n size: FONT_SIZE.title,\n weight: 700,\n /** Baseline y within the title band. */\n y: 24,\n /** Total height a layout should reserve above content for the title. */\n bandH: 40,\n} as const;\n\n// ─── Stroke Widths ─────────────────────────────────────────\n\n/**\n * Three-tier stroke scale. Anything in between is a local constant in the\n * diagram that needs it.\n * thin — hairlines, ticks, secondary gridlines\n * normal — default body strokes (shapes, edges)\n * thick — emphasis (proband index, star node, center shape)\n */\nexport const STROKE_WIDTH = {\n thin: 1,\n normal: 2,\n thick: 3,\n} as const;\n\n// ─── Spacing ───────────────────────────────────────────────\n\nexport const SPACING = {\n labelGap: 4,\n tipLabelGap: 6,\n titleOffset: 30,\n} as const;\n\n// ─── Font Family ───────────────────────────────────────────\n\nexport const DEFAULT_FONT_FAMILY = \"system-ui, -apple-system, sans-serif\";\n\n// ─── CSS Custom Properties ─────────────────────────────────\n\nexport function cssCustomProperties(theme?: BaseTheme): string {\n const t = theme ?? BASE_THEMES[\"default\"];\n return `\n --schematex-bg: ${t.bg};\n --schematex-text: ${t.text};\n --schematex-text-muted: ${t.textMuted};\n --schematex-stroke: ${t.stroke};\n --schematex-fill: ${t.fill};\n --schematex-fill-muted: ${t.fillMuted};\n --schematex-accent: ${t.accent};\n --schematex-positive: ${t.positive};\n --schematex-negative: ${t.negative};\n --schematex-neutral: ${t.neutral};\n --schematex-warn: ${t.warn};\n --schematex-font-title: ${FONT_SIZE.title}px;\n --schematex-font-label: ${FONT_SIZE.label}px;\n --schematex-font-small: ${FONT_SIZE.small}px;\n --schematex-stroke-thin: ${STROKE_WIDTH.thin};\n --schematex-stroke-normal: ${STROKE_WIDTH.normal};\n --schematex-stroke-thick: ${STROKE_WIDTH.thick};`;\n}\n"]}
|