Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/__tests__/renderer/constants/themes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ describe('THEMES constant', () => {
}
});

it('should have exactly 20 themes (sync check with ThemeId type)', () => {
it('should have exactly 22 themes (sync check with ThemeId type)', () => {
// This count should match the number of IDs in ThemeId union type.
// If a new theme is added to THEMES without updating ThemeId, TypeScript errors.
// If ThemeId is updated without adding to isValidThemeId array, other tests fail.
// This test serves as an explicit reminder when themes are added/removed.
expect(themeIds.length).toBe(20);
expect(themeIds.length).toBe(22);
});

it('should have theme.id matching its key', () => {
Expand Down
11 changes: 10 additions & 1 deletion src/__tests__/shared/theme-types.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,16 @@ import { isValidThemeId, type ThemeId } from '../../shared/theme-types';

describe('isValidThemeId', () => {
// Sample of valid theme IDs (not exhaustive - that would couple tests to implementation)
const sampleValidIds = ['dracula', 'monokai', 'github-light', 'nord', 'olive-nights', 'pedurple'];
const sampleValidIds = [
'dracula',
'monokai',
'github-light',
'nord',
'olive-nights',
'indigo-blue',
'deep-wine-red',
'pedurple',
];

it('should return true for valid theme IDs', () => {
for (const id of sampleValidIds) {
Expand Down
4 changes: 4 additions & 0 deletions src/shared/theme-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ export type ThemeId =
| 'catppuccin-mocha'
| 'gruvbox-dark'
| 'olive-nights'
| 'indigo-blue'
| 'deep-wine-red'
| 'catppuccin-latte'
| 'ayu-light'
| 'pedurple'
Expand Down Expand Up @@ -154,6 +156,8 @@ export function isValidThemeId(id: string): id is ThemeId {
'catppuccin-mocha',
'gruvbox-dark',
'olive-nights',
'indigo-blue',
'deep-wine-red',
'catppuccin-latte',
'ayu-light',
'pedurple',
Expand Down
42 changes: 42 additions & 0 deletions src/shared/themes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,48 @@ export const THEMES: Record<ThemeId, Theme> = {
error: '#ff5555',
},
},
'indigo-blue': {
id: 'indigo-blue',
name: 'Indigo Blue',
mode: 'dark',
colors: {
bgMain: '#010204',
bgTitleBar: '#010204',
bgSidebar: '#020203',
bgActivity: '#030507',
border: '#06070a',
textMain: '#f2ebc0',
textDim: '#c7c2b3',
accent: '#1f2f63',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Indigo Accent Nearly Disappears

When the Indigo Blue theme is selected, accent is used for active theme UI like scrollbar highlights, but #1f2f63 is very close to the near-black bgMain value #010204. Highlighted controls can become hard to see in this theme, especially where accent is the only active-state indicator.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

accentDim: 'rgba(14, 22, 46, 1)',
accentText: '#a9b8df',
accentForeground: '#ffffff',
success: '#a5b0ca',
warning: '#d0a795',
error: '#ff5555',
},
},
'deep-wine-red': {
id: 'deep-wine-red',
name: 'Deep Wine Red',
mode: 'dark',
colors: {
bgMain: '#040102',
bgTitleBar: '#040102',
bgSidebar: '#040101',
bgActivity: '#070305',
border: '#0a0607',
textMain: '#f2ebc0',
textDim: '#c9bdb8',
accent: '#631f30',
accentDim: 'rgba(46, 14, 22, 1)',
accentText: '#dfa9b8',
accentForeground: '#ffffff',
success: '#a9caa5',
warning: '#d0a795',
error: '#ff5555',
},
},
// Light themes
'github-light': {
id: 'github-light',
Expand Down
Loading