Taiga UI provides TUI_DARK_MODE — an injectable WritableSignal<boolean> with an extra reset() method. It automatically initialises from localStorage or the system prefers-color-scheme media query, and persists manual changes back to localStorage .
import {inject} from '@angular/core';
import {TUI_DARK_MODE} from '@taiga-ui/core';
@Component({
// ...
})
export class MyComponent {
protected readonly darkMode = inject(TUI_DARK_MODE);
enable(): void {
// Set explicitly
this.darkMode.set(true);
}
toggle(): void {
this.darkMode.update((dark) => !dark);
}
resetToSystem(): void {
// Reset to system preference (prefers-color-scheme)
this.darkMode.reset();
}
}
Dark mode: false
By default the preference is stored under the tuiDark key ( TUI_DARK_MODE_DEFAULT_KEY ). Provide TUI_DARK_MODE_KEY token to use a different key:
import {TUI_DARK_MODE_KEY} from '@taiga-ui/core';
bootstrapApplication(AppComponent, {
providers: [
{
provide: TUI_DARK_MODE_KEY,
// Override the default 'tuiDark' localStorage key
useValue: 'myAppTheme',
},
],
});