@transitrix/diagrams 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +47 -47
- package/dist/__tests__/edge-path.test.js +8 -0
- package/dist/activity-card/__tests__/example.test.js +20 -1
- package/dist/activity-card/__tests__/layout.test.js +102 -11
- package/dist/activity-card/__tests__/resolver.test.js +139 -6
- package/dist/activity-card/index.d.ts +1 -1
- package/dist/activity-card/layout.d.ts +1 -1
- package/dist/activity-card/layout.js +220 -103
- package/dist/activity-card/resolver.js +107 -26
- package/dist/activity-card/types.d.ts +150 -27
- package/dist/activity-card/validate.js +3 -0
- package/dist/actor/__tests__/validate.test.js +63 -31
- package/dist/actor/index.d.ts +1 -1
- package/dist/actor/index.js +1 -1
- package/dist/actor/types.d.ts +7 -3
- package/dist/actor/types.js +17 -3
- package/dist/actor/validate.js +55 -26
- package/dist/assertion/types.d.ts +3 -1
- package/dist/assertion/types.js +1 -1
- package/dist/change/__tests__/validate.test.js +40 -34
- package/dist/change/index.d.ts +1 -0
- package/dist/change/types.d.ts +1 -1
- package/dist/change/types.js +2 -2
- package/dist/change/validate.d.ts +6 -1
- package/dist/change/validate.js +68 -41
- package/dist/compliance/__tests__/classify.test.js +34 -0
- package/dist/compliance/__tests__/coverage-metric.test.js +146 -46
- package/dist/compliance/__tests__/html.test.js +2 -2
- package/dist/compliance/__tests__/impact.test.js +311 -6
- package/dist/compliance/classify.d.ts +6 -0
- package/dist/compliance/classify.js +9 -1
- package/dist/compliance/coverage-metric.d.ts +31 -11
- package/dist/compliance/coverage-metric.js +149 -39
- package/dist/compliance/html.js +77 -74
- package/dist/compliance/impact.d.ts +77 -16
- package/dist/compliance/impact.js +193 -25
- package/dist/compliance/index.d.ts +2 -2
- package/dist/compliance/index.js +1 -1
- package/dist/compliance/markdown.js +1 -0
- package/dist/compliance/types.d.ts +25 -6
- package/dist/edge-path.d.ts +8 -4
- package/dist/edge-path.js +11 -6
- package/dist/factor/__tests__/validate.test.js +74 -45
- package/dist/factor/index.d.ts +3 -2
- package/dist/factor/index.js +1 -1
- package/dist/factor/types.d.ts +4 -7
- package/dist/factor/types.js +10 -5
- package/dist/factor/validate.d.ts +6 -1
- package/dist/factor/validate.js +68 -50
- package/dist/fgca/__tests__/resolver.test.js +185 -0
- package/dist/fgca/index.d.ts +2 -0
- package/dist/fgca/index.js +1 -0
- package/dist/fgca/resolver.d.ts +49 -0
- package/dist/fgca/resolver.js +124 -0
- package/dist/goals/index.d.ts +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/process-blueprint/__tests__/layout.test.js +37 -0
- package/dist/process-blueprint/layout.js +5 -1
- package/dist/process-blueprint/types.d.ts +22 -1
- package/dist/stakeholder/__tests__/validate.test.js +49 -47
- package/dist/stakeholder/index.d.ts +1 -0
- package/dist/stakeholder/types.d.ts +3 -4
- package/dist/stakeholder/types.js +2 -3
- package/dist/stakeholder/validate.d.ts +6 -1
- package/dist/stakeholder/validate.js +71 -50
- package/dist/target-state/__tests__/validate.test.js +43 -27
- package/dist/target-state/index.d.ts +2 -0
- package/dist/target-state/index.js +1 -0
- package/dist/target-state/types.d.ts +6 -1
- package/dist/target-state/types.js +8 -7
- package/dist/target-state/validate.d.ts +6 -1
- package/dist/target-state/validate.js +69 -45
- package/dist/theme/themes.js +69 -69
- package/dist/webview/__tests__/entry.test.js +11 -11
- package/dist/webview/render-activities.d.ts +3 -1
- package/dist/webview/render-activities.js +2 -2
- package/dist/webview/render-activity-card.js +104 -77
- package/dist/webview/render-fgca.d.ts +4 -0
- package/dist/webview/render-fgca.js +2 -5
- package/dist/webview/render-goals.d.ts +1 -0
- package/dist/webview/render-goals.js +15 -15
- package/dist/webview/render-process-blueprint.js +10 -10
- package/package.json +40 -40
- package/src/__tests__/edge-path.test.ts +58 -46
- package/src/__tests__/scope.test.ts +27 -27
- package/src/__tests__/yaml-normalize.test.ts +158 -158
- package/src/activities/__tests__/cpm.test.ts +164 -164
- package/src/activities/__tests__/gantt.test.ts +245 -245
- package/src/activities/__tests__/layout.test.ts +112 -112
- package/src/activities/__tests__/validate.test.ts +409 -409
- package/src/activities/cpm.ts +95 -95
- package/src/activities/gantt.ts +276 -276
- package/src/activities/index.ts +28 -28
- package/src/activities/layout.ts +112 -112
- package/src/activities/types.ts +148 -148
- package/src/activities/validate.ts +357 -357
- package/src/activity-card/__tests__/example.test.ts +85 -66
- package/src/activity-card/__tests__/layout.test.ts +169 -63
- package/src/activity-card/__tests__/resolver.test.ts +307 -161
- package/src/activity-card/__tests__/validate.test.ts +131 -131
- package/src/activity-card/index.ts +38 -32
- package/src/activity-card/layout.ts +324 -194
- package/src/activity-card/resolver.ts +415 -337
- package/src/activity-card/types.ts +376 -237
- package/src/activity-card/validate.ts +162 -158
- package/src/actor/__tests__/validate.test.ts +70 -31
- package/src/actor/index.ts +1 -1
- package/src/actor/types.ts +21 -7
- package/src/actor/validate.ts +59 -27
- package/src/applications/__tests__/validate.test.ts +256 -256
- package/src/applications/index.ts +11 -11
- package/src/applications/types.ts +43 -43
- package/src/applications/validate.ts +131 -131
- package/src/assertion/__tests__/example.test.ts +37 -37
- package/src/assertion/__tests__/validate.test.ts +142 -142
- package/src/assertion/index.ts +12 -12
- package/src/assertion/types.ts +60 -58
- package/src/assertion/validate.ts +145 -145
- package/src/blocks/__tests__/layout.test.ts +169 -169
- package/src/blocks/__tests__/validate.test.ts +260 -260
- package/src/blocks/index.ts +17 -17
- package/src/blocks/layout.ts +186 -186
- package/src/blocks/types.ts +62 -62
- package/src/blocks/validate.ts +206 -206
- package/src/capability-map/__tests__/validate.test.ts +238 -238
- package/src/capability-map/index.ts +8 -8
- package/src/capability-map/types.ts +29 -29
- package/src/capability-map/validate.ts +127 -127
- package/src/change/__tests__/validate.test.ts +43 -34
- package/src/change/index.ts +1 -0
- package/src/change/types.ts +5 -3
- package/src/change/validate.ts +75 -43
- package/src/compliance/__tests__/classify.test.ts +64 -27
- package/src/compliance/__tests__/confidence.test.ts +98 -98
- package/src/compliance/__tests__/coverage-metric.test.ts +300 -188
- package/src/compliance/__tests__/demo-scenario.test.ts +273 -273
- package/src/compliance/__tests__/example.test.ts +57 -57
- package/src/compliance/__tests__/gap-report.test.ts +128 -128
- package/src/compliance/__tests__/html.test.ts +141 -141
- package/src/compliance/__tests__/impact.test.ts +840 -481
- package/src/compliance/__tests__/markdown.test.ts +94 -94
- package/src/compliance/__tests__/views.test.ts +64 -64
- package/src/compliance/classify.ts +100 -84
- package/src/compliance/confidence.ts +69 -69
- package/src/compliance/coverage-metric.ts +404 -263
- package/src/compliance/gap-report.ts +94 -94
- package/src/compliance/html.ts +298 -295
- package/src/compliance/impact.ts +861 -677
- package/src/compliance/index.ts +57 -56
- package/src/compliance/markdown.ts +136 -135
- package/src/compliance/reverse-index.ts +33 -33
- package/src/compliance/types.ts +136 -120
- package/src/compliance/views.ts +46 -46
- package/src/compliance-matrix/__tests__/build.test.ts +200 -200
- package/src/compliance-matrix/__tests__/example.test.ts +57 -57
- package/src/compliance-matrix/index.ts +11 -11
- package/src/compliance-matrix/types.ts +102 -102
- package/src/edge-path.ts +50 -44
- package/src/factor/__tests__/validate.test.ts +80 -45
- package/src/factor/index.ts +3 -7
- package/src/factor/types.ts +14 -18
- package/src/factor/validate.ts +77 -51
- package/src/fgca/__tests__/chain-table.test.ts +172 -172
- package/src/fgca/__tests__/layout.test.ts +179 -179
- package/src/fgca/__tests__/parse-canonical.test.ts +248 -248
- package/src/fgca/__tests__/preview-layout.test.ts +124 -124
- package/src/fgca/__tests__/resolver.test.ts +209 -0
- package/src/fgca/__tests__/validate.test.ts +142 -142
- package/src/fgca/chain-table.ts +225 -225
- package/src/fgca/index.ts +47 -45
- package/src/fgca/layout.ts +204 -204
- package/src/fgca/nodeTypes.ts +11 -11
- package/src/fgca/nodes/FGCAActivityNode.tsx +65 -65
- package/src/fgca/nodes/FGCAChangeNode.tsx +64 -64
- package/src/fgca/nodes/FGCAFactorNode.tsx +64 -64
- package/src/fgca/nodes/FGCAGoalNode.tsx +72 -72
- package/src/fgca/parse-canonical.ts +400 -400
- package/src/fgca/preview-layout.ts +217 -217
- package/src/fgca/resolver.ts +157 -0
- package/src/fgca/types.ts +50 -50
- package/src/fgca/validate.ts +126 -126
- package/src/geometry.ts +9 -9
- package/src/goals/__tests__/layout.test.ts +175 -175
- package/src/goals/__tests__/mutations.test.ts +111 -111
- package/src/goals/__tests__/parse-canonical.test.ts +145 -145
- package/src/goals/__tests__/validate.test.ts +202 -202
- package/src/goals/index.ts +20 -21
- package/src/goals/layout.ts +172 -172
- package/src/goals/mutations.ts +123 -123
- package/src/goals/parse-canonical.ts +286 -286
- package/src/goals/types.ts +85 -85
- package/src/goals/validate.ts +136 -136
- package/src/index.ts +28 -23
- package/src/process-blueprint/__tests__/compliance-lane.test.ts +320 -320
- package/src/process-blueprint/__tests__/layout.test.ts +240 -195
- package/src/process-blueprint/__tests__/validate.test.ts +310 -310
- package/src/process-blueprint/index.ts +31 -31
- package/src/process-blueprint/layout.ts +535 -531
- package/src/process-blueprint/types.ts +263 -242
- package/src/process-blueprint/validate.ts +181 -181
- package/src/process-map/__tests__/validate.test.ts +223 -223
- package/src/process-map/index.ts +10 -10
- package/src/process-map/types.ts +36 -36
- package/src/process-map/validate.ts +135 -135
- package/src/products/__tests__/validate.test.ts +239 -239
- package/src/products/index.ts +9 -9
- package/src/products/types.ts +31 -31
- package/src/products/validate.ts +112 -112
- package/src/repo-validate/__tests__/validate-repo.test.ts +149 -149
- package/src/repo-validate/index.ts +2 -2
- package/src/repo-validate/types.ts +50 -50
- package/src/repo-validate/validate-repo.ts +196 -196
- package/src/requirement/__tests__/example.test.ts +24 -24
- package/src/requirement/__tests__/validate.test.ts +96 -96
- package/src/requirement/index.ts +4 -4
- package/src/requirement/types.ts +35 -35
- package/src/requirement/validate.ts +92 -92
- package/src/scenarios/__tests__/validate.test.ts +209 -209
- package/src/scenarios/index.ts +15 -15
- package/src/scenarios/types.ts +37 -37
- package/src/scenarios/validate.ts +122 -122
- package/src/schema-version.ts +16 -16
- package/src/scope.ts +46 -46
- package/src/stakeholder/__tests__/validate.test.ts +51 -47
- package/src/stakeholder/index.ts +1 -0
- package/src/stakeholder/types.ts +7 -7
- package/src/stakeholder/validate.ts +79 -52
- package/src/target-state/__tests__/validate.test.ts +48 -27
- package/src/target-state/index.ts +2 -0
- package/src/target-state/types.ts +11 -7
- package/src/target-state/validate.ts +76 -46
- package/src/theme/index.ts +4 -4
- package/src/theme/themes.ts +237 -237
- package/src/theme/tokens.ts +133 -133
- package/src/typed-id.ts +56 -56
- package/src/validation-types.ts +36 -36
- package/src/webview/__tests__/entry-notations.test.ts +77 -77
- package/src/webview/__tests__/entry.test.ts +64 -64
- package/src/webview/__tests__/render-goals.test.ts +72 -72
- package/src/webview/entry.ts +292 -292
- package/src/webview/render-activities.ts +5 -3
- package/src/webview/render-activity-card.ts +266 -234
- package/src/webview/render-fgca.ts +6 -5
- package/src/webview/render-goals.ts +111 -110
- package/src/webview/render-process-blueprint.ts +207 -207
- package/src/webview/styles.css +322 -323
- package/src/yaml-normalize.ts +56 -56
- package/dist/element-envelope.d.ts +0 -15
- package/dist/element-envelope.js +0 -55
- package/dist/issues/__tests__/layout.test.js +0 -62
- package/dist/issues/__tests__/validate.test.d.ts +0 -1
- package/dist/issues/__tests__/validate.test.js +0 -82
- package/dist/issues/index.d.ts +0 -4
- package/dist/issues/index.js +0 -2
- package/dist/issues/layout.d.ts +0 -10
- package/dist/issues/layout.js +0 -82
- package/dist/issues/types.d.ts +0 -61
- package/dist/issues/types.js +0 -6
- package/dist/issues/validate.d.ts +0 -3
- package/dist/issues/validate.js +0 -143
- package/dist/webview/transitrix-render.css +0 -323
- package/dist/webview/transitrix-render.js +0 -6452
- package/dist/webview/transitrix-render.js.map +0 -7
- package/src/element-envelope.ts +0 -76
- /package/dist/{issues/__tests__/layout.test.d.ts → fgca/__tests__/resolver.test.d.ts} +0 -0
package/src/theme/themes.ts
CHANGED
|
@@ -1,237 +1,237 @@
|
|
|
1
|
-
import {
|
|
2
|
-
LAYER_COLORS,
|
|
3
|
-
LEVEL_COLORS,
|
|
4
|
-
MATURITY_COLORS,
|
|
5
|
-
STRUCTURAL,
|
|
6
|
-
TYPOGRAPHY,
|
|
7
|
-
CSS_VAR,
|
|
8
|
-
getBaseResetCss,
|
|
9
|
-
type AdaptiveTokens,
|
|
10
|
-
} from './tokens.js';
|
|
11
|
-
|
|
12
|
-
export type ThemeId = 'transitrix' | 'transitrix-dark' | 'vscode-adaptive';
|
|
13
|
-
|
|
14
|
-
const TRANSITRIX_LIGHT: AdaptiveTokens = {
|
|
15
|
-
bg: '#ffffff',
|
|
16
|
-
bgSurface: '#f8fafc',
|
|
17
|
-
bgElevated: '#f1f5f9',
|
|
18
|
-
text: '#0f172a',
|
|
19
|
-
textMuted: '#64748b',
|
|
20
|
-
textInverse: '#ffffff',
|
|
21
|
-
border: '#e2e8f0',
|
|
22
|
-
divider: '#cbd5e1',
|
|
23
|
-
statusSuccessBg: '#d1fae5',
|
|
24
|
-
statusSuccessFg: '#065f46',
|
|
25
|
-
statusWarningBg: '#fef9c3',
|
|
26
|
-
statusWarningFg: '#854d0e',
|
|
27
|
-
statusInfoBg: '#e0f2fe',
|
|
28
|
-
statusInfoFg: '#0c4a6e',
|
|
29
|
-
statusErrorBg: '#fee2e2',
|
|
30
|
-
statusErrorFg: '#991b1b',
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const TRANSITRIX_DARK: AdaptiveTokens = {
|
|
34
|
-
bg: '#0a1628',
|
|
35
|
-
bgSurface: '#0f1f3d',
|
|
36
|
-
bgElevated: '#162544',
|
|
37
|
-
text: '#f1f5f9',
|
|
38
|
-
textMuted: '#94a3b8',
|
|
39
|
-
textInverse: '#0f172a',
|
|
40
|
-
border: '#1e3a5f',
|
|
41
|
-
divider: '#1a3050',
|
|
42
|
-
statusSuccessBg: '#022c22',
|
|
43
|
-
statusSuccessFg: '#6ee7b7',
|
|
44
|
-
statusWarningBg: '#1e1500',
|
|
45
|
-
statusWarningFg: '#fcd34d',
|
|
46
|
-
statusInfoBg: '#071e2e',
|
|
47
|
-
statusInfoFg: '#7dd3fc',
|
|
48
|
-
statusErrorBg: '#2c0a0a',
|
|
49
|
-
statusErrorFg: '#fca5a5',
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
function adaptiveVars(t: AdaptiveTokens): string {
|
|
53
|
-
return [
|
|
54
|
-
`${CSS_VAR.bg}:${t.bg}`,
|
|
55
|
-
`${CSS_VAR.bgSurface}:${t.bgSurface}`,
|
|
56
|
-
`${CSS_VAR.bgElevated}:${t.bgElevated}`,
|
|
57
|
-
`${CSS_VAR.text}:${t.text}`,
|
|
58
|
-
`${CSS_VAR.textMuted}:${t.textMuted}`,
|
|
59
|
-
`${CSS_VAR.textInverse}:${t.textInverse}`,
|
|
60
|
-
`${CSS_VAR.border}:${t.border}`,
|
|
61
|
-
`${CSS_VAR.divider}:${t.divider}`,
|
|
62
|
-
`${CSS_VAR.statusSuccessBg}:${t.statusSuccessBg}`,
|
|
63
|
-
`${CSS_VAR.statusSuccessFg}:${t.statusSuccessFg}`,
|
|
64
|
-
`${CSS_VAR.statusWarningBg}:${t.statusWarningBg}`,
|
|
65
|
-
`${CSS_VAR.statusWarningFg}:${t.statusWarningFg}`,
|
|
66
|
-
`${CSS_VAR.statusInfoBg}:${t.statusInfoBg}`,
|
|
67
|
-
`${CSS_VAR.statusInfoFg}:${t.statusInfoFg}`,
|
|
68
|
-
`${CSS_VAR.statusErrorBg}:${t.statusErrorBg}`,
|
|
69
|
-
`${CSS_VAR.statusErrorFg}:${t.statusErrorFg}`,
|
|
70
|
-
].join(';') + ';';
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function diagramVars(variant: 'light' | 'dark' | 'hc'): string {
|
|
74
|
-
const lc = LAYER_COLORS;
|
|
75
|
-
const sc = STRUCTURAL;
|
|
76
|
-
const lv = LEVEL_COLORS[variant];
|
|
77
|
-
const mat = MATURITY_COLORS[variant];
|
|
78
|
-
const levelVars = lv.map((c, i) => `--ts-level-${i}:${c}`).join(';') + ';';
|
|
79
|
-
return [
|
|
80
|
-
`${CSS_VAR.layerFactor}:${lc.factor[variant]}`,
|
|
81
|
-
`${CSS_VAR.layerGoal}:${lc.goal[variant]}`,
|
|
82
|
-
`${CSS_VAR.layerChange}:${lc.change[variant]}`,
|
|
83
|
-
`${CSS_VAR.layerActivity}:${lc.activity[variant]}`,
|
|
84
|
-
`${CSS_VAR.nodeStroke}:${sc.nodeStroke[variant]}`,
|
|
85
|
-
`${CSS_VAR.edgeStroke}:${sc.edgeStroke[variant]}`,
|
|
86
|
-
`${CSS_VAR.textPrimary}:${sc.textPrimary[variant]}`,
|
|
87
|
-
`${CSS_VAR.textSecondary}:${sc.textSecondary[variant]}`,
|
|
88
|
-
`${CSS_VAR.headerText}:${sc.headerText[variant]}`,
|
|
89
|
-
`${CSS_VAR.maturity1}:${mat[0]}`,
|
|
90
|
-
`${CSS_VAR.maturity2}:${mat[1]}`,
|
|
91
|
-
`${CSS_VAR.maturity3}:${mat[2]}`,
|
|
92
|
-
`${CSS_VAR.maturity4}:${mat[3]}`,
|
|
93
|
-
`${CSS_VAR.maturity5}:${mat[4]}`,
|
|
94
|
-
].join(';') + ';' + levelVars;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** CSS for the webview shell (toolbar, canvas). */
|
|
98
|
-
function shellCss(): string {
|
|
99
|
-
const cv = CSS_VAR;
|
|
100
|
-
const t = TYPOGRAPHY;
|
|
101
|
-
// Full-height flex chain lifted from blocks-preview / activities-preview
|
|
102
|
-
// into the shared shell (per strategy hub #35). Body is a flex column
|
|
103
|
-
// sized to the iframe; #canvas takes the remaining height with its own
|
|
104
|
-
// scroll region. Without this, #canvas was content-height and any
|
|
105
|
-
// overflow-x scrollbar landed mid-panel with empty space below it — the
|
|
106
|
-
// "two-page" split flagged on goals, activities, and others.
|
|
107
|
-
//
|
|
108
|
-
// html bg + min-height are set per-theme in generateWebviewCss (literal
|
|
109
|
-
// hex / VS Code var) so they don't depend on `--ts-bg` resolving on html —
|
|
110
|
-
// CSS custom properties only cascade DOWN, and `--ts-bg` is defined on the
|
|
111
|
-
// body[data-theme] selector, so html itself can't read it. Without that
|
|
112
|
-
// explicit html bg, the iframe's underlying VS Code editor background
|
|
113
|
-
// showed through any uncovered area below short diagrams.
|
|
114
|
-
return `html,body{height:100%;}
|
|
115
|
-
body{background:var(${cv.bg});color:var(${cv.text});display:flex;flex-direction:column;}
|
|
116
|
-
#toolbar{position:sticky;top:0;z-index:10;padding:6px 12px;border-bottom:1px solid var(${cv.border});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;color:var(${cv.textMuted});background:var(${cv.bg});flex-shrink:0;}
|
|
117
|
-
#canvas{flex:1;min-height:0;padding:16px;overflow:auto;}
|
|
118
|
-
svg{display:block;}`;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/** CSS for SVG diagram classes — all consume --ts-* variables. */
|
|
122
|
-
function diagramClassCss(): string {
|
|
123
|
-
const cv = CSS_VAR;
|
|
124
|
-
const t = TYPOGRAPHY;
|
|
125
|
-
const levelCount = LEVEL_COLORS.light.length;
|
|
126
|
-
const levelRules = Array.from({ length: levelCount }, (_, i) =>
|
|
127
|
-
`.level-${i}{fill:var(--ts-level-${i});}`
|
|
128
|
-
).join('');
|
|
129
|
-
// Typography: every <text> in a preview SVG resolves font-family, size and
|
|
130
|
-
// weight from these classes instead of inline attributes. That is the
|
|
131
|
-
// contract every notation preview honours so the catalogue reads as one
|
|
132
|
-
// visual family.
|
|
133
|
-
return `.diagram-node{stroke:var(${cv.nodeStroke});stroke-width:1;}
|
|
134
|
-
.layer-factor{fill:var(${cv.layerFactor});}
|
|
135
|
-
.layer-goal{fill:var(${cv.layerGoal});}
|
|
136
|
-
.layer-change{fill:var(${cv.layerChange});}
|
|
137
|
-
.layer-activity{fill:var(${cv.layerActivity});}
|
|
138
|
-
${levelRules}
|
|
139
|
-
.diagram-edge{stroke:var(${cv.edgeStroke});stroke-width:1.5;fill:none;}
|
|
140
|
-
.arrow-fill{fill:var(${cv.edgeStroke});}
|
|
141
|
-
.text-header{fill:var(${cv.headerText});font-family:${t.fontFamily};font-size:${t.sizes.header}px;font-weight:${t.weights.header};}
|
|
142
|
-
.text-primary{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.primary}px;font-weight:${t.weights.primary};}
|
|
143
|
-
.text-secondary{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;font-weight:${t.weights.secondary};}
|
|
144
|
-
.text-id{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.id}px;font-weight:${t.weights.id};}
|
|
145
|
-
.text-pill{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.pill}px;font-weight:${t.weights.pill};}
|
|
146
|
-
.maturity-1{fill:var(${cv.maturity1});}
|
|
147
|
-
.maturity-2{fill:var(${cv.maturity2});}
|
|
148
|
-
.maturity-3{fill:var(${cv.maturity3});}
|
|
149
|
-
.maturity-4{fill:var(${cv.maturity4});}
|
|
150
|
-
.maturity-5{fill:var(${cv.maturity5});}
|
|
151
|
-
.compliance-gap{fill:var(${cv.statusWarningBg});stroke:var(${cv.statusWarningFg});}
|
|
152
|
-
.compliance-gap text{fill:var(${cv.statusWarningFg});}
|
|
153
|
-
.compliance-deadline{fill:var(${cv.statusErrorBg});stroke:var(${cv.statusErrorFg});}
|
|
154
|
-
.compliance-deadline text{fill:var(${cv.statusErrorFg});}
|
|
155
|
-
.compliance-badge{fill:var(${cv.statusErrorFg});}
|
|
156
|
-
.compliance-badge-text{fill:var(${cv.textInverse});font-family:${t.fontFamily};font-size:8px;font-weight:700;}`;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Generates a self-contained CSS block for embedding inside a standalone SVG file.
|
|
161
|
-
* Defines all --ts-* custom properties on :root so diagram classes resolve correctly
|
|
162
|
-
* when the SVG is opened outside of VS Code.
|
|
163
|
-
* vscode-adaptive falls back to the light palette (runtime VS Code variables are unavailable).
|
|
164
|
-
*/
|
|
165
|
-
export function generateSvgEmbedCss(themeId: ThemeId): string {
|
|
166
|
-
const variant = themeId === 'transitrix-dark' ? 'dark' : 'light';
|
|
167
|
-
const adaptive = themeId === 'transitrix-dark' ? TRANSITRIX_DARK : TRANSITRIX_LIGHT;
|
|
168
|
-
return `:root{${adaptiveVars(adaptive)}${diagramVars(variant)}}${diagramClassCss()}`;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Generates complete CSS for a static SVG diagram webview.
|
|
173
|
-
*
|
|
174
|
-
* For transitrix/transitrix-dark: sets --ts-* vars with fixed brand colors.
|
|
175
|
-
* For vscode-adaptive: maps --ts-* vars to --vscode-* CSS vars, with
|
|
176
|
-
* body.vscode-dark / body.vscode-high-contrast overrides for diagram colors.
|
|
177
|
-
*/
|
|
178
|
-
export function generateWebviewCss(themeId: ThemeId): string {
|
|
179
|
-
const base = getBaseResetCss();
|
|
180
|
-
const shell = shellCss();
|
|
181
|
-
const classes = diagramClassCss();
|
|
182
|
-
|
|
183
|
-
if (themeId === 'transitrix') {
|
|
184
|
-
return `${base}
|
|
185
|
-
html{background:${TRANSITRIX_LIGHT.bg};min-height:100vh;}
|
|
186
|
-
body[data-theme="transitrix"]{${adaptiveVars(TRANSITRIX_LIGHT)}${diagramVars('light')}}
|
|
187
|
-
${shell}
|
|
188
|
-
${classes}`;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
if (themeId === 'transitrix-dark') {
|
|
192
|
-
return `${base}
|
|
193
|
-
html{background:${TRANSITRIX_DARK.bg};min-height:100vh;}
|
|
194
|
-
body[data-theme="transitrix-dark"]{${adaptiveVars(TRANSITRIX_DARK)}${diagramVars('dark')}}
|
|
195
|
-
${shell}
|
|
196
|
-
${classes}`;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// vscode-adaptive: map --ts-shell vars to --vscode-* CSS variables;
|
|
200
|
-
// layer/level/structural colors follow the VS Code theme body class.
|
|
201
|
-
const cv = CSS_VAR;
|
|
202
|
-
return `${base}
|
|
203
|
-
html{background:var(--vscode-editor-background,${TRANSITRIX_LIGHT.bg});min-height:100vh;}
|
|
204
|
-
body[data-theme="vscode-adaptive"]{
|
|
205
|
-
${cv.bg}:var(--vscode-editor-background);
|
|
206
|
-
${cv.bgSurface}:var(--vscode-sideBar-background,var(--vscode-editor-background));
|
|
207
|
-
${cv.bgElevated}:var(--vscode-editorHoverWidget-background,var(--vscode-editor-background));
|
|
208
|
-
${cv.text}:var(--vscode-foreground);
|
|
209
|
-
${cv.textMuted}:var(--vscode-descriptionForeground);
|
|
210
|
-
${cv.textInverse}:var(--vscode-editor-background);
|
|
211
|
-
${cv.border}:var(--vscode-panel-border);
|
|
212
|
-
${cv.divider}:var(--vscode-panel-border);
|
|
213
|
-
${cv.statusSuccessBg}:${TRANSITRIX_LIGHT.statusSuccessBg};
|
|
214
|
-
${cv.statusSuccessFg}:${TRANSITRIX_LIGHT.statusSuccessFg};
|
|
215
|
-
${cv.statusWarningBg}:${TRANSITRIX_LIGHT.statusWarningBg};
|
|
216
|
-
${cv.statusWarningFg}:${TRANSITRIX_LIGHT.statusWarningFg};
|
|
217
|
-
${cv.statusInfoBg}:${TRANSITRIX_LIGHT.statusInfoBg};
|
|
218
|
-
${cv.statusInfoFg}:${TRANSITRIX_LIGHT.statusInfoFg};
|
|
219
|
-
${cv.statusErrorBg}:${TRANSITRIX_LIGHT.statusErrorBg};
|
|
220
|
-
${cv.statusErrorFg}:${TRANSITRIX_LIGHT.statusErrorFg};
|
|
221
|
-
${diagramVars('light')}
|
|
222
|
-
}
|
|
223
|
-
body[data-theme="vscode-adaptive"].vscode-dark{
|
|
224
|
-
${cv.statusSuccessBg}:${TRANSITRIX_DARK.statusSuccessBg};
|
|
225
|
-
${cv.statusSuccessFg}:${TRANSITRIX_DARK.statusSuccessFg};
|
|
226
|
-
${cv.statusWarningBg}:${TRANSITRIX_DARK.statusWarningBg};
|
|
227
|
-
${cv.statusWarningFg}:${TRANSITRIX_DARK.statusWarningFg};
|
|
228
|
-
${cv.statusInfoBg}:${TRANSITRIX_DARK.statusInfoBg};
|
|
229
|
-
${cv.statusInfoFg}:${TRANSITRIX_DARK.statusInfoFg};
|
|
230
|
-
${cv.statusErrorBg}:${TRANSITRIX_DARK.statusErrorBg};
|
|
231
|
-
${cv.statusErrorFg}:${TRANSITRIX_DARK.statusErrorFg};
|
|
232
|
-
${diagramVars('dark')}
|
|
233
|
-
}
|
|
234
|
-
body[data-theme="vscode-adaptive"].vscode-high-contrast{${diagramVars('hc')}}
|
|
235
|
-
${shell}
|
|
236
|
-
${classes}`;
|
|
237
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
LAYER_COLORS,
|
|
3
|
+
LEVEL_COLORS,
|
|
4
|
+
MATURITY_COLORS,
|
|
5
|
+
STRUCTURAL,
|
|
6
|
+
TYPOGRAPHY,
|
|
7
|
+
CSS_VAR,
|
|
8
|
+
getBaseResetCss,
|
|
9
|
+
type AdaptiveTokens,
|
|
10
|
+
} from './tokens.js';
|
|
11
|
+
|
|
12
|
+
export type ThemeId = 'transitrix' | 'transitrix-dark' | 'vscode-adaptive';
|
|
13
|
+
|
|
14
|
+
const TRANSITRIX_LIGHT: AdaptiveTokens = {
|
|
15
|
+
bg: '#ffffff',
|
|
16
|
+
bgSurface: '#f8fafc',
|
|
17
|
+
bgElevated: '#f1f5f9',
|
|
18
|
+
text: '#0f172a',
|
|
19
|
+
textMuted: '#64748b',
|
|
20
|
+
textInverse: '#ffffff',
|
|
21
|
+
border: '#e2e8f0',
|
|
22
|
+
divider: '#cbd5e1',
|
|
23
|
+
statusSuccessBg: '#d1fae5',
|
|
24
|
+
statusSuccessFg: '#065f46',
|
|
25
|
+
statusWarningBg: '#fef9c3',
|
|
26
|
+
statusWarningFg: '#854d0e',
|
|
27
|
+
statusInfoBg: '#e0f2fe',
|
|
28
|
+
statusInfoFg: '#0c4a6e',
|
|
29
|
+
statusErrorBg: '#fee2e2',
|
|
30
|
+
statusErrorFg: '#991b1b',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const TRANSITRIX_DARK: AdaptiveTokens = {
|
|
34
|
+
bg: '#0a1628',
|
|
35
|
+
bgSurface: '#0f1f3d',
|
|
36
|
+
bgElevated: '#162544',
|
|
37
|
+
text: '#f1f5f9',
|
|
38
|
+
textMuted: '#94a3b8',
|
|
39
|
+
textInverse: '#0f172a',
|
|
40
|
+
border: '#1e3a5f',
|
|
41
|
+
divider: '#1a3050',
|
|
42
|
+
statusSuccessBg: '#022c22',
|
|
43
|
+
statusSuccessFg: '#6ee7b7',
|
|
44
|
+
statusWarningBg: '#1e1500',
|
|
45
|
+
statusWarningFg: '#fcd34d',
|
|
46
|
+
statusInfoBg: '#071e2e',
|
|
47
|
+
statusInfoFg: '#7dd3fc',
|
|
48
|
+
statusErrorBg: '#2c0a0a',
|
|
49
|
+
statusErrorFg: '#fca5a5',
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
function adaptiveVars(t: AdaptiveTokens): string {
|
|
53
|
+
return [
|
|
54
|
+
`${CSS_VAR.bg}:${t.bg}`,
|
|
55
|
+
`${CSS_VAR.bgSurface}:${t.bgSurface}`,
|
|
56
|
+
`${CSS_VAR.bgElevated}:${t.bgElevated}`,
|
|
57
|
+
`${CSS_VAR.text}:${t.text}`,
|
|
58
|
+
`${CSS_VAR.textMuted}:${t.textMuted}`,
|
|
59
|
+
`${CSS_VAR.textInverse}:${t.textInverse}`,
|
|
60
|
+
`${CSS_VAR.border}:${t.border}`,
|
|
61
|
+
`${CSS_VAR.divider}:${t.divider}`,
|
|
62
|
+
`${CSS_VAR.statusSuccessBg}:${t.statusSuccessBg}`,
|
|
63
|
+
`${CSS_VAR.statusSuccessFg}:${t.statusSuccessFg}`,
|
|
64
|
+
`${CSS_VAR.statusWarningBg}:${t.statusWarningBg}`,
|
|
65
|
+
`${CSS_VAR.statusWarningFg}:${t.statusWarningFg}`,
|
|
66
|
+
`${CSS_VAR.statusInfoBg}:${t.statusInfoBg}`,
|
|
67
|
+
`${CSS_VAR.statusInfoFg}:${t.statusInfoFg}`,
|
|
68
|
+
`${CSS_VAR.statusErrorBg}:${t.statusErrorBg}`,
|
|
69
|
+
`${CSS_VAR.statusErrorFg}:${t.statusErrorFg}`,
|
|
70
|
+
].join(';') + ';';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function diagramVars(variant: 'light' | 'dark' | 'hc'): string {
|
|
74
|
+
const lc = LAYER_COLORS;
|
|
75
|
+
const sc = STRUCTURAL;
|
|
76
|
+
const lv = LEVEL_COLORS[variant];
|
|
77
|
+
const mat = MATURITY_COLORS[variant];
|
|
78
|
+
const levelVars = lv.map((c, i) => `--ts-level-${i}:${c}`).join(';') + ';';
|
|
79
|
+
return [
|
|
80
|
+
`${CSS_VAR.layerFactor}:${lc.factor[variant]}`,
|
|
81
|
+
`${CSS_VAR.layerGoal}:${lc.goal[variant]}`,
|
|
82
|
+
`${CSS_VAR.layerChange}:${lc.change[variant]}`,
|
|
83
|
+
`${CSS_VAR.layerActivity}:${lc.activity[variant]}`,
|
|
84
|
+
`${CSS_VAR.nodeStroke}:${sc.nodeStroke[variant]}`,
|
|
85
|
+
`${CSS_VAR.edgeStroke}:${sc.edgeStroke[variant]}`,
|
|
86
|
+
`${CSS_VAR.textPrimary}:${sc.textPrimary[variant]}`,
|
|
87
|
+
`${CSS_VAR.textSecondary}:${sc.textSecondary[variant]}`,
|
|
88
|
+
`${CSS_VAR.headerText}:${sc.headerText[variant]}`,
|
|
89
|
+
`${CSS_VAR.maturity1}:${mat[0]}`,
|
|
90
|
+
`${CSS_VAR.maturity2}:${mat[1]}`,
|
|
91
|
+
`${CSS_VAR.maturity3}:${mat[2]}`,
|
|
92
|
+
`${CSS_VAR.maturity4}:${mat[3]}`,
|
|
93
|
+
`${CSS_VAR.maturity5}:${mat[4]}`,
|
|
94
|
+
].join(';') + ';' + levelVars;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** CSS for the webview shell (toolbar, canvas). */
|
|
98
|
+
function shellCss(): string {
|
|
99
|
+
const cv = CSS_VAR;
|
|
100
|
+
const t = TYPOGRAPHY;
|
|
101
|
+
// Full-height flex chain lifted from blocks-preview / activities-preview
|
|
102
|
+
// into the shared shell (per strategy hub #35). Body is a flex column
|
|
103
|
+
// sized to the iframe; #canvas takes the remaining height with its own
|
|
104
|
+
// scroll region. Without this, #canvas was content-height and any
|
|
105
|
+
// overflow-x scrollbar landed mid-panel with empty space below it — the
|
|
106
|
+
// "two-page" split flagged on goals, activities, and others.
|
|
107
|
+
//
|
|
108
|
+
// html bg + min-height are set per-theme in generateWebviewCss (literal
|
|
109
|
+
// hex / VS Code var) so they don't depend on `--ts-bg` resolving on html —
|
|
110
|
+
// CSS custom properties only cascade DOWN, and `--ts-bg` is defined on the
|
|
111
|
+
// body[data-theme] selector, so html itself can't read it. Without that
|
|
112
|
+
// explicit html bg, the iframe's underlying VS Code editor background
|
|
113
|
+
// showed through any uncovered area below short diagrams.
|
|
114
|
+
return `html,body{height:100%;}
|
|
115
|
+
body{background:var(${cv.bg});color:var(${cv.text});display:flex;flex-direction:column;}
|
|
116
|
+
#toolbar{position:sticky;top:0;z-index:10;padding:6px 12px;border-bottom:1px solid var(${cv.border});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;color:var(${cv.textMuted});background:var(${cv.bg});flex-shrink:0;}
|
|
117
|
+
#canvas{flex:1;min-height:0;padding:16px;overflow:auto;}
|
|
118
|
+
svg{display:block;}`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** CSS for SVG diagram classes — all consume --ts-* variables. */
|
|
122
|
+
function diagramClassCss(): string {
|
|
123
|
+
const cv = CSS_VAR;
|
|
124
|
+
const t = TYPOGRAPHY;
|
|
125
|
+
const levelCount = LEVEL_COLORS.light.length;
|
|
126
|
+
const levelRules = Array.from({ length: levelCount }, (_, i) =>
|
|
127
|
+
`.level-${i}{fill:var(--ts-level-${i});}`
|
|
128
|
+
).join('');
|
|
129
|
+
// Typography: every <text> in a preview SVG resolves font-family, size and
|
|
130
|
+
// weight from these classes instead of inline attributes. That is the
|
|
131
|
+
// contract every notation preview honours so the catalogue reads as one
|
|
132
|
+
// visual family.
|
|
133
|
+
return `.diagram-node{stroke:var(${cv.nodeStroke});stroke-width:1;}
|
|
134
|
+
.layer-factor{fill:var(${cv.layerFactor});}
|
|
135
|
+
.layer-goal{fill:var(${cv.layerGoal});}
|
|
136
|
+
.layer-change{fill:var(${cv.layerChange});}
|
|
137
|
+
.layer-activity{fill:var(${cv.layerActivity});}
|
|
138
|
+
${levelRules}
|
|
139
|
+
.diagram-edge{stroke:var(${cv.edgeStroke});stroke-width:1.5;fill:none;}
|
|
140
|
+
.arrow-fill{fill:var(${cv.edgeStroke});}
|
|
141
|
+
.text-header{fill:var(${cv.headerText});font-family:${t.fontFamily};font-size:${t.sizes.header}px;font-weight:${t.weights.header};dominant-baseline:central;}
|
|
142
|
+
.text-primary{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.primary}px;font-weight:${t.weights.primary};dominant-baseline:central;}
|
|
143
|
+
.text-secondary{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;font-weight:${t.weights.secondary};dominant-baseline:central;}
|
|
144
|
+
.text-id{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.id}px;font-weight:${t.weights.id};dominant-baseline:central;}
|
|
145
|
+
.text-pill{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.pill}px;font-weight:${t.weights.pill};dominant-baseline:central;}
|
|
146
|
+
.maturity-1{fill:var(${cv.maturity1});}
|
|
147
|
+
.maturity-2{fill:var(${cv.maturity2});}
|
|
148
|
+
.maturity-3{fill:var(${cv.maturity3});}
|
|
149
|
+
.maturity-4{fill:var(${cv.maturity4});}
|
|
150
|
+
.maturity-5{fill:var(${cv.maturity5});}
|
|
151
|
+
.compliance-gap{fill:var(${cv.statusWarningBg});stroke:var(${cv.statusWarningFg});}
|
|
152
|
+
.compliance-gap text{fill:var(${cv.statusWarningFg});}
|
|
153
|
+
.compliance-deadline{fill:var(${cv.statusErrorBg});stroke:var(${cv.statusErrorFg});}
|
|
154
|
+
.compliance-deadline text{fill:var(${cv.statusErrorFg});}
|
|
155
|
+
.compliance-badge{fill:var(${cv.statusErrorFg});}
|
|
156
|
+
.compliance-badge-text{fill:var(${cv.textInverse});font-family:${t.fontFamily};font-size:8px;font-weight:700;}`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Generates a self-contained CSS block for embedding inside a standalone SVG file.
|
|
161
|
+
* Defines all --ts-* custom properties on :root so diagram classes resolve correctly
|
|
162
|
+
* when the SVG is opened outside of VS Code.
|
|
163
|
+
* vscode-adaptive falls back to the light palette (runtime VS Code variables are unavailable).
|
|
164
|
+
*/
|
|
165
|
+
export function generateSvgEmbedCss(themeId: ThemeId): string {
|
|
166
|
+
const variant = themeId === 'transitrix-dark' ? 'dark' : 'light';
|
|
167
|
+
const adaptive = themeId === 'transitrix-dark' ? TRANSITRIX_DARK : TRANSITRIX_LIGHT;
|
|
168
|
+
return `:root{${adaptiveVars(adaptive)}${diagramVars(variant)}}${diagramClassCss()}`;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Generates complete CSS for a static SVG diagram webview.
|
|
173
|
+
*
|
|
174
|
+
* For transitrix/transitrix-dark: sets --ts-* vars with fixed brand colors.
|
|
175
|
+
* For vscode-adaptive: maps --ts-* vars to --vscode-* CSS vars, with
|
|
176
|
+
* body.vscode-dark / body.vscode-high-contrast overrides for diagram colors.
|
|
177
|
+
*/
|
|
178
|
+
export function generateWebviewCss(themeId: ThemeId): string {
|
|
179
|
+
const base = getBaseResetCss();
|
|
180
|
+
const shell = shellCss();
|
|
181
|
+
const classes = diagramClassCss();
|
|
182
|
+
|
|
183
|
+
if (themeId === 'transitrix') {
|
|
184
|
+
return `${base}
|
|
185
|
+
html{background:${TRANSITRIX_LIGHT.bg};min-height:100vh;}
|
|
186
|
+
body[data-theme="transitrix"]{${adaptiveVars(TRANSITRIX_LIGHT)}${diagramVars('light')}}
|
|
187
|
+
${shell}
|
|
188
|
+
${classes}`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (themeId === 'transitrix-dark') {
|
|
192
|
+
return `${base}
|
|
193
|
+
html{background:${TRANSITRIX_DARK.bg};min-height:100vh;}
|
|
194
|
+
body[data-theme="transitrix-dark"]{${adaptiveVars(TRANSITRIX_DARK)}${diagramVars('dark')}}
|
|
195
|
+
${shell}
|
|
196
|
+
${classes}`;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// vscode-adaptive: map --ts-shell vars to --vscode-* CSS variables;
|
|
200
|
+
// layer/level/structural colors follow the VS Code theme body class.
|
|
201
|
+
const cv = CSS_VAR;
|
|
202
|
+
return `${base}
|
|
203
|
+
html{background:var(--vscode-editor-background,${TRANSITRIX_LIGHT.bg});min-height:100vh;}
|
|
204
|
+
body[data-theme="vscode-adaptive"]{
|
|
205
|
+
${cv.bg}:var(--vscode-editor-background);
|
|
206
|
+
${cv.bgSurface}:var(--vscode-sideBar-background,var(--vscode-editor-background));
|
|
207
|
+
${cv.bgElevated}:var(--vscode-editorHoverWidget-background,var(--vscode-editor-background));
|
|
208
|
+
${cv.text}:var(--vscode-foreground);
|
|
209
|
+
${cv.textMuted}:var(--vscode-descriptionForeground);
|
|
210
|
+
${cv.textInverse}:var(--vscode-editor-background);
|
|
211
|
+
${cv.border}:var(--vscode-panel-border);
|
|
212
|
+
${cv.divider}:var(--vscode-panel-border);
|
|
213
|
+
${cv.statusSuccessBg}:${TRANSITRIX_LIGHT.statusSuccessBg};
|
|
214
|
+
${cv.statusSuccessFg}:${TRANSITRIX_LIGHT.statusSuccessFg};
|
|
215
|
+
${cv.statusWarningBg}:${TRANSITRIX_LIGHT.statusWarningBg};
|
|
216
|
+
${cv.statusWarningFg}:${TRANSITRIX_LIGHT.statusWarningFg};
|
|
217
|
+
${cv.statusInfoBg}:${TRANSITRIX_LIGHT.statusInfoBg};
|
|
218
|
+
${cv.statusInfoFg}:${TRANSITRIX_LIGHT.statusInfoFg};
|
|
219
|
+
${cv.statusErrorBg}:${TRANSITRIX_LIGHT.statusErrorBg};
|
|
220
|
+
${cv.statusErrorFg}:${TRANSITRIX_LIGHT.statusErrorFg};
|
|
221
|
+
${diagramVars('light')}
|
|
222
|
+
}
|
|
223
|
+
body[data-theme="vscode-adaptive"].vscode-dark{
|
|
224
|
+
${cv.statusSuccessBg}:${TRANSITRIX_DARK.statusSuccessBg};
|
|
225
|
+
${cv.statusSuccessFg}:${TRANSITRIX_DARK.statusSuccessFg};
|
|
226
|
+
${cv.statusWarningBg}:${TRANSITRIX_DARK.statusWarningBg};
|
|
227
|
+
${cv.statusWarningFg}:${TRANSITRIX_DARK.statusWarningFg};
|
|
228
|
+
${cv.statusInfoBg}:${TRANSITRIX_DARK.statusInfoBg};
|
|
229
|
+
${cv.statusInfoFg}:${TRANSITRIX_DARK.statusInfoFg};
|
|
230
|
+
${cv.statusErrorBg}:${TRANSITRIX_DARK.statusErrorBg};
|
|
231
|
+
${cv.statusErrorFg}:${TRANSITRIX_DARK.statusErrorFg};
|
|
232
|
+
${diagramVars('dark')}
|
|
233
|
+
}
|
|
234
|
+
body[data-theme="vscode-adaptive"].vscode-high-contrast{${diagramVars('hc')}}
|
|
235
|
+
${shell}
|
|
236
|
+
${classes}`;
|
|
237
|
+
}
|