feat: update theme preference handling in ThemeService and index.html

This commit is contained in:
nessar committed 2026-08-17 14:18:15 +02:00
1 parent c8020c489e
commit 45de0cebcc
3 files changed
+44 -15

No files matched your search

@@ -3,9 +3,26 @@ import { vi } from 'vitest';
import { ThemeService } from './theme.service';
describe('ThemeService', () => {
beforeEach(() => localStorage.clear());
it('defaults to the operating-system preference', () => {
vi.stubGlobal(
'matchMedia',
vi.fn(() => ({ matches: true, addEventListener: vi.fn() })),
);
const service = TestBed.inject(ThemeService);
TestBed.tick();
expect(service.preference()).toBe('system');
expect(document.documentElement.dataset['theme']).toBe('dark');
});
it('persists explicit and system preferences', () => {
const listener = vi.fn();
vi.stubGlobal('matchMedia', vi.fn(() => ({ matches: true, addEventListener: listener })));
vi.stubGlobal(
'matchMedia',
vi.fn(() => ({ matches: true, addEventListener: listener })),
);
localStorage.setItem('lmnp-theme', 'system');
const service = TestBed.inject(ThemeService);
TestBed.tick();
+1 -1
View File
@@ -40,6 +40,6 @@ export class ThemeService {
const storedPreference = localStorage.getItem(THEME_STORAGE_KEY);
return storedPreference === 'dark' || storedPreference === 'system'
? storedPreference
: 'light';
: 'system';
}
}