chore: import upstream snapshot with attribution
regression / regression-shards (style-16-prod style-9-prod style-17-prod iframe-render-compat variables-prod mp4-h265-sdr, shard-4) (push) Has been cancelled
regression / regression-shards (style-4-prod style-11-prod style-2-prod animejs-adapter typegpu-adapter parallel-capture-regression, shard-5) (push) Has been cancelled
regression / regression-shards (style-7-prod style-8-prod style-10-prod css-spinner-render-compat webm-transparency mp4-h264-sdr webm-vp9, shard-3) (push) Has been cancelled
regression / regression-shards (sub-composition-video style-18-prod raf-ball-render-compat font-variant-numeric sub-comp-t0 sub-comp-id-selector, shard-7) (push) Has been cancelled
Windows render verification / Detect changes (push) Has been cancelled
Windows render verification / Preflight (lint + format) (push) Has been cancelled
Windows render verification / Render on windows-latest (push) Has been cancelled
Windows render verification / Tests on windows-latest (push) Has been cancelled
CI / Detect changes (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Fallow audit (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Producer: integration tests (push) Has been cancelled
CI / Producer: unit tests (push) Has been cancelled
CI / File size check (push) Has been cancelled
CI / Test: skills (push) Has been cancelled
CI / Skills: manifest in sync (push) Has been cancelled
CI / CLI: npx shim (macos-latest) (push) Has been cancelled
CI / CLI: npx shim (ubuntu-latest) (push) Has been cancelled
CI / CLI: npx shim (windows-latest) (push) Has been cancelled
CI / SDK: unit + contract + smoke (push) Has been cancelled
CI / Test: runtime contract (push) Has been cancelled
CI / Studio: load smoke (push) Has been cancelled
CI / Smoke: global install (push) Has been cancelled
CI / CLI smoke (required) (push) Has been cancelled
CI / Semantic PR title (push) Has been cancelled
Player perf / Detect changes (push) Has been cancelled
Player perf / Preflight (lint + format) (push) Has been cancelled
Player perf / player-perf (push) Has been cancelled
Player perf / Perf: drift (push) Has been cancelled
Player perf / Perf: fps (push) Has been cancelled
Player perf / Perf: parity (push) Has been cancelled
Player perf / Perf: scrub (push) Has been cancelled
Player perf / Perf: load (push) Has been cancelled
preview-regression / Detect changes (push) Has been cancelled
preview-regression / Preflight (lint + format) (push) Has been cancelled
preview-regression / Preview parity (push) Has been cancelled
preview-regression / preview-regression (push) Has been cancelled
regression / regression (push) Has been cancelled
regression / Detect changes (push) Has been cancelled
regression / Preflight (lint + format) (push) Has been cancelled
regression / regression-shards (hdr-regression style-5-prod style-3-prod mov-prores, shard-1) (push) Has been cancelled
regression / regression-shards (overlay-montage-prod style-12-prod chat missing-host-comp-id png-sequence portrait-edge-bleed, shard-6) (push) Has been cancelled
regression / regression-shards (style-13-prod style-6-prod vignelli-stacking gsap-letters-render-compat audio-mux-parity, shard-8) (push) Has been cancelled
regression / regression-shards (style-15-prod hdr-hlg-regression style-1-prod many-cuts vfr-screen-recording render-symlinked-assets, shard-2) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Docs / Validate docs (push) Has been cancelled
Sync skills to ClawHub / Publish changed skills (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 12:58:35 +08:00
commit 85453da49f
4031 changed files with 710987 additions and 0 deletions
@@ -0,0 +1,42 @@
# VS Code Theme Visualizer Design Notes
## Intent
This POC should feel like a real VS Code tutorial capture, not a generic code window. The purpose is to prove that HyperFrames can render code-writing scenes with faithful product context and theme-aware polish.
## Visual Identity
The visual identity is sourced from official VS Code built-in theme JSON files from `microsoft/vscode/extensions/theme-defaults/themes`. Do not invent palette values for the workbench. Colors should flow through the generated theme registry and CSS variables.
## Theme Set
- Light 2026
- Dark 2026
- Dark+
- Dark Modern
- Light+
- Light Modern
- Visual Studio Dark
- Visual Studio Light
- Default High Contrast
- Default High Contrast Light
## Typography
- Workbench UI: `Inter`, then system UI fallbacks.
- Code and terminal: `Menlo`, `Monaco`, `Consolas`, then monospace fallbacks.
- Keep letter spacing at `0`.
## Layout Rules
- Recreate the VS Code workbench proportions: activity bar, explorer sidebar, editor tabs, editor gutter, status bar, and optional terminal panel.
- Use official theme colors for editor, sidebar, tabs, activity bar, panel, terminal, and status bar surfaces.
- Keep the composition full-frame at 1920x1080.
- Cards are allowed only for the theme selector strip because they are repeated selectable items.
- Do not use decorative gradients, glows, or synthetic color accents outside theme-derived colors.
## Motion Rules
- Theme changes should feel like command-palette theme switching: quick, crisp, and functional.
- Code typing is the hero action. UI chrome should support it without becoming theatrical.
- All animation must be deterministic and GSAP-controlled.
Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

@@ -0,0 +1,390 @@
(() => {
const codeLines = [
[{ text: "# A small functional toolkit", token: "comment" }],
[
{ text: "def", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "pluck_deep", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "key", token: "parameter" },
{ text: "):", token: "punctuation" },
],
[
{ text: " ", token: "plain" },
{ text: "return", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "lambda", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "obj", token: "parameter" },
{ text: ": ", token: "punctuation" },
{ text: "reduce", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "lambda", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "acc", token: "parameter" },
{ text: ", ", token: "punctuation" },
{ text: "k", token: "parameter" },
{ text: ": ", token: "punctuation" },
{ text: "acc", token: "variable" },
{ text: "[", token: "punctuation" },
{ text: "k", token: "variable" },
{ text: "]", token: "punctuation" },
{ text: ", ", token: "punctuation" },
{ text: "key", token: "variable" },
{ text: ".split", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "'.'", token: "string" },
{ text: "), ", token: "punctuation" },
{ text: "obj", token: "variable" },
{ text: ")", token: "punctuation" },
],
[],
[
{ text: "def", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "compose", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "*", token: "operator" },
{ text: "fns", token: "parameter" },
{ text: "):", token: "punctuation" },
],
[
{ text: " ", token: "plain" },
{ text: "return", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "lambda", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "res", token: "parameter" },
{ text: ": ", token: "punctuation" },
{ text: "reduce", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "lambda", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "acc", token: "parameter" },
{ text: ", ", token: "punctuation" },
{ text: "fn", token: "parameter" },
{ text: ": ", token: "punctuation" },
{ text: "fn", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "acc", token: "variable" },
{ text: "), ", token: "punctuation" },
{ text: "fns", token: "variable" },
{ text: ", ", token: "punctuation" },
{ text: "res", token: "variable" },
{ text: ")", token: "punctuation" },
],
[],
[
{ text: "def", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "unfold", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "f", token: "parameter" },
{ text: ", ", token: "punctuation" },
{ text: "seed", token: "parameter" },
{ text: "):", token: "punctuation" },
],
[
{ text: " ", token: "plain" },
{ text: '"""Build a list by repeatedly applying f to a seed."""', token: "string" },
],
[
{ text: " acc", token: "variable" },
{ text: " = ", token: "operator" },
{ text: "[]", token: "punctuation" },
],
[
{ text: " while", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "True", token: "className" },
{ text: ":", token: "punctuation" },
],
[
{ text: " result", token: "variable" },
{ text: " = ", token: "operator" },
{ text: "f", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "seed", token: "variable" },
{ text: ")", token: "punctuation" },
],
[
{ text: " if", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "result", token: "variable" },
{ text: " is ", token: "keyword" },
{ text: "None", token: "className" },
{ text: ":", token: "punctuation" },
],
[
{ text: " return", token: "keyword" },
{ text: " ", token: "plain" },
{ text: "acc", token: "variable" },
],
[
{ text: " acc", token: "variable" },
{ text: ".append", token: "function" },
{ text: "(", token: "punctuation" },
{ text: "result", token: "variable" },
{ text: "[", token: "punctuation" },
{ text: "0", token: "number" },
{ text: "])", token: "punctuation" },
],
[
{ text: " seed", token: "variable" },
{ text: " = ", token: "operator" },
{ text: "result", token: "variable" },
{ text: "[", token: "punctuation" },
{ text: "1", token: "number" },
{ text: "]", token: "punctuation" },
],
[],
];
const fallback = {
"activityBar.background": "#181818",
"activityBar.foreground": "#d7d7d7",
"activityBar.inactiveForeground": "#868686",
"activityBar.activeBorder": "#0078d4",
"sideBar.background": "#181818",
"sideBar.foreground": "#cccccc",
"sideBar.border": "#2b2b2b",
"tab.activeBackground": "#1f1f1f",
"tab.activeForeground": "#ffffff",
"tab.inactiveBackground": "#181818",
"tab.inactiveForeground": "#9d9d9d",
"tab.border": "#2b2b2b",
"editor.background": "#1f1f1f",
"editor.foreground": "#cccccc",
"editor.lineHighlightBackground": "#ffffff0a",
"editorLineNumber.foreground": "#6e7681",
"editorLineNumber.activeForeground": "#cccccc",
"panel.background": "#181818",
"panel.border": "#2b2b2b",
"statusBar.background": "#181818",
"statusBar.foreground": "#cccccc",
"statusBar.border": "#2b2b2b",
"titleBar.activeBackground": "#181818",
"titleBar.activeForeground": "#cccccc",
};
function color(theme, key) {
return theme.colors[key] || fallback[key] || theme.colors.foreground || "#cccccc";
}
function solarizedGrey(theme) {
return theme.colors["tab.inactiveForeground"] || theme.colors["editor.foreground"] || "#586E75";
}
function setVar(root, name, value) {
root.style.setProperty(name, value);
}
function applyTheme(root, theme) {
const solarizedUiGrey = theme.id === "solarized-light" ? solarizedGrey(theme) : null;
setVar(root, "--activity-bg", color(theme, "activityBar.background"));
setVar(root, "--activity-fg", solarizedUiGrey || color(theme, "activityBar.foreground"));
setVar(
root,
"--activity-muted",
solarizedUiGrey || color(theme, "activityBar.inactiveForeground"),
);
setVar(root, "--activity-active", color(theme, "activityBar.activeBorder"));
setVar(root, "--sidebar-bg", color(theme, "sideBar.background"));
setVar(root, "--sidebar-fg", solarizedUiGrey || color(theme, "sideBar.foreground"));
setVar(root, "--sidebar-border", color(theme, "sideBar.border"));
setVar(root, "--tab-bg", color(theme, "tab.inactiveBackground"));
setVar(root, "--tab-active-bg", color(theme, "tab.activeBackground"));
setVar(root, "--tab-active-fg", solarizedUiGrey || color(theme, "tab.activeForeground"));
setVar(root, "--tab-inactive-fg", solarizedUiGrey || color(theme, "tab.inactiveForeground"));
setVar(root, "--tab-border", color(theme, "tab.border"));
setVar(root, "--editor-bg", color(theme, "editor.background"));
setVar(root, "--editor-fg", color(theme, "editor.foreground"));
setVar(root, "--editor-line", color(theme, "editor.lineHighlightBackground"));
setVar(root, "--gutter-fg", color(theme, "editorLineNumber.foreground"));
setVar(root, "--gutter-active-fg", color(theme, "editorLineNumber.activeForeground"));
setVar(root, "--panel-bg", color(theme, "panel.background"));
setVar(root, "--panel-border", color(theme, "panel.border"));
setVar(root, "--status-bg", color(theme, "statusBar.background"));
setVar(root, "--status-fg", color(theme, "statusBar.foreground"));
setVar(root, "--status-border", color(theme, "statusBar.border"));
setVar(root, "--status-remote-bg", color(theme, "statusBarItem.remoteBackground"));
setVar(
root,
"--status-remote-fg",
solarizedUiGrey || color(theme, "statusBarItem.remoteForeground"),
);
setVar(root, "--title-bg", color(theme, "titleBar.activeBackground"));
setVar(root, "--title-fg", solarizedUiGrey || color(theme, "titleBar.activeForeground"));
setVar(root, "--token-comment", theme.tokens.comment);
setVar(root, "--token-keyword", theme.tokens.keyword);
setVar(root, "--token-function", theme.tokens.function);
setVar(root, "--token-string", theme.tokens.string);
setVar(root, "--token-number", theme.tokens.number);
setVar(root, "--token-variable", theme.tokens.variable);
setVar(root, "--token-parameter", theme.tokens.parameter);
setVar(root, "--token-operator", theme.tokens.operator);
setVar(root, "--token-punctuation", theme.tokens.punctuation);
setVar(root, "--token-class-name", theme.tokens.className);
}
function renderCode(root) {
const code = root.querySelector(".code");
codeLines.forEach((segments, index) => {
const line = document.createElement("div");
line.className = "line";
line.dataset.lineIndex = String(index);
const lineNumber = document.createElement("span");
lineNumber.className = "line-number";
lineNumber.textContent = String(index + 1);
line.appendChild(lineNumber);
const lineCode = document.createElement("span");
lineCode.className = "line-code";
segments.forEach((segment) => {
[...segment.text].forEach((char) => {
const span = document.createElement("span");
span.className =
segment.token === "plain"
? "char"
: "char tok-" + segment.token.replace(/[A-Z]/g, (match) => "-" + match.toLowerCase());
span.dataset.lineIndex = String(index);
span.textContent = char;
lineCode.appendChild(span);
});
});
line.appendChild(lineCode);
code.appendChild(line);
});
const caret = document.createElement("span");
caret.className = "caret";
root.querySelector(".editor").appendChild(caret);
}
function caretPointForElement(editor, el) {
const editorBox = editor.getBoundingClientRect();
const charBox = el.getBoundingClientRect();
return {
x: charBox.right - editorBox.left + 2,
y: charBox.top - editorBox.top + 3,
};
}
function caretPointForLineStart(editor, line) {
const editorBox = editor.getBoundingClientRect();
const lineBox = line.getBoundingClientRect();
const codeBox = line.querySelector(".line-code").getBoundingClientRect();
return {
x: codeBox.left - editorBox.left,
y: lineBox.top - editorBox.top + 3,
};
}
function lineHighlightY(editor, line) {
const editorBox = editor.getBoundingClientRect();
const lineBox = line.getBoundingClientRect();
return lineBox.top - editorBox.top;
}
function buildTimeline(root, compositionId) {
const tl = gsap.timeline({ paused: true });
const editor = root.querySelector(".editor");
const caret = root.querySelector(".caret");
const activeLine = root.querySelector(".active-line");
const lineEls = gsap.utils.toArray(root.querySelectorAll(".line"));
const lineStartTimes = [];
const charSchedule = [];
let cursorTime = 0.95;
lineEls.forEach((line, lineIndex) => {
const lineChars = gsap.utils.toArray(line.querySelectorAll(".char"));
lineStartTimes[lineIndex] = cursorTime;
lineChars.forEach((char, charIndex) => {
charSchedule.push({ char, time: cursorTime + charIndex * 0.012 });
});
cursorTime += Math.max(lineChars.length * 0.012, 0.08) + 0.045;
});
gsap.set(activeLine, { y: lineHighlightY(editor, lineEls[0]) });
gsap.set(caret, caretPointForLineStart(editor, lineEls[0]));
tl.from(
root.querySelector(".header"),
{ y: 24, opacity: 0, duration: 0.45, ease: "power3.out" },
0,
);
tl.from(
root.querySelector(".workbench"),
{ y: 42, opacity: 0, scale: 0.986, duration: 0.58, ease: "power3.out" },
0.1,
);
tl.from(activeLine, { opacity: 0, duration: 0.22, ease: "power2.out" }, 0.74);
lineStartTimes.forEach((time, lineIndex) => {
const line = lineEls[lineIndex];
tl.set(activeLine, { y: lineHighlightY(editor, line) }, time);
tl.set(caret, caretPointForLineStart(editor, line), time);
tl.call(
() => {
lineEls.forEach((item) => item.classList.toggle("is-active", item === line));
},
[],
time,
);
});
charSchedule.forEach(({ char, time }) => {
tl.set(char, { opacity: 1 }, time);
tl.set(caret, caretPointForElement(editor, char), time + 0.002);
});
tl.to(
root.querySelector(".caret"),
{ opacity: 0, duration: 0.34, repeat: 25, yoyo: true, ease: "steps(1)" },
0.95,
);
tl.from(
root.querySelector(".terminal"),
{ y: 140, opacity: 0, duration: 0.56, ease: "power3.out" },
7.55,
);
tl.from(
root.querySelector(".terminal-body").children,
{ opacity: 0, y: 8, duration: 0.24, stagger: 0.16, ease: "power2.out" },
8.05,
);
tl.to(
root.querySelector(".workbench"),
{ rotateY: -10.5, z: 74, duration: 0.72, ease: "power2.inOut" },
9.35,
);
tl.to(
root.querySelector(".workbench"),
{ rotateY: 0, z: 0, duration: 0.62, ease: "power2.inOut" },
10.08,
);
window.__timelines = window.__timelines || {};
window.__timelines[compositionId] = tl;
const previewTime = new URLSearchParams(window.location.search).get("t");
if (previewTime !== null) {
tl.time(Number(previewTime));
}
}
window.createVSCodeThemeComposition = (compositionId, themeOrId) => {
const root =
document.querySelector('[data-composition-id="' + compositionId + '"] .vscode-theme-scene') ||
document.querySelector('.vscode-theme-scene[data-composition-id="' + compositionId + '"]') ||
document.querySelector('[data-composition-id="' + compositionId + '"]');
const theme =
typeof themeOrId === "string"
? window.VSCODE_THEME_REGISTRY.find((item) => item.id === themeOrId)
: themeOrId;
if (!root || !theme) return;
root.querySelector(".theme-label").textContent = theme.label;
root.querySelector(".theme-source").textContent = theme.sourceFile;
applyTheme(root, theme);
renderCode(root);
buildTimeline(root, compositionId);
};
})();
@@ -0,0 +1,483 @@
* {
box-sizing: border-box;
letter-spacing: 0;
}
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
font-family:
Inter,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
}
.vscode-theme-scene {
--activity-bg: #181818;
--activity-fg: #d7d7d7;
--activity-muted: #868686;
--activity-active: #0078d4;
--sidebar-bg: #181818;
--sidebar-fg: #cccccc;
--sidebar-border: #2b2b2b;
--tab-bg: #181818;
--tab-active-bg: #1f1f1f;
--tab-active-fg: #ffffff;
--tab-inactive-fg: #9d9d9d;
--tab-border: #2b2b2b;
--editor-bg: #1f1f1f;
--editor-fg: #cccccc;
--editor-line: rgba(255, 255, 255, 0.04);
--gutter-fg: #6e7681;
--gutter-active-fg: #cccccc;
--panel-bg: #181818;
--panel-border: #2b2b2b;
--status-bg: #181818;
--status-fg: #cccccc;
--status-border: #2b2b2b;
--title-bg: #181818;
--title-fg: #cccccc;
--token-comment: #6a9955;
--token-keyword: #c586c0;
--token-function: #dcdcaa;
--token-string: #ce9178;
--token-number: #b5cea8;
--token-variable: #9cdcfe;
--token-parameter: #9cdcfe;
--token-operator: #d4d4d4;
--token-punctuation: #d4d4d4;
--token-class-name: #4ec9b0;
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background:
linear-gradient(180deg, rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 0.32)),
url("../assets/background.jpeg") center / cover no-repeat;
color: var(--editor-fg);
}
.scene-content {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
padding: 54px 70px 92px;
display: flex;
flex-direction: column;
gap: 16px;
perspective: 2200px;
perspective-origin: 56% 52%;
}
.header {
display: flex;
align-items: end;
justify-content: space-between;
min-height: 66px;
text-shadow:
0 2px 12px rgba(0, 0, 0, 0.42),
0 14px 34px rgba(0, 0, 0, 0.32);
}
.kicker {
margin: 0 0 7px;
color: var(--gutter-fg);
font-size: 15px;
font-weight: 650;
text-transform: uppercase;
text-shadow:
0 2px 8px rgba(0, 0, 0, 0.48),
0 10px 26px rgba(0, 0, 0, 0.36);
}
.title {
margin: 0;
color: var(--editor-fg);
font-size: 44px;
line-height: 1;
font-weight: 760;
}
.source-note {
width: 510px;
color: var(--gutter-fg);
font-size: 16px;
line-height: 1.35;
text-align: right;
text-shadow:
0 2px 10px rgba(0, 0, 0, 0.46),
0 12px 30px rgba(0, 0, 0, 0.34);
}
.workbench {
height: 824px;
display: grid;
grid-template-columns: 54px 290px 1fr;
grid-template-rows: 36px 1fr 26px;
overflow: hidden;
border: 1px solid var(--sidebar-border);
border-radius: 8px;
background: var(--editor-bg);
box-shadow: 0 34px 90px rgba(0, 0, 0, 0.42);
transform: translateZ(0);
transform-origin: 82% 50%;
transform-style: preserve-3d;
will-change: transform;
}
.titlebar {
grid-column: 1 / -1;
display: grid;
grid-template-columns: 120px 1fr 210px;
align-items: center;
background: var(--title-bg);
color: var(--title-fg);
border-bottom: 1px solid var(--tab-border);
font-size: 12px;
}
.traffic {
display: flex;
gap: 8px;
padding-left: 18px;
}
.traffic span {
width: 12px;
height: 12px;
border-radius: 999px;
}
.traffic span:nth-child(1) {
background: #ff5f57;
}
.traffic span:nth-child(2) {
background: #ffbd2e;
}
.traffic span:nth-child(3) {
background: #28c840;
}
.window-title {
justify-self: center;
opacity: 0.84;
}
.command-center {
justify-self: end;
width: 176px;
height: 22px;
margin-right: 16px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid color-mix(in srgb, var(--title-fg), transparent 78%);
border-radius: 5px;
color: color-mix(in srgb, var(--title-fg), transparent 18%);
}
.activity {
grid-row: 2 / 3;
background: var(--activity-bg);
border-right: 1px solid var(--sidebar-border);
display: flex;
flex-direction: column;
align-items: center;
padding: 10px 0;
gap: 18px;
}
.activity-icon {
width: 28px;
height: 28px;
color: var(--activity-muted);
}
.activity-icon.active {
color: var(--activity-fg);
border-left: 2px solid var(--activity-active);
padding-left: 4px;
}
.sidebar {
grid-row: 2 / 3;
background: var(--sidebar-bg);
color: var(--sidebar-fg);
border-right: 1px solid var(--sidebar-border);
display: flex;
flex-direction: column;
min-width: 0;
}
.sidebar-title {
height: 38px;
display: flex;
align-items: center;
padding: 0 20px;
color: var(--sidebar-fg);
font-size: 11px;
text-transform: uppercase;
}
.section-title {
height: 24px;
display: flex;
align-items: center;
gap: 6px;
padding: 0 14px;
background: color-mix(in srgb, var(--sidebar-bg), var(--sidebar-fg) 5%);
border-top: 1px solid var(--sidebar-border);
border-bottom: 1px solid var(--sidebar-border);
color: var(--sidebar-fg);
font-size: 11px;
font-weight: 700;
}
.tree {
padding: 8px 0;
font-size: 13px;
line-height: 24px;
}
.tree-row {
height: 24px;
display: flex;
align-items: center;
gap: 7px;
padding: 0 10px 0 18px;
color: color-mix(in srgb, var(--sidebar-fg), transparent 8%);
white-space: nowrap;
}
.tree-row.child {
padding-left: 34px;
}
.tree-row.selected {
background: color-mix(in srgb, var(--sidebar-fg), transparent 88%);
color: var(--sidebar-fg);
}
.editor-area {
grid-row: 2 / 3;
display: grid;
grid-template-rows: 36px 30px 1fr 138px;
min-width: 0;
background: var(--editor-bg);
}
.tabs {
display: flex;
background: var(--tab-bg);
border-bottom: 1px solid var(--tab-border);
}
.tab {
width: 205px;
height: 36px;
display: flex;
align-items: center;
gap: 8px;
padding: 0 13px;
border-right: 1px solid var(--tab-border);
background: var(--tab-active-bg);
color: var(--tab-active-fg);
border-top: 2px solid var(--activity-active);
font-size: 13px;
}
.tab.inactive {
background: var(--tab-bg);
color: var(--tab-inactive-fg);
border-top-color: transparent;
}
.breadcrumbs {
display: flex;
align-items: center;
gap: 7px;
padding: 0 18px;
color: var(--gutter-fg);
border-bottom: 1px solid color-mix(in srgb, var(--tab-border), transparent 20%);
font-size: 12px;
}
.editor {
position: relative;
overflow: hidden;
background: var(--editor-bg);
color: var(--editor-fg);
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 18px;
line-height: 1.52;
}
.active-line {
position: absolute;
left: 0;
right: 0;
top: 0;
height: 28px;
background: var(--editor-line);
will-change: transform;
}
.code {
position: relative;
padding: 20px 36px 18px 0;
}
.line {
height: 28px;
display: grid;
grid-template-columns: 72px 1fr;
align-items: center;
}
.line-number {
padding-right: 18px;
color: var(--gutter-fg);
text-align: right;
user-select: none;
}
.line.is-active .line-number {
color: var(--gutter-active-fg);
}
.line-code {
white-space: pre;
}
.char {
opacity: 0;
}
.tok-comment {
color: var(--token-comment);
}
.tok-keyword {
color: var(--token-keyword);
}
.tok-function {
color: var(--token-function);
}
.tok-string {
color: var(--token-string);
}
.tok-number {
color: var(--token-number);
}
.tok-variable {
color: var(--token-variable);
}
.tok-parameter {
color: var(--token-parameter);
}
.tok-operator {
color: var(--token-operator);
}
.tok-punctuation {
color: var(--token-punctuation);
}
.tok-class-name {
color: var(--token-class-name);
}
.caret {
position: absolute;
left: 0;
top: 0;
z-index: 3;
display: block;
width: 2px;
height: 22px;
background: var(--editor-fg);
pointer-events: none;
will-change: transform, opacity;
}
.terminal {
display: grid;
grid-template-rows: 32px 1fr;
background: var(--panel-bg);
border-top: 1px solid var(--panel-border);
color: var(--editor-fg);
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 14px;
}
.panel-tabs {
display: flex;
align-items: center;
gap: 22px;
padding: 0 18px;
border-bottom: 1px solid var(--panel-border);
color: var(--gutter-fg);
font-family:
Inter,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
font-size: 12px;
text-transform: uppercase;
}
.panel-tabs .active {
color: var(--editor-fg);
border-bottom: 1px solid var(--activity-active);
height: 32px;
display: flex;
align-items: center;
}
.terminal-body {
padding: 12px 20px;
color: var(--editor-fg);
line-height: 1.8;
}
.prompt {
color: var(--token-function);
}
.statusbar {
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
background: var(--status-bg);
color: var(--status-fg);
border-top: 1px solid var(--status-border);
font-size: 12px;
}
.status-left,
.status-right {
display: flex;
align-items: center;
gap: 18px;
padding: 0 12px;
}
.remote {
align-self: stretch;
display: flex;
align-items: center;
padding: 0 12px;
margin-left: -12px;
background: var(--status-remote-bg, var(--activity-active));
color: var(--status-remote-fg, #ffffff);
}
svg {
display: block;
}
@@ -0,0 +1,478 @@
// Generated by scripts/build-theme-registry.mjs from official VS Code theme JSON.
window.VSCODE_THEME_REGISTRY = [
{
id: "light-2026",
label: "Light 2026",
sourceFile: "2026-light.json",
uiTheme: "vs",
colors: {
"activityBar.activeBorder": "#000000",
"activityBar.background": "#FAFAFD",
"activityBar.border": "#F0F1F2FF",
"activityBar.foreground": "#202020",
"activityBar.inactiveForeground": "#606060",
"editor.background": "#FFFFFF",
"editor.foreground": "#202020",
"editor.lineHighlightBackground": "#EAEAEA40",
"editor.selectionBackground": "#0069CC40",
"editorGroup.border": "#E5E5E5",
"editorGroupHeader.tabsBackground": "#FAFAFD",
"editorGroupHeader.tabsBorder": "#F0F1F2FF",
"editorLineNumber.activeForeground": "#202020",
"editorLineNumber.foreground": "#606060",
foreground: "#202020",
"icon.foreground": "#606060",
"panel.background": "#FAFAFD",
"panel.border": "#F0F1F2FF",
"sideBar.background": "#FAFAFD",
"sideBar.border": "#F0F1F2FF",
"sideBar.foreground": "#202020",
"sideBarSectionHeader.background": "#FAFAFD",
"sideBarSectionHeader.border": "#F0F1F2FF",
"sideBarSectionHeader.foreground": "#202020",
"sideBarTitle.foreground": "#202020",
"statusBar.background": "#FAFAFD",
"statusBar.border": "#F0F1F2FF",
"statusBar.foreground": "#606060",
"statusBarItem.remoteBackground": "#005FB8",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#FFFFFF",
"tab.activeBorder": "#FFFFFF",
"tab.activeBorderTop": "#000000",
"tab.activeForeground": "#202020",
"tab.border": "#F0F1F2FF",
"tab.inactiveBackground": "#FAFAFD",
"tab.inactiveForeground": "#606060",
"terminal.foreground": "#3B3B3B",
"terminalCursor.foreground": "#202020",
"titleBar.activeBackground": "#FAFAFD",
"titleBar.activeForeground": "#606060",
},
tokens: {
comment: "#6e7781",
keyword: "#1f2328",
function: "#0550ae",
string: "#0a3069",
number: "#0550ae",
variable: "#1f2328",
parameter: "#953800",
operator: "#cf222e",
punctuation: "#953800",
className: "#116329",
},
},
{
id: "dark-2026",
label: "Dark 2026",
sourceFile: "2026-dark.json",
uiTheme: "vs-dark",
colors: {
"activityBar.activeBorder": "#bfbfbf",
"activityBar.background": "#191A1B",
"activityBar.border": "#2A2B2CFF",
"activityBar.foreground": "#bfbfbf",
"activityBar.inactiveForeground": "#8C8C8C",
"editor.background": "#121314",
"editor.foreground": "#BBBEBF",
"editor.lineHighlightBackground": "#242526",
"editor.selectionBackground": "#276782dd",
"editorGroup.border": "#FFFFFF17",
"editorGroupHeader.tabsBackground": "#191A1B",
"editorGroupHeader.tabsBorder": "#2A2B2CFF",
"editorLineNumber.activeForeground": "#BBBEBF",
"editorLineNumber.foreground": "#858889",
foreground: "#bfbfbf",
"icon.foreground": "#8C8C8C",
"panel.background": "#191A1B",
"panel.border": "#2A2B2CFF",
"sideBar.background": "#191A1B",
"sideBar.border": "#2A2B2CFF",
"sideBar.foreground": "#bfbfbf",
"sideBarSectionHeader.background": "#191A1B",
"sideBarSectionHeader.border": "#2A2B2CFF",
"sideBarSectionHeader.foreground": "#bfbfbf",
"sideBarTitle.foreground": "#bfbfbf",
"statusBar.background": "#191A1B",
"statusBar.border": "#2A2B2CFF",
"statusBar.foreground": "#8C8C8C",
"statusBarItem.remoteBackground": "#0078D4",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#121314",
"tab.activeBorder": "#121314",
"tab.activeBorderTop": "#3994BC",
"tab.activeForeground": "#bfbfbf",
"tab.border": "#2A2B2CFF",
"tab.inactiveBackground": "#191A1B",
"tab.inactiveForeground": "#8C8C8C",
"terminal.background": "#191A1B",
"terminal.foreground": "#CCCCCC",
"terminalCursor.foreground": "#bfbfbf",
"titleBar.activeBackground": "#191A1B",
"titleBar.activeForeground": "#8C8C8C",
},
tokens: {
comment: "#8b949e",
keyword: "#c9d1d9",
function: "#79c0ff",
string: "#a5d6ff",
number: "#79c0ff",
variable: "#c9d1d9",
parameter: "#ffa657",
operator: "#ff7b72",
punctuation: "#ffa657",
className: "#7ee787",
},
},
{
id: "dark-plus",
label: "Dark+",
sourceFile: "dark_plus.json",
uiTheme: "vs-dark",
colors: {
"editor.background": "#1E1E1E",
"editor.foreground": "#D4D4D4",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#ccc3",
"sideBarTitle.foreground": "#BBBBBB",
"statusBarItem.remoteBackground": "#16825D",
"statusBarItem.remoteForeground": "#FFF",
},
tokens: {
comment: "#6A9955",
keyword: "#d7ba7d",
function: "#DCDCAA",
string: "#d16969",
number: "#b5cea8",
variable: "#4FC1FF",
parameter: "#9CDCFE",
operator: "#d7ba7d",
punctuation: "#CE9178",
className: "#4EC9B0",
},
},
{
id: "dark-modern",
label: "Dark Modern",
sourceFile: "dark_modern.json",
uiTheme: "vs-dark",
colors: {
"activityBar.activeBorder": "#0078D4",
"activityBar.background": "#181818",
"activityBar.border": "#2B2B2B",
"activityBar.foreground": "#D7D7D7",
"activityBar.inactiveForeground": "#868686",
"editor.background": "#1F1F1F",
"editor.foreground": "#CCCCCC",
"editorGroup.border": "#FFFFFF17",
"editorGroupHeader.tabsBackground": "#181818",
"editorGroupHeader.tabsBorder": "#2B2B2B",
"editorLineNumber.activeForeground": "#CCCCCC",
"editorLineNumber.foreground": "#6E7681",
foreground: "#CCCCCC",
"icon.foreground": "#CCCCCC",
"panel.background": "#181818",
"panel.border": "#2B2B2B",
"sideBar.background": "#181818",
"sideBar.border": "#2B2B2B",
"sideBar.foreground": "#CCCCCC",
"sideBarSectionHeader.background": "#181818",
"sideBarSectionHeader.border": "#2B2B2B",
"sideBarSectionHeader.foreground": "#CCCCCC",
"sideBarTitle.foreground": "#CCCCCC",
"statusBar.background": "#181818",
"statusBar.border": "#2B2B2B",
"statusBar.foreground": "#CCCCCC",
"statusBarItem.remoteBackground": "#0078D4",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#1F1F1F",
"tab.activeBorder": "#1F1F1F",
"tab.activeBorderTop": "#0078D4",
"tab.activeForeground": "#FFFFFF",
"tab.border": "#2B2B2B",
"tab.inactiveBackground": "#181818",
"tab.inactiveForeground": "#9D9D9D",
"terminal.foreground": "#CCCCCC",
"titleBar.activeBackground": "#181818",
"titleBar.activeForeground": "#CCCCCC",
},
tokens: {
comment: "#6A9955",
keyword: "#d7ba7d",
function: "#DCDCAA",
string: "#d16969",
number: "#b5cea8",
variable: "#4FC1FF",
parameter: "#9CDCFE",
operator: "#d7ba7d",
punctuation: "#CE9178",
className: "#4EC9B0",
},
},
{
id: "light-plus",
label: "Light+",
sourceFile: "light_plus.json",
uiTheme: "vs",
colors: {
"editor.background": "#FFFFFF",
"editor.foreground": "#000000",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#61616130",
"sideBarTitle.foreground": "#6F6F6F",
"statusBarItem.remoteBackground": "#16825D",
"statusBarItem.remoteForeground": "#FFF",
},
tokens: {
comment: "#008000",
keyword: "#EE0000",
function: "#795E26",
string: "#811f3f",
number: "#098658",
variable: "#0070C1",
parameter: "#001080",
operator: "#EE0000",
punctuation: "#d16969",
className: "#267f99",
},
},
{
id: "light-modern",
label: "Light Modern",
sourceFile: "light_modern.json",
uiTheme: "vs",
colors: {
"activityBar.activeBorder": "#005FB8",
"activityBar.background": "#F8F8F8",
"activityBar.border": "#E5E5E5",
"activityBar.foreground": "#1F1F1F",
"activityBar.inactiveForeground": "#616161",
"editor.background": "#FFFFFF",
"editor.foreground": "#3B3B3B",
"editorGroup.border": "#E5E5E5",
"editorGroupHeader.tabsBackground": "#F8F8F8",
"editorGroupHeader.tabsBorder": "#E5E5E5",
"editorLineNumber.activeForeground": "#171184",
"editorLineNumber.foreground": "#6E7681",
foreground: "#3B3B3B",
"icon.foreground": "#3B3B3B",
"panel.background": "#F8F8F8",
"panel.border": "#E5E5E5",
"sideBar.background": "#F8F8F8",
"sideBar.border": "#E5E5E5",
"sideBar.foreground": "#3B3B3B",
"sideBarSectionHeader.background": "#F8F8F8",
"sideBarSectionHeader.border": "#E5E5E5",
"sideBarSectionHeader.foreground": "#3B3B3B",
"sideBarTitle.foreground": "#3B3B3B",
"statusBar.background": "#F8F8F8",
"statusBar.border": "#E5E5E5",
"statusBar.foreground": "#3B3B3B",
"statusBarItem.remoteBackground": "#005FB8",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#FFFFFF",
"tab.activeBorder": "#F8F8F8",
"tab.activeBorderTop": "#005FB8",
"tab.activeForeground": "#3B3B3B",
"tab.border": "#E5E5E5",
"tab.inactiveBackground": "#F8F8F8",
"tab.inactiveForeground": "#868686",
"terminal.foreground": "#3B3B3B",
"terminalCursor.foreground": "#005FB8",
"titleBar.activeBackground": "#F8F8F8",
"titleBar.activeForeground": "#1E1E1E",
},
tokens: {
comment: "#008000",
keyword: "#EE0000",
function: "#795E26",
string: "#811f3f",
number: "#098658",
variable: "#0070C1",
parameter: "#001080",
operator: "#EE0000",
punctuation: "#d16969",
className: "#267f99",
},
},
{
id: "visual-studio-dark",
label: "Visual Studio Dark",
sourceFile: "dark_vs.json",
uiTheme: "vs-dark",
colors: {
"editor.background": "#1E1E1E",
"editor.foreground": "#D4D4D4",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#ccc3",
"sideBarTitle.foreground": "#BBBBBB",
"statusBarItem.remoteBackground": "#16825D",
"statusBarItem.remoteForeground": "#FFF",
},
tokens: {
comment: "#6A9955",
keyword: "#d4d4d4",
function: "#9cdcfe",
string: "#d16969",
number: "#b5cea8",
variable: "#569cd6",
parameter: "#9CDCFE",
operator: "#569cd6",
punctuation: "#569cd6",
className: "#9cdcfe",
},
},
{
id: "visual-studio-light",
label: "Visual Studio Light",
sourceFile: "light_vs.json",
uiTheme: "vs",
colors: {
"editor.background": "#FFFFFF",
"editor.foreground": "#000000",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#61616130",
"sideBarTitle.foreground": "#6F6F6F",
"statusBarItem.remoteBackground": "#16825D",
"statusBarItem.remoteForeground": "#FFF",
},
tokens: {
comment: "#008000",
keyword: "#000000",
function: "#0451a5",
string: "#811f3f",
number: "#098658",
variable: "#0000ff",
parameter: "#9CDCFE",
operator: "#0000ff",
punctuation: "#800000",
className: "#0451a5",
},
},
{
id: "high-contrast",
label: "Default High Contrast",
sourceFile: "hc_black.json",
uiTheme: "vs-dark",
colors: {
"editor.background": "#000000",
"editor.foreground": "#FFFFFF",
"editor.selectionBackground": "#FFFFFF",
"sideBarTitle.foreground": "#FFFFFF",
"statusBarItem.remoteBackground": "#00000000",
},
tokens: {
comment: "#7ca668",
keyword: "#C586C0",
function: "#DCDCAA",
string: "#d16969",
number: "#b5cea8",
variable: "#9CDCFE",
parameter: "#9CDCFE",
operator: "#569cd6",
punctuation: "#4EC9B0",
className: "#4EC9B0",
},
},
{
id: "high-contrast-light",
label: "Default High Contrast Light",
sourceFile: "hc_light.json",
uiTheme: "vs",
colors: {
"statusBarItem.remoteBackground": "#FFFFFF",
"statusBarItem.remoteForeground": "#000000",
},
tokens: {
comment: "#515151",
keyword: "#EE0000",
function: "#5e2cbc",
string: "#811F3F",
number: "#096d48",
variable: "#02715D",
parameter: "#001080",
operator: "#EE0000",
punctuation: "#D16969",
className: "#185E73",
},
},
{
id: "solarized-light",
label: "Solarized Light",
sourceFile: "solarized-light-color-theme.json",
uiTheme: "vs",
colors: {
"activityBar.background": "#DDD6C1",
"activityBar.foreground": "#584c27",
"editor.background": "#FDF6E3",
"editor.foreground": "#657B83",
"editor.lineHighlightBackground": "#EEE8D5",
"editor.selectionBackground": "#EEE8D5",
"editorGroup.border": "#DDD6C1",
"editorGroupHeader.tabsBackground": "#D9D2C2",
"editorLineNumber.activeForeground": "#567983",
"panel.border": "#DDD6C1",
"sideBar.background": "#EEE8D5",
"sideBarTitle.foreground": "#586E75",
"statusBar.background": "#EEE8D5",
"statusBar.foreground": "#586E75",
"statusBarItem.remoteBackground": "#AC9D57",
"tab.activeBackground": "#FDF6E3",
"tab.border": "#DDD6C1",
"tab.inactiveBackground": "#D3CBB7",
"tab.inactiveForeground": "#586E75",
"terminal.background": "#FDF6E3",
"titleBar.activeBackground": "#EEE8D5",
},
tokens: {
comment: "#93A1A1",
keyword: "#CB4B16",
function: "#268BD2",
string: "#DC322F",
number: "#D33682",
variable: "#268BD2",
parameter: "#9CDCFE",
operator: "#859900",
punctuation: "#DC322F",
className: "#CB4B16",
},
},
{
id: "monokai",
label: "Monokai",
sourceFile: "monokai-color-theme.json",
uiTheme: "vs-dark",
colors: {
"activityBar.background": "#272822",
"activityBar.foreground": "#f8f8f2",
"editor.background": "#272822",
"editor.foreground": "#f8f8f2",
"editor.lineHighlightBackground": "#3e3d32",
"editor.selectionBackground": "#878b9180",
"editorGroup.border": "#34352f",
"editorGroupHeader.tabsBackground": "#1e1f1c",
"editorLineNumber.activeForeground": "#c2c2bf",
"editorLineNumber.foreground": "#90908a",
"panel.border": "#414339",
"sideBar.background": "#1e1f1c",
"sideBarSectionHeader.background": "#272822",
"statusBar.background": "#414339",
"statusBarItem.remoteBackground": "#AC6218",
"tab.border": "#1e1f1c",
"tab.inactiveBackground": "#34352f",
"tab.inactiveForeground": "#ccccc7",
"titleBar.activeBackground": "#1e1f1c",
},
tokens: {
comment: "#88846f",
keyword: "#66D9EF",
function: "#66D9EF",
string: "#AE81FF",
number: "#AE81FFA0",
variable: "#FD971F",
parameter: "#FD971F",
operator: "#F92672",
punctuation: "#A6E22E",
className: "#66D9EF",
},
},
];
@@ -0,0 +1,664 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "2026 Dark",
"include": "./dark_modern.json",
"type": "dark",
"colors": {
"foreground": "#bfbfbf",
"disabledForeground": "#555555",
"errorForeground": "#f48771",
"descriptionForeground": "#8C8C8C",
"icon.foreground": "#8C8C8C",
"focusBorder": "#3994BCB3",
"textBlockQuote.background": "#242526",
"textBlockQuote.border": "#2A2B2CFF",
"textCodeBlock.background": "#242526",
"textLink.foreground": "#48A0C7",
"textLink.activeForeground": "#53A5CA",
"textPreformat.background": "#262626",
"textPreformat.foreground": "#8C8C8C",
"textSeparator.foreground": "#2a2a2aFF",
"button.background": "#297AA0",
"button.foreground": "#FFFFFF",
"button.hoverBackground": "#2B7DA3",
"button.border": "#333536FF",
"button.secondaryHoverBackground": "#FFFFFF10",
"checkbox.background": "#242526",
"checkbox.border": "#333536",
"checkbox.foreground": "#8C8C8C",
"dropdown.background": "#191A1B",
"dropdown.border": "#333536",
"dropdown.foreground": "#bfbfbf",
"dropdown.listBackground": "#191A1B",
"input.background": "#191A1B",
"input.border": "#333536FF",
"input.foreground": "#bfbfbf",
"input.placeholderForeground": "#555555",
"inputOption.activeBackground": "#3994BC33",
"inputOption.activeForeground": "#bfbfbf",
"inputOption.activeBorder": "#2A2B2CFF",
"inputValidation.infoBackground": "#1E3A47",
"inputValidation.infoBorder": "#3994BC",
"inputValidation.infoForeground": "#bfbfbf",
"inputValidation.warningBackground": "#352A05",
"inputValidation.warningBorder": "#B89500",
"inputValidation.warningForeground": "#bfbfbf",
"inputValidation.errorBackground": "#3A1D1D",
"inputValidation.errorBorder": "#BE1100",
"inputValidation.errorForeground": "#bfbfbf",
"scrollbar.shadow": "#191B1D4D",
"scrollbarSlider.background": "#83848533",
"scrollbarSlider.hoverBackground": "#83848566",
"scrollbarSlider.activeBackground": "#83848599",
"badge.background": "#3994BCF0",
"badge.foreground": "#FFFFFF",
"progressBar.background": "#878889",
"list.activeSelectionBackground": "#3994BC26",
"list.activeSelectionForeground": "#ededed",
"list.inactiveSelectionBackground": "#2C2D2E",
"list.inactiveSelectionForeground": "#ededed",
"list.hoverBackground": "#FFFFFF0D",
"list.hoverForeground": "#bfbfbf",
"list.dropBackground": "#3994BC1A",
"toolbar.hoverBackground": "#FFFFFF18",
"list.focusBackground": "#3994BC26",
"list.focusForeground": "#bfbfbf",
"list.focusOutline": "#3994BCB3",
"list.highlightForeground": "#48A0C7",
"list.invalidItemForeground": "#444444",
"list.errorForeground": "#f48771",
"list.warningForeground": "#e5ba7d",
"activityBar.background": "#191A1B",
"activityBar.foreground": "#bfbfbf",
"activityBar.inactiveForeground": "#8C8C8C",
"activityBar.border": "#2A2B2CFF",
"activityBar.activeBorder": "#bfbfbf",
"activityBar.activeFocusBorder": "#3994BCB3",
"activityBarBadge.background": "#3994BC",
"activityBarBadge.foreground": "#FFFFFF",
"activityBarTop.activeBorder": "#bfbfbf",
"sideBar.background": "#191A1B",
"sideBar.foreground": "#bfbfbf",
"sideBar.border": "#2A2B2CFF",
"sideBarTitle.foreground": "#bfbfbf",
"sideBarSectionHeader.background": "#191A1B",
"sideBarSectionHeader.foreground": "#bfbfbf",
"sideBarSectionHeader.border": "#2A2B2CFF",
"titleBar.activeBackground": "#191A1B",
"titleBar.activeForeground": "#8C8C8C",
"titleBar.inactiveBackground": "#191A1B",
"titleBar.inactiveForeground": "#8C8C8C",
"titleBar.border": "#2A2B2CFF",
"menubar.selectionBackground": "#242526",
"menubar.selectionForeground": "#bfbfbf",
"menu.background": "#202122",
"menu.foreground": "#bfbfbf",
"menu.selectionBackground": "#3994BC26",
"menu.selectionForeground": "#bfbfbf",
"menu.separatorBackground": "#2A2B2C",
"menu.border": "#2A2B2CFF",
"commandCenter.foreground": "#bfbfbf",
"commandCenter.activeForeground": "#bfbfbf",
"commandCenter.background": "#191A1B",
"commandCenter.activeBackground": "#FFFFFF0F",
"commandCenter.border": "#2E3031",
"editor.background": "#121314",
"editor.foreground": "#BBBEBF",
"editorStickyScroll.background": "#121314",
"editorStickyScrollHover.background": "#202122",
"editorStickyScroll.border": "#2A2B2CFF",
"editorLineNumber.foreground": "#858889",
"editorLineNumber.activeForeground": "#BBBEBF",
"editorCursor.foreground": "#BBBEBF",
"editor.selectionBackground": "#276782dd",
"editor.inactiveSelectionBackground": "#27678260",
"editor.selectionHighlightBackground": "#27678260",
"editor.wordHighlightBackground": "#27678250",
"editor.wordHighlightStrongBackground": "#27678280",
"editor.findMatchBackground": "#27678290",
"editor.findMatchHighlightBackground": "#27678280",
"editor.findRangeHighlightBackground": "#242526",
"editor.hoverHighlightBackground": "#242526",
"editor.lineHighlightBackground": "#242526",
"editor.rangeHighlightBackground": "#242526",
"editorLink.activeForeground": "#3a94bc",
"editorWhitespace.foreground": "#8C8C8C4D",
"editorIndentGuide.background": "#8384854D",
"editorIndentGuide.activeBackground": "#838485",
"editorRuler.foreground": "#848484",
"editorCodeLens.foreground": "#8C8C8C",
"editorBracketMatch.background": "#3994BC55",
"editorBracketMatch.border": "#2A2B2CFF",
"editorWidget.background": "#202122",
"editorWidget.border": "#2A2B2CFF",
"editorWidget.foreground": "#bfbfbf",
"editorSuggestWidget.background": "#202122",
"editorSuggestWidget.border": "#2A2B2CFF",
"editorSuggestWidget.foreground": "#bfbfbf",
"editorSuggestWidget.highlightForeground": "#bfbfbf",
"editorSuggestWidget.selectedBackground": "#3994BC26",
"editorHoverWidget.background": "#202122",
"editorHoverWidget.border": "#2A2B2CFF",
"widget.border": "#2A2B2CFF",
"peekView.border": "#2A2B2CFF",
"peekViewEditor.background": "#191A1B",
"peekViewEditor.matchHighlightBackground": "#3994BC33",
"peekViewResult.background": "#191A1B",
"peekViewResult.fileForeground": "#bfbfbf",
"peekViewResult.lineForeground": "#8C8C8C",
"peekViewResult.matchHighlightBackground": "#3994BC33",
"peekViewResult.selectionBackground": "#3994BC26",
"peekViewResult.selectionForeground": "#bfbfbf",
"peekViewTitle.background": "#242526",
"peekViewTitleDescription.foreground": "#8C8C8C",
"peekViewTitleLabel.foreground": "#bfbfbf",
"editorGutter.background": "#121314",
"editorGutter.addedBackground": "#72C892",
"editorGutter.deletedBackground": "#F28772",
"diffEditor.insertedLineBackground": "#347d3926",
"diffEditor.insertedTextBackground": "#57ab5a4d",
"diffEditor.removedLineBackground": "#c93c3726",
"diffEditor.removedTextBackground": "#f470674d",
"editorOverviewRuler.border": "#2A2B2CFF",
"editorOverviewRuler.findMatchForeground": "#3a94bc99",
"editorOverviewRuler.modifiedForeground": "#6ab890",
"editorOverviewRuler.addedForeground": "#73c991",
"editorOverviewRuler.deletedForeground": "#f48771",
"editorOverviewRuler.errorForeground": "#f48771",
"editorOverviewRuler.warningForeground": "#e5ba7d",
"panel.background": "#191A1B",
"panel.border": "#2A2B2CFF",
"panelTitle.activeBorder": "#3994BC",
"panelTitle.activeForeground": "#bfbfbf",
"panelTitle.inactiveForeground": "#8C8C8C",
"statusBar.background": "#191A1B",
"statusBar.foreground": "#8C8C8C",
"statusBar.border": "#2A2B2CFF",
"statusBar.focusBorder": "#3994BCB3",
"statusBar.debuggingBackground": "#3994BC",
"statusBar.debuggingForeground": "#FFFFFF",
"statusBar.noFolderBackground": "#191A1B",
"statusBar.noFolderForeground": "#8C8C8C",
"statusBarItem.activeBackground": "#4B4C4D",
"statusBarItem.hoverBackground": "#262728",
"statusBarItem.focusBorder": "#3994BCB3",
"statusBarItem.prominentBackground": "#3994BC",
"statusBarItem.prominentForeground": "#FFFFFF",
"statusBarItem.prominentHoverBackground": "#3994BC",
"tab.activeBackground": "#121314",
"tab.activeForeground": "#bfbfbf",
"tab.inactiveBackground": "#191A1B",
"tab.inactiveForeground": "#8C8C8C",
"tab.border": "#2A2B2CFF",
"tab.lastPinnedBorder": "#2A2B2CFF",
"tab.activeBorderTop": "#3994BC",
"tab.hoverBackground": "#121314",
"tab.hoverForeground": "#bfbfbf",
"tab.unfocusedActiveBackground": "#121314",
"tab.unfocusedActiveForeground": "#8C8C8C",
"tab.unfocusedInactiveBackground": "#191A1B",
"tab.unfocusedInactiveForeground": "#444444",
"editorGroupHeader.tabsBackground": "#191A1B",
"tab.activeBorder": "#121314",
"editorGroupHeader.tabsBorder": "#2A2B2CFF",
"breadcrumb.foreground": "#8C8C8C",
"breadcrumb.background": "#121314",
"breadcrumb.focusForeground": "#bfbfbf",
"breadcrumb.activeSelectionForeground": "#bfbfbf",
"breadcrumbPicker.background": "#202122",
"notificationCenter.border": "#2A2B2CFF",
"notificationCenterHeader.foreground": "#bfbfbf",
"notificationCenterHeader.background": "#242526",
"notificationToast.border": "#2A2B2CFF",
"notifications.foreground": "#bfbfbf",
"notifications.background": "#202122",
"notifications.border": "#2A2B2CFF",
"notificationLink.foreground": "#3a94bc",
"notificationsWarningIcon.foreground": "#CCA700",
"notificationsErrorIcon.foreground": "#f48771",
"notificationsInfoIcon.foreground": "#3a94bc",
"activityWarningBadge.foreground": "#202020",
"activityWarningBadge.background": "#CCA700",
"activityErrorBadge.foreground": "#FFFFFF",
"activityErrorBadge.background": "#f48771",
"extensionButton.prominentBackground": "#297AA0",
"extensionButton.prominentForeground": "#FFFFFF",
"extensionButton.prominentHoverBackground": "#2B7DA3",
"pickerGroup.border": "#2A2B2CFF",
"pickerGroup.foreground": "#bfbfbf",
"quickInput.background": "#202122",
"quickInput.foreground": "#bfbfbf",
"quickInputList.focusBackground": "#297AA0",
"quickInputList.focusForeground": "#FFFFFF",
"quickInputList.focusIconForeground": "#FFFFFF",
"quickInputList.focusHighlightForeground": "#FFFFFF",
"quickInputList.hoverBackground": "#262728",
"terminal.selectionBackground": "#3994BC33",
"terminal.background": "#191A1B",
"terminal.border": "#2A2B2CFF",
"terminal.tab.activeBorder": "#3994BC00",
"terminalCursor.foreground": "#bfbfbf",
"terminalCursor.background": "#191A1B",
"gitDecoration.addedResourceForeground": "#73c991",
"gitDecoration.modifiedResourceForeground": "#e5ba7d",
"gitDecoration.deletedResourceForeground": "#f48771",
"gitDecoration.untrackedResourceForeground": "#73c991",
"gitDecoration.ignoredResourceForeground": "#8C8C8C",
"gitDecoration.conflictingResourceForeground": "#f48771",
"gitDecoration.stageModifiedResourceForeground": "#e5ba7d",
"gitDecoration.stageDeletedResourceForeground": "#f48771",
"quickInputTitle.background": "#202122",
"commandCenter.activeBorder": "#333536",
"quickInput.border": "#333536",
"gauge.foreground": "#59a4f9",
"gauge.background": "#58A4F94D",
"gauge.border": "#2A2C2EFF",
"gauge.warningForeground": "#e5ba7d",
"gauge.warningBackground": "#E3B97E4D",
"gauge.errorForeground": "#f48771",
"gauge.errorBackground": "#F287724D",
"chat.requestBubbleBackground": "#ffffff13",
"chat.requestBubbleHoverBackground": "#ffffff22",
"chat.inputWorkingBorderColor1": "#297AA0",
"chat.inputWorkingBorderColor2": "#1C546F",
"chat.inputWorkingBorderColor3": "#5BA8CC",
"editorCommentsWidget.rangeBackground": "#488FAE26",
"editorCommentsWidget.rangeActiveBackground": "#488FAE46",
"charts.foreground": "#CCCCCC",
"charts.lines": "#C8CACC80",
"charts.blue": "#57A3F8",
"charts.red": "#EF8773",
"charts.yellow": "#E0B97F",
"charts.orange": "#CD861A",
"charts.green": "#86CF86",
"charts.purple": "#AD80D7",
"inlineChat.border": "#00000000",
"minimapSlider.background": "#83848533",
"minimapSlider.hoverBackground": "#83848566",
"minimapSlider.activeBackground": "#83848599",
"agents.background": "#121314",
"agentsPanel.background": "#191A1B",
"agentsPanel.foreground": "#bfbfbf",
"agentsPanel.border": "#2A2B2CFF",
"agentsGradient.tintColor": "#297AA0",
"agentsChatInput.background": "#202122",
"agentsChatInput.foreground": "#bfbfbf",
"agentsChatInput.border": "#333536",
"agentsChatInput.focusBorder": "#3994BCB3",
"agentsChatInput.placeholderForeground": "#555555",
"agentsNewSessionButton.background": "#00000000",
"agentsNewSessionButton.foreground": "#bfbfbf",
"agentsNewSessionButton.border": "#333536",
"agentsNewSessionButton.hoverBackground": "#FFFFFF18",
"agentsBadge.background": "#3994BC",
"agentsBadge.foreground": "#FFFFFF",
"agentsUnreadBadge.background": "#3994BC",
"agentsUnreadBadge.foreground": "#FFFFFF"
},
"tokenColors": [
{
"scope": ["comment", "punctuation.definition.comment", "string.comment"],
"settings": {
"foreground": "#8b949e"
}
},
{
"scope": ["constant.other.placeholder", "constant.character"],
"settings": {
"foreground": "#ff7b72"
}
},
{
"scope": [
"constant",
"entity.name.constant",
"variable.other.constant",
"variable.other.enummember",
"variable.language",
"entity"
],
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": ["entity.name", "meta.export.default", "meta.definition.variable"],
"settings": {
"foreground": "#ffa657"
}
},
{
"scope": [
"variable.parameter.function",
"meta.jsx.children",
"meta.block",
"meta.tag.attributes",
"entity.name.constant",
"meta.object.member",
"meta.embedded.expression"
],
"settings": {
"foreground": "#c9d1d9"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#d2a8ff"
}
},
{
"scope": ["entity.name.tag", "support.class.component"],
"settings": {
"foreground": "#7ee787"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#ff7b72"
}
},
{
"scope": ["storage", "storage.type"],
"settings": {
"foreground": "#ff7b72"
}
},
{
"scope": ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
"settings": {
"foreground": "#c9d1d9"
}
},
{
"scope": ["string", "string punctuation.section.embedded source"],
"settings": {
"foreground": "#a5d6ff"
}
},
{
"scope": "support",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "meta.property-name",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "variable",
"settings": {
"foreground": "#ffa657"
}
},
{
"scope": "variable.other",
"settings": {
"foreground": "#c9d1d9"
}
},
{
"scope": "invalid.broken",
"settings": {
"foreground": "#ffa198",
"fontStyle": "italic"
}
},
{
"scope": "invalid.deprecated",
"settings": {
"foreground": "#ffa198",
"fontStyle": "italic"
}
},
{
"scope": "invalid.illegal",
"settings": {
"foreground": "#ffa198",
"fontStyle": "italic"
}
},
{
"scope": "invalid.unimplemented",
"settings": {
"foreground": "#ffa198",
"fontStyle": "italic"
}
},
{
"scope": "carriage-return",
"settings": {
"foreground": "#f0f6fc",
"background": "#8b1111",
"fontStyle": "italic underline",
"content": "^M"
}
},
{
"scope": "message.error",
"settings": {
"foreground": "#ffa198"
}
},
{
"scope": "string variable",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": ["source.regexp", "string.regexp"],
"settings": {
"foreground": "#a5d6ff"
}
},
{
"scope": [
"string.regexp.character-class",
"string.regexp constant.character.escape",
"string.regexp source.ruby.embedded",
"string.regexp string.regexp.arbitrary-repitition"
],
"settings": {
"foreground": "#a5d6ff"
}
},
{
"scope": "string.regexp constant.character.escape",
"settings": {
"foreground": "#7ee787",
"fontStyle": "bold"
}
},
{
"scope": "support.constant",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "support.variable",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "support.type.property-name.json",
"settings": {
"foreground": "#7ee787"
}
},
{
"scope": "meta.module-reference",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "punctuation.definition.list.begin.markdown",
"settings": {
"foreground": "#ffa657"
}
},
{
"scope": ["markup.heading", "markup.heading entity.name"],
"settings": {
"foreground": "#79c0ff",
"fontStyle": "bold"
}
},
{
"scope": "markup.quote",
"settings": {
"foreground": "#7ee787"
}
},
{
"scope": "markup.italic",
"settings": {
"foreground": "#c9d1d9",
"fontStyle": "italic"
}
},
{
"scope": "markup.bold",
"settings": {
"foreground": "#c9d1d9",
"fontStyle": "bold"
}
},
{
"scope": ["markup.underline"],
"settings": {
"fontStyle": "underline"
}
},
{
"scope": ["markup.strikethrough"],
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inline.raw",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
"settings": {
"foreground": "#ffa198",
"background": "#490202"
}
},
{
"scope": ["punctuation.section.embedded"],
"settings": {
"foreground": "#ff7b72"
}
},
{
"scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
"settings": {
"foreground": "#7ee787",
"background": "#04260f"
}
},
{
"scope": ["markup.changed", "punctuation.definition.changed"],
"settings": {
"foreground": "#ffa657",
"background": "#5a1e02"
}
},
{
"scope": ["markup.ignored", "markup.untracked"],
"settings": {
"foreground": "#0d1117",
"background": "#79c0ff"
}
},
{
"scope": "meta.diff.range",
"settings": {
"foreground": "#d2a8ff",
"fontStyle": "bold"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": "meta.separator",
"settings": {
"foreground": "#79c0ff",
"fontStyle": "bold"
}
},
{
"scope": "meta.output",
"settings": {
"foreground": "#79c0ff"
}
},
{
"scope": [
"brackethighlighter.tag",
"brackethighlighter.curly",
"brackethighlighter.round",
"brackethighlighter.square",
"brackethighlighter.angle",
"brackethighlighter.quote"
],
"settings": {
"foreground": "#8b949e"
}
},
{
"scope": "brackethighlighter.unmatched",
"settings": {
"foreground": "#ffa198"
}
},
{
"scope": ["constant.other.reference.link", "string.other.link"],
"settings": {
"foreground": "#a5d6ff"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#6796E6"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#CD9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#F44747"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#B267E6"
}
}
],
"semanticHighlighting": true
}
@@ -0,0 +1,646 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "2026 Light",
"include": "./light_modern.json",
"type": "light",
"colors": {
"foreground": "#202020",
"disabledForeground": "#BBBBBB",
"errorForeground": "#ad0707",
"descriptionForeground": "#606060",
"icon.foreground": "#606060",
"focusBorder": "#0069CCFF",
"textBlockQuote.background": "#EAEAEA",
"textBlockQuote.border": "#F0F1F2FF",
"textCodeBlock.background": "#EAEAEA",
"textLink.foreground": "#0069CC",
"textLink.activeForeground": "#0069CC",
"textPreformat.foreground": "#606060",
"textPreformat.background": "#ECECEC",
"textSeparator.foreground": "#EEEEEEFF",
"button.background": "#0069CC",
"button.foreground": "#FFFFFF",
"button.hoverBackground": "#0063C1",
"button.border": "#EEEEF1",
"button.secondaryBackground": "#EAEAEA",
"button.secondaryForeground": "#202020",
"button.secondaryHoverBackground": "#F2F3F4",
"checkbox.background": "#EAEAEA",
"checkbox.border": "#D8D8D8",
"checkbox.foreground": "#606060",
"dropdown.background": "#FFFFFF",
"dropdown.border": "#D8D8D8",
"dropdown.foreground": "#202020",
"dropdown.listBackground": "#FFFFFF",
"input.background": "#FFFFFF",
"input.border": "#D8D8D866",
"input.foreground": "#202020",
"input.placeholderForeground": "#999999",
"inputOption.activeBackground": "#0069CC26",
"inputOption.activeForeground": "#202020",
"inputOption.activeBorder": "#F0F1F2FF",
"inputValidation.infoBackground": "#E6F2FA",
"inputValidation.infoBorder": "#0069CC",
"inputValidation.infoForeground": "#202020",
"inputValidation.warningBackground": "#FDF6E3",
"inputValidation.warningBorder": "#B69500",
"inputValidation.warningForeground": "#202020",
"inputValidation.errorBackground": "#FDEDED",
"inputValidation.errorBorder": "#ad0707",
"inputValidation.errorForeground": "#202020",
"scrollbar.shadow": "#00000000",
"widget.shadow": "#00000000",
"widget.border": "#E2E2E5",
"editorStickyScroll.shadow": "#00000000",
"editorStickyScrollHover.background": "#F0F0F3",
"editorStickyScroll.border": "#F0F1F2FF",
"sideBarStickyScroll.shadow": "#00000000",
"panelStickyScroll.shadow": "#00000000",
"listFilterWidget.shadow": "#00000000",
"scrollbarSlider.background": "#99999926",
"scrollbarSlider.hoverBackground": "#99999940",
"scrollbarSlider.activeBackground": "#99999955",
"badge.background": "#0069CC",
"badge.foreground": "#FFFFFF",
"progressBar.background": "#0069CC",
"list.activeSelectionBackground": "#0069CC1A",
"list.activeSelectionForeground": "#202020",
"list.inactiveSelectionBackground": "#DADADA99",
"list.inactiveSelectionForeground": "#202020",
"list.hoverBackground": "#DADADA4f",
"list.hoverForeground": "#202020",
"list.dropBackground": "#0069CC15",
"list.focusBackground": "#0069CC1A",
"list.focusForeground": "#202020",
"list.focusOutline": "#0069CCFF",
"list.highlightForeground": "#0069CC",
"list.invalidItemForeground": "#BBBBBB",
"list.errorForeground": "#ad0707",
"list.warningForeground": "#667309",
"activityBar.background": "#FAFAFD",
"activityBar.foreground": "#202020",
"activityBar.inactiveForeground": "#606060",
"activityBar.border": "#F0F1F2FF",
"activityBar.activeBorder": "#000000",
"activityBar.activeFocusBorder": "#0069CCFF",
"activityBarBadge.background": "#0069CC",
"activityBarBadge.foreground": "#FFFFFF",
"activityBarTop.activeBorder": "#000000",
"sideBar.background": "#FAFAFD",
"sideBar.foreground": "#202020",
"sideBar.border": "#F0F1F2FF",
"sideBarTitle.foreground": "#202020",
"sideBarSectionHeader.background": "#FAFAFD",
"sideBarSectionHeader.foreground": "#202020",
"sideBarSectionHeader.border": "#F0F1F2FF",
"titleBar.activeBackground": "#FAFAFD",
"titleBar.activeForeground": "#606060",
"titleBar.inactiveBackground": "#FAFAFD",
"titleBar.inactiveForeground": "#606060",
"titleBar.border": "#F0F1F2FF",
"menubar.selectionBackground": "#EAEAEA",
"menubar.selectionForeground": "#202020",
"menu.background": "#FAFAFD",
"menu.foreground": "#202020",
"menu.selectionBackground": "#0069CC1A",
"menu.selectionForeground": "#202020",
"menu.separatorBackground": "#EEEEF1",
"menu.border": "#E4E5E6FF",
"commandCenter.foreground": "#202020",
"commandCenter.activeForeground": "#202020",
"commandCenter.background": "#FFFFFF",
"commandCenter.activeBackground": "#DADADA4f",
"commandCenter.border": "#D8D8D8AA",
"editor.background": "#FFFFFF",
"editor.foreground": "#202020",
"editorLineNumber.foreground": "#606060",
"editorLineNumber.activeForeground": "#202020",
"editorCursor.foreground": "#202020",
"editor.selectionBackground": "#0069CC40",
"editor.inactiveSelectionBackground": "#0069CC1A",
"editor.selectionHighlightBackground": "#0069CC15",
"editor.wordHighlightBackground": "#0069CC26",
"editor.wordHighlightStrongBackground": "#0069CC26",
"editor.findMatchBackground": "#0069CC40",
"editor.findMatchHighlightBackground": "#0069CC1A",
"editor.findRangeHighlightBackground": "#EAEAEA",
"editor.hoverHighlightBackground": "#EAEAEA",
"editor.lineHighlightBackground": "#EAEAEA40",
"editor.rangeHighlightBackground": "#EAEAEA",
"editorLink.activeForeground": "#0069CC",
"editorWhitespace.foreground": "#60606040",
"editorIndentGuide.background": "#F7F7F740",
"editorIndentGuide.activeBackground": "#EEEEEE",
"editorRuler.foreground": "#F7F7F7",
"editorCodeLens.foreground": "#606060",
"editorBracketMatch.background": "#0069CC40",
"editorBracketMatch.border": "#F0F1F2FF",
"editorWidget.background": "#FAFAFD",
"editorWidget.border": "#E4E5E6FF",
"editorWidget.foreground": "#202020",
"editorSuggestWidget.background": "#FAFAFD",
"editorSuggestWidget.border": "#E4E5E6FF",
"editorSuggestWidget.foreground": "#202020",
"editorSuggestWidget.highlightForeground": "#0069CC",
"editorSuggestWidget.selectedBackground": "#0069CC26",
"editorSuggestWidget.selectedForeground": "#202020",
"editorSuggestWidget.selectedIconForeground": "#202020",
"editorHoverWidget.background": "#FAFAFD",
"editorHoverWidget.border": "#E4E5E6FF",
"peekView.border": "#0069CC",
"peekViewEditor.background": "#FAFAFD",
"peekViewEditor.matchHighlightBackground": "#0069CC33",
"peekViewResult.background": "#FAFAFD",
"peekViewResult.fileForeground": "#202020",
"peekViewResult.lineForeground": "#606060",
"peekViewResult.matchHighlightBackground": "#0069CC33",
"peekViewResult.selectionBackground": "#0069CC26",
"peekViewResult.selectionForeground": "#202020",
"peekViewTitle.background": "#FAFAFD",
"peekViewTitleDescription.foreground": "#606060",
"peekViewTitleLabel.foreground": "#202020",
"editorGutter.addedBackground": "#587c0c",
"editorGutter.deletedBackground": "#ad0707",
"diffEditor.insertedTextBackground": "#587c0c26",
"diffEditor.removedTextBackground": "#ad070726",
"editorOverviewRuler.border": "#F0F1F2FF",
"editorOverviewRuler.findMatchForeground": "#0069CC99",
"editorOverviewRuler.modifiedForeground": "#0069CC",
"editorOverviewRuler.addedForeground": "#587c0c",
"editorOverviewRuler.deletedForeground": "#ad0707",
"editorOverviewRuler.errorForeground": "#ad0707",
"editorOverviewRuler.warningForeground": "#667309",
"editorGutter.background": "#FFFFFF",
"panel.background": "#FAFAFD",
"panel.border": "#F0F1F2FF",
"panelTitle.activeBorder": "#000000",
"panelTitle.activeForeground": "#202020",
"panelTitle.inactiveForeground": "#606060",
"statusBar.background": "#FAFAFD",
"statusBar.foreground": "#606060",
"statusBar.border": "#F0F1F2FF",
"statusBar.focusBorder": "#0069CCFF",
"statusBar.debuggingBackground": "#0069CC",
"statusBar.debuggingForeground": "#FFFFFF",
"statusBar.noFolderBackground": "#F0F0F3",
"statusBar.noFolderForeground": "#606060",
"statusBarItem.activeBackground": "#EEEEEE",
"statusBarItem.hoverBackground": "#DADADA4f",
"statusBarItem.focusBorder": "#0069CCFF",
"statusBarItem.prominentBackground": "#0069CCDD",
"statusBarItem.prominentForeground": "#FFFFFF",
"statusBarItem.prominentHoverBackground": "#0069CC",
"toolbar.hoverBackground": "#00000010",
"tab.activeBackground": "#FFFFFF",
"tab.activeForeground": "#202020",
"tab.inactiveBackground": "#FAFAFD",
"tab.inactiveForeground": "#606060",
"tab.border": "#F0F1F2FF",
"tab.lastPinnedBorder": "#F0F1F2FF",
"tab.activeBorderTop": "#000000",
"tab.hoverBackground": "#FFFFFF",
"tab.hoverForeground": "#202020",
"tab.unfocusedActiveBackground": "#FAFAFD",
"tab.unfocusedActiveForeground": "#606060",
"tab.unfocusedInactiveBackground": "#FAFAFD",
"tab.unfocusedInactiveForeground": "#BBBBBB",
"editorGroupHeader.tabsBackground": "#FAFAFD",
"tab.activeBorder": "#FFFFFF",
"editorGroupHeader.tabsBorder": "#F0F1F2FF",
"breadcrumb.foreground": "#606060",
"breadcrumb.background": "#FFFFFF",
"breadcrumb.focusForeground": "#202020",
"breadcrumb.activeSelectionForeground": "#202020",
"breadcrumbPicker.background": "#FAFAFD",
"notificationCenter.border": "#F0F1F2FF",
"notificationCenterHeader.foreground": "#202020",
"notificationCenterHeader.background": "#FAFAFD",
"notificationToast.border": "#F0F1F2FF",
"notifications.foreground": "#202020",
"notifications.background": "#FAFAFD",
"notifications.border": "#F0F1F2FF",
"notificationLink.foreground": "#0069CC",
"notificationsWarningIcon.foreground": "#B69500",
"notificationsErrorIcon.foreground": "#ad0707",
"notificationsInfoIcon.foreground": "#0069CC",
"activityWarningBadge.foreground": "#202020",
"activityWarningBadge.background": "#F2C94C",
"activityErrorBadge.foreground": "#FFFFFF",
"activityErrorBadge.background": "#ad0707",
"extensionButton.prominentBackground": "#0069CC",
"extensionButton.prominentForeground": "#FFFFFF",
"extensionButton.prominentHoverBackground": "#0064CC",
"pickerGroup.border": "#EEEEF1",
"pickerGroup.foreground": "#202020",
"quickInput.background": "#FAFAFD",
"quickInput.foreground": "#202020",
"quickInputList.focusBackground": "#0069CC",
"quickInputList.focusForeground": "#FFFFFF",
"quickInputList.focusIconForeground": "#FFFFFF",
"quickInputList.focusHighlightForeground": "#FFFFFF",
"quickInputList.hoverBackground": "#EDF0F5",
"terminal.selectionBackground": "#0069CC26",
"terminalCursor.foreground": "#202020",
"terminalCursor.background": "#FFFFFF",
"gitDecoration.addedResourceForeground": "#587c0c",
"gitDecoration.modifiedResourceForeground": "#667309",
"gitDecoration.deletedResourceForeground": "#ad0707",
"gitDecoration.untrackedResourceForeground": "#587c0c",
"gitDecoration.ignoredResourceForeground": "#8E8E90",
"gitDecoration.conflictingResourceForeground": "#ad0707",
"gitDecoration.stageModifiedResourceForeground": "#667309",
"gitDecoration.stageDeletedResourceForeground": "#ad0707",
"commandCenter.activeBorder": "#D8D8D8",
"quickInput.border": "#D8D8D8",
"gauge.foreground": "#0069CC",
"gauge.background": "#0069CC40",
"gauge.border": "#F0F1F2FF",
"gauge.warningForeground": "#B69500",
"gauge.warningBackground": "#B6950040",
"gauge.errorForeground": "#ad0707",
"gauge.errorBackground": "#ad070740",
"statusBarItem.prominentHoverForeground": "#FFFFFF",
"quickInputTitle.background": "#FAFAFD",
"chat.requestBubbleBackground": "#EEF4FB",
"chat.requestBubbleHoverBackground": "#E6EDFA",
"chat.thinkingShimmer": "#999999",
"chat.inputWorkingBorderColor1": "#0069CC",
"chat.inputWorkingBorderColor2": "#004A99",
"chat.inputWorkingBorderColor3": "#3399E6",
"editorCommentsWidget.rangeBackground": "#EEF4FB",
"editorCommentsWidget.rangeActiveBackground": "#E6EDFA",
"charts.foreground": "#202020",
"charts.lines": "#20202066",
"charts.blue": "#1A5CFF",
"charts.red": "#ad0707",
"charts.yellow": "#667309",
"charts.orange": "#d18616",
"charts.green": "#388A34",
"charts.purple": "#652D90",
"agentStatusIndicator.background": "#FFFFFF",
"inlineChat.border": "#00000000",
"minimapSlider.background": "#99999926",
"minimapSlider.hoverBackground": "#99999940",
"minimapSlider.activeBackground": "#99999955",
"agents.background": "#FAFAFD",
"agentsPanel.background": "#FFFFFF",
"agentsPanel.foreground": "#202020",
"agentsPanel.border": "#E4E5E6FF",
"agentsGradient.tintColor": "#0069CC",
"agentsChatInput.background": "#F7F7FA",
"agentsChatInput.foreground": "#202020",
"agentsChatInput.border": "#D8D8D8",
"agentsChatInput.focusBorder": "#0069CCFF",
"agentsChatInput.placeholderForeground": "#999999",
"agentsNewSessionButton.background": "#00000000",
"agentsNewSessionButton.foreground": "#202020",
"agentsNewSessionButton.border": "#D8D8D8",
"agentsNewSessionButton.hoverBackground": "#00000010",
"agentsBadge.background": "#0069CC",
"agentsBadge.foreground": "#FFFFFF",
"agentsUnreadBadge.background": "#0069CC",
"agentsUnreadBadge.foreground": "#FFFFFF"
},
"tokenColors": [
{
"scope": ["comment", "punctuation.definition.comment", "string.comment"],
"settings": {
"foreground": "#6e7781"
}
},
{
"scope": ["constant.other.placeholder", "constant.character"],
"settings": {
"foreground": "#cf222e"
}
},
{
"scope": [
"constant",
"entity.name.constant",
"variable.other.constant",
"variable.other.enummember",
"variable.language",
"entity"
],
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": ["entity.name", "meta.export.default", "meta.definition.variable"],
"settings": {
"foreground": "#953800"
}
},
{
"scope": [
"variable.parameter.function",
"meta.jsx.children",
"meta.block",
"meta.tag.attributes",
"entity.name.constant",
"meta.object.member",
"meta.embedded.expression"
],
"settings": {
"foreground": "#1f2328"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#8250df"
}
},
{
"scope": ["entity.name.tag", "support.class.component"],
"settings": {
"foreground": "#116329"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#cf222e"
}
},
{
"scope": ["storage", "storage.type"],
"settings": {
"foreground": "#cf222e"
}
},
{
"scope": ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
"settings": {
"foreground": "#1f2328"
}
},
{
"scope": ["string", "string punctuation.section.embedded source"],
"settings": {
"foreground": "#0a3069"
}
},
{
"scope": "support",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "meta.property-name",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "variable",
"settings": {
"foreground": "#953800"
}
},
{
"scope": "variable.other",
"settings": {
"foreground": "#1f2328"
}
},
{
"scope": "invalid.broken",
"settings": {
"fontStyle": "italic",
"foreground": "#82071e"
}
},
{
"scope": "invalid.deprecated",
"settings": {
"fontStyle": "italic",
"foreground": "#82071e"
}
},
{
"scope": "invalid.illegal",
"settings": {
"fontStyle": "italic",
"foreground": "#82071e"
}
},
{
"scope": "invalid.unimplemented",
"settings": {
"fontStyle": "italic",
"foreground": "#82071e"
}
},
{
"scope": "carriage-return",
"settings": {
"fontStyle": "italic underline",
"background": "#cf222e",
"foreground": "#f6f8fa",
"content": "^M"
}
},
{
"scope": "message.error",
"settings": {
"foreground": "#82071e"
}
},
{
"scope": "string variable",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": ["source.regexp", "string.regexp"],
"settings": {
"foreground": "#0a3069"
}
},
{
"scope": [
"string.regexp.character-class",
"string.regexp constant.character.escape",
"string.regexp source.ruby.embedded",
"string.regexp string.regexp.arbitrary-repitition"
],
"settings": {
"foreground": "#0a3069"
}
},
{
"scope": "string.regexp constant.character.escape",
"settings": {
"fontStyle": "bold",
"foreground": "#116329"
}
},
{
"scope": "support.constant",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "support.variable",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "support.type.property-name.json",
"settings": {
"foreground": "#116329"
}
},
{
"scope": "meta.module-reference",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "punctuation.definition.list.begin.markdown",
"settings": {
"foreground": "#953800"
}
},
{
"scope": ["markup.heading", "markup.heading entity.name"],
"settings": {
"fontStyle": "bold",
"foreground": "#0550ae"
}
},
{
"scope": "markup.quote",
"settings": {
"foreground": "#116329"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic",
"foreground": "#1f2328"
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold",
"foreground": "#1f2328"
}
},
{
"scope": ["markup.underline"],
"settings": {
"fontStyle": "underline"
}
},
{
"scope": ["markup.strikethrough"],
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inline.raw",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
"settings": {
"background": "#ffebe9",
"foreground": "#82071e"
}
},
{
"scope": ["punctuation.section.embedded"],
"settings": {
"foreground": "#cf222e"
}
},
{
"scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
"settings": {
"background": "#dafbe1",
"foreground": "#116329"
}
},
{
"scope": ["markup.changed", "punctuation.definition.changed"],
"settings": {
"background": "#ffd8b5",
"foreground": "#953800"
}
},
{
"scope": ["markup.ignored", "markup.untracked"],
"settings": {
"foreground": "#eaeef2",
"background": "#0550ae"
}
},
{
"scope": "meta.diff.range",
"settings": {
"foreground": "#8250df",
"fontStyle": "bold"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": "meta.separator",
"settings": {
"fontStyle": "bold",
"foreground": "#0550ae"
}
},
{
"scope": "meta.output",
"settings": {
"foreground": "#0550ae"
}
},
{
"scope": [
"brackethighlighter.tag",
"brackethighlighter.curly",
"brackethighlighter.round",
"brackethighlighter.square",
"brackethighlighter.angle",
"brackethighlighter.quote"
],
"settings": {
"foreground": "#57606a"
}
},
{
"scope": "brackethighlighter.unmatched",
"settings": {
"foreground": "#82071e"
}
},
{
"scope": ["constant.other.reference.link", "string.other.link"],
"settings": {
"foreground": "#0a3069"
}
}
],
"semanticHighlighting": true
}
@@ -0,0 +1,40 @@
MIT License
Copyright (c) 2015 - present Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---
These theme JSON files are vendored from:
https://github.com/microsoft/vscode
Source paths:
extensions/theme-defaults/themes/dark_modern.json
extensions/theme-defaults/themes/dark_plus.json
extensions/theme-defaults/themes/dark_vs.json
extensions/theme-defaults/themes/hc_black.json
extensions/theme-defaults/themes/hc_light.json
extensions/theme-defaults/themes/light_modern.json
extensions/theme-defaults/themes/light_plus.json
extensions/theme-defaults/themes/light_vs.json
extensions/theme-defaults/themes/2026-dark.json
extensions/theme-defaults/themes/2026-light.json
extensions/theme-monokai/themes/monokai-color-theme.json
extensions/theme-solarized-light/themes/solarized-light-color-theme.json
@@ -0,0 +1,133 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Dark Modern",
"include": "./dark_plus.json",
"colors": {
"activityBar.activeBorder": "#0078D4",
"activityBar.background": "#181818",
"activityBar.border": "#2B2B2B",
"activityBar.foreground": "#D7D7D7",
"activityBar.inactiveForeground": "#868686",
"activityBarBadge.background": "#0078D4",
"activityBarBadge.foreground": "#FFFFFF",
"badge.background": "#616161",
"badge.foreground": "#F8F8F8",
"button.background": "#0078D4",
"button.border": "#ffffff1a",
"button.foreground": "#FFFFFF",
"button.hoverBackground": "#026EC1",
"button.secondaryBackground": "#00000000",
"button.secondaryForeground": "#CCCCCC",
"button.secondaryHoverBackground": "#2B2B2B",
"chat.slashCommandBackground": "#26477866",
"chat.slashCommandForeground": "#85B6FF",
"chat.editedFileForeground": "#E2C08D",
"checkbox.background": "#313131",
"checkbox.border": "#3C3C3C",
"debugToolBar.background": "#181818",
"descriptionForeground": "#9D9D9D",
"dropdown.background": "#313131",
"dropdown.border": "#3C3C3C",
"dropdown.foreground": "#CCCCCC",
"dropdown.listBackground": "#1F1F1F",
"editor.background": "#1F1F1F",
"editor.findMatchBackground": "#9E6A03",
"editor.foreground": "#CCCCCC",
"editorGroup.border": "#FFFFFF17",
"editorGroupHeader.tabsBackground": "#181818",
"editorGroupHeader.tabsBorder": "#2B2B2B",
"editorGutter.addedBackground": "#2EA043",
"editorGutter.deletedBackground": "#F85149",
"editorGutter.modifiedBackground": "#0078D4",
"editorLineNumber.activeForeground": "#CCCCCC",
"editorLineNumber.foreground": "#6E7681",
"editorOverviewRuler.border": "#010409",
"editorWidget.background": "#202020",
"errorForeground": "#F85149",
"focusBorder": "#0078D4",
"foreground": "#CCCCCC",
"icon.foreground": "#CCCCCC",
"input.background": "#313131",
"input.border": "#3C3C3C",
"input.foreground": "#CCCCCC",
"input.placeholderForeground": "#989898",
"inputOption.activeBackground": "#2489DB82",
"inputOption.activeBorder": "#2488DB",
"keybindingLabel.foreground": "#CCCCCC",
"menu.background": "#1F1F1F",
"menu.selectionBackground": "#0078d4",
"notificationCenterHeader.background": "#1F1F1F",
"notificationCenterHeader.foreground": "#CCCCCC",
"notifications.background": "#1F1F1F",
"notifications.border": "#2B2B2B",
"notifications.foreground": "#CCCCCC",
"panel.background": "#181818",
"panel.border": "#2B2B2B",
"panelInput.border": "#2B2B2B",
"panelTitle.activeBorder": "#0078D4",
"panelTitle.activeForeground": "#CCCCCC",
"panelTitle.inactiveForeground": "#9D9D9D",
"peekViewEditor.background": "#1F1F1F",
"peekViewEditor.matchHighlightBackground": "#BB800966",
"peekViewResult.background": "#1F1F1F",
"peekViewResult.matchHighlightBackground": "#BB800966",
"pickerGroup.border": "#3C3C3C",
"progressBar.background": "#0078D4",
"quickInput.background": "#222222",
"quickInput.foreground": "#CCCCCC",
"settings.dropdownBackground": "#313131",
"settings.dropdownBorder": "#3C3C3C",
"settings.headerForeground": "#FFFFFF",
"settings.modifiedItemIndicator": "#BB800966",
"sideBar.background": "#181818",
"sideBar.border": "#2B2B2B",
"sideBar.foreground": "#CCCCCC",
"sideBarSectionHeader.background": "#181818",
"sideBarSectionHeader.border": "#2B2B2B",
"sideBarSectionHeader.foreground": "#CCCCCC",
"sideBarTitle.foreground": "#CCCCCC",
"statusBar.background": "#181818",
"statusBar.border": "#2B2B2B",
"statusBarItem.hoverBackground": "#F1F1F133",
"statusBarItem.hoverForeground": "#FFFFFF",
"statusBar.debuggingBackground": "#0078D4",
"statusBar.debuggingForeground": "#FFFFFF",
"statusBar.focusBorder": "#0078D4",
"statusBar.foreground": "#CCCCCC",
"statusBar.noFolderBackground": "#1F1F1F",
"statusBarItem.focusBorder": "#0078D4",
"statusBarItem.prominentBackground": "#6E768166",
"statusBarItem.remoteBackground": "#0078D4",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#1F1F1F",
"tab.activeBorder": "#1F1F1F",
"tab.activeBorderTop": "#0078D4",
"tab.activeForeground": "#FFFFFF",
"tab.selectedBorderTop": "#6caddf",
"tab.border": "#2B2B2B",
"tab.hoverBackground": "#1F1F1F",
"tab.inactiveBackground": "#181818",
"tab.inactiveForeground": "#9D9D9D",
"tab.unfocusedActiveBorder": "#1F1F1F",
"tab.unfocusedActiveBorderTop": "#2B2B2B",
"tab.unfocusedHoverBackground": "#1F1F1F",
"terminal.foreground": "#CCCCCC",
"terminal.tab.activeBorder": "#0078D4",
"textBlockQuote.background": "#2B2B2B",
"textBlockQuote.border": "#616161",
"textCodeBlock.background": "#2B2B2B",
"textLink.activeForeground": "#4daafc",
"textLink.foreground": "#4daafc",
"textPreformat.foreground": "#D0D0D0",
"textPreformat.background": "#3C3C3C",
"textSeparator.foreground": "#21262D",
"titleBar.activeBackground": "#181818",
"titleBar.activeForeground": "#CCCCCC",
"titleBar.border": "#2B2B2B",
"titleBar.inactiveBackground": "#1F1F1F",
"titleBar.inactiveForeground": "#9D9D9D",
"welcomePage.tileBackground": "#2B2B2B",
"welcomePage.progress.foreground": "#0078D4",
"widget.border": "#313131"
}
}
@@ -0,0 +1,194 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Dark+",
"include": "./dark_vs.json",
"tokenColors": [
{
"name": "Function declarations",
"scope": [
"entity.name.function",
"support.function",
"support.constant.handlebars",
"source.powershell variable.other.member",
"entity.name.operator.custom-literal" // See https://en.cppreference.com/w/cpp/language/user_literal
],
"settings": {
"foreground": "#DCDCAA"
}
},
{
"name": "Types declaration and references",
"scope": [
"support.class",
"support.type",
"entity.name.type",
"entity.name.namespace",
"entity.other.attribute",
"entity.name.scope-resolution",
"entity.name.class",
"storage.type.numeric.go",
"storage.type.byte.go",
"storage.type.boolean.go",
"storage.type.string.go",
"storage.type.uintptr.go",
"storage.type.error.go",
"storage.type.rune.go",
"storage.type.cs",
"storage.type.generic.cs",
"storage.type.modifier.cs",
"storage.type.variable.cs",
"storage.type.annotation.java",
"storage.type.generic.java",
"storage.type.java",
"storage.type.object.array.java",
"storage.type.primitive.array.java",
"storage.type.primitive.java",
"storage.type.token.java",
"storage.type.groovy",
"storage.type.annotation.groovy",
"storage.type.parameters.groovy",
"storage.type.generic.groovy",
"storage.type.object.array.groovy",
"storage.type.primitive.array.groovy",
"storage.type.primitive.groovy"
],
"settings": {
"foreground": "#4EC9B0"
}
},
{
"name": "Types declaration and references, TS grammar specific",
"scope": [
"meta.type.cast.expr",
"meta.type.new.expr",
"support.constant.math",
"support.constant.dom",
"support.constant.json",
"entity.other.inherited-class",
"punctuation.separator.namespace.ruby"
],
"settings": {
"foreground": "#4EC9B0"
}
},
{
"name": "Control flow / Special keywords",
"scope": [
"keyword.control",
"source.cpp keyword.operator.new",
"keyword.operator.delete",
"keyword.other.using",
"keyword.other.directive.using",
"keyword.other.operator",
"entity.name.operator"
],
"settings": {
"foreground": "#C586C0"
}
},
{
"name": "Variable and parameter name",
"scope": [
"variable",
"meta.definition.variable.name",
"support.variable",
"entity.name.variable",
"constant.other.placeholder" // placeholders in strings
],
"settings": {
"foreground": "#9CDCFE"
}
},
{
"name": "Constants and enums",
"scope": ["variable.other.constant", "variable.other.enummember"],
"settings": {
"foreground": "#4FC1FF"
}
},
{
"name": "Object keys, TS grammar specific",
"scope": ["meta.object-literal.key"],
"settings": {
"foreground": "#9CDCFE"
}
},
{
"name": "CSS property value",
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#CE9178"
}
},
{
"name": "Regular expression groups",
"scope": [
"punctuation.definition.group.regexp",
"punctuation.definition.group.assertion.regexp",
"punctuation.definition.character-class.regexp",
"punctuation.character.set.begin.regexp",
"punctuation.character.set.end.regexp",
"keyword.operator.negation.regexp",
"support.other.parenthesis.regexp"
],
"settings": {
"foreground": "#CE9178"
}
},
{
"scope": [
"constant.character.character-class.regexp",
"constant.other.character-class.set.regexp",
"constant.other.character-class.regexp",
"constant.character.set.regexp"
],
"settings": {
"foreground": "#d16969"
}
},
{
"scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
"settings": {
"foreground": "#DCDCAA"
}
},
{
"scope": "keyword.operator.quantifier.regexp",
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": ["constant.character", "constant.other.option"],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "constant.character.escape",
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": "entity.name.label",
"settings": {
"foreground": "#C8C8C8"
}
}
],
"semanticTokenColors": {
"newOperator": "#C586C0",
"stringLiteral": "#ce9178",
"customLiteral": "#DCDCAA",
"numberLiteral": "#b5cea8"
}
}
@@ -0,0 +1,395 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Dark (Visual Studio)",
"colors": {
"checkbox.border": "#6B6B6B",
"editor.background": "#1E1E1E",
"editor.foreground": "#D4D4D4",
"editor.inactiveSelectionBackground": "#3A3D41",
"editorIndentGuide.background1": "#404040",
"editorIndentGuide.activeBackground1": "#707070",
"editor.selectionHighlightBackground": "#ADD6FF26",
"list.dropBackground": "#383B3D",
"activityBarBadge.background": "#007ACC",
"sideBarTitle.foreground": "#BBBBBB",
"input.placeholderForeground": "#A6A6A6",
"menu.background": "#252526",
"menu.foreground": "#CCCCCC",
"menu.separatorBackground": "#454545",
"menu.border": "#454545",
"menu.selectionBackground": "#0078d4",
"statusBarItem.remoteForeground": "#FFF",
"statusBarItem.remoteBackground": "#16825D",
"ports.iconRunningProcessForeground": "#369432",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#ccc3",
"tab.selectedBackground": "#222222",
"tab.selectedForeground": "#ffffffa0",
"tab.lastPinnedBorder": "#ccc3",
"list.activeSelectionIconForeground": "#FFF",
"terminal.inactiveSelectionBackground": "#3A3D41",
"widget.border": "#303031",
"actionBar.toggledBackground": "#383a49"
},
"tokenColors": [
{
"scope": [
"meta.embedded",
"source.groovy.embedded",
"string meta.image.inline.markdown",
"variable.legacy.builtin.python"
],
"settings": {
"foreground": "#D4D4D4"
}
},
{
"scope": "emphasis",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "strong",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "header",
"settings": {
"foreground": "#000080"
}
},
{
"scope": "comment",
"settings": {
"foreground": "#6A9955"
}
},
{
"scope": "constant.language",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": [
"constant.numeric",
"variable.other.enummember",
"keyword.operator.plus.exponent",
"keyword.operator.minus.exponent"
],
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "constant.regexp",
"settings": {
"foreground": "#646695"
}
},
{
"scope": "entity.name.tag",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": ["entity.name.tag.css", "entity.name.tag.less"],
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": [
"entity.other.attribute-name.class.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
],
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": "invalid",
"settings": {
"foreground": "#f44747"
}
},
{
"scope": "markup.underline",
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold",
"foreground": "#569cd6"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold",
"foreground": "#569cd6"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic",
"foreground": "#C586C0"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inserted",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "markup.deleted",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "markup.changed",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "punctuation.definition.quote.begin.markdown",
"settings": {
"foreground": "#6A9955"
}
},
{
"scope": "punctuation.definition.list.begin.markdown",
"settings": {
"foreground": "#6796e6"
}
},
{
"scope": "markup.inline.raw",
"settings": {
"foreground": "#ce9178"
}
},
{
"name": "brackets of XML/HTML tags",
"scope": "punctuation.definition.tag",
"settings": {
"foreground": "#808080"
}
},
{
"scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "meta.preprocessor.string",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "meta.preprocessor.numeric",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "meta.structure.dictionary.key.python",
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "storage",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": ["storage.modifier", "keyword.operator.noexcept"],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": ["string", "meta.embedded.assembly"],
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.tag",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.value",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.regexp",
"settings": {
"foreground": "#d16969"
}
},
{
"name": "String interpolation",
"scope": [
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end",
"punctuation.section.embedded"
],
"settings": {
"foreground": "#569cd6"
}
},
{
"name": "Reset JavaScript string interpolation expression",
"scope": ["meta.template.expression"],
"settings": {
"foreground": "#d4d4d4"
}
},
{
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.control",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.operator",
"settings": {
"foreground": "#d4d4d4"
}
},
{
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.cast",
"keyword.operator.sizeof",
"keyword.operator.alignof",
"keyword.operator.typeid",
"keyword.operator.alignas",
"keyword.operator.instanceof",
"keyword.operator.logical.python",
"keyword.operator.wordlike"
],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.other.unit",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "support.function.git-rebase",
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": "constant.sha.git-rebase",
"settings": {
"foreground": "#b5cea8"
}
},
{
"name": "coloring of the Java import and package identifiers",
"scope": [
"storage.modifier.import.java",
"variable.language.wildcard.java",
"storage.modifier.package.java"
],
"settings": {
"foreground": "#d4d4d4"
}
},
{
"name": "this.self",
"scope": "variable.language",
"settings": {
"foreground": "#569cd6"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"newOperator": "#d4d4d4",
"stringLiteral": "#ce9178",
"customLiteral": "#D4D4D4",
"numberLiteral": "#b5cea8"
}
}
@@ -0,0 +1,456 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Dark High Contrast",
"colors": {
"editor.background": "#000000",
"editor.foreground": "#FFFFFF",
"editorIndentGuide.background1": "#FFFFFF",
"editorIndentGuide.activeBackground1": "#FFFFFF",
"sideBarTitle.foreground": "#FFFFFF",
"selection.background": "#008000",
"editor.selectionBackground": "#FFFFFF",
"statusBarItem.remoteBackground": "#00000000",
"ports.iconRunningProcessForeground": "#FFFFFF",
"editorWhitespace.foreground": "#7c7c7c",
"actionBar.toggledBackground": "#383a49"
},
"tokenColors": [
{
"scope": [
"meta.embedded",
"source.groovy.embedded",
"string meta.image.inline.markdown",
"variable.legacy.builtin.python"
],
"settings": {
"foreground": "#FFFFFF"
}
},
{
"scope": "emphasis",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "strong",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#000080"
}
},
{
"scope": "comment",
"settings": {
"foreground": "#7ca668"
}
},
{
"scope": "constant.language",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": [
"constant.numeric",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "constant.regexp",
"settings": {
"foreground": "#b46695"
}
},
{
"scope": "constant.character",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "entity.name.tag",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": ["entity.name.tag.css", "entity.name.tag.less"],
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": [
"entity.other.attribute-name.class.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
],
"settings": {
"foreground": "#d7ba7d"
}
},
{
"scope": "invalid",
"settings": {
"foreground": "#f44747"
}
},
{
"scope": "markup.underline",
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold",
"foreground": "#6796e6"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inserted",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "markup.deleted",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "markup.changed",
"settings": {
"foreground": "#569cd6"
}
},
{
"name": "brackets of XML/HTML tags",
"scope": ["punctuation.definition.tag"],
"settings": {
"foreground": "#808080"
}
},
{
"scope": "meta.preprocessor",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "meta.preprocessor.string",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "meta.preprocessor.numeric",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "meta.structure.dictionary.key.python",
"settings": {
"foreground": "#9cdcfe"
}
},
{
"scope": "storage",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "storage.modifier",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "string",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.tag",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.value",
"settings": {
"foreground": "#ce9178"
}
},
{
"scope": "string.regexp",
"settings": {
"foreground": "#d16969"
}
},
{
"name": "String interpolation",
"scope": [
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end",
"punctuation.section.embedded"
],
"settings": {
"foreground": "#569cd6"
}
},
{
"name": "Reset JavaScript string interpolation expression",
"scope": ["meta.template.expression"],
"settings": {
"foreground": "#ffffff"
}
},
{
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
"foreground": "#d4d4d4"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.control",
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.operator",
"settings": {
"foreground": "#d4d4d4"
}
},
{
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.cast",
"keyword.operator.sizeof",
"keyword.operator.logical.python"
],
"settings": {
"foreground": "#569cd6"
}
},
{
"scope": "keyword.other.unit",
"settings": {
"foreground": "#b5cea8"
}
},
{
"scope": "support.function.git-rebase",
"settings": {
"foreground": "#d4d4d4"
}
},
{
"scope": "constant.sha.git-rebase",
"settings": {
"foreground": "#b5cea8"
}
},
{
"name": "coloring of the Java import and package identifiers",
"scope": [
"storage.modifier.import.java",
"variable.language.wildcard.java",
"storage.modifier.package.java"
],
"settings": {
"foreground": "#d4d4d4"
}
},
{
"name": "coloring of the TS this",
"scope": "variable.language.this",
"settings": {
"foreground": "#569cd6"
}
},
{
"name": "Function declarations",
"scope": [
"entity.name.function",
"support.function",
"support.constant.handlebars",
"source.powershell variable.other.member"
],
"settings": {
"foreground": "#DCDCAA"
}
},
{
"name": "Types declaration and references",
"scope": [
"support.class",
"support.type",
"entity.name.type",
"entity.name.namespace",
"entity.name.scope-resolution",
"entity.name.class",
"storage.type.cs",
"storage.type.generic.cs",
"storage.type.modifier.cs",
"storage.type.variable.cs",
"storage.type.annotation.java",
"storage.type.generic.java",
"storage.type.java",
"storage.type.object.array.java",
"storage.type.primitive.array.java",
"storage.type.primitive.java",
"storage.type.token.java",
"storage.type.groovy",
"storage.type.annotation.groovy",
"storage.type.parameters.groovy",
"storage.type.generic.groovy",
"storage.type.object.array.groovy",
"storage.type.primitive.array.groovy",
"storage.type.primitive.groovy"
],
"settings": {
"foreground": "#4EC9B0"
}
},
{
"name": "Types declaration and references, TS grammar specific",
"scope": [
"meta.type.cast.expr",
"meta.type.new.expr",
"support.constant.math",
"support.constant.dom",
"support.constant.json",
"entity.other.inherited-class",
"punctuation.separator.namespace.ruby"
],
"settings": {
"foreground": "#4EC9B0"
}
},
{
"name": "Control flow / Special keywords",
"scope": [
"keyword.control",
"source.cpp keyword.operator.new",
"source.cpp keyword.operator.delete",
"keyword.other.using",
"keyword.other.directive.using",
"keyword.other.operator"
],
"settings": {
"foreground": "#C586C0"
}
},
{
"name": "Variable and parameter name",
"scope": ["variable", "meta.definition.variable.name", "support.variable"],
"settings": {
"foreground": "#9CDCFE"
}
},
{
"name": "Object keys, TS grammar specific",
"scope": ["meta.object-literal.key"],
"settings": {
"foreground": "#9CDCFE"
}
},
{
"name": "CSS property value",
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#CE9178"
}
},
{
"name": "HC Search Editor context line override",
"scope": "meta.resultLinePrefix.contextLinePrefix.search",
"settings": {
"foreground": "#CBEDCB"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"newOperator": "#FFFFFF",
"stringLiteral": "#ce9178",
"customLiteral": "#DCDCAA",
"numberLiteral": "#b5cea8"
}
}
@@ -0,0 +1,570 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Light High Contrast",
"tokenColors": [
{
"scope": ["meta.embedded", "source.groovy.embedded", "variable.legacy.builtin.python"],
"settings": {
"foreground": "#292929"
}
},
{
"scope": "emphasis",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "strong",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#062F4A"
}
},
{
"scope": "comment",
"settings": {
"foreground": "#515151"
}
},
{
"scope": "constant.language",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": [
"constant.numeric",
"variable.other.enummember",
"keyword.operator.plus.exponent",
"keyword.operator.minus.exponent"
],
"settings": {
"foreground": "#096d48"
}
},
{
"scope": "constant.regexp",
"settings": {
"foreground": "#811F3F"
}
},
{
"scope": "entity.name.tag",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "entity.name.selector",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#264F78"
}
},
{
"scope": [
"entity.other.attribute-name.class.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "invalid",
"settings": {
"foreground": "#B5200D"
}
},
{
"scope": "markup.underline",
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "markup.bold",
"settings": {
"foreground": "#000080",
"fontStyle": "bold"
}
},
{
"scope": "markup.heading",
"settings": {
"foreground": "#0F4A85",
"fontStyle": "bold"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic",
"foreground": "#800080"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inserted",
"settings": {
"foreground": "#096d48"
}
},
{
"scope": "markup.deleted",
"settings": {
"foreground": "#5A5A5A"
}
},
{
"scope": "markup.changed",
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": [
"punctuation.definition.quote.begin.markdown",
"punctuation.definition.list.begin.markdown"
],
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": "markup.inline.raw",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "punctuation.definition.tag",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "meta.preprocessor.string",
"settings": {
"foreground": "#b5200d"
}
},
{
"scope": "meta.preprocessor.numeric",
"settings": {
"foreground": "#096d48"
}
},
{
"scope": "meta.structure.dictionary.key.python",
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": "storage",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": ["storage.modifier", "keyword.operator.noexcept"],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": ["string", "meta.embedded.assembly"],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": [
"string.comment.buffered.block.pug",
"string.quoted.pug",
"string.interpolated.pug",
"string.unquoted.plain.in.yaml",
"string.unquoted.plain.out.yaml",
"string.unquoted.block.yaml",
"string.quoted.single.yaml",
"string.quoted.double.xml",
"string.quoted.single.xml",
"string.unquoted.cdata.xml",
"string.quoted.double.html",
"string.quoted.single.html",
"string.unquoted.html",
"string.quoted.single.handlebars",
"string.quoted.double.handlebars"
],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "string.regexp",
"settings": {
"foreground": "#811F3F"
}
},
{
"scope": [
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end",
"punctuation.section.embedded"
],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": ["meta.template.expression"],
"settings": {
"foreground": "#000000"
}
},
{
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
"foreground": "#264F78"
}
},
{
"scope": ["support.type.property-name.json"],
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "keyword.control",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "keyword.operator",
"settings": {
"foreground": "#000000"
}
},
{
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.cast",
"keyword.operator.sizeof",
"keyword.operator.alignof",
"keyword.operator.typeid",
"keyword.operator.alignas",
"keyword.operator.instanceof",
"keyword.operator.logical.python",
"keyword.operator.wordlike"
],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "keyword.other.unit",
"settings": {
"foreground": "#096d48"
}
},
{
"scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "support.function.git-rebase",
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": "constant.sha.git-rebase",
"settings": {
"foreground": "#096d48"
}
},
{
"scope": [
"storage.modifier.import.java",
"variable.language.wildcard.java",
"storage.modifier.package.java"
],
"settings": {
"foreground": "#000000"
}
},
{
"scope": "variable.language",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": [
"entity.name.function",
"support.function",
"support.constant.handlebars",
"source.powershell variable.other.member",
"entity.name.operator.custom-literal"
],
"settings": {
"foreground": "#5e2cbc"
}
},
{
"scope": [
"support.class",
"support.type",
"entity.name.type",
"entity.name.namespace",
"entity.other.attribute",
"entity.name.scope-resolution",
"entity.name.class",
"storage.type.numeric.go",
"storage.type.byte.go",
"storage.type.boolean.go",
"storage.type.string.go",
"storage.type.uintptr.go",
"storage.type.error.go",
"storage.type.rune.go",
"storage.type.cs",
"storage.type.generic.cs",
"storage.type.modifier.cs",
"storage.type.variable.cs",
"storage.type.annotation.java",
"storage.type.generic.java",
"storage.type.java",
"storage.type.object.array.java",
"storage.type.primitive.array.java",
"storage.type.primitive.java",
"storage.type.token.java",
"storage.type.groovy",
"storage.type.annotation.groovy",
"storage.type.parameters.groovy",
"storage.type.generic.groovy",
"storage.type.object.array.groovy",
"storage.type.primitive.array.groovy",
"storage.type.primitive.groovy"
],
"settings": {
"foreground": "#185E73"
}
},
{
"scope": [
"meta.type.cast.expr",
"meta.type.new.expr",
"support.constant.math",
"support.constant.dom",
"support.constant.json",
"entity.other.inherited-class",
"punctuation.separator.namespace.ruby"
],
"settings": {
"foreground": "#185E73"
}
},
{
"scope": [
"keyword.control",
"source.cpp keyword.operator.new",
"source.cpp keyword.operator.delete",
"keyword.other.using",
"keyword.other.directive.using",
"keyword.other.operator",
"entity.name.operator"
],
"settings": {
"foreground": "#b5200d"
}
},
{
"scope": [
"variable",
"meta.definition.variable.name",
"support.variable",
"entity.name.variable",
"constant.other.placeholder"
],
"settings": {
"foreground": "#001080"
}
},
{
"scope": ["variable.other.constant", "variable.other.enummember"],
"settings": {
"foreground": "#02715D"
}
},
{
"scope": ["meta.object-literal.key"],
"settings": {
"foreground": "#001080"
}
},
{
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#0451A5"
}
},
{
"scope": [
"punctuation.definition.group.regexp",
"punctuation.definition.group.assertion.regexp",
"punctuation.definition.character-class.regexp",
"punctuation.character.set.begin.regexp",
"punctuation.character.set.end.regexp",
"keyword.operator.negation.regexp",
"support.other.parenthesis.regexp"
],
"settings": {
"foreground": "#D16969"
}
},
{
"scope": [
"constant.character.character-class.regexp",
"constant.other.character-class.set.regexp",
"constant.other.character-class.regexp",
"constant.character.set.regexp"
],
"settings": {
"foreground": "#811F3F"
}
},
{
"scope": "keyword.operator.quantifier.regexp",
"settings": {
"foreground": "#000000"
}
},
{
"scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
"settings": {
"foreground": "#EE0000"
}
},
{
"scope": "constant.character",
"settings": {
"foreground": "#0F4A85"
}
},
{
"scope": "constant.character.escape",
"settings": {
"foreground": "#EE0000"
}
},
{
"scope": "entity.name.label",
"settings": {
"foreground": "#000000"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#316BCD"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#CD9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#CD3131"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#800080"
}
}
],
"colors": {
"actionBar.toggledBackground": "#dddddd",
"statusBarItem.remoteBackground": "#FFFFFF",
"statusBarItem.remoteForeground": "#000000"
}
}
@@ -0,0 +1,152 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Light Modern",
"include": "./light_plus.json",
"colors": {
"activityBar.activeBorder": "#005FB8",
"activityBar.background": "#F8F8F8",
"activityBar.border": "#E5E5E5",
"activityBar.foreground": "#1F1F1F",
"activityBar.inactiveForeground": "#616161",
"activityBarBadge.background": "#005FB8",
"activityBarBadge.foreground": "#FFFFFF",
"badge.background": "#CCCCCC",
"badge.foreground": "#3B3B3B",
"button.background": "#005FB8",
"button.border": "#0000001a",
"button.foreground": "#FFFFFF",
"button.hoverBackground": "#0258A8",
"button.secondaryBackground": "#E5E5E5",
"button.secondaryForeground": "#3B3B3B",
"button.secondaryHoverBackground": "#CCCCCC",
"chat.slashCommandBackground": "#ADCEFF7A",
"chat.slashCommandForeground": "#26569E",
"chat.editedFileForeground": "#895503",
"checkbox.background": "#F8F8F8",
"checkbox.border": "#CECECE",
"descriptionForeground": "#3B3B3B",
"dropdown.background": "#FFFFFF",
"dropdown.border": "#CECECE",
"dropdown.foreground": "#3B3B3B",
"dropdown.listBackground": "#FFFFFF",
"editor.background": "#FFFFFF",
"editor.foreground": "#3B3B3B",
"editor.inactiveSelectionBackground": "#E5EBF1",
"editor.selectionHighlightBackground": "#ADD6FF80",
"editorGroup.border": "#E5E5E5",
"editorGroupHeader.tabsBackground": "#F8F8F8",
"editorGroupHeader.tabsBorder": "#E5E5E5",
"editorGutter.addedBackground": "#2EA043",
"editorGutter.deletedBackground": "#F85149",
"editorGutter.modifiedBackground": "#005FB8",
"editorIndentGuide.background1": "#D3D3D3",
"editorLineNumber.activeForeground": "#171184",
"editorLineNumber.foreground": "#6E7681",
"editorOverviewRuler.border": "#E5E5E5",
"editorSuggestWidget.background": "#F8F8F8",
"editorWidget.background": "#F8F8F8",
"errorForeground": "#F85149",
"focusBorder": "#005FB8",
"foreground": "#3B3B3B",
"icon.foreground": "#3B3B3B",
"input.background": "#FFFFFF",
"input.border": "#CECECE",
"input.foreground": "#3B3B3B",
"input.placeholderForeground": "#767676",
"inputOption.activeBackground": "#BED6ED",
"inputOption.activeBorder": "#005FB8",
"inputOption.activeForeground": "#000000",
"keybindingLabel.foreground": "#3B3B3B",
"list.activeSelectionBackground": "#E8E8E8",
"list.activeSelectionForeground": "#000000",
"list.activeSelectionIconForeground": "#000000",
"list.hoverBackground": "#F2F2F2",
"list.focusAndSelectionOutline": "#005FB8",
"menu.border": "#CECECE",
"menu.selectionBackground": "#005FB8",
"menu.selectionForeground": "#ffffff",
"notebook.cellBorderColor": "#E5E5E5",
"notebook.selectedCellBackground": "#C8DDF150",
"notificationCenterHeader.background": "#FFFFFF",
"notificationCenterHeader.foreground": "#3B3B3B",
"notifications.background": "#FFFFFF",
"notifications.border": "#E5E5E5",
"notifications.foreground": "#3B3B3B",
"panel.background": "#F8F8F8",
"panel.border": "#E5E5E5",
"panelInput.border": "#E5E5E5",
"panelTitle.activeBorder": "#005FB8",
"panelTitle.activeForeground": "#3B3B3B",
"panelTitle.inactiveForeground": "#3B3B3B",
"peekViewEditor.matchHighlightBackground": "#BB800966",
"peekViewResult.background": "#FFFFFF",
"peekViewResult.matchHighlightBackground": "#BB800966",
"pickerGroup.border": "#E5E5E5",
"pickerGroup.foreground": "#8B949E",
"ports.iconRunningProcessForeground": "#369432",
"progressBar.background": "#005FB8",
"quickInput.background": "#F8F8F8",
"quickInput.foreground": "#3B3B3B",
"searchEditor.textInputBorder": "#CECECE",
"settings.dropdownBackground": "#FFFFFF",
"settings.dropdownBorder": "#CECECE",
"settings.headerForeground": "#1F1F1F",
"settings.modifiedItemIndicator": "#BB800966",
"settings.numberInputBorder": "#CECECE",
"settings.textInputBorder": "#CECECE",
"sideBar.background": "#F8F8F8",
"sideBar.border": "#E5E5E5",
"sideBar.foreground": "#3B3B3B",
"sideBarSectionHeader.background": "#F8F8F8",
"sideBarSectionHeader.border": "#E5E5E5",
"sideBarSectionHeader.foreground": "#3B3B3B",
"sideBarTitle.foreground": "#3B3B3B",
"statusBar.background": "#F8F8F8",
"statusBar.foreground": "#3B3B3B",
"statusBar.border": "#E5E5E5",
"statusBarItem.hoverBackground": "#1F1F1F11",
"statusBarItem.hoverForeground": "#000000",
"statusBarItem.compactHoverBackground": "#CCCCCC",
"statusBar.debuggingBackground": "#FD716C",
"statusBar.debuggingForeground": "#000000",
"statusBar.focusBorder": "#005FB8",
"statusBar.noFolderBackground": "#F8F8F8",
"statusBarItem.errorBackground": "#C72E0F",
"statusBarItem.focusBorder": "#005FB8",
"statusBarItem.prominentBackground": "#6E768166",
"statusBarItem.remoteBackground": "#005FB8",
"statusBarItem.remoteForeground": "#FFFFFF",
"tab.activeBackground": "#FFFFFF",
"tab.activeBorder": "#F8F8F8",
"tab.activeBorderTop": "#005FB8",
"tab.activeForeground": "#3B3B3B",
"tab.selectedBorderTop": "#68a3da",
"tab.border": "#E5E5E5",
"tab.hoverBackground": "#FFFFFF",
"tab.inactiveBackground": "#F8F8F8",
"tab.inactiveForeground": "#868686",
"tab.lastPinnedBorder": "#D4D4D4",
"tab.unfocusedActiveBorder": "#F8F8F8",
"tab.unfocusedActiveBorderTop": "#E5E5E5",
"tab.unfocusedHoverBackground": "#F8F8F8",
"terminalCursor.foreground": "#005FB8",
"terminal.foreground": "#3B3B3B",
"terminal.inactiveSelectionBackground": "#E5EBF1",
"terminal.tab.activeBorder": "#005FB8",
"textBlockQuote.background": "#F8F8F8",
"textBlockQuote.border": "#E5E5E5",
"textCodeBlock.background": "#F8F8F8",
"textLink.activeForeground": "#005FB8",
"textLink.foreground": "#005FB8",
"textPreformat.foreground": "#3B3B3B",
"textPreformat.background": "#0000001F",
"textSeparator.foreground": "#21262D",
"titleBar.activeBackground": "#F8F8F8",
"titleBar.activeForeground": "#1E1E1E",
"titleBar.border": "#E5E5E5",
"titleBar.inactiveBackground": "#F8F8F8",
"titleBar.inactiveForeground": "#8B949E",
"welcomePage.tileBackground": "#F3F3F3",
"widget.border": "#E5E5E5"
}
}
@@ -0,0 +1,196 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Light+",
"include": "./light_vs.json",
"tokenColors": [
// adds rules to the light vs rules
{
"name": "Function declarations",
"scope": [
"entity.name.function",
"support.function",
"support.constant.handlebars",
"source.powershell variable.other.member",
"entity.name.operator.custom-literal" // See https://en.cppreference.com/w/cpp/language/user_literal
],
"settings": {
"foreground": "#795E26"
}
},
{
"name": "Types declaration and references",
"scope": [
"support.class",
"support.type",
"entity.name.type",
"entity.name.namespace",
"entity.other.attribute",
"entity.name.scope-resolution",
"entity.name.class",
"storage.type.numeric.go",
"storage.type.byte.go",
"storage.type.boolean.go",
"storage.type.string.go",
"storage.type.uintptr.go",
"storage.type.error.go",
"storage.type.rune.go",
"storage.type.cs",
"storage.type.generic.cs",
"storage.type.modifier.cs",
"storage.type.variable.cs",
"storage.type.annotation.java",
"storage.type.generic.java",
"storage.type.java",
"storage.type.object.array.java",
"storage.type.primitive.array.java",
"storage.type.primitive.java",
"storage.type.token.java",
"storage.type.groovy",
"storage.type.annotation.groovy",
"storage.type.parameters.groovy",
"storage.type.generic.groovy",
"storage.type.object.array.groovy",
"storage.type.primitive.array.groovy",
"storage.type.primitive.groovy"
],
"settings": {
"foreground": "#267f99"
}
},
{
"name": "Types declaration and references, TS grammar specific",
"scope": [
"meta.type.cast.expr",
"meta.type.new.expr",
"support.constant.math",
"support.constant.dom",
"support.constant.json",
"entity.other.inherited-class",
"punctuation.separator.namespace.ruby"
],
"settings": {
"foreground": "#267f99"
}
},
{
"name": "Control flow / Special keywords",
"scope": [
"keyword.control",
"source.cpp keyword.operator.new",
"source.cpp keyword.operator.delete",
"keyword.other.using",
"keyword.other.directive.using",
"keyword.other.operator",
"entity.name.operator"
],
"settings": {
"foreground": "#AF00DB"
}
},
{
"name": "Variable and parameter name",
"scope": [
"variable",
"meta.definition.variable.name",
"support.variable",
"entity.name.variable",
"constant.other.placeholder" // placeholders in strings
],
"settings": {
"foreground": "#001080"
}
},
{
"name": "Constants and enums",
"scope": ["variable.other.constant", "variable.other.enummember"],
"settings": {
"foreground": "#0070C1"
}
},
{
"name": "Object keys, TS grammar specific",
"scope": ["meta.object-literal.key"],
"settings": {
"foreground": "#001080"
}
},
{
"name": "CSS property value",
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#0451a5"
}
},
{
"name": "Regular expression groups",
"scope": [
"punctuation.definition.group.regexp",
"punctuation.definition.group.assertion.regexp",
"punctuation.definition.character-class.regexp",
"punctuation.character.set.begin.regexp",
"punctuation.character.set.end.regexp",
"keyword.operator.negation.regexp",
"support.other.parenthesis.regexp"
],
"settings": {
"foreground": "#d16969"
}
},
{
"scope": [
"constant.character.character-class.regexp",
"constant.other.character-class.set.regexp",
"constant.other.character-class.regexp",
"constant.character.set.regexp"
],
"settings": {
"foreground": "#811f3f"
}
},
{
"scope": "keyword.operator.quantifier.regexp",
"settings": {
"foreground": "#000000"
}
},
{
"scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
"settings": {
"foreground": "#EE0000"
}
},
{
"scope": ["constant.character", "constant.other.option"],
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "constant.character.escape",
"settings": {
"foreground": "#EE0000"
}
},
{
"scope": "entity.name.label",
"settings": {
"foreground": "#000000"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"newOperator": "#AF00DB",
"stringLiteral": "#a31515",
"customLiteral": "#795E26",
"numberLiteral": "#098658"
}
}
@@ -0,0 +1,424 @@
{
"$schema": "vscode://schemas/color-theme",
"name": "Light (Visual Studio)",
"colors": {
"checkbox.border": "#919191",
"editor.background": "#FFFFFF",
"editor.foreground": "#000000",
"editor.inactiveSelectionBackground": "#E5EBF1",
"editorIndentGuide.background1": "#D3D3D3",
"editorIndentGuide.activeBackground1": "#939393",
"editor.selectionHighlightBackground": "#ADD6FF80",
"editorSuggestWidget.background": "#F3F3F3",
"activityBarBadge.background": "#007ACC",
"sideBarTitle.foreground": "#6F6F6F",
"list.hoverBackground": "#E8E8E8",
"menu.border": "#D4D4D4",
"input.placeholderForeground": "#767676",
"searchEditor.textInputBorder": "#CECECE",
"settings.textInputBorder": "#CECECE",
"settings.numberInputBorder": "#CECECE",
"statusBarItem.remoteForeground": "#FFF",
"statusBarItem.remoteBackground": "#16825D",
"ports.iconRunningProcessForeground": "#369432",
"sideBarSectionHeader.background": "#0000",
"sideBarSectionHeader.border": "#61616130",
"tab.selectedForeground": "#333333b3",
"tab.selectedBackground": "#ffffffa5",
"tab.lastPinnedBorder": "#61616130",
"notebook.cellBorderColor": "#E8E8E8",
"notebook.selectedCellBackground": "#c8ddf150",
"statusBarItem.errorBackground": "#c72e0f",
"list.activeSelectionIconForeground": "#FFF",
"list.focusAndSelectionOutline": "#90C2F9",
"terminal.inactiveSelectionBackground": "#E5EBF1",
"widget.border": "#d4d4d4",
"actionBar.toggledBackground": "#dddddd",
"diffEditor.unchangedRegionBackground": "#f8f8f8",
"agentsNewSessionButton.border": "#D8D8D8",
"agentsChatInput.border": "#D8D8D8"
},
"tokenColors": [
{
"scope": [
"meta.embedded",
"source.groovy.embedded",
"string meta.image.inline.markdown",
"variable.legacy.builtin.python"
],
"settings": {
"foreground": "#000000ff"
}
},
{
"scope": "emphasis",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "strong",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "meta.diff.header",
"settings": {
"foreground": "#000080"
}
},
{
"scope": "comment",
"settings": {
"foreground": "#008000"
}
},
{
"scope": "constant.language",
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": [
"constant.numeric",
"variable.other.enummember",
"keyword.operator.plus.exponent",
"keyword.operator.minus.exponent"
],
"settings": {
"foreground": "#098658"
}
},
{
"scope": "constant.regexp",
"settings": {
"foreground": "#811f3f"
}
},
{
"name": "css tags in selectors, xml tags",
"scope": "entity.name.tag",
"settings": {
"foreground": "#800000"
}
},
{
"scope": "entity.name.selector",
"settings": {
"foreground": "#800000"
}
},
{
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#e50000"
}
},
{
"scope": [
"entity.other.attribute-name.class.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
],
"settings": {
"foreground": "#800000"
}
},
{
"scope": "invalid",
"settings": {
"foreground": "#cd3131"
}
},
{
"scope": "markup.underline",
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold",
"foreground": "#000080"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold",
"foreground": "#800000"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic",
"foreground": "#800080"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "markup.inserted",
"settings": {
"foreground": "#098658"
}
},
{
"scope": "markup.deleted",
"settings": {
"foreground": "#a31515"
}
},
{
"scope": "markup.changed",
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": [
"punctuation.definition.quote.begin.markdown",
"punctuation.definition.list.begin.markdown"
],
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": "markup.inline.raw",
"settings": {
"foreground": "#800000"
}
},
{
"name": "brackets of XML/HTML tags",
"scope": "punctuation.definition.tag",
"settings": {
"foreground": "#800000"
}
},
{
"scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "meta.preprocessor.string",
"settings": {
"foreground": "#a31515"
}
},
{
"scope": "meta.preprocessor.numeric",
"settings": {
"foreground": "#098658"
}
},
{
"scope": "meta.structure.dictionary.key.python",
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": "storage",
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": ["storage.modifier", "keyword.operator.noexcept"],
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": ["string", "meta.embedded.assembly"],
"settings": {
"foreground": "#a31515"
}
},
{
"scope": [
"string.comment.buffered.block.pug",
"string.quoted.pug",
"string.interpolated.pug",
"string.unquoted.plain.in.yaml",
"string.unquoted.plain.out.yaml",
"string.unquoted.block.yaml",
"string.quoted.single.yaml",
"string.quoted.double.xml",
"string.quoted.single.xml",
"string.unquoted.cdata.xml",
"string.quoted.double.html",
"string.quoted.single.html",
"string.unquoted.html",
"string.quoted.single.handlebars",
"string.quoted.double.handlebars"
],
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "string.regexp",
"settings": {
"foreground": "#811f3f"
}
},
{
"name": "String interpolation",
"scope": [
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end",
"punctuation.section.embedded"
],
"settings": {
"foreground": "#0000ff"
}
},
{
"name": "Reset JavaScript string interpolation expression",
"scope": ["meta.template.expression"],
"settings": {
"foreground": "#000000"
}
},
{
"scope": [
"support.constant.property-value",
"support.constant.font-name",
"support.constant.media-type",
"support.constant.media",
"constant.other.color.rgb-value",
"constant.other.rgb-value",
"support.constant.color"
],
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
"foreground": "#e50000"
}
},
{
"scope": ["support.type.property-name.json"],
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": "keyword",
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "keyword.control",
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "keyword.operator",
"settings": {
"foreground": "#000000"
}
},
{
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.cast",
"keyword.operator.sizeof",
"keyword.operator.alignof",
"keyword.operator.typeid",
"keyword.operator.alignas",
"keyword.operator.instanceof",
"keyword.operator.logical.python",
"keyword.operator.wordlike"
],
"settings": {
"foreground": "#0000ff"
}
},
{
"scope": "keyword.other.unit",
"settings": {
"foreground": "#098658"
}
},
{
"scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
"settings": {
"foreground": "#800000"
}
},
{
"scope": "support.function.git-rebase",
"settings": {
"foreground": "#0451a5"
}
},
{
"scope": "constant.sha.git-rebase",
"settings": {
"foreground": "#098658"
}
},
{
"name": "coloring of the Java import and package identifiers",
"scope": [
"storage.modifier.import.java",
"variable.language.wildcard.java",
"storage.modifier.package.java"
],
"settings": {
"foreground": "#000000"
}
},
{
"name": "this.self",
"scope": "variable.language",
"settings": {
"foreground": "#0000ff"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"newOperator": "#0000ff",
"stringLiteral": "#a31515",
"customLiteral": "#000000",
"numberLiteral": "#098658"
}
}
@@ -0,0 +1,482 @@
// This theme's colors are based on the original Monokai:
// #1e1f1c (tab well, borders)
// #272822 (editor background)
// #414339 (selection)
// #75715e (focus)
// #f8f8f2 (editor foreground)
{
"type": "dark",
"colors": {
"dropdown.background": "#414339",
"list.activeSelectionBackground": "#75715E",
"quickInputList.focusBackground": "#414339",
"dropdown.listBackground": "#1e1f1c",
"list.inactiveSelectionBackground": "#414339",
"list.hoverBackground": "#3e3d32",
"list.dropBackground": "#414339",
"list.highlightForeground": "#f8f8f2",
"button.background": "#75715E",
"editor.background": "#272822",
"editor.foreground": "#f8f8f2",
"selection.background": "#878b9180",
"editor.selectionHighlightBackground": "#575b6180",
"editor.selectionBackground": "#878b9180",
"minimap.selectionHighlight": "#878b9180",
"editor.wordHighlightBackground": "#4a4a7680",
"editor.wordHighlightStrongBackground": "#6a6a9680",
"editor.lineHighlightBackground": "#3e3d32",
"editorLineNumber.activeForeground": "#c2c2bf",
"editorCursor.foreground": "#f8f8f0",
"editorWhitespace.foreground": "#464741",
"editorIndentGuide.background": "#464741",
"editorIndentGuide.activeBackground": "#767771",
"editorGroupHeader.tabsBackground": "#1e1f1c",
"editorGroup.dropBackground": "#41433980",
"tab.inactiveBackground": "#34352f",
"tab.border": "#1e1f1c",
"tab.inactiveForeground": "#ccccc7", // needs to be bright so it's readable when another editor group is focused
"tab.lastPinnedBorder": "#414339",
"widget.shadow": "#00000098",
"progressBar.background": "#75715E",
"badge.background": "#75715E",
"badge.foreground": "#f8f8f2",
"editorLineNumber.foreground": "#90908a",
"panelTitle.activeForeground": "#f8f8f2",
"panelTitle.activeBorder": "#75715E",
"panelTitle.inactiveForeground": "#75715E",
"panel.border": "#414339",
"settings.focusedRowBackground": "#4143395A",
"titleBar.activeBackground": "#1e1f1c",
"statusBar.background": "#414339",
"statusBar.noFolderBackground": "#414339",
"statusBar.debuggingBackground": "#75715E",
"statusBarItem.remoteBackground": "#AC6218",
"ports.iconRunningProcessForeground": "#ccccc7",
"activityBar.background": "#272822",
"activityBar.foreground": "#f8f8f2",
"sideBar.background": "#1e1f1c",
"sideBarSectionHeader.background": "#272822",
"menu.background": "#1e1f1c",
"menu.foreground": "#cccccc",
"pickerGroup.foreground": "#75715E",
"input.background": "#414339",
"inputOption.activeBorder": "#75715E",
"focusBorder": "#99947c",
"editorWidget.background": "#1e1f1c",
"debugToolBar.background": "#1e1f1c",
"diffEditor.insertedTextBackground": "#4b661680", // middle of #272822 and #a6e22e
"diffEditor.removedTextBackground": "#90274A70", // middle of #272822 and #f92672
"inputValidation.errorBackground": "#90274A", // middle of #272822 and #f92672
"inputValidation.errorBorder": "#f92672",
"inputValidation.warningBackground": "#848528", // middle of #272822 and #e2e22e
"inputValidation.warningBorder": "#e2e22e",
"inputValidation.infoBackground": "#546190", // middle of #272822 and #819aff
"inputValidation.infoBorder": "#819aff",
"editorHoverWidget.background": "#414339",
"editorHoverWidget.border": "#75715E",
"editorSuggestWidget.background": "#272822",
"editorSuggestWidget.border": "#75715E",
"editorGroup.border": "#34352f",
"peekView.border": "#75715E",
"peekViewEditor.background": "#272822",
"peekViewResult.background": "#1e1f1c",
"peekViewTitle.background": "#1e1f1c",
"peekViewResult.selectionBackground": "#414339",
"peekViewResult.matchHighlightBackground": "#75715E",
"peekViewEditor.matchHighlightBackground": "#75715E",
"terminal.ansiBlack": "#333333",
"terminal.ansiRed": "#C4265E", // the bright color with ~75% transparent on the background
"terminal.ansiGreen": "#86B42B",
"terminal.ansiYellow": "#B3B42B",
"terminal.ansiBlue": "#6A7EC8",
"terminal.ansiMagenta": "#8C6BC8",
"terminal.ansiCyan": "#56ADBC",
"terminal.ansiWhite": "#e3e3dd",
"terminal.ansiBrightBlack": "#666666",
"terminal.ansiBrightRed": "#f92672",
"terminal.ansiBrightGreen": "#A6E22E",
"terminal.ansiBrightYellow": "#e2e22e", // hue shifted #A6E22E
"terminal.ansiBrightBlue": "#819aff", // hue shifted #AE81FF
"terminal.ansiBrightMagenta": "#AE81FF",
"terminal.ansiBrightCyan": "#66D9EF",
"terminal.ansiBrightWhite": "#f8f8f2"
},
"tokenColors": [
{
"settings": {
"foreground": "#F8F8F2"
}
},
{
"scope": [
"meta.embedded",
"source.groovy.embedded",
"string meta.image.inline.markdown",
"variable.legacy.builtin.python"
],
"settings": {
"foreground": "#F8F8F2"
}
},
{
"name": "Comment",
"scope": "comment",
"settings": {
"foreground": "#88846f"
}
},
{
"name": "String",
"scope": "string",
"settings": {
"foreground": "#E6DB74"
}
},
{
"name": "Template Definition",
"scope": ["punctuation.definition.template-expression", "punctuation.section.embedded"],
"settings": {
"foreground": "#F92672"
}
},
{
"name": "Reset JavaScript string interpolation expression",
"scope": ["meta.template.expression"],
"settings": {
"foreground": "#F8F8F2"
}
},
{
"name": "Number",
"scope": "constant.numeric",
"settings": {
"foreground": "#AE81FF"
}
},
{
"name": "Built-in constant",
"scope": "constant.language",
"settings": {
"foreground": "#AE81FF"
}
},
{
"name": "User-defined constant",
"scope": "constant.character, constant.other",
"settings": {
"foreground": "#AE81FF"
}
},
{
"name": "Variable",
"scope": "variable",
"settings": {
"fontStyle": "",
"foreground": "#F8F8F2"
}
},
{
"name": "Keyword",
"scope": "keyword",
"settings": {
"foreground": "#F92672"
}
},
{
"name": "Storage",
"scope": "storage",
"settings": {
"fontStyle": "",
"foreground": "#F92672"
}
},
{
"name": "Storage type",
"scope": "storage.type",
"settings": {
"fontStyle": "italic",
"foreground": "#66D9EF"
}
},
{
"name": "Class name",
"scope": "entity.name.type, entity.name.class, entity.name.namespace, entity.name.scope-resolution",
"settings": {
"fontStyle": "underline",
"foreground": "#A6E22E"
}
},
{
"name": "Inherited class",
"scope": ["entity.other.inherited-class", "punctuation.separator.namespace.ruby"],
"settings": {
"fontStyle": "italic underline",
"foreground": "#A6E22E"
}
},
{
"name": "Function name",
"scope": "entity.name.function",
"settings": {
"fontStyle": "",
"foreground": "#A6E22E"
}
},
{
"name": "Function argument",
"scope": "variable.parameter",
"settings": {
"fontStyle": "italic",
"foreground": "#FD971F"
}
},
{
"name": "Tag name",
"scope": "entity.name.tag",
"settings": {
"fontStyle": "",
"foreground": "#F92672"
}
},
{
"name": "Tag attribute",
"scope": "entity.other.attribute-name",
"settings": {
"fontStyle": "",
"foreground": "#A6E22E"
}
},
{
"name": "Library function",
"scope": "support.function",
"settings": {
"fontStyle": "",
"foreground": "#66D9EF"
}
},
{
"name": "Library constant",
"scope": "support.constant",
"settings": {
"fontStyle": "",
"foreground": "#66D9EF"
}
},
{
"name": "Library class/type",
"scope": "support.type, support.class",
"settings": {
"fontStyle": "italic",
"foreground": "#66D9EF"
}
},
{
"name": "Library variable",
"scope": "support.other.variable",
"settings": {
"fontStyle": ""
}
},
{
"name": "Invalid",
"scope": "invalid",
"settings": {
"fontStyle": "",
"foreground": "#F44747"
}
},
{
"name": "Invalid deprecated",
"scope": "invalid.deprecated",
"settings": {
"foreground": "#F44747"
}
},
{
"name": "JSON String",
"scope": "meta.structure.dictionary.json string.quoted.double.json",
"settings": {
"foreground": "#CFCFC2"
}
},
{
"name": "diff.header",
"scope": "meta.diff, meta.diff.header",
"settings": {
"foreground": "#75715E"
}
},
{
"name": "diff.deleted",
"scope": "markup.deleted",
"settings": {
"foreground": "#F92672"
}
},
{
"name": "diff.inserted",
"scope": "markup.inserted",
"settings": {
"foreground": "#A6E22E"
}
},
{
"name": "diff.changed",
"scope": "markup.changed",
"settings": {
"foreground": "#E6DB74"
}
},
{
"scope": "constant.numeric.line-number.find-in-files - match",
"settings": {
"foreground": "#AE81FFA0"
}
},
{
"scope": "entity.name.filename.find-in-files",
"settings": {
"foreground": "#E6DB74"
}
},
{
"name": "Markup Quote",
"scope": "markup.quote",
"settings": {
"foreground": "#F92672"
}
},
{
"name": "Markup Lists",
"scope": "markup.list",
"settings": {
"foreground": "#E6DB74"
}
},
{
"name": "Markup Styling",
"scope": "markup.bold, markup.italic",
"settings": {
"foreground": "#66D9EF"
}
},
{
"name": "Markup Inline",
"scope": "markup.inline.raw",
"settings": {
"fontStyle": "",
"foreground": "#FD971F"
}
},
{
"name": "Markup Headings",
"scope": "markup.heading",
"settings": {
"foreground": "#A6E22E"
}
},
{
"name": "Markup Setext Header",
"scope": "markup.heading.setext",
"settings": {
"foreground": "#A6E22E",
"fontStyle": "bold"
}
},
{
"name": "Markup Headings",
"scope": "markup.heading.markdown",
"settings": {
"fontStyle": "bold"
}
},
{
"name": "Markdown Quote",
"scope": "markup.quote.markdown",
"settings": {
"fontStyle": "italic",
"foreground": "#75715E"
}
},
{
"name": "Markdown Bold",
"scope": "markup.bold.markdown",
"settings": {
"fontStyle": "bold"
}
},
{
"name": "Markdown Link Title/Description",
"scope": "string.other.link.title.markdown,string.other.link.description.markdown",
"settings": {
"foreground": "#AE81FF"
}
},
{
"name": "Markdown Underline Link/Image",
"scope": "markup.underline.link.markdown,markup.underline.link.image.markdown",
"settings": {
"foreground": "#E6DB74"
}
},
{
"name": "Markdown Emphasis",
"scope": "markup.italic.markdown",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"name": "Markdown Punctuation Definition Link",
"scope": "markup.list.unnumbered.markdown, markup.list.numbered.markdown",
"settings": {
"foreground": "#f8f8f2"
}
},
{
"name": "Markdown List Punctuation",
"scope": ["punctuation.definition.list.begin.markdown"],
"settings": {
"foreground": "#A6E22E"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#6796e6"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#cd9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#f44747"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#b267e6"
}
},
{
"name": "this.self",
"scope": "variable.language",
"settings": {
"foreground": "#FD971F"
}
}
],
"semanticHighlighting": true
}
@@ -0,0 +1,473 @@
{
"name": "Solarized (light)",
"tokenColors": [
{
"settings": {
"foreground": "#657B83"
}
},
{
"scope": [
"meta.embedded",
"source.groovy.embedded",
"string meta.image.inline.markdown",
"variable.legacy.builtin.python"
],
"settings": {
"foreground": "#657B83"
}
},
{
"name": "Comment",
"scope": "comment",
"settings": {
"fontStyle": "italic",
"foreground": "#93A1A1"
}
},
{
"name": "String",
"scope": "string",
"settings": {
"foreground": "#2AA198"
}
},
{
"name": "Regexp",
"scope": "string.regexp",
"settings": {
"foreground": "#DC322F"
}
},
{
"name": "Number",
"scope": "constant.numeric",
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Variable",
"scope": ["variable.language", "variable.other"],
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Keyword",
"scope": "keyword",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Storage",
"scope": "storage",
"settings": {
"fontStyle": "bold",
"foreground": "#586E75"
}
},
{
"name": "Class name",
"scope": [
"entity.name.class",
"entity.name.type",
"entity.name.namespace",
"entity.name.scope-resolution"
],
"settings": {
"fontStyle": "",
"foreground": "#CB4B16"
}
},
{
"name": "Function name",
"scope": "entity.name.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Variable start",
"scope": "punctuation.definition.variable",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Embedded code markers",
"scope": ["punctuation.section.embedded.begin", "punctuation.section.embedded.end"],
"settings": {
"foreground": "#DC322F"
}
},
{
"name": "Built-in constant",
"scope": ["constant.language", "meta.preprocessor"],
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Support.construct",
"scope": ["support.function.construct", "keyword.other.new"],
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "User-defined constant",
"scope": ["constant.character", "constant.other"],
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Inherited class",
"scope": ["entity.other.inherited-class", "punctuation.separator.namespace.ruby"],
"settings": {
"foreground": "#6C71C4"
}
},
{
"name": "Function argument",
"scope": "variable.parameter",
"settings": {}
},
{
"name": "Tag name",
"scope": "entity.name.tag",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Tag start/end",
"scope": "punctuation.definition.tag",
"settings": {
"foreground": "#93A1A1"
}
},
{
"name": "Tag attribute",
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#93A1A1"
}
},
{
"name": "Library function",
"scope": "support.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Continuation",
"scope": "punctuation.separator.continuation",
"settings": {
"foreground": "#DC322F"
}
},
{
"name": "Library constant",
"scope": ["support.constant", "support.variable"],
"settings": {}
},
{
"name": "Library class/type",
"scope": ["support.type", "support.class"],
"settings": {
"foreground": "#859900"
}
},
{
"name": "Library Exception",
"scope": "support.type.exception",
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Library variable",
"scope": "support.other.variable",
"settings": {}
},
{
"name": "Invalid",
"scope": "invalid",
"settings": {
"foreground": "#DC322F"
}
},
{
"name": "diff: header",
"scope": ["meta.diff", "meta.diff.header"],
"settings": {
"fontStyle": "italic",
"foreground": "#268BD2"
}
},
{
"name": "diff: deleted",
"scope": "markup.deleted",
"settings": {
"fontStyle": "",
"foreground": "#DC322F"
}
},
{
"name": "diff: changed",
"scope": "markup.changed",
"settings": {
"fontStyle": "",
"foreground": "#CB4B16"
}
},
{
"name": "diff: inserted",
"scope": "markup.inserted",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Markup Quote",
"scope": "markup.quote",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Markup Lists",
"scope": "markup.list",
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Markup Styling",
"scope": ["markup.bold", "markup.italic"],
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Markup: Strong",
"scope": "markup.bold",
"settings": {
"fontStyle": "bold"
}
},
{
"name": "Markup: Emphasis",
"scope": "markup.italic",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "markup.strikethrough",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"name": "Markup Inline",
"scope": "markup.inline.raw",
"settings": {
"fontStyle": "",
"foreground": "#2AA198"
}
},
{
"name": "Markup Headings",
"scope": "markup.heading",
"settings": {
"fontStyle": "bold",
"foreground": "#268BD2"
}
},
{
"name": "Markup Setext Header",
"scope": "markup.heading.setext",
"settings": {
"fontStyle": "",
"foreground": "#268BD2"
}
}
],
"colors": {
// Base
// "foreground": "",
"focusBorder": "#b49471",
// "contrastActiveBorder": "",
// "contrastBorder": "",
// "widget.shadow": "",
"input.background": "#DDD6C1",
// "input.border": "",
"input.foreground": "#586E75",
"input.placeholderForeground": "#586E75AA",
"inputOption.activeBorder": "#D3AF86",
// "inputValidation.infoBorder": "",
// "inputValidation.infoBackground": "",
// "inputValidation.warningBackground": "",
// "inputValidation.warningBorder": "",
// "inputValidation.errorBackground": "",
// "inputValidation.errorBorder": "",
"badge.background": "#B58900AA",
"progressBar.background": "#B58900",
"dropdown.background": "#EEE8D5",
// "dropdown.foreground": "",
"dropdown.border": "#D3AF86",
"button.background": "#AC9D57",
// "button.foreground": "",
"selection.background": "#878b9180",
"list.activeSelectionBackground": "#DFCA88",
"list.activeSelectionForeground": "#6C6C6C",
"quickInputList.focusBackground": "#DFCA8866",
"list.hoverBackground": "#DFCA8844",
"list.inactiveSelectionBackground": "#D1CBB8",
"list.highlightForeground": "#B58900",
// "scrollbar.shadow": "",
// "scrollbarSlider.activeBackground": "",
// "scrollbarSlider.background": "",
// "scrollbarSlider.hoverBackground": "",
// Editor
"editor.background": "#FDF6E3",
"editor.foreground": "#657B83",
"notebook.cellEditorBackground": "#F7F0E0",
"editorWidget.background": "#EEE8D5",
"editorCursor.foreground": "#657B83",
"editorWhitespace.foreground": "#586E7580",
"editor.lineHighlightBackground": "#EEE8D5",
"editor.selectionBackground": "#EEE8D5",
"minimap.selectionHighlight": "#EEE8D5",
"editorIndentGuide.background": "#586E7580",
"editorIndentGuide.activeBackground": "#081E2580",
"editorHoverWidget.background": "#CCC4B0",
"editorLineNumber.activeForeground": "#567983",
// "editorHoverWidget.border": "",
// "editorLineNumber.foreground": "",
// "editorMarkerNavigation.background": "",
// "editorMarkerNavigationError.background": "",
// "editorMarkerNavigationWarning.background": "",
// "editorLink.activeForeground": "",
// "editor.findMatchBackground": "",
// "editor.findMatchHighlightBackground": "",
// "editor.findRangeHighlightBackground": "",
// "editor.hoverHighlightBackground": "",
// "editor.inactiveSelectionBackground": "",
// "editor.lineHighlightBorder": "",
// "editor.rangeHighlightBackground": "",
// "editor.selectionHighlightBackground": "",
// "editor.wordHighlightBackground": "",
// "editor.wordHighlightStrongBackground": "",
// Editor: Suggest Widget
// "editorSuggestWidget.background": "",
// "editorSuggestWidget.border": "",
// "editorSuggestWidget.foreground": "",
// "editorSuggestWidget.highlightForeground": "",
// "editorSuggestWidget.selectedBackground": "",
// Editor: Peek View
"peekViewResult.background": "#EEE8D5",
// "peekViewResult.lineForeground": "",
// "peekViewResult.selectionBackground": "",
// "peekViewResult.selectionForeground": "",
"peekViewEditor.background": "#FFFBF2",
"peekViewTitle.background": "#EEE8D5",
"peekView.border": "#B58900",
"peekViewEditor.matchHighlightBackground": "#7744AA40",
// "peekViewResult.fileForeground": "",
// "peekViewResult.matchHighlightBackground": "",
// "peekViewTitleLabel.foreground": "",
// "peekViewTitleDescription.foreground": "",
// Editor: Diff
// "diffEditor.insertedTextBackground": "",
// "diffEditor.insertedTextBorder": "",
// "diffEditor.removedTextBackground": "",
// "diffEditor.removedTextBorder": "",
// Workbench: Title
"titleBar.activeBackground": "#EEE8D5",
// "titleBar.activeForeground": "",
// "titleBar.inactiveBackground": "",
// "titleBar.inactiveForeground": "",
// Workbench: Editors
// "editorGroupHeader.noTabsBackground": "",
"editorGroup.border": "#DDD6C1",
"editorGroup.dropBackground": "#DDD6C1AA",
"editorGroupHeader.tabsBackground": "#D9D2C2",
// Workbench: Tabs
"tab.border": "#DDD6C1",
"tab.activeBackground": "#FDF6E3",
"tab.inactiveForeground": "#586E75",
"tab.inactiveBackground": "#D3CBB7",
"tab.activeModifiedBorder": "#cb4b16",
// "tab.activeBackground": "",
// "tab.activeForeground": "",
// "tab.inactiveForeground": "",
"tab.lastPinnedBorder": "#FDF6E3",
// Workbench: Activity Bar
"activityBar.background": "#DDD6C1",
"activityBar.foreground": "#584c27",
"activityBarBadge.background": "#B58900",
// "activityBarBadge.foreground": "",
// Workbench: Panel
// "panel.background": "",
"panel.border": "#DDD6C1",
// "panelTitle.activeBorder": "",
// "panelTitle.activeForeground": "",
// "panelTitle.inactiveForeground": "",
// Workbench: Side Bar
"sideBar.background": "#EEE8D5",
"sideBarTitle.foreground": "#586E75",
// "sideBarSectionHeader.background": "",
// Workbench: Status Bar
"statusBar.foreground": "#586E75",
"statusBar.background": "#EEE8D5",
"statusBar.debuggingBackground": "#EEE8D5",
"statusBar.noFolderBackground": "#EEE8D5",
// "statusBar.foreground": "",
"statusBarItem.remoteBackground": "#AC9D57",
"ports.iconRunningProcessForeground": "#2AA19899",
"statusBarItem.prominentBackground": "#DDD6C1",
"statusBarItem.prominentHoverBackground": "#DDD6C199",
// "statusBarItem.activeBackground": "",
// "statusBarItem.hoverBackground": "",
// Workbench: Debug
"debugToolBar.background": "#DDD6C1",
"debugExceptionWidget.background": "#DDD6C1",
"debugExceptionWidget.border": "#AB395B",
// Workbench: Quick Open
"pickerGroup.border": "#2AA19899",
"pickerGroup.foreground": "#2AA19899",
// Extensions
"extensionButton.prominentBackground": "#b58900",
"extensionButton.prominentHoverBackground": "#584c27aa",
// Workbench: Terminal
// Colors sourced from the official palette http://ethanschoonover.com/solarized
"terminal.ansiBlack": "#073642",
"terminal.ansiRed": "#dc322f",
"terminal.ansiGreen": "#859900",
"terminal.ansiYellow": "#b58900",
"terminal.ansiBlue": "#268bd2",
"terminal.ansiMagenta": "#d33682",
"terminal.ansiCyan": "#2aa198",
"terminal.ansiWhite": "#eee8d5",
"terminal.ansiBrightBlack": "#002b36",
"terminal.ansiBrightRed": "#cb4b16",
"terminal.ansiBrightGreen": "#586e75",
"terminal.ansiBrightYellow": "#657b83",
"terminal.ansiBrightBlue": "#839496",
"terminal.ansiBrightMagenta": "#6c71c4",
"terminal.ansiBrightCyan": "#93a1a1",
"terminal.ansiBrightWhite": "#fdf6e3",
// Set terminal background explicitly, otherwise selection becomes invisible when the
// terminal is in the side bar
"terminal.background": "#FDF6E3",
// Interactive Playground
"walkThrough.embeddedEditorBackground": "#00000014"
},
"semanticHighlighting": true
}
+137
View File
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>VS Code Theme Sequence</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#vscode-theme-sequence {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="vscode-theme-sequence"
data-composition-id="vscode-theme-sequence"
data-start="0"
data-width="1920"
data-height="1080"
>
<div
id="clip-light-2026"
data-composition-id="vscode-light-2026"
data-composition-src="compositions/light-2026.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-dark-2026"
data-composition-id="vscode-dark-2026"
data-composition-src="compositions/dark-2026.html"
data-start="11"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-dark-plus"
data-composition-id="vscode-dark-plus"
data-composition-src="compositions/dark-plus.html"
data-start="22"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-dark-modern"
data-composition-id="vscode-dark-modern"
data-composition-src="compositions/dark-modern.html"
data-start="33"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-light-plus"
data-composition-id="vscode-light-plus"
data-composition-src="compositions/light-plus.html"
data-start="44"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-light-modern"
data-composition-id="vscode-light-modern"
data-composition-src="compositions/light-modern.html"
data-start="55"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-visual-studio-dark"
data-composition-id="vscode-visual-studio-dark"
data-composition-src="compositions/visual-studio-dark.html"
data-start="66"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-visual-studio-light"
data-composition-id="vscode-visual-studio-light"
data-composition-src="compositions/visual-studio-light.html"
data-start="77"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-high-contrast"
data-composition-id="vscode-high-contrast"
data-composition-src="compositions/high-contrast.html"
data-start="88"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-high-contrast-light"
data-composition-id="vscode-high-contrast-light"
data-composition-src="compositions/high-contrast-light.html"
data-start="99"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-solarized-light"
data-composition-id="vscode-solarized-light"
data-composition-src="compositions/solarized-light.html"
data-start="110"
data-duration="11"
data-track-index="1"
></div>
<div
id="clip-monokai"
data-composition-id="vscode-monokai"
data-composition-src="compositions/monokai.html"
data-start="121"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["vscode-theme-sequence"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,115 @@
{
"$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
"name": "vscode-theme-visualizer",
"type": "hyperframes:example",
"title": "VS Code Theme Visualizer",
"description": "Faithful VS Code workbench recreation with per-character typing animation across 12 built-in themes. Activity bar, sidebar, tabs, editor, terminal, and status bar — all driven by official theme JSON files.",
"tags": ["code", "developer", "showcase", "vscode", "themes"],
"dimensions": {
"width": 1920,
"height": 1080
},
"duration": 132,
"files": [
{
"path": "index.html",
"target": "index.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/dark-2026.html",
"target": "compositions/dark-2026.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/dark-modern.html",
"target": "compositions/dark-modern.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/dark-plus.html",
"target": "compositions/dark-plus.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/high-contrast-light.html",
"target": "compositions/high-contrast-light.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/high-contrast.html",
"target": "compositions/high-contrast.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/light-2026.html",
"target": "compositions/light-2026.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/light-modern.html",
"target": "compositions/light-modern.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/light-plus.html",
"target": "compositions/light-plus.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/monokai.html",
"target": "compositions/monokai.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/solarized-light.html",
"target": "compositions/solarized-light.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/visual-studio-dark.html",
"target": "compositions/visual-studio-dark.html",
"type": "hyperframes:composition"
},
{
"path": "compositions/visual-studio-light.html",
"target": "compositions/visual-studio-light.html",
"type": "hyperframes:composition"
},
{
"path": "assets/background.jpeg",
"target": "assets/background.jpeg",
"type": "hyperframes:asset"
},
{
"path": "assets/vscode-sequence.css",
"target": "assets/vscode-sequence.css",
"type": "hyperframes:style"
},
{
"path": "assets/vscode-sequence-runtime.js",
"target": "assets/vscode-sequence-runtime.js",
"type": "hyperframes:asset"
},
{
"path": "assets/vscode-theme-registry.js",
"target": "assets/vscode-theme-registry.js",
"type": "hyperframes:asset"
},
{
"path": "scripts/build-compositions.mjs",
"target": "scripts/build-compositions.mjs",
"type": "hyperframes:asset"
},
{
"path": "scripts/build-theme-registry.mjs",
"target": "scripts/build-theme-registry.mjs",
"type": "hyperframes:asset"
},
{
"path": "DESIGN.md",
"target": "DESIGN.md",
"type": "hyperframes:asset"
}
]
}
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Dark 2026 Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-dark-2026 {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-dark-2026"
data-composition-id="render-dark-2026"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-dark-2026"
data-composition-id="vscode-dark-2026"
data-composition-src="../compositions/dark-2026.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-dark-2026"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Dark Modern Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-dark-modern {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-dark-modern"
data-composition-id="render-dark-modern"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-dark-modern"
data-composition-id="vscode-dark-modern"
data-composition-src="../compositions/dark-modern.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-dark-modern"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Dark+ Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-dark-plus {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-dark-plus"
data-composition-id="render-dark-plus"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-dark-plus"
data-composition-id="vscode-dark-plus"
data-composition-src="../compositions/dark-plus.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-dark-plus"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Default High Contrast Light Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-high-contrast-light {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-high-contrast-light"
data-composition-id="render-high-contrast-light"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-high-contrast-light"
data-composition-id="vscode-high-contrast-light"
data-composition-src="../compositions/high-contrast-light.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-high-contrast-light"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Default High Contrast Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-high-contrast {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-high-contrast"
data-composition-id="render-high-contrast"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-high-contrast"
data-composition-id="vscode-high-contrast"
data-composition-src="../compositions/high-contrast.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-high-contrast"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Light 2026 Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-light-2026 {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-light-2026"
data-composition-id="render-light-2026"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-light-2026"
data-composition-id="vscode-light-2026"
data-composition-src="../compositions/light-2026.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-light-2026"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Light Modern Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-light-modern {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-light-modern"
data-composition-id="render-light-modern"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-light-modern"
data-composition-id="vscode-light-modern"
data-composition-src="../compositions/light-modern.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-light-modern"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Light+ Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-light-plus {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-light-plus"
data-composition-id="render-light-plus"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-light-plus"
data-composition-id="vscode-light-plus"
data-composition-src="../compositions/light-plus.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-light-plus"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Monokai Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-monokai {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-monokai"
data-composition-id="render-monokai"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-monokai"
data-composition-id="vscode-monokai"
data-composition-src="../compositions/monokai.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-monokai"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Solarized Light Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-solarized-light {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-solarized-light"
data-composition-id="render-solarized-light"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-solarized-light"
data-composition-id="vscode-solarized-light"
data-composition-src="../compositions/solarized-light.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-solarized-light"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Visual Studio Dark Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-visual-studio-dark {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-visual-studio-dark"
data-composition-id="render-visual-studio-dark"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-visual-studio-dark"
data-composition-id="vscode-visual-studio-dark"
data-composition-src="../compositions/visual-studio-dark.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-visual-studio-dark"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,50 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>Visual Studio Light Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-visual-studio-light {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div
id="render-visual-studio-light"
data-composition-id="render-visual-studio-light"
data-start="0"
data-duration="11"
data-width="1920"
data-height="1080"
>
<div
id="clip-visual-studio-light"
data-composition-id="vscode-visual-studio-light"
data-composition-src="../compositions/visual-studio-light.html"
data-start="0"
data-duration="11"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-visual-studio-light"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
@@ -0,0 +1,932 @@
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const projectRoot = path.resolve(__dirname, "..");
const repoRoot = path.resolve(projectRoot, "../../..");
const assetsDir = path.join(projectRoot, "assets");
const compositionsDir = path.join(projectRoot, "compositions");
const renderEntriesDir = path.join(projectRoot, "render-entries");
const blocksDir = path.join(repoRoot, "registry", "blocks");
fs.mkdirSync(compositionsDir, { recursive: true });
fs.mkdirSync(renderEntriesDir, { recursive: true });
const registrySource = fs.readFileSync(path.join(assetsDir, "vscode-theme-registry.js"), "utf8");
const registryBody = registrySource
.replace(/^.*window\.VSCODE_THEME_REGISTRY\s*=\s*/s, "")
.replace(/;\s*$/, "");
const registry = new Function("return (" + registryBody + ")")();
const clipDuration = 11;
const css = String.raw`* {
box-sizing: border-box;
letter-spacing: 0;
}
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.vscode-theme-scene {
--activity-bg: #181818;
--activity-fg: #d7d7d7;
--activity-muted: #868686;
--activity-active: #0078d4;
--sidebar-bg: #181818;
--sidebar-fg: #cccccc;
--sidebar-border: #2b2b2b;
--tab-bg: #181818;
--tab-active-bg: #1f1f1f;
--tab-active-fg: #ffffff;
--tab-inactive-fg: #9d9d9d;
--tab-border: #2b2b2b;
--editor-bg: #1f1f1f;
--editor-fg: #cccccc;
--editor-line: rgba(255, 255, 255, 0.04);
--gutter-fg: #6e7681;
--gutter-active-fg: #cccccc;
--panel-bg: #181818;
--panel-border: #2b2b2b;
--status-bg: #181818;
--status-fg: #cccccc;
--status-border: #2b2b2b;
--title-bg: #181818;
--title-fg: #cccccc;
--token-comment: #6a9955;
--token-keyword: #c586c0;
--token-function: #dcdcaa;
--token-string: #ce9178;
--token-number: #b5cea8;
--token-variable: #9cdcfe;
--token-parameter: #9cdcfe;
--token-operator: #d4d4d4;
--token-punctuation: #d4d4d4;
--token-class-name: #4ec9b0;
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background:
linear-gradient(180deg, rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 0.32)),
url("../assets/background.jpeg") center / cover no-repeat;
color: var(--editor-fg);
}
.scene-content {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
padding: 54px 70px 92px;
display: flex;
flex-direction: column;
gap: 16px;
perspective: 2200px;
perspective-origin: 56% 52%;
}
.header {
display: flex;
align-items: end;
justify-content: space-between;
min-height: 66px;
text-shadow:
0 2px 12px rgba(0, 0, 0, 0.42),
0 14px 34px rgba(0, 0, 0, 0.32);
}
.kicker {
margin: 0 0 7px;
color: var(--gutter-fg);
font-size: 15px;
font-weight: 650;
text-transform: uppercase;
text-shadow:
0 2px 8px rgba(0, 0, 0, 0.48),
0 10px 26px rgba(0, 0, 0, 0.36);
}
.title {
margin: 0;
color: var(--editor-fg);
font-size: 44px;
line-height: 1;
font-weight: 760;
}
.source-note {
width: 510px;
color: var(--gutter-fg);
font-size: 16px;
line-height: 1.35;
text-align: right;
text-shadow:
0 2px 10px rgba(0, 0, 0, 0.46),
0 12px 30px rgba(0, 0, 0, 0.34);
}
.workbench {
height: 824px;
display: grid;
grid-template-columns: 54px 290px 1fr;
grid-template-rows: 36px 1fr 26px;
overflow: hidden;
border: 1px solid var(--sidebar-border);
border-radius: 8px;
background: var(--editor-bg);
box-shadow: 0 34px 90px rgba(0, 0, 0, 0.42);
transform: translateZ(0);
transform-origin: 82% 50%;
transform-style: preserve-3d;
will-change: transform;
}
.titlebar {
grid-column: 1 / -1;
display: grid;
grid-template-columns: 120px 1fr 210px;
align-items: center;
background: var(--title-bg);
color: var(--title-fg);
border-bottom: 1px solid var(--tab-border);
font-size: 12px;
}
.traffic {
display: flex;
gap: 8px;
padding-left: 18px;
}
.traffic span {
width: 12px;
height: 12px;
border-radius: 999px;
}
.traffic span:nth-child(1) { background: #ff5f57; }
.traffic span:nth-child(2) { background: #ffbd2e; }
.traffic span:nth-child(3) { background: #28c840; }
.window-title {
justify-self: center;
opacity: 0.84;
}
.command-center {
justify-self: end;
width: 176px;
height: 22px;
margin-right: 16px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid color-mix(in srgb, var(--title-fg), transparent 78%);
border-radius: 5px;
color: color-mix(in srgb, var(--title-fg), transparent 18%);
}
.activity {
grid-row: 2 / 3;
background: var(--activity-bg);
border-right: 1px solid var(--sidebar-border);
display: flex;
flex-direction: column;
align-items: center;
padding: 10px 0;
gap: 18px;
}
.activity-icon {
width: 28px;
height: 28px;
color: var(--activity-muted);
}
.activity-icon.active {
color: var(--activity-fg);
border-left: 2px solid var(--activity-active);
padding-left: 4px;
}
.sidebar {
grid-row: 2 / 3;
background: var(--sidebar-bg);
color: var(--sidebar-fg);
border-right: 1px solid var(--sidebar-border);
display: flex;
flex-direction: column;
min-width: 0;
}
.sidebar-title {
height: 38px;
display: flex;
align-items: center;
padding: 0 20px;
color: var(--sidebar-fg);
font-size: 11px;
text-transform: uppercase;
}
.section-title {
height: 24px;
display: flex;
align-items: center;
gap: 6px;
padding: 0 14px;
background: color-mix(in srgb, var(--sidebar-bg), var(--sidebar-fg) 5%);
border-top: 1px solid var(--sidebar-border);
border-bottom: 1px solid var(--sidebar-border);
color: var(--sidebar-fg);
font-size: 11px;
font-weight: 700;
}
.tree {
padding: 8px 0;
font-size: 13px;
line-height: 24px;
}
.tree-row {
height: 24px;
display: flex;
align-items: center;
gap: 7px;
padding: 0 10px 0 18px;
color: color-mix(in srgb, var(--sidebar-fg), transparent 8%);
white-space: nowrap;
}
.tree-row.child {
padding-left: 34px;
}
.tree-row.selected {
background: color-mix(in srgb, var(--sidebar-fg), transparent 88%);
color: var(--sidebar-fg);
}
.editor-area {
grid-row: 2 / 3;
display: grid;
grid-template-rows: 36px 30px 1fr 138px;
min-width: 0;
background: var(--editor-bg);
}
.tabs {
display: flex;
background: var(--tab-bg);
border-bottom: 1px solid var(--tab-border);
}
.tab {
width: 205px;
height: 36px;
display: flex;
align-items: center;
gap: 8px;
padding: 0 13px;
border-right: 1px solid var(--tab-border);
background: var(--tab-active-bg);
color: var(--tab-active-fg);
border-top: 2px solid var(--activity-active);
font-size: 13px;
}
.tab.inactive {
background: var(--tab-bg);
color: var(--tab-inactive-fg);
border-top-color: transparent;
}
.breadcrumbs {
display: flex;
align-items: center;
gap: 7px;
padding: 0 18px;
color: var(--gutter-fg);
border-bottom: 1px solid color-mix(in srgb, var(--tab-border), transparent 20%);
font-size: 12px;
}
.editor {
position: relative;
overflow: hidden;
background: var(--editor-bg);
color: var(--editor-fg);
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 18px;
line-height: 1.52;
}
.active-line {
position: absolute;
left: 0;
right: 0;
top: 0;
height: 28px;
background: var(--editor-line);
will-change: transform;
}
.code {
position: relative;
padding: 20px 36px 18px 0;
}
.line {
height: 28px;
display: grid;
grid-template-columns: 72px 1fr;
align-items: center;
}
.line-number {
padding-right: 18px;
color: var(--gutter-fg);
text-align: right;
user-select: none;
}
.line.is-active .line-number {
color: var(--gutter-active-fg);
}
.line-code {
white-space: pre;
}
.char {
opacity: 0;
}
.tok-comment { color: var(--token-comment); }
.tok-keyword { color: var(--token-keyword); }
.tok-function { color: var(--token-function); }
.tok-string { color: var(--token-string); }
.tok-number { color: var(--token-number); }
.tok-variable { color: var(--token-variable); }
.tok-parameter { color: var(--token-parameter); }
.tok-operator { color: var(--token-operator); }
.tok-punctuation { color: var(--token-punctuation); }
.tok-class-name { color: var(--token-class-name); }
.caret {
position: absolute;
left: 0;
top: 0;
z-index: 3;
display: block;
width: 2px;
height: 22px;
background: var(--editor-fg);
pointer-events: none;
will-change: transform, opacity;
}
.terminal {
display: grid;
grid-template-rows: 32px 1fr;
background: var(--panel-bg);
border-top: 1px solid var(--panel-border);
color: var(--editor-fg);
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 14px;
}
.panel-tabs {
display: flex;
align-items: center;
gap: 22px;
padding: 0 18px;
border-bottom: 1px solid var(--panel-border);
color: var(--gutter-fg);
font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 12px;
text-transform: uppercase;
}
.panel-tabs .active {
color: var(--editor-fg);
border-bottom: 1px solid var(--activity-active);
height: 32px;
display: flex;
align-items: center;
}
.terminal-body {
padding: 12px 20px;
color: var(--editor-fg);
line-height: 1.8;
}
.prompt {
color: var(--token-function);
}
.statusbar {
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
background: var(--status-bg);
color: var(--status-fg);
border-top: 1px solid var(--status-border);
font-size: 12px;
}
.status-left,
.status-right {
display: flex;
align-items: center;
gap: 18px;
padding: 0 12px;
}
.remote {
align-self: stretch;
display: flex;
align-items: center;
padding: 0 12px;
margin-left: -12px;
background: var(--status-remote-bg, var(--activity-active));
color: var(--status-remote-fg, #ffffff);
}
svg {
display: block;
}
`;
const runtime = String.raw`(() => {
const codeLines = [
[{ text: "# A small functional toolkit", token: "comment" }],
[{ text: "def", token: "keyword" }, { text: " ", token: "plain" }, { text: "pluck_deep", token: "function" }, { text: "(", token: "punctuation" }, { text: "key", token: "parameter" }, { text: "):", token: "punctuation" }],
[{ text: " ", token: "plain" }, { text: "return", token: "keyword" }, { text: " ", token: "plain" }, { text: "lambda", token: "keyword" }, { text: " ", token: "plain" }, { text: "obj", token: "parameter" }, { text: ": ", token: "punctuation" }, { text: "reduce", token: "function" }, { text: "(", token: "punctuation" }, { text: "lambda", token: "keyword" }, { text: " ", token: "plain" }, { text: "acc", token: "parameter" }, { text: ", ", token: "punctuation" }, { text: "k", token: "parameter" }, { text: ": ", token: "punctuation" }, { text: "acc", token: "variable" }, { text: "[", token: "punctuation" }, { text: "k", token: "variable" }, { text: "]", token: "punctuation" }, { text: ", ", token: "punctuation" }, { text: "key", token: "variable" }, { text: ".split", token: "function" }, { text: "(", token: "punctuation" }, { text: "'.'", token: "string" }, { text: "), ", token: "punctuation" }, { text: "obj", token: "variable" }, { text: ")", token: "punctuation" }],
[],
[{ text: "def", token: "keyword" }, { text: " ", token: "plain" }, { text: "compose", token: "function" }, { text: "(", token: "punctuation" }, { text: "*", token: "operator" }, { text: "fns", token: "parameter" }, { text: "):", token: "punctuation" }],
[{ text: " ", token: "plain" }, { text: "return", token: "keyword" }, { text: " ", token: "plain" }, { text: "lambda", token: "keyword" }, { text: " ", token: "plain" }, { text: "res", token: "parameter" }, { text: ": ", token: "punctuation" }, { text: "reduce", token: "function" }, { text: "(", token: "punctuation" }, { text: "lambda", token: "keyword" }, { text: " ", token: "plain" }, { text: "acc", token: "parameter" }, { text: ", ", token: "punctuation" }, { text: "fn", token: "parameter" }, { text: ": ", token: "punctuation" }, { text: "fn", token: "function" }, { text: "(", token: "punctuation" }, { text: "acc", token: "variable" }, { text: "), ", token: "punctuation" }, { text: "fns", token: "variable" }, { text: ", ", token: "punctuation" }, { text: "res", token: "variable" }, { text: ")", token: "punctuation" }],
[],
[{ text: "def", token: "keyword" }, { text: " ", token: "plain" }, { text: "unfold", token: "function" }, { text: "(", token: "punctuation" }, { text: "f", token: "parameter" }, { text: ", ", token: "punctuation" }, { text: "seed", token: "parameter" }, { text: "):", token: "punctuation" }],
[{ text: " ", token: "plain" }, { text: "\"\"\"Build a list by repeatedly applying f to a seed.\"\"\"", token: "string" }],
[{ text: " acc", token: "variable" }, { text: " = ", token: "operator" }, { text: "[]", token: "punctuation" }],
[{ text: " while", token: "keyword" }, { text: " ", token: "plain" }, { text: "True", token: "className" }, { text: ":", token: "punctuation" }],
[{ text: " result", token: "variable" }, { text: " = ", token: "operator" }, { text: "f", token: "function" }, { text: "(", token: "punctuation" }, { text: "seed", token: "variable" }, { text: ")", token: "punctuation" }],
[{ text: " if", token: "keyword" }, { text: " ", token: "plain" }, { text: "result", token: "variable" }, { text: " is ", token: "keyword" }, { text: "None", token: "className" }, { text: ":", token: "punctuation" }],
[{ text: " return", token: "keyword" }, { text: " ", token: "plain" }, { text: "acc", token: "variable" }],
[{ text: " acc", token: "variable" }, { text: ".append", token: "function" }, { text: "(", token: "punctuation" }, { text: "result", token: "variable" }, { text: "[", token: "punctuation" }, { text: "0", token: "number" }, { text: "])", token: "punctuation" }],
[{ text: " seed", token: "variable" }, { text: " = ", token: "operator" }, { text: "result", token: "variable" }, { text: "[", token: "punctuation" }, { text: "1", token: "number" }, { text: "]", token: "punctuation" }],
[],
];
const fallback = {
"activityBar.background": "#181818",
"activityBar.foreground": "#d7d7d7",
"activityBar.inactiveForeground": "#868686",
"activityBar.activeBorder": "#0078d4",
"sideBar.background": "#181818",
"sideBar.foreground": "#cccccc",
"sideBar.border": "#2b2b2b",
"tab.activeBackground": "#1f1f1f",
"tab.activeForeground": "#ffffff",
"tab.inactiveBackground": "#181818",
"tab.inactiveForeground": "#9d9d9d",
"tab.border": "#2b2b2b",
"editor.background": "#1f1f1f",
"editor.foreground": "#cccccc",
"editor.lineHighlightBackground": "#ffffff0a",
"editorLineNumber.foreground": "#6e7681",
"editorLineNumber.activeForeground": "#cccccc",
"panel.background": "#181818",
"panel.border": "#2b2b2b",
"statusBar.background": "#181818",
"statusBar.foreground": "#cccccc",
"statusBar.border": "#2b2b2b",
"titleBar.activeBackground": "#181818",
"titleBar.activeForeground": "#cccccc",
};
function color(theme, key) {
return theme.colors[key] || fallback[key] || theme.colors.foreground || "#cccccc";
}
function solarizedGrey(theme) {
return theme.colors["tab.inactiveForeground"] || theme.colors["editor.foreground"] || "#586E75";
}
function setVar(root, name, value) {
root.style.setProperty(name, value);
}
function applyTheme(root, theme) {
const solarizedUiGrey = theme.id === "solarized-light" ? solarizedGrey(theme) : null;
setVar(root, "--activity-bg", color(theme, "activityBar.background"));
setVar(root, "--activity-fg", solarizedUiGrey || color(theme, "activityBar.foreground"));
setVar(root, "--activity-muted", solarizedUiGrey || color(theme, "activityBar.inactiveForeground"));
setVar(root, "--activity-active", color(theme, "activityBar.activeBorder"));
setVar(root, "--sidebar-bg", color(theme, "sideBar.background"));
setVar(root, "--sidebar-fg", solarizedUiGrey || color(theme, "sideBar.foreground"));
setVar(root, "--sidebar-border", color(theme, "sideBar.border"));
setVar(root, "--tab-bg", color(theme, "tab.inactiveBackground"));
setVar(root, "--tab-active-bg", color(theme, "tab.activeBackground"));
setVar(root, "--tab-active-fg", solarizedUiGrey || color(theme, "tab.activeForeground"));
setVar(root, "--tab-inactive-fg", solarizedUiGrey || color(theme, "tab.inactiveForeground"));
setVar(root, "--tab-border", color(theme, "tab.border"));
setVar(root, "--editor-bg", color(theme, "editor.background"));
setVar(root, "--editor-fg", color(theme, "editor.foreground"));
setVar(root, "--editor-line", color(theme, "editor.lineHighlightBackground"));
setVar(root, "--gutter-fg", color(theme, "editorLineNumber.foreground"));
setVar(root, "--gutter-active-fg", color(theme, "editorLineNumber.activeForeground"));
setVar(root, "--panel-bg", color(theme, "panel.background"));
setVar(root, "--panel-border", color(theme, "panel.border"));
setVar(root, "--status-bg", color(theme, "statusBar.background"));
setVar(root, "--status-fg", color(theme, "statusBar.foreground"));
setVar(root, "--status-border", color(theme, "statusBar.border"));
setVar(root, "--status-remote-bg", color(theme, "statusBarItem.remoteBackground"));
setVar(root, "--status-remote-fg", solarizedUiGrey || color(theme, "statusBarItem.remoteForeground"));
setVar(root, "--title-bg", color(theme, "titleBar.activeBackground"));
setVar(root, "--title-fg", solarizedUiGrey || color(theme, "titleBar.activeForeground"));
setVar(root, "--token-comment", theme.tokens.comment);
setVar(root, "--token-keyword", theme.tokens.keyword);
setVar(root, "--token-function", theme.tokens.function);
setVar(root, "--token-string", theme.tokens.string);
setVar(root, "--token-number", theme.tokens.number);
setVar(root, "--token-variable", theme.tokens.variable);
setVar(root, "--token-parameter", theme.tokens.parameter);
setVar(root, "--token-operator", theme.tokens.operator);
setVar(root, "--token-punctuation", theme.tokens.punctuation);
setVar(root, "--token-class-name", theme.tokens.className);
}
function renderCode(root) {
const code = root.querySelector(".code");
codeLines.forEach((segments, index) => {
const line = document.createElement("div");
line.className = "line";
line.dataset.lineIndex = String(index);
const lineNumber = document.createElement("span");
lineNumber.className = "line-number";
lineNumber.textContent = String(index + 1);
line.appendChild(lineNumber);
const lineCode = document.createElement("span");
lineCode.className = "line-code";
segments.forEach((segment) => {
[...segment.text].forEach((char) => {
const span = document.createElement("span");
span.className = segment.token === "plain" ? "char" : "char tok-" + segment.token.replace(/[A-Z]/g, (match) => "-" + match.toLowerCase());
span.dataset.lineIndex = String(index);
span.textContent = char;
lineCode.appendChild(span);
});
});
line.appendChild(lineCode);
code.appendChild(line);
});
const caret = document.createElement("span");
caret.className = "caret";
root.querySelector(".editor").appendChild(caret);
}
function caretPointForElement(editor, el) {
const editorBox = editor.getBoundingClientRect();
const charBox = el.getBoundingClientRect();
return {
x: charBox.right - editorBox.left + 2,
y: charBox.top - editorBox.top + 3,
};
}
function caretPointForLineStart(editor, line) {
const editorBox = editor.getBoundingClientRect();
const lineBox = line.getBoundingClientRect();
const codeBox = line.querySelector(".line-code").getBoundingClientRect();
return {
x: codeBox.left - editorBox.left,
y: lineBox.top - editorBox.top + 3,
};
}
function lineHighlightY(editor, line) {
const editorBox = editor.getBoundingClientRect();
const lineBox = line.getBoundingClientRect();
return lineBox.top - editorBox.top;
}
function buildTimeline(root, compositionId) {
const tl = gsap.timeline({ paused: true });
const editor = root.querySelector(".editor");
const caret = root.querySelector(".caret");
const activeLine = root.querySelector(".active-line");
const lineEls = gsap.utils.toArray(root.querySelectorAll(".line"));
const lineStartTimes = [];
const charSchedule = [];
let cursorTime = 0.95;
lineEls.forEach((line, lineIndex) => {
const lineChars = gsap.utils.toArray(line.querySelectorAll(".char"));
lineStartTimes[lineIndex] = cursorTime;
lineChars.forEach((char, charIndex) => {
charSchedule.push({ char, time: cursorTime + charIndex * 0.012 });
});
cursorTime += Math.max(lineChars.length * 0.012, 0.08) + 0.045;
});
gsap.set(activeLine, { y: lineHighlightY(editor, lineEls[0]) });
gsap.set(caret, caretPointForLineStart(editor, lineEls[0]));
tl.from(root.querySelector(".header"), { y: 24, opacity: 0, duration: 0.45, ease: "power3.out" }, 0);
tl.from(root.querySelector(".workbench"), { y: 42, opacity: 0, scale: 0.986, duration: 0.58, ease: "power3.out" }, 0.1);
tl.from(activeLine, { opacity: 0, duration: 0.22, ease: "power2.out" }, 0.74);
lineStartTimes.forEach((time, lineIndex) => {
const line = lineEls[lineIndex];
tl.set(activeLine, { y: lineHighlightY(editor, line) }, time);
tl.set(caret, caretPointForLineStart(editor, line), time);
tl.call(() => {
lineEls.forEach((item) => item.classList.toggle("is-active", item === line));
}, [], time);
});
charSchedule.forEach(({ char, time }) => {
tl.set(char, { opacity: 1 }, time);
tl.set(caret, caretPointForElement(editor, char), time + 0.002);
});
tl.to(root.querySelector(".caret"), { opacity: 0, duration: 0.34, repeat: 25, yoyo: true, ease: "steps(1)" }, 0.95);
tl.from(root.querySelector(".terminal"), { y: 140, opacity: 0, duration: 0.56, ease: "power3.out" }, 7.55);
tl.from(root.querySelector(".terminal-body").children, { opacity: 0, y: 8, duration: 0.24, stagger: 0.16, ease: "power2.out" }, 8.05);
tl.to(root.querySelector(".workbench"), { rotateY: -10.5, z: 74, duration: 0.72, ease: "power2.inOut" }, 9.35);
tl.to(root.querySelector(".workbench"), { rotateY: 0, z: 0, duration: 0.62, ease: "power2.inOut" }, 10.08);
window.__timelines = window.__timelines || {};
window.__timelines[compositionId] = tl;
const previewTime = new URLSearchParams(window.location.search).get("t");
if (previewTime !== null) {
tl.time(Number(previewTime));
}
}
window.createVSCodeThemeComposition = (compositionId, themeOrId) => {
const root =
document.querySelector('[data-composition-id="' + compositionId + '"] .vscode-theme-scene') ||
document.querySelector('.vscode-theme-scene[data-composition-id="' + compositionId + '"]') ||
document.querySelector('[data-composition-id="' + compositionId + '"]');
const theme = typeof themeOrId === "string"
? window.VSCODE_THEME_REGISTRY.find((item) => item.id === themeOrId)
: themeOrId;
if (!root || !theme) return;
root.querySelector(".theme-label").textContent = theme.label;
root.querySelector(".theme-source").textContent = theme.sourceFile;
applyTheme(root, theme);
renderCode(root);
buildTimeline(root, compositionId);
};
})();
`;
function compositionMarkup(compositionId, theme) {
return `<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>${theme.label} VS Code Theme Composition</title>
</head>
<body>
<template id="${compositionId}-template">
<div class="vscode-theme-scene" data-composition-id="${compositionId}" data-width="1920" data-height="1080">
<main class="scene-content">
<section class="header">
<div>
<p class="kicker">Official VS Code built-in theme</p>
<h1 class="title"><span class="theme-label">${theme.label}</span></h1>
</div>
<p class="source-note">
Typing \`functional_toolkit.py\` with workbench colors from
<span class="theme-source">${theme.sourceFile}</span>.
</p>
</section>
${workbenchMarkup()}
</main>
<style>
${css}
</style>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script>
${runtime}
</script>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["${compositionId}"] = window.__timelines["${compositionId}"] || gsap.timeline({ paused: true });
window.createVSCodeThemeComposition("${compositionId}", ${JSON.stringify(theme)});
</script>
</div>
</template>
</body>
</html>
`;
}
function workbenchMarkup() {
return `<section class="workbench">
<div class="titlebar">
<div class="traffic"><span></span><span></span><span></span></div>
<div class="window-title">functional-toolkit - Visual Studio Code</div>
<div class="command-center">Search</div>
</div>
<aside class="activity" aria-label="Activity bar">
<svg class="activity-icon active" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 4h7v7H4V4Zm9 0h7v7h-7V4ZM4 13h7v7H4v-7Zm9 0h7v7h-7v-7Z" /></svg>
<svg class="activity-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" d="m21 21-5.2-5.2M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z" /></svg>
<svg class="activity-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" d="M8 18 3 12l5-6m8 12 5-6-5-6" /></svg>
<svg class="activity-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2" d="M12 3v18m0-18 6 6m-6-6L6 9m6 12 6-6m-6 6-6-6" /></svg>
</aside>
<aside class="sidebar">
<div class="sidebar-title">Explorer</div>
<div class="section-title">⌄ Functional Toolkit</div>
<div class="tree">
<div class="tree-row">⌄ src</div>
<div class="tree-row child selected">◇ functional_toolkit.py</div>
<div class="tree-row child">◇ test_toolkit.py</div>
<div class="tree-row">◇ pyproject.toml</div>
<div class="tree-row">◇ README.md</div>
</div>
</aside>
<section class="editor-area">
<div class="tabs">
<div class="tab">◇ functional_toolkit.py</div>
<div class="tab inactive">README.md</div>
</div>
<div class="breadcrumbs">functional-toolkit src functional_toolkit.py</div>
<div class="editor">
<div class="active-line"></div>
<div class="code"></div>
</div>
<div class="terminal">
<div class="panel-tabs"><span class="active">Terminal</span><span>Problems</span><span>Output</span></div>
<div class="terminal-body">
<div><span class="prompt">functional-toolkit %</span> python -m pytest</div>
<div>collected 3 items</div>
<div>tests/test_toolkit.py ... <span class="tok-comment">passed</span></div>
</div>
</div>
</section>
<footer class="statusbar">
<div class="status-left">
<span class="remote">main</span>
<span>0 errors</span>
<span>0 warnings</span>
</div>
<div class="status-right">
<span>Ln 17, Col 1</span>
<span>Spaces: 4</span>
<span>UTF-8</span>
<span>Python 3.12</span>
</div>
</footer>
</section>`;
}
function rootIndexMarkup() {
const clips = registry
.map((theme, index) => {
const compositionId = `vscode-${theme.id}`;
return ` <div
id="clip-${theme.id}"
data-composition-id="${compositionId}"
data-composition-src="compositions/${theme.id}.html"
data-start="${index * clipDuration}"
data-duration="${clipDuration}"
data-track-index="1"
></div>`;
})
.join("\n");
return `<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>VS Code Theme Sequence</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#vscode-theme-sequence {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div id="vscode-theme-sequence" data-composition-id="vscode-theme-sequence" data-start="0" data-width="1920" data-height="1080">
${clips}
<script>
window.__timelines = window.__timelines || {};
window.__timelines["vscode-theme-sequence"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
`;
}
function renderEntryMarkup(theme) {
const compositionId = `vscode-${theme.id}`;
return `<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>${theme.label} Render Entry</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
html,
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
#render-${theme.id} {
position: relative;
width: 1920px;
height: 1080px;
overflow: hidden;
background: #000000;
}
</style>
</head>
<body>
<div id="render-${theme.id}" data-composition-id="render-${theme.id}" data-start="0" data-duration="${clipDuration}" data-width="1920" data-height="1080">
<div
id="clip-${theme.id}"
data-composition-id="${compositionId}"
data-composition-src="../compositions/${theme.id}.html"
data-start="0"
data-duration="${clipDuration}"
data-track-index="1"
></div>
<script>
window.__timelines = window.__timelines || {};
window.__timelines["render-${theme.id}"] = gsap.timeline({ paused: true });
</script>
</div>
</body>
</html>
`;
}
fs.writeFileSync(path.join(assetsDir, "vscode-sequence.css"), css);
fs.writeFileSync(path.join(assetsDir, "vscode-sequence-runtime.js"), runtime);
for (const theme of registry) {
const compositionId = `vscode-${theme.id}`;
fs.writeFileSync(
path.join(compositionsDir, `${theme.id}.html`),
compositionMarkup(compositionId, theme),
);
fs.writeFileSync(path.join(renderEntriesDir, `${theme.id}.html`), renderEntryMarkup(theme));
const blockName = `code-snippet-${theme.id}`;
const blockDir = path.join(blocksDir, blockName);
fs.mkdirSync(blockDir, { recursive: true });
fs.writeFileSync(
path.join(blockDir, `${blockName}.html`),
compositionMarkup(compositionId, theme),
);
}
fs.writeFileSync(path.join(projectRoot, "index.html"), rootIndexMarkup());
console.log(
`Wrote ${registry.length} themed compositions, render entries, block HTMLs, and root sequence`,
);
@@ -0,0 +1,237 @@
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const projectRoot = path.resolve(__dirname, "..");
const themeDir = path.join(projectRoot, "assets", "vscode-themes");
const outFile = path.join(projectRoot, "assets", "vscode-theme-registry.js");
const themeEntries = [
["light-2026", "Light 2026", "2026-light.json"],
["dark-2026", "Dark 2026", "2026-dark.json"],
["dark-plus", "Dark+", "dark_plus.json"],
["dark-modern", "Dark Modern", "dark_modern.json"],
["light-plus", "Light+", "light_plus.json"],
["light-modern", "Light Modern", "light_modern.json"],
["visual-studio-dark", "Visual Studio Dark", "dark_vs.json"],
["visual-studio-light", "Visual Studio Light", "light_vs.json"],
["high-contrast", "Default High Contrast", "hc_black.json"],
["high-contrast-light", "Default High Contrast Light", "hc_light.json"],
["solarized-light", "Solarized Light", "solarized-light-color-theme.json"],
["monokai", "Monokai", "monokai-color-theme.json"],
];
const workbenchKeys = [
"activityBar.activeBorder",
"activityBar.background",
"activityBar.border",
"activityBar.foreground",
"activityBar.inactiveForeground",
"editor.background",
"editor.foreground",
"editor.lineHighlightBackground",
"editor.selectionBackground",
"editorGroup.border",
"editorGroupHeader.tabsBackground",
"editorGroupHeader.tabsBorder",
"editorLineNumber.activeForeground",
"editorLineNumber.foreground",
"foreground",
"icon.foreground",
"panel.background",
"panel.border",
"sideBar.background",
"sideBar.border",
"sideBar.foreground",
"sideBarSectionHeader.background",
"sideBarSectionHeader.border",
"sideBarSectionHeader.foreground",
"sideBarTitle.foreground",
"statusBar.background",
"statusBar.border",
"statusBar.foreground",
"statusBarItem.remoteBackground",
"statusBarItem.remoteForeground",
"tab.activeBackground",
"tab.activeBorder",
"tab.activeBorderTop",
"tab.activeForeground",
"tab.border",
"tab.inactiveBackground",
"tab.inactiveForeground",
"terminal.background",
"terminal.foreground",
"terminalCursor.foreground",
"titleBar.activeBackground",
"titleBar.activeForeground",
];
const tokenScopes = {
comment: ["comment", "punctuation.definition.comment"],
keyword: ["keyword", "storage", "storage.type"],
function: ["entity.name.function", "support.function"],
string: ["string", "punctuation.definition.string"],
number: ["constant.numeric"],
variable: ["variable", "variable.other"],
parameter: ["variable.parameter", "meta.function.parameters"],
operator: ["keyword.operator"],
punctuation: ["punctuation", "meta.brace"],
className: ["entity.name.type", "support.class", "support.type"],
};
const fallbackColors = {
comment: "#6A9955",
keyword: "#C586C0",
function: "#DCDCAA",
string: "#CE9178",
number: "#B5CEA8",
variable: "#9CDCFE",
parameter: "#9CDCFE",
operator: "#D4D4D4",
punctuation: "#D4D4D4",
className: "#4EC9B0",
};
function stripJsonComments(source) {
let output = "";
let inString = false;
let escaped = false;
for (let i = 0; i < source.length; i += 1) {
const char = source[i];
const next = source[i + 1];
if (inString) {
output += char;
escaped = char === "\\" && !escaped;
if (char === '"' && !escaped) inString = false;
if (char !== "\\") escaped = false;
continue;
}
if (char === '"') {
inString = true;
output += char;
continue;
}
if (char === "/" && next === "/") {
while (i < source.length && source[i] !== "\n") i += 1;
output += "\n";
continue;
}
if (char === "/" && next === "*") {
i += 2;
while (i < source.length && !(source[i] === "*" && source[i + 1] === "/")) i += 1;
i += 1;
continue;
}
output += char;
}
return output;
}
function stripTrailingCommas(source) {
let output = "";
let inString = false;
let escaped = false;
for (let i = 0; i < source.length; i += 1) {
const char = source[i];
if (inString) {
output += char;
escaped = char === "\\" && !escaped;
if (char === '"' && !escaped) inString = false;
if (char !== "\\") escaped = false;
continue;
}
if (char === '"') {
inString = true;
output += char;
continue;
}
if (char === ",") {
let j = i + 1;
while (/\s/.test(source[j])) j += 1;
if (source[j] === "}" || source[j] === "]") continue;
}
output += char;
}
return output;
}
function readTheme(fileName, seen = new Set()) {
const filePath = path.join(themeDir, fileName);
if (seen.has(filePath)) throw new Error(`Circular theme include: ${fileName}`);
seen.add(filePath);
const raw = fs.readFileSync(filePath, "utf8");
const theme = JSON.parse(stripTrailingCommas(stripJsonComments(raw)));
let parent = { colors: {}, tokenColors: [], semanticTokenColors: {} };
if (theme.include) {
parent = readTheme(path.basename(theme.include), seen);
}
return {
name: theme.name || parent.name,
type: theme.type || parent.type,
colors: { ...parent.colors, ...(theme.colors || {}) },
tokenColors: [...(parent.tokenColors || []), ...(theme.tokenColors || [])],
semanticTokenColors: {
...(parent.semanticTokenColors || {}),
...(theme.semanticTokenColors || {}),
},
};
}
function scopeList(scope) {
if (!scope) return [];
if (Array.isArray(scope)) return scope;
return String(scope)
.split(",")
.map((item) => item.trim());
}
function scopeMatches(actual, wanted) {
return actual === wanted || actual.startsWith(`${wanted}.`) || wanted.startsWith(`${actual}.`);
}
function findTokenColor(theme, wantedScopes) {
for (let i = theme.tokenColors.length - 1; i >= 0; i -= 1) {
const tokenColor = theme.tokenColors[i];
const foreground = tokenColor.settings?.foreground;
if (!foreground) continue;
const scopes = scopeList(tokenColor.scope);
if (scopes.some((scope) => wantedScopes.some((wanted) => scopeMatches(scope, wanted)))) {
return foreground;
}
}
return null;
}
function pickColors(colors) {
const picked = {};
for (const key of workbenchKeys) {
if (colors[key]) picked[key] = colors[key];
}
return picked;
}
const registry = themeEntries.map(([id, label, file]) => {
const theme = readTheme(file);
const tokens = {};
for (const [tokenName, scopes] of Object.entries(tokenScopes)) {
tokens[tokenName] = findTokenColor(theme, scopes) || fallbackColors[tokenName];
}
return {
id,
label,
sourceFile: file,
uiTheme: file.includes("light") || file.includes("2026-light") ? "vs" : "vs-dark",
colors: pickColors(theme.colors),
tokens,
};
});
const generated = `// Generated by scripts/build-theme-registry.mjs from official VS Code theme JSON.\nwindow.VSCODE_THEME_REGISTRY = ${JSON.stringify(registry, null, 2)};\n`;
fs.writeFileSync(outFile, generated);
console.log(`Wrote ${path.relative(projectRoot, outFile)} with ${registry.length} themes`);