@sixbell-telco/sdk
Version:
A collection of reusable components designed for use in Sixbell Telco Angular projects
45 lines (44 loc) • 1.81 kB
TypeScript
import { ResolvedThemeScheme, ThemeScheme } from '../models/theme';
import * as i0 from "@angular/core";
/**
* Service for resolving and detecting color schemes
* Handles system preference detection and scheme validation
* Separates scheme logic from the main service
*/
export declare class ThemeSchemeService {
/**
* Media query list for detecting dark mode preference
* Cached to avoid repeated queries
*/
private darkModeMediaQuery;
/**
* Resolves a theme scheme to its actual light/dark value
* If scheme is 'system', detects the OS preference
* If scheme is already 'light' or 'dark', returns it as-is
* @param scheme - The scheme to resolve
* @returns Resolved scheme ('light' or 'dark')
*/
resolveScheme(scheme: ThemeScheme): ResolvedThemeScheme;
/**
* Detects the system's preferred color scheme
* Uses CSS media query (prefers-color-scheme: dark)
* Safely handles environments where matchMedia is not available
* @returns 'dark' if system prefers dark, 'light' otherwise
*/
detectSystemScheme(): ResolvedThemeScheme;
/**
* Listens for changes in system color scheme preference
* Allows components to react to OS theme changes
* @param listener - Callback function when scheme changes
* @returns Unsubscribe function to remove listener
*/
listenToSystemSchemeChanges(listener: (scheme: ResolvedThemeScheme) => void): () => void;
/**
* Creates a media query for detecting dark mode
* Extracted method to make testing easier
* @returns MediaQueryList for dark mode preference
*/
private createMediaQuery;
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeSchemeService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ThemeSchemeService>;
}