feat: introduced a token-based theming system across the UI
* feat: added themes system * feat: smart sidebar auto-hide for files/diff tabs + lower files sidebar threshold * feat: added Checkbox component and update theming - Add reusable Checkbox component for toggles across UI - Replace several inputs with Checkbox in settings and commands panels - Add DiffIcon and apply surface/border theming to key UI areas * feat: Add convert-vscode-theme.cjs to convert VS Code themes to OpenChamber format * refactor: remove unused permission logic from ChatInput - Remove unused permission rules parsing logic from ChatInput - Memoize renderTheme in DiffWorkerProvider to avoid unnecessary recalculations - Remove forceOpaque helper in vscode theme adapter * fix: guard VSCode theme loading in MarkdownRenderer * feat: add custom user themes loading and reload - Load user themes from ~/.config/openchamber/themes at runtime - Expose /api/config/themes to fetch custom themes - Allow theme reloading from Settings → Theme → Reload themes in the UI
This commit is contained in:
committed by
GitHub
parent
5bb2c56bc0
commit
ddedc02687
@@ -0,0 +1,95 @@
|
||||
import { registerCustomTheme } from '@pierre/diffs';
|
||||
|
||||
import type { Theme } from '@/types/theme';
|
||||
import type { VSCodeTextMateTheme, VSCodeTokenColorRule } from './vscodeTextMateTheme';
|
||||
import { buildTextMateThemeFromAppTheme } from './textMateThemeFromAppTheme';
|
||||
|
||||
export type ShikiThemeRegistrationResolvedLike = VSCodeTextMateTheme & {
|
||||
settings: VSCodeTokenColorRule[];
|
||||
fg: string;
|
||||
bg: string;
|
||||
};
|
||||
|
||||
const isHex8 = (value: string): boolean => /^#[0-9a-fA-F]{8}$/.test(value);
|
||||
|
||||
const stripAlpha = (value: string): string => {
|
||||
if (isHex8(value)) {
|
||||
return value.slice(0, 7);
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
function withStableStringId<T extends object>(value: T, id: string): T {
|
||||
Object.defineProperty(value, 'toString', {
|
||||
value: () => id,
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
});
|
||||
|
||||
Object.defineProperty(value, Symbol.toPrimitive, {
|
||||
value: () => id,
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
});
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
const resolvedThemeCache = new Map<string, ShikiThemeRegistrationResolvedLike>();
|
||||
const registeredPierreThemes = new Set<string>();
|
||||
|
||||
const toResolvedTheme = (raw: VSCodeTextMateTheme, id: string): ShikiThemeRegistrationResolvedLike => {
|
||||
const bgRaw = raw.colors?.['editor.background'];
|
||||
const fgRaw = raw.colors?.['editor.foreground'];
|
||||
|
||||
const bg = bgRaw ? stripAlpha(bgRaw) : undefined;
|
||||
const fg = fgRaw ? stripAlpha(fgRaw) : undefined;
|
||||
|
||||
if (!bg || !fg) {
|
||||
throw new Error(`Theme "${id}" is missing editor.background/editor.foreground`);
|
||||
}
|
||||
|
||||
const settings = raw.tokenColors ?? [];
|
||||
|
||||
return withStableStringId(
|
||||
{
|
||||
...raw,
|
||||
name: id,
|
||||
fg,
|
||||
bg,
|
||||
settings,
|
||||
},
|
||||
id,
|
||||
);
|
||||
};
|
||||
|
||||
const buildTextMateTheme = (theme: Theme): VSCodeTextMateTheme => {
|
||||
return buildTextMateThemeFromAppTheme(theme);
|
||||
};
|
||||
|
||||
export const getResolvedShikiTheme = (theme: Theme): ShikiThemeRegistrationResolvedLike => {
|
||||
const cached = resolvedThemeCache.get(theme.metadata.id);
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
const raw = buildTextMateTheme(theme);
|
||||
const resolved = toResolvedTheme(raw, theme.metadata.id);
|
||||
resolvedThemeCache.set(theme.metadata.id, resolved);
|
||||
return resolved;
|
||||
};
|
||||
|
||||
export const ensurePierreThemeRegistered = (theme: Theme): void => {
|
||||
const id = theme.metadata.id;
|
||||
if (registeredPierreThemes.has(id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const resolved = getResolvedShikiTheme(theme);
|
||||
registerCustomTheme(id, async () => resolved);
|
||||
registeredPierreThemes.add(id);
|
||||
};
|
||||
|
||||
export const getStreamdownThemePair = (light: Theme, dark: Theme) => {
|
||||
return [getResolvedShikiTheme(light), getResolvedShikiTheme(dark)] as const;
|
||||
};
|
||||
@@ -1,96 +0,0 @@
|
||||
import flexokiDarkRawJson from './themes/flexoki-dark.json';
|
||||
import flexokiLightRawJson from './themes/flexoki-light.json';
|
||||
|
||||
export const FLEXOKI_SHIKI_DARK_THEME_NAME = 'flexoki-dark';
|
||||
export const FLEXOKI_SHIKI_LIGHT_THEME_NAME = 'flexoki-light';
|
||||
|
||||
type VSCodeTokenColorRule = {
|
||||
name?: string;
|
||||
scope?: string | string[];
|
||||
settings: Record<string, string | undefined>;
|
||||
};
|
||||
|
||||
type VSCodeTextMateTheme = {
|
||||
name: string;
|
||||
type: 'dark' | 'light';
|
||||
colors?: Record<string, string>;
|
||||
tokenColors?: VSCodeTokenColorRule[];
|
||||
semanticHighlighting?: boolean;
|
||||
semanticTokenColors?: Record<string, string>;
|
||||
};
|
||||
|
||||
type ShikiThemeRegistrationResolvedLike = VSCodeTextMateTheme & {
|
||||
settings: VSCodeTokenColorRule[];
|
||||
fg: string;
|
||||
bg: string;
|
||||
};
|
||||
|
||||
const flexokiDarkRaw = flexokiDarkRawJson as VSCodeTextMateTheme;
|
||||
const flexokiLightRaw = flexokiLightRawJson as VSCodeTextMateTheme;
|
||||
|
||||
function withStableStringId<T extends object>(value: T, id: string): T {
|
||||
Object.defineProperty(value, 'toString', {
|
||||
value: () => id,
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
});
|
||||
|
||||
Object.defineProperty(value, Symbol.toPrimitive, {
|
||||
value: () => id,
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
});
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function toResolvedTheme(
|
||||
raw: VSCodeTextMateTheme,
|
||||
name: string,
|
||||
type: VSCodeTextMateTheme['type']
|
||||
): ShikiThemeRegistrationResolvedLike {
|
||||
const bg = raw.colors?.['editor.background'];
|
||||
const fg = raw.colors?.['editor.foreground'];
|
||||
|
||||
if (!bg || !fg) {
|
||||
throw new Error(
|
||||
`Flexoki Shiki theme "${name}" is missing editor.background/editor.foreground`
|
||||
);
|
||||
}
|
||||
|
||||
const settings = raw.tokenColors ?? [];
|
||||
|
||||
return {
|
||||
...raw,
|
||||
name,
|
||||
type,
|
||||
fg,
|
||||
bg,
|
||||
settings,
|
||||
};
|
||||
}
|
||||
|
||||
export const flexokiDarkTheme = toResolvedTheme(
|
||||
flexokiDarkRaw,
|
||||
FLEXOKI_SHIKI_DARK_THEME_NAME,
|
||||
'dark'
|
||||
);
|
||||
|
||||
export const flexokiLightTheme = toResolvedTheme(
|
||||
flexokiLightRaw,
|
||||
FLEXOKI_SHIKI_LIGHT_THEME_NAME,
|
||||
'light'
|
||||
);
|
||||
|
||||
withStableStringId(flexokiDarkTheme, FLEXOKI_SHIKI_DARK_THEME_NAME);
|
||||
withStableStringId(flexokiLightTheme, FLEXOKI_SHIKI_LIGHT_THEME_NAME);
|
||||
|
||||
export const flexokiThemeNames = {
|
||||
dark: FLEXOKI_SHIKI_DARK_THEME_NAME,
|
||||
light: FLEXOKI_SHIKI_LIGHT_THEME_NAME,
|
||||
} as const;
|
||||
|
||||
export const flexokiStreamdownThemes = [
|
||||
flexokiLightTheme,
|
||||
flexokiDarkTheme,
|
||||
] as const;
|
||||
@@ -1,15 +0,0 @@
|
||||
import { registerCustomTheme } from '@pierre/diffs';
|
||||
|
||||
import { flexokiDarkTheme, flexokiLightTheme, flexokiThemeNames } from './flexokiThemes';
|
||||
|
||||
let hasRegistered = false;
|
||||
|
||||
export function ensureFlexokiThemesRegistered(): void {
|
||||
if (hasRegistered) return;
|
||||
|
||||
registerCustomTheme(flexokiThemeNames.dark, async () => flexokiDarkTheme);
|
||||
registerCustomTheme(flexokiThemeNames.light, async () => flexokiLightTheme);
|
||||
|
||||
hasRegistered = true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,482 @@
|
||||
import type { Theme } from '@/types/theme';
|
||||
|
||||
import type { VSCodeTextMateTheme, VSCodeTokenColorRule } from './vscodeTextMateTheme';
|
||||
|
||||
const isHex6 = (value: string): boolean => /^#[0-9a-fA-F]{6}$/.test(value);
|
||||
const isHex8 = (value: string): boolean => /^#[0-9a-fA-F]{8}$/.test(value);
|
||||
|
||||
const addAlpha = (value: string, alphaHex: string): string => {
|
||||
if (!/^[0-9a-fA-F]{2}$/.test(alphaHex)) {
|
||||
return value;
|
||||
}
|
||||
|
||||
if (isHex6(value)) {
|
||||
return `${value}${alphaHex}`;
|
||||
}
|
||||
|
||||
if (isHex8(value)) {
|
||||
return `${value.slice(0, 7)}${alphaHex}`;
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
const pick = (value: string | undefined, fallback: string): string => {
|
||||
if (typeof value === 'string' && value.trim().length > 0) {
|
||||
return value;
|
||||
}
|
||||
return fallback;
|
||||
};
|
||||
|
||||
const buildTokenColors = (theme: Theme): VSCodeTokenColorRule[] => {
|
||||
const base = theme.colors.syntax.base;
|
||||
const tokens = theme.colors.syntax.tokens ?? {};
|
||||
|
||||
const t = (key: string, fallback: string): string => pick(tokens[key], fallback);
|
||||
|
||||
return [
|
||||
{
|
||||
name: 'plain',
|
||||
scope: ['source', 'support.type.property-name.css'],
|
||||
settings: { foreground: base.foreground },
|
||||
},
|
||||
{
|
||||
name: 'classes',
|
||||
scope: ['entity.name.type.class'],
|
||||
settings: { foreground: t('className', t('class', base.function)) },
|
||||
},
|
||||
{
|
||||
name: 'interfaces',
|
||||
scope: ['entity.name.type.interface', 'entity.name.type'],
|
||||
settings: { foreground: t('interface', base.type) },
|
||||
},
|
||||
{
|
||||
name: 'structs',
|
||||
scope: ['entity.name.type.struct'],
|
||||
settings: { foreground: t('struct', base.function) },
|
||||
},
|
||||
{
|
||||
name: 'enums',
|
||||
scope: ['entity.name.type.enum'],
|
||||
settings: { foreground: t('enum', base.function) },
|
||||
},
|
||||
{
|
||||
name: 'keys',
|
||||
scope: ['meta.object-literal.key', 'support.type.property-name'],
|
||||
settings: { foreground: t('key', base.function) },
|
||||
},
|
||||
{
|
||||
name: 'methods',
|
||||
scope: ['entity.name.function.method', 'meta.function.method'],
|
||||
settings: { foreground: t('method', theme.colors.status.success) },
|
||||
},
|
||||
{
|
||||
name: 'functions',
|
||||
scope: ['entity.name.function', 'support.function', 'meta.function-call.generic'],
|
||||
settings: { foreground: base.function, fontStyle: 'bold' },
|
||||
},
|
||||
{
|
||||
name: 'variables',
|
||||
scope: ['variable', 'meta.variable', 'variable.other.object.property'],
|
||||
settings: { foreground: base.variable },
|
||||
},
|
||||
{
|
||||
name: 'variablesOther',
|
||||
scope: ['variable.other.object', 'variable.other.readwrite.alias'],
|
||||
settings: { foreground: t('variableOther', t('method', theme.colors.status.success)) },
|
||||
},
|
||||
{
|
||||
name: 'globalVariables',
|
||||
scope: ['variable.other.global', 'variable.language.this'],
|
||||
settings: { foreground: t('variableGlobal', base.number) },
|
||||
},
|
||||
{
|
||||
name: 'localVariables',
|
||||
scope: ['variable.other.local'],
|
||||
settings: { foreground: t('variableLocal', theme.colors.surface.elevated) },
|
||||
},
|
||||
{
|
||||
name: 'parameters',
|
||||
scope: ['variable.parameter', 'meta.parameter'],
|
||||
settings: { foreground: t('parameter', base.foreground) },
|
||||
},
|
||||
{
|
||||
name: 'properties',
|
||||
scope: ['variable.other.property', 'meta.property'],
|
||||
settings: { foreground: t('variableProperty', theme.colors.status.info) },
|
||||
},
|
||||
{
|
||||
name: 'strings',
|
||||
scope: ['string', 'string.other.link', 'markup.inline.raw.string.markdown'],
|
||||
settings: { foreground: base.string },
|
||||
},
|
||||
{
|
||||
name: 'stringEscapeSequences',
|
||||
scope: ['constant.character.escape', 'constant.other.placeholder'],
|
||||
settings: { foreground: t('stringEscape', base.foreground) },
|
||||
},
|
||||
{
|
||||
name: 'keywords',
|
||||
scope: ['keyword'],
|
||||
settings: { foreground: base.keyword },
|
||||
},
|
||||
{
|
||||
name: 'keywordsControl',
|
||||
scope: ['keyword.control.import', 'keyword.control.from', 'keyword.import'],
|
||||
settings: { foreground: t('keywordImport', base.operator) },
|
||||
},
|
||||
{
|
||||
name: 'storageModifiers',
|
||||
scope: ['storage.modifier', 'keyword.modifier', 'storage.type'],
|
||||
settings: { foreground: t('storageModifier', base.keyword) },
|
||||
},
|
||||
{
|
||||
name: 'comments',
|
||||
scope: ['comment', 'punctuation.definition.comment'],
|
||||
settings: { foreground: base.comment },
|
||||
},
|
||||
{
|
||||
name: 'docComments',
|
||||
scope: ['comment.documentation', 'comment.line.documentation'],
|
||||
settings: { foreground: t('commentDoc', theme.colors.surface.mutedForeground) },
|
||||
},
|
||||
{
|
||||
name: 'numbers',
|
||||
scope: ['constant.numeric'],
|
||||
settings: { foreground: base.number },
|
||||
},
|
||||
{
|
||||
name: 'booleans',
|
||||
scope: ['constant.language.boolean', 'constant.language.json'],
|
||||
settings: { foreground: t('boolean', base.type) },
|
||||
},
|
||||
{
|
||||
name: 'operators',
|
||||
scope: ['keyword.operator'],
|
||||
settings: { foreground: base.operator },
|
||||
},
|
||||
{
|
||||
name: 'macros',
|
||||
scope: ['entity.name.function.preprocessor', 'meta.preprocessor'],
|
||||
settings: { foreground: t('macro', base.keyword) },
|
||||
},
|
||||
{
|
||||
name: 'preprocessor',
|
||||
scope: ['meta.preprocessor'],
|
||||
settings: { foreground: t('preprocessor', t('label', base.number)) },
|
||||
},
|
||||
{
|
||||
name: 'urls',
|
||||
scope: ['markup.underline.link'],
|
||||
settings: { foreground: t('url', theme.colors.status.info) },
|
||||
},
|
||||
{
|
||||
name: 'tags',
|
||||
scope: ['entity.name.tag'],
|
||||
settings: { foreground: t('tag', base.keyword) },
|
||||
},
|
||||
{
|
||||
name: 'jsxTags',
|
||||
scope: ['support.class.component'],
|
||||
settings: { foreground: t('jsxTag', t('label', base.number)) },
|
||||
},
|
||||
{
|
||||
name: 'attributes',
|
||||
scope: ['entity.other.attribute-name', 'meta.attribute'],
|
||||
settings: { foreground: t('tagAttribute', base.type) },
|
||||
},
|
||||
{
|
||||
name: 'types',
|
||||
scope: ['support.type'],
|
||||
settings: { foreground: base.type },
|
||||
},
|
||||
{
|
||||
name: 'constants',
|
||||
scope: ['variable.other.constant', 'variable.readonly'],
|
||||
settings: { foreground: t('constant', base.foreground) },
|
||||
},
|
||||
{
|
||||
name: 'labels',
|
||||
scope: ['entity.name.label', 'punctuation.definition.label'],
|
||||
settings: { foreground: t('label', t('variableGlobal', base.number)) },
|
||||
},
|
||||
{
|
||||
name: 'namespaces',
|
||||
scope: ['entity.name.namespace', 'storage.modifier.namespace', 'markup.bold.markdown'],
|
||||
settings: { foreground: t('namespace', base.type) },
|
||||
},
|
||||
{
|
||||
name: 'modules',
|
||||
scope: ['entity.name.module', 'storage.modifier.module'],
|
||||
settings: { foreground: t('module', base.operator) },
|
||||
},
|
||||
{
|
||||
name: 'typeParameters',
|
||||
scope: ['variable.type.parameter', 'variable.parameter.type'],
|
||||
settings: { foreground: t('typeParameter', base.function) },
|
||||
},
|
||||
{
|
||||
name: 'exceptions',
|
||||
scope: ['keyword.control.exception', 'keyword.control.trycatch'],
|
||||
settings: { foreground: t('exception', t('label', base.number)) },
|
||||
},
|
||||
{
|
||||
name: 'decorators',
|
||||
scope: ['meta.decorator', 'punctuation.decorator', 'entity.name.function.decorator'],
|
||||
settings: { foreground: t('decorator', base.type) },
|
||||
},
|
||||
{
|
||||
name: 'calls',
|
||||
scope: ['variable.function'],
|
||||
settings: { foreground: base.foreground },
|
||||
},
|
||||
{
|
||||
name: 'punctuation',
|
||||
scope: [
|
||||
'punctuation',
|
||||
'punctuation.terminator',
|
||||
'punctuation.definition.tag',
|
||||
'punctuation.separator',
|
||||
'punctuation.definition.string',
|
||||
'punctuation.section.block',
|
||||
],
|
||||
settings: { foreground: t('punctuation', base.comment) },
|
||||
},
|
||||
{
|
||||
name: 'yellow',
|
||||
scope: [
|
||||
'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',
|
||||
'constant.language.go',
|
||||
'support.class.dart',
|
||||
'keyword.other.documentation',
|
||||
'storage.modifier.import.java',
|
||||
'punctuation.definition.list.begin.markdown',
|
||||
'punctuation.definition.quote.begin.markdown',
|
||||
'meta.separator.markdown',
|
||||
'entity.name.section.markdown',
|
||||
],
|
||||
settings: { foreground: base.type },
|
||||
},
|
||||
{
|
||||
name: 'green',
|
||||
scope: [],
|
||||
settings: { foreground: t('method', theme.colors.status.success) },
|
||||
},
|
||||
{
|
||||
name: 'cyan',
|
||||
scope: [
|
||||
'markup.italic.markdown',
|
||||
'support.type.python',
|
||||
'variable.legacy.builtin.python',
|
||||
'support.constant.property-value.css',
|
||||
'storage.modifier.attribute.swift',
|
||||
],
|
||||
settings: { foreground: base.string },
|
||||
},
|
||||
{
|
||||
name: 'blue',
|
||||
scope: [],
|
||||
settings: { foreground: base.keyword },
|
||||
},
|
||||
{
|
||||
name: 'purple',
|
||||
scope: ['keyword.channel.go', 'keyword.other.platform.os.swift'],
|
||||
settings: { foreground: base.number },
|
||||
},
|
||||
{
|
||||
name: 'magenta',
|
||||
scope: ['punctuation.definition.heading.markdown'],
|
||||
settings: { foreground: t('label', t('variableGlobal', base.number)) },
|
||||
},
|
||||
{
|
||||
name: 'red',
|
||||
scope: [],
|
||||
settings: { foreground: base.operator },
|
||||
},
|
||||
{
|
||||
name: 'orange',
|
||||
scope: [],
|
||||
settings: { foreground: base.function },
|
||||
},
|
||||
];
|
||||
};
|
||||
|
||||
const buildColors = (theme: Theme): Record<string, string> => {
|
||||
const s = theme.colors.surface;
|
||||
const i = theme.colors.interactive;
|
||||
const st = theme.colors.status;
|
||||
const base = theme.colors.syntax.base;
|
||||
const hl = theme.colors.syntax.highlights ?? {};
|
||||
|
||||
const diffAddedBg = pick(hl.diffAddedBackground, st.successBackground);
|
||||
const diffRemovedBg = pick(hl.diffRemovedBackground, st.errorBackground);
|
||||
|
||||
return {
|
||||
'editor.background': s.background,
|
||||
'editor.foreground': s.foreground,
|
||||
'editor.hoverHighlightBackground': pick(i.hover, s.subtle),
|
||||
'editor.lineHighlightBackground': s.muted,
|
||||
'editor.selectionBackground': i.selection,
|
||||
'editor.selectionHighlightBackground': i.selection,
|
||||
'editor.findMatchBackground': base.type,
|
||||
'editor.findMatchHighlightBackground': addAlpha(base.type, 'cc'),
|
||||
'editor.findRangeHighlightBackground': s.muted,
|
||||
'editor.inactiveSelectionBackground': s.elevated,
|
||||
'editor.lineHighlightBorder': s.elevated,
|
||||
'editor.rangeHighlightBackground': pick(i.active, i.borderHover),
|
||||
'notifications.background': s.elevated,
|
||||
'editorInlayHint.typeBackground': s.subtle,
|
||||
'editorInlayHint.typeForeground': s.foreground,
|
||||
'editorWhitespace.foreground': i.borderHover,
|
||||
'editorIndentGuide.background1': s.subtle,
|
||||
'editorHoverWidget.background': s.elevated,
|
||||
'editorLineNumber.activeForeground': pick(hl.lineNumberActive, s.foreground),
|
||||
'editorLineNumber.foreground': pick(hl.lineNumber, s.mutedForeground),
|
||||
'editorGutter.background': s.background,
|
||||
'editorGutter.modifiedBackground': st.info,
|
||||
'editorGutter.addedBackground': st.success,
|
||||
'editorGutter.deletedBackground': st.error,
|
||||
'editorBracketMatch.background': s.elevated,
|
||||
'editorBracketMatch.border': s.subtle,
|
||||
'editorError.foreground': st.error,
|
||||
'editorWarning.foreground': st.warning,
|
||||
'editorInfo.foreground': st.info,
|
||||
'diffEditor.insertedTextBackground': diffAddedBg,
|
||||
'diffEditor.removedTextBackground': diffRemovedBg,
|
||||
'editorGroupHeader.tabsBackground': s.background,
|
||||
'editorGroup.border': i.border,
|
||||
'tab.activeBackground': s.background,
|
||||
'tab.inactiveBackground': s.muted,
|
||||
'tab.inactiveForeground': s.mutedForeground,
|
||||
'tab.activeForeground': s.foreground,
|
||||
'tab.hoverBackground': s.subtle,
|
||||
'tab.unfocusedHoverBackground': s.subtle,
|
||||
'tab.border': i.border,
|
||||
'tab.activeModifiedBorder': base.type,
|
||||
'tab.inactiveModifiedBorder': st.info,
|
||||
'tab.unfocusedActiveModifiedBorder': base.type,
|
||||
'tab.unfocusedInactiveModifiedBorder': st.info,
|
||||
'editorWidget.background': s.muted,
|
||||
'editorWidget.border': i.border,
|
||||
'editorSuggestWidget.background': s.background,
|
||||
'editorSuggestWidget.border': i.border,
|
||||
'editorSuggestWidget.foreground': s.foreground,
|
||||
'editorSuggestWidget.highlightForeground': s.mutedForeground,
|
||||
'editorSuggestWidget.selectedBackground': s.subtle,
|
||||
'peekView.border': i.border,
|
||||
'peekViewEditor.background': s.background,
|
||||
'peekViewEditor.matchHighlightBackground': s.subtle,
|
||||
'peekViewResult.background': s.muted,
|
||||
'peekViewResult.fileForeground': s.foreground,
|
||||
'peekViewResult.lineForeground': s.mutedForeground,
|
||||
'peekViewResult.matchHighlightBackground': s.subtle,
|
||||
'peekViewResult.selectionBackground': s.elevated,
|
||||
'peekViewResult.selectionForeground': s.mutedForeground,
|
||||
'peekViewTitle.background': s.subtle,
|
||||
'peekViewTitleDescription.foreground': s.mutedForeground,
|
||||
'peekViewTitleLabel.foreground': s.foreground,
|
||||
'merge.currentHeaderBackground': st.success,
|
||||
'merge.currentContentBackground': pick(hl.diffAdded, st.success),
|
||||
'merge.incomingHeaderBackground': st.info,
|
||||
'merge.incomingContentBackground': pick(hl.diffModified, st.info),
|
||||
'merge.border': i.border,
|
||||
'merge.commonContentBackground': s.subtle,
|
||||
'merge.commonHeaderBackground': s.muted,
|
||||
'panel.background': s.background,
|
||||
'panel.border': i.border,
|
||||
'panelTitle.activeBorder': i.borderHover,
|
||||
'panelTitle.activeForeground': s.foreground,
|
||||
'panelTitle.inactiveForeground': s.mutedForeground,
|
||||
'statusBar.background': s.background,
|
||||
'statusBar.foreground': s.foreground,
|
||||
'statusBar.border': i.border,
|
||||
'statusBar.debuggingBackground': st.error,
|
||||
'statusBar.debuggingForeground': st.errorForeground,
|
||||
'statusBar.noFolderBackground': s.subtle,
|
||||
'statusBar.noFolderForeground': s.mutedForeground,
|
||||
'titleBar.activeBackground': s.background,
|
||||
'titleBar.activeForeground': s.foreground,
|
||||
'titleBar.inactiveBackground': s.muted,
|
||||
'titleBar.inactiveForeground': s.mutedForeground,
|
||||
'titleBar.border': i.border,
|
||||
'menu.foreground': s.foreground,
|
||||
'menu.background': s.background,
|
||||
'menu.selectionForeground': s.foreground,
|
||||
'menu.selectionBackground': s.subtle,
|
||||
'menu.border': i.border,
|
||||
'editorInlayHint.foreground': s.mutedForeground,
|
||||
'editorInlayHint.background': s.subtle,
|
||||
'terminal.foreground': s.foreground,
|
||||
'terminal.background': s.background,
|
||||
'terminalCursor.foreground': s.foreground,
|
||||
'terminalCursor.background': s.background,
|
||||
'terminal.ansiRed': pick(hl.diffRemoved, st.error),
|
||||
'terminal.ansiGreen': pick(hl.diffAdded, st.success),
|
||||
'terminal.ansiYellow': st.warning,
|
||||
'terminal.ansiBlue': pick(hl.diffModified, st.info),
|
||||
'terminal.ansiMagenta': base.keyword,
|
||||
'terminal.ansiCyan': base.type,
|
||||
'activityBar.background': s.background,
|
||||
'activityBar.foreground': s.foreground,
|
||||
'activityBar.inactiveForeground': s.mutedForeground,
|
||||
'activityBar.activeBorder': s.foreground,
|
||||
'activityBar.border': i.border,
|
||||
'sideBar.background': s.background,
|
||||
'sideBar.foreground': s.foreground,
|
||||
'sideBar.border': i.border,
|
||||
'sideBarTitle.foreground': s.foreground,
|
||||
'sideBarSectionHeader.background': s.muted,
|
||||
'sideBarSectionHeader.foreground': s.foreground,
|
||||
'sideBarSectionHeader.border': i.border,
|
||||
'sideBar.activeBackground': s.subtle,
|
||||
'sideBar.activeForeground': s.foreground,
|
||||
'sideBar.hoverBackground': s.muted,
|
||||
'sideBar.hoverForeground': s.foreground,
|
||||
'list.warningForeground': st.warning,
|
||||
'list.errorForeground': st.error,
|
||||
'list.inactiveSelectionBackground': s.subtle,
|
||||
'list.activeSelectionBackground': s.elevated,
|
||||
'list.inactiveSelectionForeground': s.foreground,
|
||||
'list.activeSelectionForeground': s.foreground,
|
||||
'list.hoverForeground': s.foreground,
|
||||
'list.hoverBackground': s.muted,
|
||||
'input.background': s.muted,
|
||||
'input.foreground': s.foreground,
|
||||
'input.border': i.border,
|
||||
'input.placeholderForeground': s.mutedForeground,
|
||||
'inputOption.activeBorder': i.border,
|
||||
'inputOption.activeBackground': s.elevated,
|
||||
'inputOption.activeForeground': s.foreground,
|
||||
'inputValidation.infoBackground': st.infoBackground,
|
||||
'inputValidation.infoBorder': st.infoBorder,
|
||||
'inputValidation.warningBackground': st.warningBackground,
|
||||
'inputValidation.warningBorder': st.warningBorder,
|
||||
'inputValidation.errorBackground': st.errorBackground,
|
||||
'inputValidation.errorBorder': st.errorBorder,
|
||||
'dropdown.background': s.muted,
|
||||
'dropdown.foreground': s.foreground,
|
||||
'dropdown.border': i.border,
|
||||
'dropdown.listBackground': s.background,
|
||||
'badge.background': theme.colors.primary.base,
|
||||
'activityBarBadge.background': theme.colors.primary.base,
|
||||
'button.background': theme.colors.primary.base,
|
||||
'button.foreground': pick(theme.colors.primary.foreground, s.background),
|
||||
'badge.foreground': pick(theme.colors.primary.foreground, s.background),
|
||||
'activityBarBadge.foreground': pick(theme.colors.primary.foreground, s.background),
|
||||
};
|
||||
};
|
||||
|
||||
export function buildTextMateThemeFromAppTheme(theme: Theme): VSCodeTextMateTheme {
|
||||
return {
|
||||
name: theme.metadata.name,
|
||||
type: theme.metadata.variant,
|
||||
colors: buildColors(theme),
|
||||
tokenColors: buildTokenColors(theme),
|
||||
};
|
||||
}
|
||||
@@ -1,547 +0,0 @@
|
||||
{
|
||||
"name": "Flexoki",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"editor.background": "#100F0F",
|
||||
"editor.foreground": "#CECDC3",
|
||||
"editor.hoverHighlightBackground": "#343331",
|
||||
"editor.lineHighlightBackground": "#1C1B1A",
|
||||
"editor.selectionBackground": "#CECDC333",
|
||||
"editor.selectionHighlightBackground": "#CECDC333",
|
||||
"editor.findMatchBackground": "#AD8301",
|
||||
"editor.findMatchHighlightBackground": "#AD8301cc",
|
||||
"editor.findRangeHighlightBackground": "#1C1B1A",
|
||||
"editor.inactiveSelectionBackground": "#282726",
|
||||
"editor.lineHighlightBorder": "#282726",
|
||||
"editor.rangeHighlightBackground": "#403E3C",
|
||||
"notifications.background": "#282726",
|
||||
"editorInlayHint.typeBackground": "#343331",
|
||||
"editorInlayHint.typeForeground": "#CECDC3",
|
||||
"editorWhitespace.foreground": "#403E3C",
|
||||
"editorIndentGuide.background1": "#343331",
|
||||
"editorHoverWidget.background": "#282726",
|
||||
"editorLineNumber.activeForeground": "#CECDC3",
|
||||
"editorLineNumber.foreground": "#403E3C",
|
||||
"editorGutter.background": "#100F0F",
|
||||
"editorGutter.modifiedBackground": "#3AA99F",
|
||||
"editorGutter.addedBackground": "#879A39",
|
||||
"editorGutter.deletedBackground": "#D14D41",
|
||||
"editorBracketMatch.background": "#282726",
|
||||
"editorBracketMatch.border": "#343331",
|
||||
"editorError.foreground": "#D14D41",
|
||||
"editorWarning.foreground": "#DA702C",
|
||||
"editorInfo.foreground": "#4385BE",
|
||||
"diffEditor.insertedTextBackground": "#66800B99",
|
||||
"diffEditor.removedTextBackground": "#AF302999",
|
||||
"editorGroupHeader.tabsBackground": "#100F0F",
|
||||
"editorGroup.border": "#343331",
|
||||
"tab.activeBackground": "#100F0F",
|
||||
"tab.inactiveBackground": "#1C1B1A",
|
||||
"tab.inactiveForeground": "#878580",
|
||||
"tab.activeForeground": "#CECDC3",
|
||||
"tab.hoverBackground": "#343331",
|
||||
"tab.unfocusedHoverBackground": "#343331",
|
||||
"tab.border": "#343331",
|
||||
"tab.activeModifiedBorder": "#D0A215",
|
||||
"tab.inactiveModifiedBorder": "#4385BE",
|
||||
"tab.unfocusedActiveModifiedBorder": "#AD8301",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#205EA6",
|
||||
"editorWidget.background": "#1C1B1A",
|
||||
"editorWidget.border": "#343331",
|
||||
"editorSuggestWidget.background": "#100F0F",
|
||||
"editorSuggestWidget.border": "#343331",
|
||||
"editorSuggestWidget.foreground": "#CECDC3",
|
||||
"editorSuggestWidget.highlightForeground": "#878580",
|
||||
"editorSuggestWidget.selectedBackground": "#343331",
|
||||
"peekView.border": "#343331",
|
||||
"peekViewEditor.background": "#100F0F",
|
||||
"peekViewEditor.matchHighlightBackground": "#403E3C",
|
||||
"peekViewResult.background": "#1C1B1A",
|
||||
"peekViewResult.fileForeground": "#CECDC3",
|
||||
"peekViewResult.lineForeground": "#878580",
|
||||
"peekViewResult.matchHighlightBackground": "#403E3C",
|
||||
"peekViewResult.selectionBackground": "#282726",
|
||||
"peekViewResult.selectionForeground": "#575653",
|
||||
"peekViewTitle.background": "#343331",
|
||||
"peekViewTitleDescription.foreground": "#878580",
|
||||
"peekViewTitleLabel.foreground": "#CECDC3",
|
||||
"merge.currentHeaderBackground": "#879A39",
|
||||
"merge.currentContentBackground": "#66800B",
|
||||
"merge.incomingHeaderBackground": "#3AA99F",
|
||||
"merge.incomingContentBackground": "#24837B",
|
||||
"merge.border": "#343331",
|
||||
"merge.commonContentBackground": "#403E3C",
|
||||
"merge.commonHeaderBackground": "#343331",
|
||||
"panel.background": "#100F0F",
|
||||
"panel.border": "#343331",
|
||||
"panelTitle.activeBorder": "#403E3C",
|
||||
"panelTitle.activeForeground": "#CECDC3",
|
||||
"panelTitle.inactiveForeground": "#878580",
|
||||
"statusBar.background": "#100F0F",
|
||||
"statusBar.foreground": "#CECDC3",
|
||||
"statusBar.border": "#343331",
|
||||
"statusBar.debuggingBackground": "#D14D41",
|
||||
"statusBar.debuggingForeground": "#CECDC3",
|
||||
"statusBar.noFolderBackground": "#403E3C",
|
||||
"statusBar.noFolderForeground": "#575653",
|
||||
"titleBar.activeBackground": "#100F0F",
|
||||
"titleBar.activeForeground": "#CECDC3",
|
||||
"titleBar.inactiveBackground": "#1C1B1A",
|
||||
"titleBar.inactiveForeground": "#878580",
|
||||
"titleBar.border": "#343331",
|
||||
"menu.foreground": "#CECDC3",
|
||||
"menu.background": "#100F0F",
|
||||
"menu.selectionForeground": "#CECDC3",
|
||||
"menu.selectionBackground": "#343331",
|
||||
"menu.border": "#343331",
|
||||
"editorInlayHint.foreground": "#878580",
|
||||
"editorInlayHint.background": "#343331",
|
||||
"terminal.foreground": "#CECDC3",
|
||||
"terminal.background": "#100F0F",
|
||||
"terminalCursor.foreground": "#CECDC3",
|
||||
"terminalCursor.background": "#100F0F",
|
||||
"terminal.ansiRed": "#D14D41",
|
||||
"terminal.ansiGreen": "#879A39",
|
||||
"terminal.ansiYellow": "#D0A215",
|
||||
"terminal.ansiBlue": "#4385BE",
|
||||
"terminal.ansiMagenta": "#3AA99F",
|
||||
"terminal.ansiCyan": "#3AA99F",
|
||||
"activityBar.background": "#100F0F",
|
||||
"activityBar.foreground": "#CECDC3",
|
||||
"activityBar.inactiveForeground": "#878580",
|
||||
"activityBar.activeBorder": "#CECDC3",
|
||||
"activityBar.border": "#343331",
|
||||
"sideBar.background": "#100F0F",
|
||||
"sideBar.foreground": "#CECDC3",
|
||||
"sideBar.border": "#343331",
|
||||
"sideBarTitle.foreground": "#CECDC3",
|
||||
"sideBarSectionHeader.background": "#1C1B1A",
|
||||
"sideBarSectionHeader.foreground": "#CECDC3",
|
||||
"sideBarSectionHeader.border": "#343331",
|
||||
"sideBar.activeBackground": "#403E3C",
|
||||
"sideBar.activeForeground": "#CECDC3",
|
||||
"sideBar.hoverBackground": "#343331",
|
||||
"sideBar.hoverForeground": "#878580",
|
||||
"sideBar.folderIcon.foreground": "#879A39",
|
||||
"sideBar.fileIcon.foreground": "#4385BE",
|
||||
"list.warningForeground": "#DA702C",
|
||||
"list.errorForeground": "#D14D41",
|
||||
"list.inactiveSelectionBackground": "#343331",
|
||||
"list.activeSelectionBackground": "#403E3C",
|
||||
"list.inactiveSelectionForeground": "#CECDC3",
|
||||
"list.activeSelectionForeground": "#CECDC3",
|
||||
"list.hoverForeground": "#CECDC3",
|
||||
"list.hoverBackground": "#343331",
|
||||
"input.background": "#1C1B1A",
|
||||
"input.foreground": "#CECDC3",
|
||||
"input.border": "#343331",
|
||||
"input.placeholderForeground": "#878580",
|
||||
"inputOption.activeBorder": "#343331",
|
||||
"inputOption.activeBackground": "#282726",
|
||||
"inputOption.activeForeground": "#CECDC3",
|
||||
"inputValidation.infoBackground": "#3AA99F",
|
||||
"inputValidation.infoBorder": "#24837B",
|
||||
"inputValidation.warningBackground": "#DA702C",
|
||||
"inputValidation.warningBorder": "#BC5215",
|
||||
"inputValidation.errorBackground": "#D14D41",
|
||||
"inputValidation.errorBorder": "#AF3029",
|
||||
"dropdown.background": "#1C1B1A",
|
||||
"dropdown.foreground": "#CECDC3",
|
||||
"dropdown.border": "#343331",
|
||||
"dropdown.listBackground": "#100F0F",
|
||||
"badge.background": "#3AA99F",
|
||||
"activityBarBadge.background": "#3AA99F",
|
||||
"button.background": "#3AA99F",
|
||||
"button.foreground": "#100F0F",
|
||||
"badge.foreground": "#100F0F",
|
||||
"activityBarBadge.foreground": "#100F0F"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"name": "plain",
|
||||
"scope": ["source", "support.type.property-name.css"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "classes",
|
||||
"scope": ["entity.name.type.class"],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "interfaces",
|
||||
"scope": ["entity.name.type.interface", "entity.name.type"],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "structs",
|
||||
"scope": ["entity.name.type.struct"],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "enums",
|
||||
"scope": ["entity.name.type.enum"],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keys",
|
||||
"scope": ["meta.object-literal.key", "support.type.property-name"],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "methods",
|
||||
"scope": ["entity.name.function.method", "meta.function.method"],
|
||||
"settings": {
|
||||
"foreground": "#879A39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "functions",
|
||||
"scope": [
|
||||
"entity.name.function",
|
||||
"support.function",
|
||||
"meta.function-call.generic"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#DA702C",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "variables",
|
||||
"scope": ["variable", "meta.variable", "variable.other.object.property"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "variablesOther",
|
||||
"scope": ["variable.other.object", "variable.other.readwrite.alias"],
|
||||
"settings": {
|
||||
"foreground": "#879A39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "globalVariables",
|
||||
"scope": ["variable.other.global", "variable.language.this"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "localVariables",
|
||||
"scope": ["variable.other.local"],
|
||||
"settings": {
|
||||
"foreground": "#282726"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "parameters",
|
||||
"scope": ["variable.parameter", "meta.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "properties",
|
||||
"scope": ["variable.other.property", "meta.property"],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "strings",
|
||||
"scope": [
|
||||
"string",
|
||||
"string.other.link",
|
||||
"markup.inline.raw.string.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#3AA99F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "stringEscapeSequences",
|
||||
"scope": ["constant.character.escape", "constant.other.placeholder"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keywords",
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#879A39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keywordsControl",
|
||||
"scope": [
|
||||
"keyword.control.import",
|
||||
"keyword.control.from",
|
||||
"keyword.import"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D14D41"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "storageModifiers",
|
||||
"scope": ["storage.modifier", "keyword.modifier", "storage.type"],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "comments",
|
||||
"scope": ["comment", "punctuation.definition.comment"],
|
||||
"settings": {
|
||||
"foreground": "#878580"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docComments",
|
||||
"scope": ["comment.documentation", "comment.line.documentation"],
|
||||
"settings": {
|
||||
"foreground": "#575653"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "numbers",
|
||||
"scope": ["constant.numeric"],
|
||||
"settings": {
|
||||
"foreground": "#8B7EC8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "booleans",
|
||||
"scope": ["constant.language.boolean", "constant.language.json"],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "operators",
|
||||
"scope": ["keyword.operator"],
|
||||
"settings": {
|
||||
"foreground": "#D14D41"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macros",
|
||||
"scope": ["entity.name.function.preprocessor", "meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preprocessor",
|
||||
"scope": ["meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "urls",
|
||||
"scope": ["markup.underline.link"],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tags",
|
||||
"scope": ["entity.name.tag"],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "jsxTags",
|
||||
"scope": ["support.class.component"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "attributes",
|
||||
"scope": ["entity.other.attribute-name", "meta.attribute"],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "types",
|
||||
"scope": ["support.type"],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "constants",
|
||||
"scope": ["variable.other.constant", "variable.readonly"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "labels",
|
||||
"scope": ["entity.name.label", "punctuation.definition.label"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "namespaces",
|
||||
"scope": [
|
||||
"entity.name.namespace",
|
||||
"storage.modifier.namespace",
|
||||
"markup.bold.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "modules",
|
||||
"scope": ["entity.name.module", "storage.modifier.module"],
|
||||
"settings": {
|
||||
"foreground": "#D14D41"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "typeParameters",
|
||||
"scope": ["variable.type.parameter", "variable.parameter.type"],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "exceptions",
|
||||
"scope": ["keyword.control.exception", "keyword.control.trycatch"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "decorators",
|
||||
"scope": [
|
||||
"meta.decorator",
|
||||
"punctuation.decorator",
|
||||
"entity.name.function.decorator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "calls",
|
||||
"scope": ["variable.function"],
|
||||
"settings": {
|
||||
"foreground": "#CECDC3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "punctuation",
|
||||
"scope": [
|
||||
"punctuation",
|
||||
"punctuation.terminator",
|
||||
"punctuation.definition.tag",
|
||||
"punctuation.separator",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.section.block"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#878580"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "yellow",
|
||||
"scope": [
|
||||
"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",
|
||||
"constant.language.go",
|
||||
"support.class.dart",
|
||||
"keyword.other.documentation",
|
||||
"storage.modifier.import.java",
|
||||
"punctuation.definition.list.begin.markdown",
|
||||
"punctuation.definition.quote.begin.markdown",
|
||||
"meta.separator.markdown",
|
||||
"entity.name.section.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D0A215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "green",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#879A39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "cyan",
|
||||
"scope": [
|
||||
"markup.italic.markdown",
|
||||
"support.type.python",
|
||||
"variable.legacy.builtin.python",
|
||||
"support.constant.property-value.css",
|
||||
"storage.modifier.attribute.swift"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#3AA99F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "blue",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#4385BE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "purple",
|
||||
"scope": ["keyword.channel.go", "keyword.other.platform.os.swift"],
|
||||
"settings": {
|
||||
"foreground": "#8B7EC8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "magenta",
|
||||
"scope": ["punctuation.definition.heading.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#CE5D97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "red",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#D14D41"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "orange",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#DA702C"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,547 +0,0 @@
|
||||
{
|
||||
"name": "Flexoki",
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"editor.background": "#FFFCF0",
|
||||
"editor.foreground": "#100F0F",
|
||||
"editor.hoverHighlightBackground": "#DAD8CE",
|
||||
"editor.lineHighlightBackground": "#F2F0E5",
|
||||
"editor.selectionBackground": "#100F0F44",
|
||||
"editor.selectionHighlightBackground": "#100F0F44",
|
||||
"editor.findMatchBackground": "#D0A215",
|
||||
"editor.findMatchHighlightBackground": "#D0A215cc",
|
||||
"editor.findRangeHighlightBackground": "#F2F0E5",
|
||||
"editor.inactiveSelectionBackground": "#E6E4D9",
|
||||
"editor.lineHighlightBorder": "#E6E4D9",
|
||||
"editor.rangeHighlightBackground": "#CECDC3",
|
||||
"notifications.background": "#E6E4D9",
|
||||
"editorInlayHint.typeBackground": "#DAD8CE",
|
||||
"editorInlayHint.typeForeground": "#100F0F",
|
||||
"editorWhitespace.foreground": "#CECDC3",
|
||||
"editorIndentGuide.background1": "#DAD8CE",
|
||||
"editorHoverWidget.background": "#E6E4D9",
|
||||
"editorLineNumber.activeForeground": "#100F0F",
|
||||
"editorLineNumber.foreground": "#CECDC3",
|
||||
"editorGutter.background": "#FFFCF0",
|
||||
"editorGutter.modifiedBackground": "#24837B",
|
||||
"editorGutter.addedBackground": "#66800B",
|
||||
"editorGutter.deletedBackground": "#AF3029",
|
||||
"editorBracketMatch.background": "#E6E4D9",
|
||||
"editorBracketMatch.border": "#DAD8CE",
|
||||
"editorError.foreground": "#AF3029",
|
||||
"editorWarning.foreground": "#BC5215",
|
||||
"editorInfo.foreground": "#205EA6",
|
||||
"diffEditor.insertedTextBackground": "#879A3999",
|
||||
"diffEditor.removedTextBackground": "#D14D4199",
|
||||
"editorGroupHeader.tabsBackground": "#FFFCF0",
|
||||
"editorGroup.border": "#DAD8CE",
|
||||
"tab.activeBackground": "#FFFCF0",
|
||||
"tab.inactiveBackground": "#F2F0E5",
|
||||
"tab.inactiveForeground": "#6F6E69",
|
||||
"tab.activeForeground": "#100F0F",
|
||||
"tab.hoverBackground": "#DAD8CE",
|
||||
"tab.unfocusedHoverBackground": "#DAD8CE",
|
||||
"tab.border": "#DAD8CE",
|
||||
"tab.activeModifiedBorder": "#AD8301",
|
||||
"tab.inactiveModifiedBorder": "#205EA6",
|
||||
"tab.unfocusedActiveModifiedBorder": "#D0A215",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#4385BE",
|
||||
"editorWidget.background": "#F2F0E5",
|
||||
"editorWidget.border": "#DAD8CE",
|
||||
"editorSuggestWidget.background": "#FFFCF0",
|
||||
"editorSuggestWidget.border": "#DAD8CE",
|
||||
"editorSuggestWidget.foreground": "#100F0F",
|
||||
"editorSuggestWidget.highlightForeground": "#6F6E69",
|
||||
"editorSuggestWidget.selectedBackground": "#DAD8CE",
|
||||
"peekView.border": "#DAD8CE",
|
||||
"peekViewEditor.background": "#FFFCF0",
|
||||
"peekViewEditor.matchHighlightBackground": "#CECDC3",
|
||||
"peekViewResult.background": "#F2F0E5",
|
||||
"peekViewResult.fileForeground": "#100F0F",
|
||||
"peekViewResult.lineForeground": "#6F6E69",
|
||||
"peekViewResult.matchHighlightBackground": "#CECDC3",
|
||||
"peekViewResult.selectionBackground": "#E6E4D9",
|
||||
"peekViewResult.selectionForeground": "#B7B5AC",
|
||||
"peekViewTitle.background": "#DAD8CE",
|
||||
"peekViewTitleDescription.foreground": "#6F6E69",
|
||||
"peekViewTitleLabel.foreground": "#100F0F",
|
||||
"merge.currentHeaderBackground": "#66800B",
|
||||
"merge.currentContentBackground": "#879A39",
|
||||
"merge.incomingHeaderBackground": "#24837B",
|
||||
"merge.incomingContentBackground": "#3AA99F",
|
||||
"merge.border": "#DAD8CE",
|
||||
"merge.commonContentBackground": "#CECDC3",
|
||||
"merge.commonHeaderBackground": "#DAD8CE",
|
||||
"panel.background": "#FFFCF0",
|
||||
"panel.border": "#DAD8CE",
|
||||
"panelTitle.activeBorder": "#CECDC3",
|
||||
"panelTitle.activeForeground": "#100F0F",
|
||||
"panelTitle.inactiveForeground": "#6F6E69",
|
||||
"statusBar.background": "#FFFCF0",
|
||||
"statusBar.foreground": "#100F0F",
|
||||
"statusBar.border": "#DAD8CE",
|
||||
"statusBar.debuggingBackground": "#AF3029",
|
||||
"statusBar.debuggingForeground": "#100F0F",
|
||||
"statusBar.noFolderBackground": "#CECDC3",
|
||||
"statusBar.noFolderForeground": "#B7B5AC",
|
||||
"titleBar.activeBackground": "#FFFCF0",
|
||||
"titleBar.activeForeground": "#100F0F",
|
||||
"titleBar.inactiveBackground": "#F2F0E5",
|
||||
"titleBar.inactiveForeground": "#6F6E69",
|
||||
"titleBar.border": "#DAD8CE",
|
||||
"menu.foreground": "#100F0F",
|
||||
"menu.background": "#FFFCF0",
|
||||
"menu.selectionForeground": "#100F0F",
|
||||
"menu.selectionBackground": "#DAD8CE",
|
||||
"menu.border": "#DAD8CE",
|
||||
"editorInlayHint.foreground": "#6F6E69",
|
||||
"editorInlayHint.background": "#DAD8CE",
|
||||
"terminal.foreground": "#100F0F",
|
||||
"terminal.background": "#FFFCF0",
|
||||
"terminalCursor.foreground": "#100F0F",
|
||||
"terminalCursor.background": "#FFFCF0",
|
||||
"terminal.ansiRed": "#AF3029",
|
||||
"terminal.ansiGreen": "#66800B",
|
||||
"terminal.ansiYellow": "#AD8301",
|
||||
"terminal.ansiBlue": "#205EA6",
|
||||
"terminal.ansiMagenta": "#24837B",
|
||||
"terminal.ansiCyan": "#24837B",
|
||||
"activityBar.background": "#FFFCF0",
|
||||
"activityBar.foreground": "#100F0F",
|
||||
"activityBar.inactiveForeground": "#6F6E69",
|
||||
"activityBar.activeBorder": "#100F0F",
|
||||
"activityBar.border": "#DAD8CE",
|
||||
"sideBar.background": "#FFFCF0",
|
||||
"sideBar.foreground": "#100F0F",
|
||||
"sideBar.border": "#DAD8CE",
|
||||
"sideBarTitle.foreground": "#100F0F",
|
||||
"sideBarSectionHeader.background": "#F2F0E5",
|
||||
"sideBarSectionHeader.foreground": "#100F0F",
|
||||
"sideBarSectionHeader.border": "#DAD8CE",
|
||||
"sideBar.activeBackground": "#CECDC3",
|
||||
"sideBar.activeForeground": "#100F0F",
|
||||
"sideBar.hoverBackground": "#DAD8CE",
|
||||
"sideBar.hoverForeground": "#6F6E69",
|
||||
"sideBar.folderIcon.foreground": "#66800B",
|
||||
"sideBar.fileIcon.foreground": "#205EA6",
|
||||
"list.warningForeground": "#BC5215",
|
||||
"list.errorForeground": "#AF3029",
|
||||
"list.inactiveSelectionBackground": "#DAD8CE",
|
||||
"list.activeSelectionBackground": "#CECDC3",
|
||||
"list.inactiveSelectionForeground": "#100F0F",
|
||||
"list.activeSelectionForeground": "#100F0F",
|
||||
"list.hoverForeground": "#100F0F",
|
||||
"list.hoverBackground": "#DAD8CE",
|
||||
"input.background": "#F2F0E5",
|
||||
"input.foreground": "#100F0F",
|
||||
"input.border": "#DAD8CE",
|
||||
"input.placeholderForeground": "#6F6E69",
|
||||
"inputOption.activeBorder": "#DAD8CE",
|
||||
"inputOption.activeBackground": "#E6E4D9",
|
||||
"inputOption.activeForeground": "#100F0F",
|
||||
"inputValidation.infoBackground": "#24837B",
|
||||
"inputValidation.infoBorder": "#3AA99F",
|
||||
"inputValidation.warningBackground": "#BC5215",
|
||||
"inputValidation.warningBorder": "#DA702C",
|
||||
"inputValidation.errorBackground": "#AF3029",
|
||||
"inputValidation.errorBorder": "#D14D41",
|
||||
"dropdown.background": "#F2F0E5",
|
||||
"dropdown.foreground": "#100F0F",
|
||||
"dropdown.border": "#DAD8CE",
|
||||
"dropdown.listBackground": "#FFFCF0",
|
||||
"badge.background": "#24837B",
|
||||
"activityBarBadge.background": "#24837B",
|
||||
"button.background": "#24837B",
|
||||
"button.foreground": "#FFFCF0",
|
||||
"badge.foreground": "#FFFCF0",
|
||||
"activityBarBadge.foreground": "#FFFCF0"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"name": "plain",
|
||||
"scope": ["source", "support.type.property-name.css"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "classes",
|
||||
"scope": ["entity.name.type.class"],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "interfaces",
|
||||
"scope": ["entity.name.type.interface", "entity.name.type"],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "structs",
|
||||
"scope": ["entity.name.type.struct"],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "enums",
|
||||
"scope": ["entity.name.type.enum"],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keys",
|
||||
"scope": ["meta.object-literal.key", "support.type.property-name"],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "methods",
|
||||
"scope": ["entity.name.function.method", "meta.function.method"],
|
||||
"settings": {
|
||||
"foreground": "#66800B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "functions",
|
||||
"scope": [
|
||||
"entity.name.function",
|
||||
"support.function",
|
||||
"meta.function-call.generic"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#BC5215",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "variables",
|
||||
"scope": ["variable", "meta.variable", "variable.other.object.property"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "variablesOther",
|
||||
"scope": ["variable.other.object", "variable.other.readwrite.alias"],
|
||||
"settings": {
|
||||
"foreground": "#66800B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "globalVariables",
|
||||
"scope": ["variable.other.global", "variable.language.this"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "localVariables",
|
||||
"scope": ["variable.other.local"],
|
||||
"settings": {
|
||||
"foreground": "#E6E4D9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "parameters",
|
||||
"scope": ["variable.parameter", "meta.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "properties",
|
||||
"scope": ["variable.other.property", "meta.property"],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "strings",
|
||||
"scope": [
|
||||
"string",
|
||||
"string.other.link",
|
||||
"markup.inline.raw.string.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#24837B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "stringEscapeSequences",
|
||||
"scope": ["constant.character.escape", "constant.other.placeholder"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keywords",
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#66800B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "keywordsControl",
|
||||
"scope": [
|
||||
"keyword.control.import",
|
||||
"keyword.control.from",
|
||||
"keyword.import"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#AF3029"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "storageModifiers",
|
||||
"scope": ["storage.modifier", "keyword.modifier", "storage.type"],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "comments",
|
||||
"scope": ["comment", "punctuation.definition.comment"],
|
||||
"settings": {
|
||||
"foreground": "#6F6E69"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docComments",
|
||||
"scope": ["comment.documentation", "comment.line.documentation"],
|
||||
"settings": {
|
||||
"foreground": "#B7B5AC"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "numbers",
|
||||
"scope": ["constant.numeric"],
|
||||
"settings": {
|
||||
"foreground": "#5E409D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "booleans",
|
||||
"scope": ["constant.language.boolean", "constant.language.json"],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "operators",
|
||||
"scope": ["keyword.operator"],
|
||||
"settings": {
|
||||
"foreground": "#AF3029"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macros",
|
||||
"scope": ["entity.name.function.preprocessor", "meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preprocessor",
|
||||
"scope": ["meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "urls",
|
||||
"scope": ["markup.underline.link"],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tags",
|
||||
"scope": ["entity.name.tag"],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "jsxTags",
|
||||
"scope": ["support.class.component"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "attributes",
|
||||
"scope": ["entity.other.attribute-name", "meta.attribute"],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "types",
|
||||
"scope": ["support.type"],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "constants",
|
||||
"scope": ["variable.other.constant", "variable.readonly"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "labels",
|
||||
"scope": ["entity.name.label", "punctuation.definition.label"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "namespaces",
|
||||
"scope": [
|
||||
"entity.name.namespace",
|
||||
"storage.modifier.namespace",
|
||||
"markup.bold.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "modules",
|
||||
"scope": ["entity.name.module", "storage.modifier.module"],
|
||||
"settings": {
|
||||
"foreground": "#AF3029"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "typeParameters",
|
||||
"scope": ["variable.type.parameter", "variable.parameter.type"],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "exceptions",
|
||||
"scope": ["keyword.control.exception", "keyword.control.trycatch"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "decorators",
|
||||
"scope": [
|
||||
"meta.decorator",
|
||||
"punctuation.decorator",
|
||||
"entity.name.function.decorator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "calls",
|
||||
"scope": ["variable.function"],
|
||||
"settings": {
|
||||
"foreground": "#100F0F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "punctuation",
|
||||
"scope": [
|
||||
"punctuation",
|
||||
"punctuation.terminator",
|
||||
"punctuation.definition.tag",
|
||||
"punctuation.separator",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.section.block"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#6F6E69"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "yellow",
|
||||
"scope": [
|
||||
"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",
|
||||
"constant.language.go",
|
||||
"support.class.dart",
|
||||
"keyword.other.documentation",
|
||||
"storage.modifier.import.java",
|
||||
"punctuation.definition.list.begin.markdown",
|
||||
"punctuation.definition.quote.begin.markdown",
|
||||
"meta.separator.markdown",
|
||||
"entity.name.section.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#AD8301"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "green",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#66800B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "cyan",
|
||||
"scope": [
|
||||
"markup.italic.markdown",
|
||||
"support.type.python",
|
||||
"variable.legacy.builtin.python",
|
||||
"support.constant.property-value.css",
|
||||
"storage.modifier.attribute.swift"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#24837B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "blue",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#205EA6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "purple",
|
||||
"scope": ["keyword.channel.go", "keyword.other.platform.os.swift"],
|
||||
"settings": {
|
||||
"foreground": "#5E409D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "magenta",
|
||||
"scope": ["punctuation.definition.heading.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#A02F6F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "red",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#AF3029"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "orange",
|
||||
"scope": [],
|
||||
"settings": {
|
||||
"foreground": "#BC5215"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
export type VSCodeTokenColorRule = {
|
||||
name?: string;
|
||||
scope?: string | string[];
|
||||
settings: Record<string, string | undefined>;
|
||||
};
|
||||
|
||||
export type VSCodeTextMateTheme = {
|
||||
name: string;
|
||||
type: 'dark' | 'light';
|
||||
colors?: Record<string, string>;
|
||||
tokenColors?: VSCodeTokenColorRule[];
|
||||
semanticHighlighting?: boolean;
|
||||
semanticTokenColors?: Record<string, string>;
|
||||
};
|
||||
Reference in New Issue
Block a user