Add Solarized Dark and Solarized Light themes (#19064)

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
Ramón Medrano Llamas
2026-02-16 23:01:52 +01:00
committed by GitHub
parent ddd28f6431
commit b38e0984b9
7 changed files with 446 additions and 57 deletions

View File

@@ -16,12 +16,14 @@ using the `/theme` command within Gemini CLI:
- `Default` - `Default`
- `Dracula` - `Dracula`
- `GitHub` - `GitHub`
- `Solarized Dark`
- **Light themes:** - **Light themes:**
- `ANSI Light` - `ANSI Light`
- `Ayu Light` - `Ayu Light`
- `Default Light` - `Default Light`
- `GitHub Light` - `GitHub Light`
- `Google Code` - `Google Code`
- `Solarized Light`
- `Xcode` - `Xcode`
### Changing themes ### Changing themes
@@ -232,6 +234,10 @@ identify their source, for example: `shades-of-green (green-extension)`.
<img src="/assets/theme-github.png" alt="GitHub theme" width="600"> <img src="/assets/theme-github.png" alt="GitHub theme" width="600">
### Solarized Dark
<img src="/assets/theme-solarized-dark.png" alt="Solarized Dark theme" width="600">
## Light themes ## Light themes
### ANSI Light ### ANSI Light
@@ -254,6 +260,10 @@ identify their source, for example: `shades-of-green (green-extension)`.
<img src="/assets/theme-google-light.png" alt="Google Code theme" width="600"> <img src="/assets/theme-google-light.png" alt="Google Code theme" width="600">
### Solarized Light
<img src="/assets/theme-solarized-light.png" alt="Solarized Light theme" width="600">
### Xcode ### Xcode
<img src="/assets/theme-xcode-light.png" alt="Xcode Light theme" width="600"> <img src="/assets/theme-xcode-light.png" alt="Xcode Light theme" width="600">

View File

@@ -114,10 +114,14 @@ export function ThemeDialog({
.getAvailableThemes() .getAvailableThemes()
.map((theme) => { .map((theme) => {
const fullTheme = themeManager.getTheme(theme.name); const fullTheme = themeManager.getTheme(theme.name);
const capitalizedType = capitalize(theme.type);
const typeDisplay = theme.name.endsWith(capitalizedType)
? ''
: capitalizedType;
return generateThemeItem( return generateThemeItem(
theme.name, theme.name,
capitalize(theme.type), typeDisplay,
fullTheme, fullTheme,
terminalBackgroundColor, terminalBackgroundColor,
); );

View File

@@ -77,39 +77,6 @@ exports[`InputPrompt > mouse interaction > should toggle paste expansion on doub
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄" ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
`; `;
exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 4`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> [Pasted Text: 10 lines]
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
`;
exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 5`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
 > [Pasted Text: 10 lines] 
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
`;
exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 6`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
 > line1 
 line2 
 line3 
 line4 
 line5 
 line6 
 line7 
 line8 
 line9 
 line10 
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
`;
exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 7`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
 > [Pasted Text: 10 lines] 
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
`;
exports[`InputPrompt > snapshots > should not show inverted cursor when shell is focused 1`] = ` exports[`InputPrompt > snapshots > should not show inverted cursor when shell is focused 1`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> Type your message or @path/to/file > Type your message or @path/to/file

View File

@@ -13,10 +13,10 @@ exports[`Initial Theme Selection > should default to a dark theme when terminal
│ 6. GitHub Dark │ 5 a, b = b, a + b │ │ │ 6. GitHub Dark │ 5 a, b = b, a + b │ │
│ 7. Holiday Dark │ 6 return a │ │ │ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │ │ 8. Shades Of Purple Dark │ │ │
│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │ │ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │ │ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
│ 11. Default Light Light (Incompatible) │ │ │ │ 11. Ayu Light │ │ │
│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │ │ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │ │ ▼ │
│ │ │ │
│ (Use Enter to select, Tab to configure scope, Esc to close) │ │ (Use Enter to select, Tab to configure scope, Esc to close) │
@@ -29,18 +29,18 @@ exports[`Initial Theme Selection > should default to a light theme when terminal
│ │ │ │
│ > Select Theme Preview │ │ > Select Theme Preview │
│ ▲ ┌────────────────────────────────────────────────────────────┐ │ │ ▲ ┌────────────────────────────────────────────────────────────┐ │
│ 1. ANSI Light Light │ │ │ │ 1. ANSI Light │ │ │
│ 2. Ayu Light Light │ 1 # function │ │ │ 2. Ayu Light │ 1 # function │ │
│ ● 3. Default Light Light │ 2 def fibonacci(n): │ │ │ ● 3. Default Light │ 2 def fibonacci(n): │ │
│ 4. GitHub Light Light │ 3 a, b = 0, 1 │ │ │ 4. GitHub Light │ 3 a, b = 0, 1 │ │
│ 5. Google Code Light │ 4 for _ in range(n): │ │ │ 5. Google Code Light │ 4 for _ in range(n): │ │
│ 6. Xcode Light │ 5 a, b = b, a + b │ │ │ 6. Solarized Light │ 5 a, b = b, a + b │ │
│ 7. ANSI Dark (Incompatible) │ 6 return a │ │ │ 7. Xcode Light │ 6 return a │ │
│ 8. Atom One Dark (Incompatible) │ │ │ │ 8. ANSI Dark (Incompatible) │ │ │
│ 9. Ayu Dark (Incompatible) │ 1 - print("Hello, " + name) │ │ │ 9. Atom One Dark (Incompatible) │ 1 - print("Hello, " + name) │ │
│ 10. Default Dark (Incompatible) │ 1 + print(f"Hello, {name}!") │ │ │ 10. Ayu Dark (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
│ 11. Dracula Dark (Incompatible) │ │ │ │ 11. Default Dark (Incompatible) │ │ │
│ 12. GitHub Dark (Incompatible) └────────────────────────────────────────────────────────────┘ │ │ 12. Dracula Dark (Incompatible) └────────────────────────────────────────────────────────────┘ │
│ ▼ │ │ ▼ │
│ │ │ │
│ (Use Enter to select, Tab to configure scope, Esc to close) │ │ (Use Enter to select, Tab to configure scope, Esc to close) │
@@ -61,10 +61,10 @@ exports[`Initial Theme Selection > should use the theme from settings even if te
│ 6. GitHub Dark │ 5 a, b = b, a + b │ │ │ 6. GitHub Dark │ 5 a, b = b, a + b │ │
│ 7. Holiday Dark │ 6 return a │ │ │ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │ │ 8. Shades Of Purple Dark │ │ │
│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │ │ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │ │ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
│ 11. Default Light Light (Incompatible) │ │ │ │ 11. Ayu Light │ │ │
│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │ │ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │ │ ▼ │
│ │ │ │
│ (Use Enter to select, Tab to configure scope, Esc to close) │ │ (Use Enter to select, Tab to configure scope, Esc to close) │
@@ -98,10 +98,10 @@ exports[`ThemeDialog Snapshots > should render correctly in theme selection mode
│ 6. GitHub Dark │ 5 a, b = b, a + b │ │ │ 6. GitHub Dark │ 5 a, b = b, a + b │ │
│ 7. Holiday Dark │ 6 return a │ │ │ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │ │ 8. Shades Of Purple Dark │ │ │
│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │ │ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │ │ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
│ 11. Default Light Light (Incompatible) │ │ │ │ 11. Ayu Light │ │ │
│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │ │ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │ │ ▼ │
│ │ │ │
│ (Use Enter to select, Tab to configure scope, Esc to close) │ │ (Use Enter to select, Tab to configure scope, Esc to close) │

View File

@@ -0,0 +1,202 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { type ColorsTheme, Theme } from './theme.js';
import { type SemanticColors } from './semantic-tokens.js';
const solarizedDarkColors: ColorsTheme = {
type: 'dark',
Background: '#002b36',
Foreground: '#839496',
LightBlue: '#268bd2',
AccentBlue: '#268bd2',
AccentPurple: '#6c71c4',
AccentCyan: '#2aa198',
AccentGreen: '#859900',
AccentYellow: '#d0b000',
AccentRed: '#dc322f',
DiffAdded: '#859900',
DiffRemoved: '#dc322f',
Comment: '#586e75',
Gray: '#586e75',
DarkGray: '#073642',
GradientColors: ['#268bd2', '#2aa198'],
};
const semanticColors: SemanticColors = {
text: {
primary: '#839496',
secondary: '#586e75',
link: '#268bd2',
accent: '#268bd2',
response: '#839496',
},
background: {
primary: '#002b36',
diff: {
added: '#00382f',
removed: '#3d0115',
},
},
border: {
default: '#073642',
focused: '#586e75',
},
ui: {
comment: '#586e75',
symbol: '#93a1a1',
dark: '#073642',
gradient: ['#268bd2', '#2aa198'],
},
status: {
success: '#859900',
warning: '#d0b000',
error: '#dc322f',
},
};
export const SolarizedDark: Theme = new Theme(
'Solarized Dark',
'dark',
{
hljs: {
display: 'block',
overflowX: 'auto',
padding: '0.5em',
background: solarizedDarkColors.Background,
color: solarizedDarkColors.Foreground,
},
'hljs-keyword': {
color: solarizedDarkColors.AccentBlue,
},
'hljs-literal': {
color: solarizedDarkColors.AccentBlue,
},
'hljs-symbol': {
color: solarizedDarkColors.AccentBlue,
},
'hljs-name': {
color: solarizedDarkColors.AccentBlue,
},
'hljs-link': {
color: solarizedDarkColors.AccentBlue,
textDecoration: 'underline',
},
'hljs-built_in': {
color: solarizedDarkColors.AccentCyan,
},
'hljs-type': {
color: solarizedDarkColors.AccentCyan,
},
'hljs-number': {
color: solarizedDarkColors.AccentGreen,
},
'hljs-class': {
color: solarizedDarkColors.AccentGreen,
},
'hljs-string': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-meta-string': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-regexp': {
color: solarizedDarkColors.AccentRed,
},
'hljs-template-tag': {
color: solarizedDarkColors.AccentRed,
},
'hljs-subst': {
color: solarizedDarkColors.Foreground,
},
'hljs-function': {
color: solarizedDarkColors.Foreground,
},
'hljs-title': {
color: solarizedDarkColors.Foreground,
},
'hljs-params': {
color: solarizedDarkColors.Foreground,
},
'hljs-formula': {
color: solarizedDarkColors.Foreground,
},
'hljs-comment': {
color: solarizedDarkColors.Comment,
fontStyle: 'italic',
},
'hljs-quote': {
color: solarizedDarkColors.Comment,
fontStyle: 'italic',
},
'hljs-doctag': {
color: solarizedDarkColors.Comment,
},
'hljs-meta': {
color: solarizedDarkColors.Gray,
},
'hljs-meta-keyword': {
color: solarizedDarkColors.Gray,
},
'hljs-tag': {
color: solarizedDarkColors.Gray,
},
'hljs-variable': {
color: solarizedDarkColors.AccentPurple,
},
'hljs-template-variable': {
color: solarizedDarkColors.AccentPurple,
},
'hljs-attr': {
color: solarizedDarkColors.LightBlue,
},
'hljs-attribute': {
color: solarizedDarkColors.LightBlue,
},
'hljs-builtin-name': {
color: solarizedDarkColors.LightBlue,
},
'hljs-section': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-emphasis': {
fontStyle: 'italic',
},
'hljs-strong': {
fontWeight: 'bold',
},
'hljs-bullet': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-selector-tag': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-selector-id': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-selector-class': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-selector-attr': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-selector-pseudo': {
color: solarizedDarkColors.AccentYellow,
},
'hljs-addition': {
backgroundColor: '#00382f',
display: 'inline-block',
width: '100%',
},
'hljs-deletion': {
backgroundColor: '#3d0115',
display: 'inline-block',
width: '100%',
},
},
solarizedDarkColors,
semanticColors,
);

View File

@@ -0,0 +1,202 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { type ColorsTheme, Theme } from './theme.js';
import { type SemanticColors } from './semantic-tokens.js';
const solarizedLightColors: ColorsTheme = {
type: 'light',
Background: '#fdf6e3',
Foreground: '#657b83',
LightBlue: '#268bd2',
AccentBlue: '#268bd2',
AccentPurple: '#6c71c4',
AccentCyan: '#2aa198',
AccentGreen: '#859900',
AccentYellow: '#d0b000',
AccentRed: '#dc322f',
DiffAdded: '#859900',
DiffRemoved: '#dc322f',
Comment: '#93a1a1',
Gray: '#93a1a1',
DarkGray: '#eee8d5',
GradientColors: ['#268bd2', '#2aa198'],
};
const semanticColors: SemanticColors = {
text: {
primary: '#657b83',
secondary: '#93a1a1',
link: '#268bd2',
accent: '#268bd2',
response: '#657b83',
},
background: {
primary: '#fdf6e3',
diff: {
added: '#d7f2d7',
removed: '#f2d7d7',
},
},
border: {
default: '#eee8d5',
focused: '#93a1a1',
},
ui: {
comment: '#93a1a1',
symbol: '#586e75',
dark: '#eee8d5',
gradient: ['#268bd2', '#2aa198'],
},
status: {
success: '#859900',
warning: '#d0b000',
error: '#dc322f',
},
};
export const SolarizedLight: Theme = new Theme(
'Solarized Light',
'light',
{
hljs: {
display: 'block',
overflowX: 'auto',
padding: '0.5em',
background: solarizedLightColors.Background,
color: solarizedLightColors.Foreground,
},
'hljs-keyword': {
color: solarizedLightColors.AccentBlue,
},
'hljs-literal': {
color: solarizedLightColors.AccentBlue,
},
'hljs-symbol': {
color: solarizedLightColors.AccentBlue,
},
'hljs-name': {
color: solarizedLightColors.AccentBlue,
},
'hljs-link': {
color: solarizedLightColors.AccentBlue,
textDecoration: 'underline',
},
'hljs-built_in': {
color: solarizedLightColors.AccentCyan,
},
'hljs-type': {
color: solarizedLightColors.AccentCyan,
},
'hljs-number': {
color: solarizedLightColors.AccentGreen,
},
'hljs-class': {
color: solarizedLightColors.AccentGreen,
},
'hljs-string': {
color: solarizedLightColors.AccentYellow,
},
'hljs-meta-string': {
color: solarizedLightColors.AccentYellow,
},
'hljs-regexp': {
color: solarizedLightColors.AccentRed,
},
'hljs-template-tag': {
color: solarizedLightColors.AccentRed,
},
'hljs-subst': {
color: solarizedLightColors.Foreground,
},
'hljs-function': {
color: solarizedLightColors.Foreground,
},
'hljs-title': {
color: solarizedLightColors.Foreground,
},
'hljs-params': {
color: solarizedLightColors.Foreground,
},
'hljs-formula': {
color: solarizedLightColors.Foreground,
},
'hljs-comment': {
color: solarizedLightColors.Comment,
fontStyle: 'italic',
},
'hljs-quote': {
color: solarizedLightColors.Comment,
fontStyle: 'italic',
},
'hljs-doctag': {
color: solarizedLightColors.Comment,
},
'hljs-meta': {
color: solarizedLightColors.Gray,
},
'hljs-meta-keyword': {
color: solarizedLightColors.Gray,
},
'hljs-tag': {
color: solarizedLightColors.Gray,
},
'hljs-variable': {
color: solarizedLightColors.AccentPurple,
},
'hljs-template-variable': {
color: solarizedLightColors.AccentPurple,
},
'hljs-attr': {
color: solarizedLightColors.LightBlue,
},
'hljs-attribute': {
color: solarizedLightColors.LightBlue,
},
'hljs-builtin-name': {
color: solarizedLightColors.LightBlue,
},
'hljs-section': {
color: solarizedLightColors.AccentYellow,
},
'hljs-emphasis': {
fontStyle: 'italic',
},
'hljs-strong': {
fontWeight: 'bold',
},
'hljs-bullet': {
color: solarizedLightColors.AccentYellow,
},
'hljs-selector-tag': {
color: solarizedLightColors.AccentYellow,
},
'hljs-selector-id': {
color: solarizedLightColors.AccentYellow,
},
'hljs-selector-class': {
color: solarizedLightColors.AccentYellow,
},
'hljs-selector-attr': {
color: solarizedLightColors.AccentYellow,
},
'hljs-selector-pseudo': {
color: solarizedLightColors.AccentYellow,
},
'hljs-addition': {
backgroundColor: '#d7f2d7',
display: 'inline-block',
width: '100%',
},
'hljs-deletion': {
backgroundColor: '#f2d7d7',
display: 'inline-block',
width: '100%',
},
},
solarizedLightColors,
semanticColors,
);

View File

@@ -15,6 +15,8 @@ import { Holiday } from './holiday.js';
import { DefaultLight } from './default-light.js'; import { DefaultLight } from './default-light.js';
import { DefaultDark } from './default.js'; import { DefaultDark } from './default.js';
import { ShadesOfPurple } from './shades-of-purple.js'; import { ShadesOfPurple } from './shades-of-purple.js';
import { SolarizedDark } from './solarized-dark.js';
import { SolarizedLight } from './solarized-light.js';
import { XCode } from './xcode.js'; import { XCode } from './xcode.js';
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import * as path from 'node:path'; import * as path from 'node:path';
@@ -68,6 +70,8 @@ class ThemeManager {
GoogleCode, GoogleCode,
Holiday, Holiday,
ShadesOfPurple, ShadesOfPurple,
SolarizedDark,
SolarizedLight,
XCode, XCode,
ANSI, ANSI,
ANSILight, ANSILight,