ngx-theme-stack 1.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/sync/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface Schema {
2
+ /** Name of the Angular project to sync. */
3
+ project: string;
4
+ /** The strategy to prevent theme flicker. */
5
+ strategy: 'critters' | 'blocking';
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/sync/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "NgxThemeStackSync",
4
+ "title": "ngx-theme-stack sync",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "The name of the Angular project to sync.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ },
14
+ "strategy": {
15
+ "type": "string",
16
+ "description": "The strategy to use (critters or blocking). Auto-detected if not provided.",
17
+ "enum": ["blocking", "critters"]
18
+ }
19
+ },
20
+ "required": ["project"]
21
+ }
@@ -2,17 +2,78 @@ import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken } from '@angular/core';
3
3
  import * as ngx_theme_stack from 'ngx-theme-stack';
4
4
 
5
- /** Built-in themes. All other values are considered custom themes. */
5
+ /**
6
+ * Runtime list of built-in themes.
7
+ *
8
+ * Lives here (and not in config/index.ts) because it defines a type:
9
+ * config/index.ts already imports from types.ts, so placing DEFAULT_THEMES
10
+ * here avoids any circular dependency.
11
+ *
12
+ * ⚠ KEEP IN SYNC with the duplicate in:
13
+ * projects/ngx-theme-stack/schematics/ng-add/constants.ts → DEFAULT_THEMES
14
+ *
15
+ * Schematics compile to CommonJS and cannot import from this ESM file,
16
+ * so the values are intentionally duplicated. Change both at the same time.
17
+ */
6
18
  declare const DEFAULT_THEMES: readonly ["system", "light", "dark"];
7
- /** String union with autocompletion for defaults + any string support for customization. */
8
- type NgTheme = (typeof DEFAULT_THEMES)[number] | (string & {});
9
- type NgSystemTheme = Exclude<NgTheme, 'system'>;
19
+ /** Literal union of built-in themes: `'system' | 'light' | 'dark'`. */
20
+ type DefaultNgTheme = (typeof DEFAULT_THEMES)[number];
21
+ /**
22
+ * Theme type.
23
+ *
24
+ * - **Without** `T`: open union — accepts any `string` with IDE autocomplete
25
+ * hints for the built-in themes (`'system' | 'light' | 'dark'`).
26
+ * - **With** `T`: closed union — exactly `DefaultNgTheme | T`, enabling
27
+ * full type-safety for custom theme sets.
28
+ *
29
+ * @example
30
+ * NgTheme // 'system' | 'light' | 'dark' | (string & {})
31
+ * NgTheme<'sepia'> // 'system' | 'light' | 'dark' | 'sepia'
32
+ */
33
+ type NgTheme<T extends string = string & {}> = DefaultNgTheme | T;
34
+ /**
35
+ * Resolved theme — always `'light'` or `'dark'`, never `'system'`.
36
+ * Represents the value that comes from `matchMedia`, not user selection.
37
+ */
38
+ type NgSystemTheme = Exclude<DefaultNgTheme, 'system'>;
39
+ /**
40
+ * Theme application mode.
41
+ * - `'attribute'`: sets `data-theme` attribute on `<html>`
42
+ * - `'class'`: adds theme class to `<html>`
43
+ * - `'both'`: uses both attribute and class
44
+ */
10
45
  type NgMode = 'attribute' | 'class' | 'both';
11
- interface NgConfig {
12
- theme: NgTheme;
46
+ /**
47
+ * Theme application strategy.
48
+ * - `'blocking'`: theme CSS is loaded synchronously before rendering
49
+ * - `'critters'`: theme CSS is inlined using Critters for SSR/SSG
50
+ */
51
+ type NgStrategy = 'blocking' | 'critters';
52
+ /**
53
+ * Library configuration.
54
+ *
55
+ * @typeParam T - Custom theme literals. Defaults to open `string`, preserving
56
+ * backwards compatibility. Pass specific literals (e.g. `'sepia' | 'ocean'`)
57
+ * via {@link provideThemeStack} to get a closed, type-safe theme union.
58
+ */
59
+ interface NgConfig<T extends string = string & {}> {
60
+ /** The theme to use on first visit or when no preference is saved. Default: 'system'. */
61
+ defaultTheme: NgTheme<T>;
62
+ /** Key used to persist theme preference in localStorage. Default: 'ngx-theme-stack-theme'. */
13
63
  storageKey: string;
64
+ /**
65
+ * How the theme should be applied to the document (via class, attribute or both).
66
+ * Default: 'class'.
67
+ */
14
68
  mode: NgMode;
15
- themes: NgTheme[];
69
+ /**
70
+ * Performance strategy for anti-flash.
71
+ * Use 'critters' for SSG/SSR builds with inlined CSS, 'blocking' for standard CSS files.
72
+ * Default: 'critters'.
73
+ */
74
+ strategy: NgStrategy;
75
+ /** List of supported theme identifiers. Default: ['light', 'dark', 'system']. */
76
+ themes: NgTheme<T>[];
16
77
  }
17
78
 
18
79
  /**
@@ -23,22 +84,41 @@ interface NgConfig {
23
84
  */
24
85
  declare class CoreThemeService {
25
86
  #private;
26
- /** List of available themes for Select/Cycle services. Defaults to ['light', 'dark', 'system']. */
27
- readonly availableThemes: NgTheme[];
87
+ /** List of available themes for Select/Cycle services. Defaults to ['system', 'light', 'dark']. */
88
+ readonly availableThemes: string[];
28
89
  /** The theme explicitly selected by the user. May be `'system'`. */
29
90
  readonly selectedTheme: _angular_core.Signal<NgTheme>;
30
91
  /** Resolved theme applied to the DOM. Always `'dark'` or `'light'` (or custom) — never `'system'`. */
31
- readonly userTheme: _angular_core.Signal<NgSystemTheme>;
92
+ readonly resolvedTheme: _angular_core.Signal<(string & {}) | NgSystemTheme>;
32
93
  /** Whether the currently applied theme is dark. */
33
94
  readonly isDark: _angular_core.Signal<boolean>;
34
95
  /** Whether the currently applied theme is light. */
35
96
  readonly isLight: _angular_core.Signal<boolean>;
97
+ /** Whether the currently applied theme is system. */
98
+ readonly isSystem: _angular_core.Signal<boolean>;
99
+ /**
100
+ * Whether the service has completed client-side initialization.
101
+ *
102
+ * `false` during SSR and on the very first render pass before the initial theme
103
+ * is resolved from `localStorage`. Becomes `true` immediately after the
104
+ * first browser render pass.
105
+ *
106
+ * **Important:** Guard template elements that display `selectedTheme()` or
107
+ * `resolvedTheme()` behind this signal to prevent hydration-mismatch flashes
108
+ * (e.g. if the server renders the default 'system' but the user has 'dark' stored).
109
+ *
110
+ * @example
111
+ * ```html
112
+ * {{ theme.isHydrated() ? theme.selectedTheme() : '...' }}
113
+ * ```
114
+ */
115
+ readonly isHydrated: _angular_core.WritableSignal<boolean>;
36
116
  constructor();
37
117
  /**
38
118
  * Changes the active theme.
39
119
  *
40
120
  * Persists the choice explicitly so that switching e.g. from `'system'` to
41
- * `'light'` is saved even when the resolved `userTheme` did not change
121
+ * `'light'` is saved even when the resolved theme did not change
42
122
  * (system preference was already `'light'`).
43
123
  *
44
124
  * @param theme - The theme to apply: `'dark'`, `'light'`, `'system'`, or a custom theme name.
@@ -53,6 +133,7 @@ declare class CoreThemeService {
53
133
  private applyThemeAttribute;
54
134
  private applyThemeClasses;
55
135
  private applyColorSchemeHint;
136
+ private captureAntiFlashClass;
56
137
  private readStoredTheme;
57
138
  private saveTheme;
58
139
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CoreThemeService, never>;
@@ -62,36 +143,85 @@ declare class CoreThemeService {
62
143
  /**
63
144
  * ⚠ ATTENTION: SHARED CONFIGURATION VALUES
64
145
  *
65
- * These values MUST match the schematic defaults in:
66
- * projects/ngx-theme-stack/schematics/ng-add/index.ts
146
+ * These defaults MUST match the schematic defaults in:
147
+ * projects/ngx-theme-stack/schematics/ng-add/constants.ts → DEFAULTS
67
148
  *
68
- * If you change any of these, you MUST also update the schematic's DEFAULTS
69
- * constant so 'ng add' continues to provide correct hints and clean code.
149
+ * Schematics compile to CommonJS and cannot import from this ESM file,
150
+ * so the values are intentionally duplicated. Change both at the same time.
151
+ *
152
+ * If you change defaults here, also update:
153
+ * schematics/ng-add/constants.ts → DEFAULTS + DEFAULT_THEMES
70
154
  */
71
155
  declare const DEFAULT_NG_CONFIG: {
72
- theme: "system";
156
+ defaultTheme: "system";
73
157
  storageKey: string;
74
158
  mode: "class";
159
+ strategy: "critters";
75
160
  themes: ("system" | "light" | "dark")[];
76
161
  };
77
- declare const NGX_THEME_STACK_CONFIG: InjectionToken<NgConfig>;
162
+ declare const NGX_THEME_STACK_CONFIG: InjectionToken<NgConfig<string>>;
78
163
  /**
79
- * Helper function to provide Theme Stack configuration.
164
+ * Provides Theme Stack configuration to Angular's DI system.
165
+ *
166
+ * Custom `themes` are **merged** with the built-in defaults
167
+ * (`'light'`, `'dark'`, `'system'`), so you never lose the base themes.
168
+ *
169
+ * **Defaults:**
170
+ * - `themes`: `['light', 'dark', 'system']`
171
+ * - `defaultTheme`: `'system'`
172
+ * - `storageKey`: `'ngx-theme-stack-theme'`
173
+ * - `mode`: `'class'`
174
+ * - `strategy`: `'critters'`
175
+
176
+ *
177
+ * The type parameter `T` is **inferred automatically** from the `themes` array
178
+ * when passed as a `const` — no need to specify it manually.
179
+ *
180
+ * @typeParam T - Custom theme string literals, inferred from the `themes` option.
181
+ *
182
+ * @param config - Optional partial configuration. Omitted fields fall back to
183
+ * {@link DEFAULT_NG_CONFIG}.
184
+ *
185
+ * @throws {@link NgxThemeStackError}
186
+ * - If any entry in `themes` is an empty or whitespace-only string.
187
+ * - If `defaultTheme` is not present in the resolved (merged) themes array.
188
+ * - If `storageKey` is an empty or whitespace-only string.
189
+ *
190
+ * @example
191
+ * // Default — uses built-in themes and sensible defaults
192
+ * provideThemeStack()
193
+ *
194
+ * @example
195
+ * // SSR/SSG Optimization — uses Critters inlining strategy
196
+ * provideThemeStack({
197
+ * strategy: 'critters',
198
+ * mode: 'class',
199
+ * })
200
+ *
201
+ * @example
202
+ * // Closed union: TypeScript infers 'sepia' | 'ocean' from the array
203
+ * provideThemeStack({
204
+ * themes: ['sepia', 'ocean'] as const,
205
+ * defaultTheme: 'sepia', // ✅ in resolved themes
206
+ * // defaultTheme: 'nope', // ❌ throws NgxThemeStackError at runtime
207
+ * })
208
+ *
209
+ * @example
210
+ * // Custom storage key and mode
211
+ * provideThemeStack({
212
+ * storageKey: 'my-app-theme',
213
+ * mode: 'attribute',
214
+ * })
80
215
  */
81
- declare function provideThemeStack(config?: Partial<NgConfig>): {
82
- provide: InjectionToken<NgConfig>;
83
- useValue: {
84
- themes: ngx_theme_stack.NgTheme[];
85
- theme: ngx_theme_stack.NgTheme;
86
- storageKey: string;
87
- mode: ngx_theme_stack.NgMode;
88
- };
216
+ declare function provideThemeStack<const T extends string = DefaultNgTheme>(config?: Partial<NgConfig<T>>): {
217
+ provide: InjectionToken<NgConfig<string>>;
218
+ useValue: NgConfig<string>;
89
219
  };
90
220
 
91
221
  /**
92
222
  * Convenience service for cycling through themes in a fixed order.
93
223
  *
94
- * Default cycle: `'light'` → `'dark'` → `'system'` → `'light'` → ...
224
+ * Default cycle: `'system'` → `'light'` → `'dark'` → `'system'` → ...
95
225
  *
96
226
  * Use this when you want to offer users a single button that rotates
97
227
  * through all available theme options.
@@ -100,12 +230,19 @@ declare class ThemeCycleService {
100
230
  #private;
101
231
  /** The theme explicitly selected by the user. May be `'system'`. */
102
232
  readonly selectedTheme: _angular_core.Signal<ngx_theme_stack.NgTheme>;
103
- /** Resolved theme applied to the DOM. Always concrete — never `'system'`. */
104
- readonly userTheme: _angular_core.Signal<ngx_theme_stack.NgSystemTheme>;
105
- /** Whether the currently applied theme is dark. */
233
+ /** Resolved theme currently applied to the DOM. Always concrete — never `'system'`. */
234
+ readonly resolvedTheme: _angular_core.Signal<(string & {}) | ngx_theme_stack.NgSystemTheme>;
235
+ /** Whether the currently applied theme is `'dark'`. */
106
236
  readonly isDark: _angular_core.Signal<boolean>;
107
- /** Whether the currently applied theme is light. */
237
+ /** Whether the currently applied theme is `'light'`. */
108
238
  readonly isLight: _angular_core.Signal<boolean>;
239
+ /** Whether the user has explicitly selected `'system'` preference. */
240
+ readonly isSystem: _angular_core.Signal<boolean>;
241
+ /**
242
+ * Whether the service has completed client-side initialization and
243
+ * resolved the real persisted theme. Use to prevent hydration flashes.
244
+ */
245
+ readonly isHydrated: _angular_core.Signal<boolean>;
109
246
  /**
110
247
  * Advances to the next theme in the cycle.
111
248
  *
@@ -127,16 +264,23 @@ declare class ThemeCycleService {
127
264
  */
128
265
  declare class ThemeSelectService {
129
266
  #private;
130
- /** List of all configured themes. Defaults to ['light', 'dark', 'system']. */
131
- readonly availableThemes: NgTheme[];
267
+ /** List of all configured themes. Defaults to `['light', 'dark', 'system']`. */
268
+ readonly availableThemes: string[];
132
269
  /** The theme explicitly selected by the user. May be `'system'`. */
133
270
  readonly selectedTheme: _angular_core.Signal<NgTheme>;
134
- /** Resolved theme applied to the DOM. Always concrete — never `'system'`. */
135
- readonly userTheme: _angular_core.Signal<ngx_theme_stack.NgSystemTheme>;
136
- /** Whether the currently applied theme is dark. */
271
+ /** Resolved theme currently applied to the DOM. Always concrete — never `'system'`. */
272
+ readonly resolvedTheme: _angular_core.Signal<(string & {}) | ngx_theme_stack.NgSystemTheme>;
273
+ /** Whether the currently applied theme is `'dark'`. */
137
274
  readonly isDark: _angular_core.Signal<boolean>;
138
- /** Whether the currently applied theme is light. */
275
+ /** Whether the currently applied theme is `'light'`. */
139
276
  readonly isLight: _angular_core.Signal<boolean>;
277
+ /** Whether the user has explicitly selected `'system'` preference. */
278
+ readonly isSystem: _angular_core.Signal<boolean>;
279
+ /**
280
+ * Whether the service has completed client-side initialization and
281
+ * resolved the real persisted theme. Use to prevent hydration flashes.
282
+ */
283
+ readonly isHydrated: _angular_core.Signal<boolean>;
140
284
  /**
141
285
  * Applies the given theme.
142
286
  *
@@ -156,12 +300,21 @@ declare class ThemeSelectService {
156
300
  */
157
301
  declare class ThemeToggleService {
158
302
  #private;
159
- /** Resolved theme applied to the DOM. Always concrete — never `'system'`. */
160
- readonly userTheme: _angular_core.Signal<ngx_theme_stack.NgSystemTheme>;
161
- /** Whether the currently applied theme is dark. */
303
+ /** Resolved theme currently applied to the DOM. Always concrete — never `'system'`. */
304
+ readonly resolvedTheme: _angular_core.Signal<(string & {}) | ngx_theme_stack.NgSystemTheme>;
305
+ /** The theme explicitly selected by the user. May be `'system'`. */
306
+ readonly selectedTheme: _angular_core.Signal<ngx_theme_stack.NgTheme>;
307
+ /** Whether the currently applied theme is `'dark'`. */
162
308
  readonly isDark: _angular_core.Signal<boolean>;
163
- /** Whether the currently applied theme is light. */
309
+ /** Whether the currently applied theme is `'light'`. */
164
310
  readonly isLight: _angular_core.Signal<boolean>;
311
+ /** Whether the user has explicitly selected `'system'` preference. */
312
+ readonly isSystem: _angular_core.Signal<boolean>;
313
+ /**
314
+ * Whether the service has completed client-side initialization and
315
+ * resolved the real persisted theme. Use to prevent hydration flashes.
316
+ */
317
+ readonly isHydrated: _angular_core.Signal<boolean>;
165
318
  /**
166
319
  * Toggles between `'dark'` and `'light'`.
167
320
  *
@@ -173,5 +326,26 @@ declare class ThemeToggleService {
173
326
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeToggleService>;
174
327
  }
175
328
 
176
- export { CoreThemeService, DEFAULT_NG_CONFIG, DEFAULT_THEMES, NGX_THEME_STACK_CONFIG, ThemeCycleService, ThemeSelectService, ThemeToggleService, provideThemeStack };
177
- export type { NgConfig, NgMode, NgSystemTheme, NgTheme };
329
+ /**
330
+ * Base error class for `ngx-theme-stack`.
331
+ *
332
+ * Thrown when the library configuration is invalid.
333
+ * Consumers can use `instanceof NgxThemeStackError` to catch only
334
+ * errors originating from this library.
335
+ *
336
+ * @example
337
+ * try {
338
+ * bootstrapApplication(AppComponent, appConfig);
339
+ * } catch (e) {
340
+ * if (e instanceof NgxThemeStackError) {
341
+ * console.error('Bad ngx-theme-stack config:', e.message);
342
+ * }
343
+ * }
344
+ */
345
+ declare class NgxThemeStackError extends Error {
346
+ readonly name = "NgxThemeStackError";
347
+ constructor(message: string);
348
+ }
349
+
350
+ export { CoreThemeService, DEFAULT_NG_CONFIG, DEFAULT_THEMES, NGX_THEME_STACK_CONFIG, NgxThemeStackError, ThemeCycleService, ThemeSelectService, ThemeToggleService, provideThemeStack };
351
+ export type { DefaultNgTheme, NgConfig, NgMode, NgStrategy, NgSystemTheme, NgTheme };