93 lines
3.8 KiB
TypeScript
93 lines
3.8 KiB
TypeScript
import type { editor } from "monaco-editor";
|
|
import { DARK, LIGHT, DIFF_COLORS, FONT } from "./colors";
|
|
|
|
// Semantic token color rules matching VS Code Dark+ / Light+ themes.
|
|
const SEMANTIC_RULES_DARK: editor.ITokenThemeRule[] = [
|
|
{ token: "type", foreground: "4EC9B0" },
|
|
{ token: "class", foreground: "4EC9B0" },
|
|
{ token: "struct", foreground: "4EC9B0" },
|
|
{ token: "interface", foreground: "4EC9B0" },
|
|
{ token: "enum", foreground: "4EC9B0" },
|
|
{ token: "typeParameter", foreground: "4EC9B0" },
|
|
{ token: "namespace", foreground: "4EC9B0" },
|
|
{ token: "function", foreground: "DCDCAA" },
|
|
{ token: "method", foreground: "DCDCAA" },
|
|
{ token: "macro", foreground: "DCDCAA" },
|
|
{ token: "variable", foreground: "9CDCFE" },
|
|
{ token: "parameter", foreground: "9CDCFE" },
|
|
{ token: "property", foreground: "9CDCFE" },
|
|
{ token: "enumMember", foreground: "4FC1FF" },
|
|
{ token: "decorator", foreground: "DCDCAA" },
|
|
];
|
|
|
|
const SEMANTIC_RULES_LIGHT: editor.ITokenThemeRule[] = [
|
|
{ token: "type", foreground: "267f99" },
|
|
{ token: "class", foreground: "267f99" },
|
|
{ token: "struct", foreground: "267f99" },
|
|
{ token: "interface", foreground: "267f99" },
|
|
{ token: "enum", foreground: "267f99" },
|
|
{ token: "typeParameter", foreground: "267f99" },
|
|
{ token: "namespace", foreground: "267f99" },
|
|
{ token: "function", foreground: "795E26" },
|
|
{ token: "method", foreground: "795E26" },
|
|
{ token: "macro", foreground: "795E26" },
|
|
{ token: "variable", foreground: "001080" },
|
|
{ token: "parameter", foreground: "001080" },
|
|
{ token: "property", foreground: "001080" },
|
|
{ token: "enumMember", foreground: "0070C1" },
|
|
{ token: "decorator", foreground: "795E26" },
|
|
];
|
|
|
|
export const KANDEV_MONACO_DARK: editor.IStandaloneThemeData = {
|
|
base: "vs-dark",
|
|
inherit: true,
|
|
rules: [...SEMANTIC_RULES_DARK],
|
|
colors: {
|
|
"editor.background": DARK.bg,
|
|
"editor.foreground": DARK.fg,
|
|
"editorGutter.background": DARK.bg,
|
|
"editor.lineHighlightBackground": DARK.lineHighlight,
|
|
"editorLineNumber.foreground": DARK.lineNumber,
|
|
"editorLineNumber.activeForeground": DARK.lineNumberActive,
|
|
"editor.selectionBackground": DARK.selection,
|
|
"editor.inactiveSelectionBackground": DARK.selectionInactive,
|
|
"editorCursor.foreground": DARK.cursor,
|
|
"editorWidget.background": DARK.popover,
|
|
"editorWidget.border": DARK.border,
|
|
"editorSuggestWidget.background": DARK.popover,
|
|
"editorSuggestWidget.border": DARK.border,
|
|
"editorSuggestWidget.selectedBackground": DARK.selection,
|
|
"minimap.background": DARK.bg,
|
|
"scrollbar.shadow": DARK.scrollbarShadow,
|
|
"scrollbarSlider.background": DARK.scrollbarThumb,
|
|
"scrollbarSlider.hoverBackground": DARK.scrollbarThumbHover,
|
|
"scrollbarSlider.activeBackground": DARK.scrollbarThumbActive,
|
|
"diffEditor.insertedTextBackground": DIFF_COLORS.additionTextBg,
|
|
"diffEditor.removedTextBackground": DIFF_COLORS.deletionTextBg,
|
|
"diffEditor.insertedLineBackground": DIFF_COLORS.additionLineBg,
|
|
"diffEditor.removedLineBackground": DIFF_COLORS.deletionLineBg,
|
|
},
|
|
};
|
|
|
|
export const KANDEV_MONACO_LIGHT: editor.IStandaloneThemeData = {
|
|
base: "vs",
|
|
inherit: true,
|
|
rules: [...SEMANTIC_RULES_LIGHT],
|
|
colors: {
|
|
"editor.background": LIGHT.bg,
|
|
"editor.foreground": LIGHT.fg,
|
|
"editorGutter.background": LIGHT.bg,
|
|
"editor.lineHighlightBackground": LIGHT.lineHighlight,
|
|
"editorLineNumber.foreground": LIGHT.lineNumber,
|
|
"editorLineNumber.activeForeground": LIGHT.lineNumberActive,
|
|
"diffEditor.insertedTextBackground": DIFF_COLORS.additionTextBg,
|
|
"diffEditor.removedTextBackground": DIFF_COLORS.deletionTextBg,
|
|
"diffEditor.insertedLineBackground": DIFF_COLORS.additionLineBg,
|
|
"diffEditor.removedLineBackground": DIFF_COLORS.deletionLineBg,
|
|
},
|
|
};
|
|
|
|
export const EDITOR_FONT_FAMILY = FONT.mono;
|
|
export const EDITOR_FONT_SIZE = FONT.size;
|
|
export const EDITOR_LINE_HEIGHT = FONT.lineHeight;
|