diff --git a/docs/cli/themes.md b/docs/cli/themes.md
index 8dda0146eb6..dc3423080f5 100644
--- a/docs/cli/themes.md
+++ b/docs/cli/themes.md
@@ -16,12 +16,14 @@ using the `/theme` command within Gemini CLI:
- `Default`
- `Dracula`
- `GitHub`
+ - `Solarized Dark`
- **Light themes:**
- `ANSI Light`
- `Ayu Light`
- `Default Light`
- `GitHub Light`
- `Google Code`
+ - `Solarized Light`
- `Xcode`
### Changing themes
@@ -232,6 +234,10 @@ identify their source, for example: `shades-of-green (green-extension)`.
+### Solarized Dark
+
+
+
## Light themes
### ANSI Light
@@ -254,6 +260,10 @@ identify their source, for example: `shades-of-green (green-extension)`.
+### Solarized Light
+
+
+
### Xcode
diff --git a/packages/cli/src/ui/components/ThemeDialog.tsx b/packages/cli/src/ui/components/ThemeDialog.tsx
index 9356b81e3bc..c4bfe668978 100644
--- a/packages/cli/src/ui/components/ThemeDialog.tsx
+++ b/packages/cli/src/ui/components/ThemeDialog.tsx
@@ -114,10 +114,14 @@ export function ThemeDialog({
.getAvailableThemes()
.map((theme) => {
const fullTheme = themeManager.getTheme(theme.name);
+ const capitalizedType = capitalize(theme.type);
+ const typeDisplay = theme.name.endsWith(capitalizedType)
+ ? ''
+ : capitalizedType;
return generateThemeItem(
theme.name,
- capitalize(theme.type),
+ typeDisplay,
fullTheme,
terminalBackgroundColor,
);
diff --git a/packages/cli/src/ui/components/__snapshots__/InputPrompt.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/InputPrompt.test.tsx.snap
index 05d128f738c..ff3818d6f8b 100644
--- a/packages/cli/src/ui/components/__snapshots__/InputPrompt.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/InputPrompt.test.tsx.snap
@@ -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`] = `
-"[40m[30m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[39m[49m
-[40m [97m> [7m[[27mPasted Text: 10 lines][39m [49m
-[40m[30m▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[39m[49m"
-`;
-
-exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 6`] = `
-"[40m[30m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[39m[49m
-[40m [97m> [39m[7ml[27mine1 [49m
-[40m line2 [49m
-[40m line3 [49m
-[40m line4 [49m
-[40m line5 [49m
-[40m line6 [49m
-[40m line7 [49m
-[40m line8 [49m
-[40m line9 [49m
-[40m line10 [49m
-[40m[30m▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[39m[49m"
-`;
-
-exports[`InputPrompt > mouse interaction > should toggle paste expansion on double-click 7`] = `
-"[40m[30m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[39m[49m
-[40m [97m> [7m[[27mPasted Text: 10 lines][39m [49m
-[40m[30m▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄[39m[49m"
-`;
-
exports[`InputPrompt > snapshots > should not show inverted cursor when shell is focused 1`] = `
"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> Type your message or @path/to/file
diff --git a/packages/cli/src/ui/components/__snapshots__/ThemeDialog.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/ThemeDialog.test.tsx.snap
index ab402d263f2..767526bba00 100644
--- a/packages/cli/src/ui/components/__snapshots__/ThemeDialog.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/ThemeDialog.test.tsx.snap
@@ -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 │ │
│ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │
-│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │
-│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
-│ 11. Default Light Light (Incompatible) │ │ │
-│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │
+│ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
+│ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
+│ 11. Ayu Light │ │ │
+│ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │
│ │
│ (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 │
│ ▲ ┌────────────────────────────────────────────────────────────┐ │
-│ 1. ANSI Light Light │ │ │
-│ 2. Ayu Light Light │ 1 # function │ │
-│ ● 3. Default Light Light │ 2 def fibonacci(n): │ │
-│ 4. GitHub Light Light │ 3 a, b = 0, 1 │ │
+│ 1. ANSI Light │ │ │
+│ 2. Ayu Light │ 1 # function │ │
+│ ● 3. Default Light │ 2 def fibonacci(n): │ │
+│ 4. GitHub Light │ 3 a, b = 0, 1 │ │
│ 5. Google Code Light │ 4 for _ in range(n): │ │
-│ 6. Xcode Light │ 5 a, b = b, a + b │ │
-│ 7. ANSI Dark (Incompatible) │ 6 return a │ │
-│ 8. Atom One Dark (Incompatible) │ │ │
-│ 9. Ayu Dark (Incompatible) │ 1 - print("Hello, " + name) │ │
-│ 10. Default Dark (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
-│ 11. Dracula Dark (Incompatible) │ │ │
-│ 12. GitHub Dark (Incompatible) └────────────────────────────────────────────────────────────┘ │
+│ 6. Solarized Light │ 5 a, b = b, a + b │ │
+│ 7. Xcode Light │ 6 return a │ │
+│ 8. ANSI Dark (Incompatible) │ │ │
+│ 9. Atom One Dark (Incompatible) │ 1 - print("Hello, " + name) │ │
+│ 10. Ayu Dark (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
+│ 11. Default Dark (Incompatible) │ │ │
+│ 12. Dracula Dark (Incompatible) └────────────────────────────────────────────────────────────┘ │
│ ▼ │
│ │
│ (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 │ │
│ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │
-│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │
-│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
-│ 11. Default Light Light (Incompatible) │ │ │
-│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │
+│ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
+│ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
+│ 11. Ayu Light │ │ │
+│ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │
│ │
│ (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 │ │
│ 7. Holiday Dark │ 6 return a │ │
│ 8. Shades Of Purple Dark │ │ │
-│ 9. ANSI Light Light (Incompatible) │ 1 - print("Hello, " + name) │ │
-│ 10. Ayu Light Light (Incompatible) │ 1 + print(f"Hello, {name}!") │ │
-│ 11. Default Light Light (Incompatible) │ │ │
-│ 12. GitHub Light Light (Incompatible) └────────────────────────────────────────────────────────────┘ │
+│ 9. Solarized Dark │ 1 - print("Hello, " + name) │ │
+│ 10. ANSI Light │ 1 + print(f"Hello, {name}!") │ │
+│ 11. Ayu Light │ │ │
+│ 12. Default Light └────────────────────────────────────────────────────────────┘ │
│ ▼ │
│ │
│ (Use Enter to select, Tab to configure scope, Esc to close) │
diff --git a/packages/cli/src/ui/themes/solarized-dark.ts b/packages/cli/src/ui/themes/solarized-dark.ts
new file mode 100644
index 00000000000..d6b85ae90a3
--- /dev/null
+++ b/packages/cli/src/ui/themes/solarized-dark.ts
@@ -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,
+);
diff --git a/packages/cli/src/ui/themes/solarized-light.ts b/packages/cli/src/ui/themes/solarized-light.ts
new file mode 100644
index 00000000000..85d802f9dc4
--- /dev/null
+++ b/packages/cli/src/ui/themes/solarized-light.ts
@@ -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,
+);
diff --git a/packages/cli/src/ui/themes/theme-manager.ts b/packages/cli/src/ui/themes/theme-manager.ts
index 3ee4d5af1a4..b5875c86588 100644
--- a/packages/cli/src/ui/themes/theme-manager.ts
+++ b/packages/cli/src/ui/themes/theme-manager.ts
@@ -15,6 +15,8 @@ import { Holiday } from './holiday.js';
import { DefaultLight } from './default-light.js';
import { DefaultDark } from './default.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 * as fs from 'node:fs';
import * as path from 'node:path';
@@ -68,6 +70,8 @@ class ThemeManager {
GoogleCode,
Holiday,
ShadesOfPurple,
+ SolarizedDark,
+ SolarizedLight,
XCode,
ANSI,
ANSILight,