49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
|
|
import type { TerminalTheme } from '../../domain/models';
|
||
|
|
import { classicTerminalThemes } from './terminalThemes/classic';
|
||
|
|
import { systemPresetTerminalThemes } from './terminalThemes/systemPresets';
|
||
|
|
import { coreTerminalThemes } from './terminalThemes/core';
|
||
|
|
import { extraTerminalThemes } from './terminalThemes/extra';
|
||
|
|
import { modernTerminalThemes } from './terminalThemes/modern';
|
||
|
|
import { uiMatchTerminalThemes } from './terminalThemes/uiMatch';
|
||
|
|
|
||
|
|
// Re-export for convenience
|
||
|
|
export type TerminalThemeConfig = TerminalTheme;
|
||
|
|
|
||
|
|
const UI_MATCH_TERMINAL_THEME_IDS = new Set([
|
||
|
|
'ui-snow',
|
||
|
|
'ui-pure-white',
|
||
|
|
'ui-ivory',
|
||
|
|
'ui-mist',
|
||
|
|
'ui-mint',
|
||
|
|
'ui-sand',
|
||
|
|
'ui-lavender',
|
||
|
|
'ui-pure-black',
|
||
|
|
'ui-midnight',
|
||
|
|
'ui-deep-blue',
|
||
|
|
'ui-vscode',
|
||
|
|
'ui-graphite',
|
||
|
|
'ui-obsidian',
|
||
|
|
'ui-forest',
|
||
|
|
]);
|
||
|
|
|
||
|
|
export const TERMINAL_THEMES: TerminalTheme[] = [
|
||
|
|
...coreTerminalThemes,
|
||
|
|
...uiMatchTerminalThemes,
|
||
|
|
...modernTerminalThemes,
|
||
|
|
...classicTerminalThemes,
|
||
|
|
...systemPresetTerminalThemes,
|
||
|
|
...extraTerminalThemes,
|
||
|
|
];
|
||
|
|
|
||
|
|
const TERMINAL_THEME_BY_ID = new Map(TERMINAL_THEMES.map((theme) => [theme.id, theme]));
|
||
|
|
|
||
|
|
export const getBuiltinTerminalThemeById = (themeId: string): TerminalTheme | undefined =>
|
||
|
|
TERMINAL_THEME_BY_ID.get(themeId);
|
||
|
|
|
||
|
|
export const isUiMatchTerminalThemeId = (themeId: string): boolean =>
|
||
|
|
UI_MATCH_TERMINAL_THEME_IDS.has(themeId);
|
||
|
|
|
||
|
|
export const USER_VISIBLE_TERMINAL_THEMES: TerminalTheme[] = TERMINAL_THEMES.filter(
|
||
|
|
(theme) => !isUiMatchTerminalThemeId(theme.id),
|
||
|
|
);
|