import type { ITheme } from '@xterm/xterm' export interface TerminalTheme { name: string id: string theme: ITheme } export const terminalThemes: TerminalTheme[] = [ { name: 'Wraith', id: 'wraith', theme: { background: '#0a0a0f', foreground: '#e4e4ef', cursor: '#5c7cfa', cursorAccent: '#0a0a0f', selectionBackground: '#364fc744', black: '#1a1a2e', red: '#e94560', green: '#0cce6b', yellow: '#ffc145', blue: '#5c7cfa', magenta: '#c77dff', cyan: '#56d4e0', white: '#e4e4ef', brightBlack: '#3a3a4e', brightRed: '#ff6b81', brightGreen: '#2ee89a', brightYellow: '#ffd366', brightBlue: '#7c9cfa', brightMagenta: '#d9a0ff', brightCyan: '#7aecf5', brightWhite: '#ffffff', }, }, { name: 'Dracula', id: 'dracula', theme: { background: '#282a36', foreground: '#f8f8f2', cursor: '#f8f8f2', cursorAccent: '#282a36', selectionBackground: '#44475a', black: '#21222c', red: '#ff5555', green: '#50fa7b', yellow: '#f1fa8c', blue: '#bd93f9', magenta: '#ff79c6', cyan: '#8be9fd', white: '#f8f8f2', brightBlack: '#6272a4', brightRed: '#ff6e6e', brightGreen: '#69ff94', brightYellow: '#ffffa5', brightBlue: '#d6acff', brightMagenta: '#ff92df', brightCyan: '#a4ffff', brightWhite: '#ffffff', }, }, { name: 'Nord', id: 'nord', theme: { background: '#2e3440', foreground: '#d8dee9', cursor: '#d8dee9', cursorAccent: '#2e3440', selectionBackground: '#434c5e', black: '#3b4252', red: '#bf616a', green: '#a3be8c', yellow: '#ebcb8b', blue: '#81a1c1', magenta: '#b48ead', cyan: '#88c0d0', white: '#e5e9f0', brightBlack: '#4c566a', brightRed: '#bf616a', brightGreen: '#a3be8c', brightYellow: '#ebcb8b', brightBlue: '#81a1c1', brightMagenta: '#b48ead', brightCyan: '#8fbcbb', brightWhite: '#eceff4', }, }, { name: 'Solarized Dark', id: 'solarized-dark', theme: { background: '#002b36', foreground: '#839496', cursor: '#839496', cursorAccent: '#002b36', selectionBackground: '#073642', black: '#073642', red: '#dc322f', green: '#859900', yellow: '#b58900', blue: '#268bd2', magenta: '#d33682', cyan: '#2aa198', white: '#eee8d5', brightBlack: '#586e75', brightRed: '#cb4b16', brightGreen: '#586e75', brightYellow: '#657b83', brightBlue: '#839496', brightMagenta: '#6c71c4', brightCyan: '#93a1a1', brightWhite: '#fdf6e3', }, }, { name: 'Monokai', id: 'monokai', theme: { background: '#272822', foreground: '#f8f8f2', cursor: '#f8f8f0', cursorAccent: '#272822', selectionBackground: '#49483e', black: '#272822', red: '#f92672', green: '#a6e22e', yellow: '#f4bf75', blue: '#66d9ef', magenta: '#ae81ff', cyan: '#a1efe4', white: '#f8f8f2', brightBlack: '#75715e', brightRed: '#f92672', brightGreen: '#a6e22e', brightYellow: '#f4bf75', brightBlue: '#66d9ef', brightMagenta: '#ae81ff', brightCyan: '#a1efe4', brightWhite: '#f9f8f5', }, }, { name: 'One Dark', id: 'one-dark', theme: { background: '#282c34', foreground: '#abb2bf', cursor: '#528bff', cursorAccent: '#282c34', selectionBackground: '#3e4451', black: '#282c34', red: '#e06c75', green: '#98c379', yellow: '#e5c07b', blue: '#61afef', magenta: '#c678dd', cyan: '#56b6c2', white: '#abb2bf', brightBlack: '#5c6370', brightRed: '#e06c75', brightGreen: '#98c379', brightYellow: '#e5c07b', brightBlue: '#61afef', brightMagenta: '#c678dd', brightCyan: '#56b6c2', brightWhite: '#ffffff', }, }, { name: 'Gruvbox Dark', id: 'gruvbox-dark', theme: { background: '#282828', foreground: '#ebdbb2', cursor: '#ebdbb2', cursorAccent: '#282828', selectionBackground: '#3c3836', black: '#282828', red: '#cc241d', green: '#98971a', yellow: '#d79921', blue: '#458588', magenta: '#b16286', cyan: '#689d6a', white: '#a89984', brightBlack: '#928374', brightRed: '#fb4934', brightGreen: '#b8bb26', brightYellow: '#fabd2f', brightBlue: '#83a598', brightMagenta: '#d3869b', brightCyan: '#8ec07c', brightWhite: '#ebdbb2', }, }, { name: 'Tokyo Night', id: 'tokyo-night', theme: { background: '#1a1b26', foreground: '#a9b1d6', cursor: '#c0caf5', cursorAccent: '#1a1b26', selectionBackground: '#33467c', black: '#15161e', red: '#f7768e', green: '#9ece6a', yellow: '#e0af68', blue: '#7aa2f7', magenta: '#bb9af7', cyan: '#7dcfff', white: '#a9b1d6', brightBlack: '#414868', brightRed: '#f7768e', brightGreen: '#9ece6a', brightYellow: '#e0af68', brightBlue: '#7aa2f7', brightMagenta: '#bb9af7', brightCyan: '#7dcfff', brightWhite: '#c0caf5', }, }, { name: 'Catppuccin Mocha', id: 'catppuccin-mocha', theme: { background: '#1e1e2e', foreground: '#cdd6f4', cursor: '#f5e0dc', cursorAccent: '#1e1e2e', selectionBackground: '#45475a', black: '#45475a', red: '#f38ba8', green: '#a6e3a1', yellow: '#f9e2af', blue: '#89b4fa', magenta: '#f5c2e7', cyan: '#94e2d5', white: '#bac2de', brightBlack: '#585b70', brightRed: '#f38ba8', brightGreen: '#a6e3a1', brightYellow: '#f9e2af', brightBlue: '#89b4fa', brightMagenta: '#f5c2e7', brightCyan: '#94e2d5', brightWhite: '#a6adc8', }, }, { name: 'Cyberpunk', id: 'cyberpunk', theme: { background: '#0d0221', foreground: '#0abdc6', cursor: '#ff2079', cursorAccent: '#0d0221', selectionBackground: '#541388', black: '#0d0221', red: '#ff2079', green: '#0abdc6', yellow: '#f3e600', blue: '#711c91', magenta: '#ea00d9', cyan: '#0abdc6', white: '#d7d7d7', brightBlack: '#541388', brightRed: '#ff4492', brightGreen: '#33e1ed', brightYellow: '#f5ed37', brightBlue: '#9945b5', brightMagenta: '#ff00ff', brightCyan: '#33e1ed', brightWhite: '#ffffff', }, }, ] export function getTerminalTheme(id: string): ITheme { const found = terminalThemes.find(t => t.id === id) return found?.theme || terminalThemes[0].theme }