@dereekb/dbx-web 13.17.0 → 13.18.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.
Files changed (40) hide show
  1. package/_index.scss +4 -1
  2. package/eslint/package.json +4 -4
  3. package/fesm2022/dereekb-dbx-web-mapbox.mjs +2 -2
  4. package/fesm2022/dereekb-dbx-web-mapbox.mjs.map +1 -1
  5. package/fesm2022/dereekb-dbx-web-style-demo.mjs +1698 -0
  6. package/fesm2022/dereekb-dbx-web-style-demo.mjs.map +1 -0
  7. package/fesm2022/dereekb-dbx-web-table.mjs +1 -1
  8. package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -1
  9. package/fesm2022/dereekb-dbx-web.mjs +460 -333
  10. package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
  11. package/lib/button/_button.scss +74 -98
  12. package/lib/extension/pdf/_pdf.scss +5 -5
  13. package/lib/extension/table/_table.scss +2 -2
  14. package/lib/interaction/detach/_detach.scss +22 -2
  15. package/lib/interaction/dialog/_dialog.scss +4 -8
  16. package/lib/interaction/popup/_popup.scss +1 -2
  17. package/lib/interaction/prompt/_prompt.scss +7 -2
  18. package/lib/layout/avatar/_avatar.scss +8 -0
  19. package/lib/layout/bar/_bar.scss +41 -2
  20. package/lib/layout/card/_card.scss +191 -3
  21. package/lib/layout/column/_column.scss +3 -3
  22. package/lib/layout/content/_content.scss +24 -9
  23. package/lib/layout/list/_list.scss +83 -6
  24. package/lib/layout/section/_section.scss +7 -8
  25. package/lib/layout/style/_style.scss +44 -9
  26. package/lib/layout/text/_text.scss +73 -29
  27. package/lib/loading/_loading.scss +9 -2
  28. package/lib/router/layout/navbar/_navbar.scss +14 -0
  29. package/lib/router/layout/sidenav/_sidenav.scss +2 -2
  30. package/lib/style/_core.scss +4 -0
  31. package/lib/style/_corners.scss +79 -0
  32. package/lib/style/_root-variables.scss +17 -0
  33. package/lib/style/_shapes.scss +56 -0
  34. package/lib/style/_style-demo.scss +183 -0
  35. package/lib/style/_variables.scss +8 -1
  36. package/package.json +11 -7
  37. package/style-demo/README.md +12 -0
  38. package/types/dereekb-dbx-web-style-demo.d.ts +883 -0
  39. package/types/dereekb-dbx-web.d.ts +170 -79
  40. package/lib/style/_m2-visual-compat.scss +0 -120
@@ -0,0 +1,883 @@
1
+ import { Maybe, CssStyleObject, ArrayOrValue, CssClass } from '@dereekb/util';
2
+ import * as i0 from '@angular/core';
3
+ import { Type, InjectionToken, EnvironmentProviders, Signal, ElementRef } from '@angular/core';
4
+ import { DbxThemeColor, DbxColorTone } from '@dereekb/dbx-web';
5
+ import { ClickableAnchorLinkTree } from '@dereekb/dbx-core';
6
+
7
+ /**
8
+ * Identifier for a {@link DbxStyleDemoStyleTemplate} registered with the {@link DbxStyleDemoStyleLoaderService}.
9
+ *
10
+ * Use a kebab-case string (e.g. `'corner-shape-large'`) to reference a template by key.
11
+ */
12
+ type DbxStyleDemoStyleTemplateKey = string;
13
+ /**
14
+ * A named bundle of CSS-token overrides (and/or debug classes) the style-demo playground can toggle on a rendered region.
15
+ *
16
+ * Templates are the "levers" flipped in the showcase: applying one re-points CSS custom properties (e.g. `--mat-sys-*`)
17
+ * and/or attaches debug classes so that every dbx component beneath the loader host repaints live via the cascade.
18
+ *
19
+ * This type is demo/debug-only and disposable — it is not a dbx-web core runtime primitive.
20
+ */
21
+ interface DbxStyleDemoStyleTemplate {
22
+ /**
23
+ * Unique key identifying this template.
24
+ */
25
+ readonly key: DbxStyleDemoStyleTemplateKey;
26
+ /**
27
+ * Inline CSS-token overrides applied to the loader host's `[style]` (e.g. `{ '--mat-sys-primary': '#ff0066' }`).
28
+ *
29
+ * When several templates are merged, later templates' style keys win.
30
+ */
31
+ readonly style?: Maybe<CssStyleObject>;
32
+ /**
33
+ * Debug class(es) applied to the loader host (e.g. `'dbx-style-demo-template-corner-shape-large'`).
34
+ *
35
+ * When several templates are merged, classes accumulate and de-duplicate (order-preserving).
36
+ */
37
+ readonly className?: Maybe<ArrayOrValue<CssClass>>;
38
+ /**
39
+ * Optional human-readable label shown in the controls UI. Falls back to the {@link key} when unset.
40
+ */
41
+ readonly label?: Maybe<string>;
42
+ /**
43
+ * When true, the template participates in the "curated" set surfaced as a default lever in the controls UI.
44
+ */
45
+ readonly curated?: Maybe<boolean>;
46
+ }
47
+ /**
48
+ * Configuration object accepted by the `[dbxStyleDemoStyleLoader]` directive when an inline list of templates
49
+ * (rather than a list of registered keys) should be applied.
50
+ *
51
+ * @example
52
+ * ```html
53
+ * <div [dbxStyleDemoStyleLoader]="{ templates: [{ key: 'pink', style: { '--mat-sys-primary': '#ff0066' } }] }">…</div>
54
+ * ```
55
+ */
56
+ interface DbxStyleDemoStyleLoaderConfig {
57
+ /**
58
+ * Template keys to resolve through the service, and/or inline template objects to merge directly.
59
+ */
60
+ readonly templates: ArrayOrValue<DbxStyleDemoStyleTemplateKey | DbxStyleDemoStyleTemplate>;
61
+ }
62
+ /**
63
+ * Union accepted by the `[dbxStyleDemoStyleLoader]` directive input: one or more template keys, or a config object.
64
+ */
65
+ type DbxStyleDemoStyleLoaderInput = ArrayOrValue<DbxStyleDemoStyleTemplateKey> | DbxStyleDemoStyleLoaderConfig;
66
+ /**
67
+ * The flattened result of merging one or more {@link DbxStyleDemoStyleTemplate} entries.
68
+ *
69
+ * Ready to bind to a host element's `[style]` (the {@link style} POJO) and `[class]` (the {@link classes}).
70
+ */
71
+ interface DbxStyleDemoStyleSet {
72
+ /**
73
+ * Merged inline CSS-token overrides (later templates win on conflicting keys).
74
+ */
75
+ readonly style: CssStyleObject;
76
+ /**
77
+ * Merged debug classes (de-duplicated, order-preserving).
78
+ */
79
+ readonly classes: CssClass[];
80
+ }
81
+ /**
82
+ * Merges an ordered list of {@link DbxStyleDemoStyleTemplate} entries into a single {@link DbxStyleDemoStyleSet}.
83
+ *
84
+ * Style POJOs are merged with `{ ...acc, ...template.style }` so later templates override earlier ones on
85
+ * conflicting token keys; classes accumulate across all templates and are de-duplicated order-preserving via
86
+ * {@link cssClassesSet}.
87
+ *
88
+ * @param templates - The templates to merge, in precedence order (earliest first, latest wins).
89
+ * @returns The merged style set.
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * mergeDbxStyleDemoStyleTemplates([
94
+ * { key: 'a', style: { '--mat-sys-primary': 'red' }, className: 'x' },
95
+ * { key: 'b', style: { '--mat-sys-primary': 'blue' }, className: ['x', 'y'] }
96
+ * ]);
97
+ * // -> { style: { '--mat-sys-primary': 'blue' }, classes: ['x', 'y'] }
98
+ * ```
99
+ */
100
+ declare function mergeDbxStyleDemoStyleTemplates(templates: DbxStyleDemoStyleTemplate[]): DbxStyleDemoStyleSet;
101
+ /**
102
+ * Type guard: true when the value is a {@link DbxStyleDemoStyleTemplate} object (not a bare template-key string).
103
+ *
104
+ * @param value - The value to test.
105
+ * @returns `true` when the value is an object carrying a string `key`.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * isDbxStyleDemoStyleTemplate('corner-shape-large'); // false
110
+ * isDbxStyleDemoStyleTemplate({ key: 'corner-shape-large' }); // true
111
+ * ```
112
+ */
113
+ declare function isDbxStyleDemoStyleTemplate(value: Maybe<DbxStyleDemoStyleTemplateKey | DbxStyleDemoStyleTemplate>): value is DbxStyleDemoStyleTemplate;
114
+ /**
115
+ * Type guard: true when the directive input is a {@link DbxStyleDemoStyleLoaderConfig} (rather than a key / array of keys).
116
+ *
117
+ * @param value - The value to test.
118
+ * @returns `true` when the value is a non-array object carrying a `templates` property.
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * isDbxStyleDemoStyleLoaderConfig('corner-shape-large'); // false
123
+ * isDbxStyleDemoStyleLoaderConfig(['a', 'b']); // false
124
+ * isDbxStyleDemoStyleLoaderConfig({ templates: ['a'] }); // true
125
+ * ```
126
+ */
127
+ declare function isDbxStyleDemoStyleLoaderConfig(value: Maybe<DbxStyleDemoStyleLoaderInput>): value is DbxStyleDemoStyleLoaderConfig;
128
+
129
+ /**
130
+ * Configuration provided in the root environment for seeding {@link DbxStyleDemoStyleLoaderService} with initial templates.
131
+ *
132
+ * Registered via `provideDbxStyleDemo({ templates: [...] })`.
133
+ */
134
+ declare abstract class DbxStyleDemoStyleLoaderServiceConfig {
135
+ /**
136
+ * Templates to register at service construction time.
137
+ */
138
+ abstract readonly templates?: Maybe<DbxStyleDemoStyleTemplate[]>;
139
+ }
140
+ /**
141
+ * Registry of named {@link DbxStyleDemoStyleTemplate} levers used by the style-demo playground.
142
+ *
143
+ * Mirrors the shape of `DbxColorService`: app-provided templates are seeded from an optional
144
+ * {@link DbxStyleDemoStyleLoaderServiceConfig}, then resolved by key at render time by the
145
+ * `[dbxStyleDemoStyleLoader]` directive. Ships with no built-in templates — every lever is contributed by an app.
146
+ *
147
+ * This service is demo/debug-only and disposable — it is not a dbx-web core runtime primitive.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * const loader = inject(DbxStyleDemoStyleLoaderService);
152
+ * loader.register({ key: 'pink', style: { '--mat-sys-primary': '#ff0066' } });
153
+ * loader.mergeTemplates(['pink']);
154
+ * // -> { style: { '--mat-sys-primary': '#ff0066' }, classes: [] }
155
+ * ```
156
+ */
157
+ declare class DbxStyleDemoStyleLoaderService {
158
+ private readonly _templates;
159
+ constructor();
160
+ /**
161
+ * Registers one or more {@link DbxStyleDemoStyleTemplate} entries.
162
+ *
163
+ * @param templates - The template(s) to register.
164
+ * @param override - Whether existing entries with the same key should be replaced (default true)
165
+ */
166
+ register(templates: ArrayOrValue<DbxStyleDemoStyleTemplate>, override?: boolean): void;
167
+ /**
168
+ * Returns whether a template with the given key has been registered.
169
+ *
170
+ * @param key - The template key to check.
171
+ * @returns True when a template is registered under the given key.
172
+ */
173
+ hasTemplate(key: DbxStyleDemoStyleTemplateKey): boolean;
174
+ /**
175
+ * Returns the {@link DbxStyleDemoStyleTemplate} registered under the given key, or undefined if none.
176
+ *
177
+ * @param key - The template key to look up.
178
+ * @returns The registered template, or undefined when no template matches.
179
+ */
180
+ getTemplate(key: DbxStyleDemoStyleTemplateKey): Maybe<DbxStyleDemoStyleTemplate>;
181
+ /**
182
+ * Returns all currently registered template keys, in registration order.
183
+ *
184
+ * @returns Array of all registered template keys.
185
+ */
186
+ getAllRegisteredTemplateKeys(): DbxStyleDemoStyleTemplateKey[];
187
+ /**
188
+ * Returns all registered templates flagged {@link DbxStyleDemoStyleTemplate.curated}, in registration order.
189
+ *
190
+ * @returns The curated templates in insertion order.
191
+ */
192
+ getCuratedTemplates(): DbxStyleDemoStyleTemplate[];
193
+ /**
194
+ * Resolves a mix of template keys and inline templates into a single merged {@link DbxStyleDemoStyleSet}.
195
+ *
196
+ * String keys are resolved through the registry; unknown keys are skipped. Inline template objects are
197
+ * used as-is. Resolution preserves input order so later entries win on conflicting style keys.
198
+ *
199
+ * @param keysOrTemplates - Template keys and/or inline templates to merge, in precedence order.
200
+ * @returns The merged style set.
201
+ *
202
+ * @example
203
+ * ```ts
204
+ * loader.register({ key: 'pink', style: { '--mat-sys-primary': '#ff0066' } });
205
+ * loader.mergeTemplates(['pink', 'unknown', { key: 'inline', className: 'demo' }]);
206
+ * // -> { style: { '--mat-sys-primary': '#ff0066' }, classes: ['demo'] }
207
+ * ```
208
+ */
209
+ mergeTemplates(keysOrTemplates: ArrayOrValue<DbxStyleDemoStyleTemplateKey | DbxStyleDemoStyleTemplate>): DbxStyleDemoStyleSet;
210
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoStyleLoaderService, never>;
211
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxStyleDemoStyleLoaderService>;
212
+ }
213
+
214
+ /**
215
+ * Applies a merged bundle of style-demo template levers to its host element, repainting every dbx component
216
+ * beneath it via the CSS custom-property cascade.
217
+ *
218
+ * The input accepts either one or more registered template keys (`ArrayOrValue<DbxStyleDemoStyleTemplateKey>`) or a
219
+ * {@link DbxStyleDemoStyleLoaderConfig} carrying inline template objects. The {@link DbxStyleDemoStyleLoaderService} is
220
+ * optional-injected: when present, string keys are resolved through the registry (unknown keys skipped); when absent,
221
+ * only inline template objects are merged (string keys are unresolvable and skipped). Merged inline CSS-token overrides
222
+ * bind to the host `[style]` and merged debug classes bind to the host `[class]`.
223
+ *
224
+ * This directive is demo/debug-only and disposable — it is not a dbx-web core runtime primitive.
225
+ *
226
+ * @example
227
+ * ```html
228
+ * <div [dbxStyleDemoStyleLoader]="['corner-shape-large', 'surface-tint']">…</div>
229
+ * <div [dbxStyleDemoStyleLoader]="{ templates: [{ key: 'pink', style: { '--mat-sys-primary': '#ff0066' } }] }">…</div>
230
+ * ```
231
+ */
232
+ declare class DbxStyleDemoStyleLoaderDirective {
233
+ private readonly _loaderService;
234
+ /**
235
+ * Template keys to resolve through the service, or a config object carrying inline templates.
236
+ */
237
+ readonly dbxStyleDemoStyleLoader: i0.InputSignal<Maybe<DbxStyleDemoStyleLoaderInput>>;
238
+ private readonly _mergedSignal;
239
+ readonly styleSignal: i0.Signal<Maybe<CssStyleObject>>;
240
+ readonly classesSignal: i0.Signal<string>;
241
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoStyleLoaderDirective, never>;
242
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxStyleDemoStyleLoaderDirective, "[dbxStyleDemoStyleLoader]", never, { "dbxStyleDemoStyleLoader": { "alias": "dbxStyleDemoStyleLoader"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
243
+ }
244
+
245
+ /**
246
+ * Identifier for a {@link DbxStyleDemoSection}, unique across all registered sections.
247
+ */
248
+ type DbxStyleDemoSectionId = string;
249
+ /**
250
+ * A single showcase region rendered by the style-demo playground.
251
+ *
252
+ * Each section is a standalone component demonstrating a styling pattern; the playground renders enabled
253
+ * sections beneath the style-loader host so they repaint live as template levers are toggled.
254
+ */
255
+ interface DbxStyleDemoSection {
256
+ /**
257
+ * Identifier, unique across all registered sections.
258
+ */
259
+ readonly id: DbxStyleDemoSectionId;
260
+ /**
261
+ * Human-readable title shown in the section's card header and the controls toggle list.
262
+ */
263
+ readonly title: string;
264
+ /**
265
+ * Optional grouping label used to cluster sections in the controls UI (e.g. `'cards'`, `'color'`).
266
+ */
267
+ readonly group?: Maybe<string>;
268
+ /**
269
+ * Optional tags used to filter which sections a playground instance renders.
270
+ */
271
+ readonly tags?: Maybe<string[]>;
272
+ /**
273
+ * The standalone component rendered for this section.
274
+ */
275
+ readonly component: Type<unknown>;
276
+ /**
277
+ * Whether the section is enabled by default when the playground first renders. Defaults to true.
278
+ */
279
+ readonly defaultEnabled?: Maybe<boolean>;
280
+ }
281
+ /**
282
+ * A library's contribution of sections to the style-demo playground, registered via `provideDbxStyleDemoSections`.
283
+ */
284
+ interface DbxStyleDemoSectionGroup {
285
+ /**
286
+ * Identifier of the contributing library (e.g. `'dbx-web'`, `'dbx-form'`).
287
+ */
288
+ readonly libId: string;
289
+ /**
290
+ * The sections this library contributes.
291
+ */
292
+ readonly sections: DbxStyleDemoSection[];
293
+ }
294
+
295
+ /**
296
+ * Multi-provider injection token collecting every {@link DbxStyleDemoSectionGroup} contributed by an app's libraries.
297
+ *
298
+ * Injected by {@link DbxStyleDemoSectionRegistry} (as an array) to assemble the full set of showcase sections.
299
+ */
300
+ declare const DBX_STYLE_DEMO_SECTION_GROUP: InjectionToken<DbxStyleDemoSectionGroup>;
301
+ /**
302
+ * Registers a library's {@link DbxStyleDemoSectionGroup} with the style-demo playground.
303
+ *
304
+ * Each call contributes one group via the {@link DBX_STYLE_DEMO_SECTION_GROUP} multi-provider, so several libraries
305
+ * (e.g. `provideDbxWebStyleDemo()`, `provideDbxFormStyleDemo()`) can each add their own sections.
306
+ *
307
+ * @param group - The section group to register.
308
+ * @returns EnvironmentProviders contributing the group.
309
+ *
310
+ * @__NO_SIDE_EFFECTS__
311
+ */
312
+ declare function provideDbxStyleDemoSections(group: DbxStyleDemoSectionGroup): EnvironmentProviders;
313
+
314
+ /**
315
+ * Root service that flattens every {@link DbxStyleDemoSectionGroup} registered via {@link provideDbxStyleDemoSections}
316
+ * into a single ordered list of {@link DbxStyleDemoSection} entries.
317
+ *
318
+ * Consumed by the `<dbx-style-demo>` playground to determine which sections are available to render.
319
+ */
320
+ declare class DbxStyleDemoSectionRegistry {
321
+ /**
322
+ * All registered sections, in library-registration then section-declaration order.
323
+ */
324
+ readonly sectionsSignal: Signal<DbxStyleDemoSection[]>;
325
+ constructor();
326
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoSectionRegistry, never>;
327
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxStyleDemoSectionRegistry>;
328
+ }
329
+
330
+ /**
331
+ * A user-facing lever in the style-demo controls that toggles a registered {@link DbxStyleDemoStyleTemplate} on/off.
332
+ *
333
+ * Active toggles are collected by the playground and fed to the `[dbxStyleDemoStyleLoader]` host so their token
334
+ * overrides ripple through every rendered section.
335
+ */
336
+ interface DbxStyleDemoTemplateToggle {
337
+ /**
338
+ * Key of the registered {@link DbxStyleDemoStyleTemplate} this toggle activates.
339
+ */
340
+ readonly templateName: DbxStyleDemoStyleTemplateKey;
341
+ /**
342
+ * Human-readable label shown in the controls UI.
343
+ */
344
+ readonly label: string;
345
+ /**
346
+ * Optional grouping label used to cluster toggles in the controls UI (e.g. `'Shape'`, `'Surface'`).
347
+ *
348
+ * Toggles sharing a non-null group are treated as mutually exclusive (radio-like): activating one in the controls
349
+ * deactivates the others in the same group. Ungrouped toggles (`null`/`undefined` group) toggle independently.
350
+ */
351
+ readonly group?: Maybe<string>;
352
+ }
353
+ /**
354
+ * A cluster of {@link DbxStyleDemoTemplateToggle}s sharing the same {@link DbxStyleDemoTemplateToggle.group} label.
355
+ *
356
+ * Produced by {@link groupDbxStyleDemoTemplateToggles} so the controls UI can render each group under a sub-label.
357
+ */
358
+ interface DbxStyleDemoTemplateToggleGroup {
359
+ /**
360
+ * The shared group label, or `null` for the leading cluster of ungrouped toggles.
361
+ */
362
+ readonly label: Maybe<string>;
363
+ /**
364
+ * The toggles in this cluster, in their original registration order.
365
+ */
366
+ readonly toggles: DbxStyleDemoTemplateToggle[];
367
+ }
368
+ /**
369
+ * Clusters template toggles by their {@link DbxStyleDemoTemplateToggle.group} label for grouped rendering.
370
+ *
371
+ * The ungrouped cluster (`label: null`) is emitted first when any ungrouped toggle exists, followed by each named
372
+ * group in first-seen order. Toggle order within a cluster is preserved.
373
+ *
374
+ * @param toggles - The toggles to cluster.
375
+ * @returns The clusters in render order.
376
+ *
377
+ * @example
378
+ * ```ts
379
+ * groupDbxStyleDemoTemplateToggles([
380
+ * { templateName: 'a', label: 'A' },
381
+ * { templateName: 'b', label: 'B', group: 'Shape' },
382
+ * { templateName: 'c', label: 'C', group: 'Shape' }
383
+ * ]);
384
+ * // -> [{ label: null, toggles: [A] }, { label: 'Shape', toggles: [B, C] }]
385
+ * ```
386
+ */
387
+ declare function groupDbxStyleDemoTemplateToggles(toggles: DbxStyleDemoTemplateToggle[]): DbxStyleDemoTemplateToggleGroup[];
388
+
389
+ /**
390
+ * Multi-provider injection token collecting every {@link DbxStyleDemoTemplateToggle} contributed by an app's libraries.
391
+ *
392
+ * Injected by the `<dbx-style-demo>` playground (as an array) to populate the template-lever list in the controls UI.
393
+ */
394
+ declare const DBX_STYLE_DEMO_TEMPLATE_TOGGLE: InjectionToken<DbxStyleDemoTemplateToggle>;
395
+ /**
396
+ * Registers one or more {@link DbxStyleDemoTemplateToggle} levers with the style-demo playground.
397
+ *
398
+ * Each toggle is contributed via the {@link DBX_STYLE_DEMO_TEMPLATE_TOGGLE} multi-provider, so several libraries can
399
+ * each add their own levers.
400
+ *
401
+ * @param toggles - The template toggles to register.
402
+ * @returns EnvironmentProviders contributing the toggles.
403
+ *
404
+ * @__NO_SIDE_EFFECTS__
405
+ */
406
+ declare function provideDbxStyleDemoTemplateToggles(...toggles: DbxStyleDemoTemplateToggle[]): EnvironmentProviders;
407
+
408
+ /**
409
+ * Detach key used by the style-demo controls detach panel.
410
+ */
411
+ declare const DBX_STYLE_DEMO_CONTROLS_DETACH_KEY = "dbx-style-demo-controls";
412
+ /**
413
+ * Injection token carrying the component class rendered inside the style-demo controls detach panel.
414
+ *
415
+ * `DbxStyleDemoControlsService` opens this component via `DbxDetachService` (so it survives navigation and is available
416
+ * app-wide) reading the service's {@link DbxStyleDemoControls} state. When unregistered, the controls buttons are hidden.
417
+ *
418
+ * `@dereekb/dbx-form/style-demo` registers `DbxFormStyleDemoControlsDetachComponent` (a presets chip-field controls UI)
419
+ * here — the controls UI lives in dbx-form because it depends on `@dereekb/dbx-form`'s pickable chip field, which dbx-web
420
+ * cannot import.
421
+ */
422
+ declare const DBX_STYLE_DEMO_CONTROLS_COMPONENT: InjectionToken<Type<unknown>>;
423
+ /**
424
+ * Popover key used by the style-demo sections popover, opened from the playground header.
425
+ */
426
+ declare const DBX_STYLE_DEMO_SECTIONS_POPOVER_KEY = "dbx-style-demo-sections";
427
+ /**
428
+ * Injection token carrying the component class rendered inside the style-demo sections popover.
429
+ *
430
+ * `DbxStyleDemoControlsService` opens this component via `DbxPopoverService`, anchored to the playground header's
431
+ * "Sections" button, because sections only affect the `<dbx-style-demo>` playground page (unlike presets, which restyle
432
+ * the whole app). When unregistered, the playground's "Sections" button is hidden.
433
+ *
434
+ * `@dereekb/dbx-form/style-demo` registers `DbxFormStyleDemoSectionsPopoverComponent` (a sections chip-field controls
435
+ * UI) here — the controls UI lives in dbx-form because it depends on `@dereekb/dbx-form`'s pickable chip field, which
436
+ * dbx-web cannot import.
437
+ */
438
+ declare const DBX_STYLE_DEMO_SECTIONS_COMPONENT: InjectionToken<Type<unknown>>;
439
+ /**
440
+ * Configuration for the `<dbx-style-demo>` playground.
441
+ */
442
+ interface DbxStyleDemoConfig {
443
+ /**
444
+ * When set, only sections whose tags intersect this list are rendered. When unset, all registered sections render.
445
+ */
446
+ readonly tags?: Maybe<string[]>;
447
+ /**
448
+ * Reserved for Phase 2 drag/drop section reordering. Accepted but ignored in v1.
449
+ */
450
+ readonly enableDragDrop?: Maybe<boolean>;
451
+ /**
452
+ * Template keys to activate by default when the playground first renders.
453
+ */
454
+ readonly defaultActiveTemplates?: Maybe<DbxStyleDemoStyleTemplateKey[]>;
455
+ }
456
+ /**
457
+ * The reactive control surface a `<dbx-style-demo>` playground exposes to its controls popover.
458
+ *
459
+ * The popover reads the signals to render its toggle lists and calls the setters to write the user's choices
460
+ * back to the playground, where they drive the rendered sections and the active style-loader templates.
461
+ */
462
+ interface DbxStyleDemoControls {
463
+ /**
464
+ * The sections available to render (already filtered by the playground's configured tags).
465
+ */
466
+ readonly sectionsSignal: Signal<DbxStyleDemoSection[]>;
467
+ /**
468
+ * The ids of the currently-enabled (visible) sections.
469
+ */
470
+ readonly enabledIdsSignal: Signal<Set<DbxStyleDemoSectionId>>;
471
+ /**
472
+ * The registered template-lever toggles.
473
+ */
474
+ readonly templateTogglesSignal: Signal<DbxStyleDemoTemplateToggle[]>;
475
+ /**
476
+ * The keys of the currently-active template levers.
477
+ */
478
+ readonly activeTemplateKeysSignal: Signal<Set<DbxStyleDemoStyleTemplateKey>>;
479
+ /**
480
+ * Enables or disables a section by id.
481
+ */
482
+ setSectionEnabled(id: DbxStyleDemoSectionId, enabled: boolean): void;
483
+ /**
484
+ * Activates or deactivates a template lever by key.
485
+ *
486
+ * Activating a lever that belongs to a non-null toggle group deactivates the other active levers in that group
487
+ * (radio-like), so only one lever per group is active at a time.
488
+ */
489
+ setTemplateActive(key: DbxStyleDemoStyleTemplateKey, active: boolean): void;
490
+ }
491
+
492
+ /**
493
+ * Configuration for the {@link DbxStyleDemoControlsService}, provided in the root environment via `provideDbxStyleDemo()`.
494
+ */
495
+ declare abstract class DbxStyleDemoControlsServiceConfig {
496
+ /**
497
+ * When false, the service does not forward its active style levers into the {@link DbxStyleService} as a body
498
+ * supplement, so levers only repaint the playground subtree. Defaults to true.
499
+ */
500
+ abstract readonly applyStylesToApp?: Maybe<boolean>;
501
+ }
502
+ /**
503
+ * Root-level state holder for the `<dbx-style-demo>` controls, implementing {@link DbxStyleDemoControls}.
504
+ *
505
+ * Owning the enabled-sections / active-template state here (rather than in the playground component) lets the controls
506
+ * panel open through {@link DbxDetachService} so it survives navigation and is available app-wide. When a
507
+ * {@link DbxStyleService} is available (and {@link DbxStyleDemoControlsServiceConfig.applyStylesToApp} is not false), the
508
+ * active levers are forwarded into the style service as a body supplement so they repaint the entire app.
509
+ *
510
+ * This service is demo/debug-only and disposable — it is not a dbx-web core runtime primitive.
511
+ */
512
+ declare class DbxStyleDemoControlsService implements DbxStyleDemoControls {
513
+ private readonly _registry;
514
+ private readonly _toggles;
515
+ private readonly _loaderService;
516
+ private readonly _detachService;
517
+ private readonly _popoverService;
518
+ private readonly _controlsComponentClass;
519
+ private readonly _sectionsComponentClass;
520
+ private readonly _styleService;
521
+ private readonly _config;
522
+ private readonly _sectionEnabledOverrides;
523
+ private readonly _activeTemplateKeysOverride;
524
+ private readonly _defaultActiveTemplateKeys;
525
+ /**
526
+ * True when a controls component is registered, gating the controls buttons.
527
+ */
528
+ readonly hasControlsSignal: Signal<boolean>;
529
+ /**
530
+ * True when a sections component is registered (and a popover service is available), gating the playground's
531
+ * "Sections" button.
532
+ */
533
+ readonly hasSectionsSignal: Signal<boolean>;
534
+ /**
535
+ * All registered sections, unfiltered (the global controls list every section).
536
+ */
537
+ readonly sectionsSignal: Signal<DbxStyleDemoSection[]>;
538
+ readonly templateTogglesSignal: Signal<DbxStyleDemoTemplateToggle[]>;
539
+ readonly enabledIdsSignal: Signal<Set<string>>;
540
+ readonly activeTemplateKeysSignal: Signal<Set<string>>;
541
+ readonly activeTemplateKeysArraySignal: Signal<string[]>;
542
+ constructor();
543
+ setSectionEnabled(id: DbxStyleDemoSectionId, enabled: boolean): void;
544
+ setTemplateActive(key: DbxStyleDemoStyleTemplateKey, active: boolean): void;
545
+ /**
546
+ * Seeds the default active template keys. Has no effect once the user has set an override via {@link setTemplateActive}.
547
+ *
548
+ * @param keys - The template keys to activate by default.
549
+ */
550
+ setDefaultActiveTemplates(keys: DbxStyleDemoStyleTemplateKey[]): void;
551
+ /**
552
+ * Opens the registered controls component in a draggable detached overlay. No-op when no controls component is registered.
553
+ */
554
+ openControls(): void;
555
+ /**
556
+ * Opens the registered sections component in a popover anchored to the given origin. No-op when no sections component
557
+ * is registered (or no popover service is available). Symmetric with {@link openControls}.
558
+ *
559
+ * @param config - The popover configuration.
560
+ * @param config.origin - The element the popover anchors to (the playground header's "Sections" button).
561
+ */
562
+ openSectionsPopover(config: {
563
+ readonly origin: ElementRef;
564
+ }): void;
565
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoControlsService, never>;
566
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxStyleDemoControlsService>;
567
+ }
568
+
569
+ /**
570
+ * Drop-in styling showcase for dbx-components apps.
571
+ *
572
+ * Renders the registered {@link DbxStyleDemoSection} components beneath a `[dbxStyleDemoStyleLoader]` host so they
573
+ * paint purely through the host app's `--mat-sys-*` / `--dbx-*` tokens and `.dbx-*` utilities — the playground emits
574
+ * no theme of its own. The "Style controls" button opens the shared {@link DbxStyleDemoControlsService} detach panel
575
+ * (also reachable from the app toolbar); flipping a lever re-points CSS tokens that ripple through every rendered
576
+ * section live via the custom-property cascade. The button only appears when a controls component is registered.
577
+ *
578
+ * Section enablement and active levers are held globally in {@link DbxStyleDemoControlsService}; this playground only
579
+ * adds its own tag filtering on top of the global enabled state.
580
+ *
581
+ * This component is demo/debug-only and disposable — it is not a dbx-web core runtime primitive.
582
+ *
583
+ * @example
584
+ * ```html
585
+ * <dbx-style-demo [config]="{ defaultActiveTemplates: ['corner-shape-full'] }"></dbx-style-demo>
586
+ * ```
587
+ */
588
+ declare class DbxStyleDemoComponent {
589
+ private readonly _registry;
590
+ private readonly _controlsService;
591
+ /**
592
+ * Playground configuration.
593
+ */
594
+ readonly config: i0.InputSignal<Maybe<DbxStyleDemoConfig>>;
595
+ /**
596
+ * True when a controls component is registered, gating the "Style controls" button.
597
+ */
598
+ readonly hasControlsSignal: Signal<boolean>;
599
+ /**
600
+ * True when a sections component is registered, gating the "Sections" button (which opens the sections popover).
601
+ */
602
+ readonly hasSectionsSignal: Signal<boolean>;
603
+ /**
604
+ * The "Sections" button element, used as the sections popover's anchor origin (present only while the button renders).
605
+ */
606
+ readonly sectionsButton: Signal<Maybe<ElementRef<any>>>;
607
+ /**
608
+ * The active template keys held by the controls service, applied to this playground's style-loader host.
609
+ */
610
+ readonly activeTemplatesSignal: Signal<string[]>;
611
+ /**
612
+ * The registry sections this playground instance considers, filtered by its configured tags (enablement stays global).
613
+ */
614
+ readonly sectionsSignal: Signal<DbxStyleDemoSection[]>;
615
+ readonly visibleSectionsSignal: Signal<DbxStyleDemoSection[]>;
616
+ /**
617
+ * Seeds the controls service with this playground's configured default active templates.
618
+ */
619
+ protected readonly _seedDefaultTemplatesEffect: i0.EffectRef;
620
+ openControls(): void;
621
+ openSectionsPopover(): void;
622
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoComponent, never>;
623
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoComponent, "dbx-style-demo", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
624
+ }
625
+
626
+ /**
627
+ * One Material button appearance shown in the {@link DbxStyleDemoButtonsSectionComponent} grid.
628
+ */
629
+ type DbxStyleDemoButtonVariant = 'basic' | 'stroked' | 'flat' | 'raised' | 'tonal';
630
+ /**
631
+ * Style-demo section showing every `dbx-button` appearance (basic, stroked, flat, raised, tonal) across the core
632
+ * theme colors, plus an icon-only and a FAB button. Buttons paint their container colour and corner radius from the
633
+ * `--mat-button-*` tokens, so they respond live to the playground's Shape levers and flip with light/dark.
634
+ *
635
+ * @dbxDocsUiExample
636
+ * @dbxDocsUiExampleSlug style-demo-buttons
637
+ * @dbxDocsUiExampleCategory style-demo
638
+ * @dbxDocsUiExampleSummary dbx-button appearances across theme colors, plus icon-only and FAB modes.
639
+ * @dbxDocsUiExampleRelated button, icon-button
640
+ */
641
+ declare class DbxStyleDemoButtonsSectionComponent {
642
+ readonly variants: DbxStyleDemoButtonVariant[];
643
+ readonly colors: Maybe<DbxThemeColor>[];
644
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoButtonsSectionComponent, never>;
645
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoButtonsSectionComponent, "dbx-style-demo-buttons-section", never, {}, {}, never, never, true, never>;
646
+ }
647
+
648
+ /**
649
+ * Style-demo section showing the three Material 3 card appearances (outlined, raised, filled) painted purely
650
+ * from `--mat-sys-*` surface tokens, so they respond live to the playground's surface-tint and corner-shape levers.
651
+ *
652
+ * @dbxDocsUiExample
653
+ * @dbxDocsUiExampleSlug style-demo-cards
654
+ * @dbxDocsUiExampleCategory style-demo
655
+ * @dbxDocsUiExampleSummary Material 3 card appearances (outlined, elevated, filled) painted from system surface tokens.
656
+ * @dbxDocsUiExampleRelated mat-card, dbx-card-box
657
+ */
658
+ declare class DbxStyleDemoCardsSectionComponent {
659
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoCardsSectionComponent, never>;
660
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoCardsSectionComponent, "dbx-style-demo-cards-section", never, {}, {}, never, never, true, never>;
661
+ }
662
+
663
+ /**
664
+ * A registered color template surfaced as a swatch in the {@link DbxStyleDemoColorTemplatesSectionComponent}.
665
+ */
666
+ interface DbxStyleDemoColorTemplate {
667
+ readonly key: string;
668
+ readonly curated: boolean;
669
+ }
670
+ /**
671
+ * Style-demo section that dumps every template registered with the host app's {@link DbxColorService} as a
672
+ * `[dbxColor]` swatch, marking the curated ones. This makes both the built-in curated set and any app-seeded
673
+ * templates visible in one place; when the service is not provided, an empty-state hint is shown instead.
674
+ *
675
+ * @dbxDocsUiExample
676
+ * @dbxDocsUiExampleSlug style-demo-color-templates
677
+ * @dbxDocsUiExampleCategory style-demo
678
+ * @dbxDocsUiExampleSummary Every registered DbxColorService template dumped as a [dbxColor] swatch, curated ones marked.
679
+ * @dbxDocsUiExampleRelated color, color-service
680
+ */
681
+ declare class DbxStyleDemoColorTemplatesSectionComponent {
682
+ private readonly _colorService;
683
+ readonly templates: DbxStyleDemoColorTemplate[];
684
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoColorTemplatesSectionComponent, never>;
685
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoColorTemplatesSectionComponent, "dbx-style-demo-color-templates-section", never, {}, {}, never, never, true, never>;
686
+ }
687
+
688
+ /**
689
+ * Style-demo section showing `[dbxColor]` themed backgrounds at full strength and as `[dbxColorTone]` tonal washes,
690
+ * across the core and extra theme colors, so the color tokens are easy to compare under the host app's theme.
691
+ *
692
+ * @dbxDocsUiExample
693
+ * @dbxDocsUiExampleSlug style-demo-color-tones
694
+ * @dbxDocsUiExampleCategory style-demo
695
+ * @dbxDocsUiExampleSummary Themed [dbxColor] backgrounds at full strength and as [dbxColorTone] tonal washes.
696
+ * @dbxDocsUiExampleRelated color, text-color, color-service
697
+ */
698
+ declare class DbxStyleDemoColorTonesSectionComponent {
699
+ readonly colors: DbxThemeColor[];
700
+ readonly tones: DbxColorTone[];
701
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoColorTonesSectionComponent, never>;
702
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoColorTonesSectionComponent, "dbx-style-demo-color-tones-section", never, {}, {}, never, never, true, never>;
703
+ }
704
+
705
+ /**
706
+ * Style-demo section showing the router-free navigation building blocks — `dbx-pagebar`, `dbx-bar` + `dbx-bar-header`,
707
+ * and a nested `dbx-anchor-list` — painted from the host theme's bar / surface tokens. The anchors are click-only, so
708
+ * this section needs no router; the route-bound `dbx-navbar` demo is contributed by the host app instead.
709
+ *
710
+ * @dbxDocsUiExample
711
+ * @dbxDocsUiExampleSlug style-demo-navigation
712
+ * @dbxDocsUiExampleCategory style-demo
713
+ * @dbxDocsUiExampleSummary Router-free navigation building blocks — pagebar, bar, bar-header, and a nested anchor list.
714
+ * @dbxDocsUiExampleRelated pagebar, bar, bar-header, anchor-list
715
+ */
716
+ declare class DbxStyleDemoNavigationSectionComponent {
717
+ readonly navAnchors: ClickableAnchorLinkTree[];
718
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoNavigationSectionComponent, never>;
719
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoNavigationSectionComponent, "dbx-style-demo-navigation-section", never, {}, {}, never, never, true, never>;
720
+ }
721
+
722
+ /**
723
+ * A single step of the Material 3 corner-radius scale shown in the {@link DbxStyleDemoShapeScaleSectionComponent}.
724
+ */
725
+ interface DbxStyleDemoShapeStep {
726
+ readonly label: string;
727
+ /**
728
+ * The radius applied to the sample tile — a `var(--mat-sys-corner-*)` reference where a web token exists,
729
+ * otherwise the literal px value from the spec.
730
+ */
731
+ readonly radius: string;
732
+ /**
733
+ * The `--mat-sys-corner-*` token backing this step, or `null` when the M3 spec step has no web token.
734
+ */
735
+ readonly webToken?: Maybe<string>;
736
+ }
737
+ /**
738
+ * Style-demo section showing the full Material 3 corner-radius scale (per
739
+ * https://m3.material.io/styles/shape/corner-radius-scale) as fixed-size tiles, flagging the spec steps that have no
740
+ * web token. A live outlined card + stroked button below follow whichever Shape lever is active, demonstrating that
741
+ * the levers override the component shape tokens (`--mat-card-*` / `--mat-button-*`), not `--mat-sys-corner-*`.
742
+ *
743
+ * @dbxDocsUiExample
744
+ * @dbxDocsUiExampleSlug style-demo-shape-scale
745
+ * @dbxDocsUiExampleCategory style-demo
746
+ * @dbxDocsUiExampleSummary The Material 3 corner-radius scale as fixed tiles, flagging spec steps with no web token.
747
+ * @dbxDocsUiExampleRelated cards, button
748
+ */
749
+ declare class DbxStyleDemoShapeScaleSectionComponent {
750
+ readonly steps: DbxStyleDemoShapeStep[];
751
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoShapeScaleSectionComponent, never>;
752
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoShapeScaleSectionComponent, "dbx-style-demo-shape-scale-section", never, {}, {}, never, never, true, never>;
753
+ }
754
+
755
+ /**
756
+ * A single labeled swatch in the {@link DbxStyleDemoSurfacesSectionComponent} ramp.
757
+ */
758
+ interface DbxStyleDemoSurface {
759
+ readonly label: string;
760
+ readonly background: string;
761
+ readonly color: string;
762
+ }
763
+ /**
764
+ * A single bordered outline sample in the {@link DbxStyleDemoSurfacesSectionComponent}.
765
+ */
766
+ interface DbxStyleDemoOutline {
767
+ readonly label: string;
768
+ readonly border: string;
769
+ }
770
+ /**
771
+ * Style-demo section showing the full Material 3 surface ramp (`surface-dim` → `surface-container-highest`, plus
772
+ * `inverse-surface`) painted straight from the `--mat-sys-*` tokens, so the host theme's neutral palette and the
773
+ * playground's surface-tint lever are easy to read under light and dark.
774
+ *
775
+ * @dbxDocsUiExample
776
+ * @dbxDocsUiExampleSlug style-demo-surfaces
777
+ * @dbxDocsUiExampleCategory style-demo
778
+ * @dbxDocsUiExampleSummary The Material 3 surface ramp painted from --mat-sys-surface* tokens, plus outline samples.
779
+ * @dbxDocsUiExampleRelated cards, color
780
+ */
781
+ declare class DbxStyleDemoSurfacesSectionComponent {
782
+ readonly surfaces: DbxStyleDemoSurface[];
783
+ readonly outlines: DbxStyleDemoOutline[];
784
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoSurfacesSectionComponent, never>;
785
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoSurfacesSectionComponent, "dbx-style-demo-surfaces-section", never, {}, {}, never, never, true, never>;
786
+ }
787
+
788
+ /**
789
+ * A single M3 typescale role rendered in the {@link DbxStyleDemoTypeRolesSectionComponent} sample.
790
+ */
791
+ interface DbxStyleDemoTypeRole {
792
+ readonly cssClass: string;
793
+ readonly label: string;
794
+ }
795
+ /**
796
+ * Style-demo section showing the Material 3 typescale roles via the `.dbx-text-<role>` utility classes, so the
797
+ * host theme's type ramp (family, size, weight, tracking) is visible at a glance.
798
+ *
799
+ * @dbxDocsUiExample
800
+ * @dbxDocsUiExampleSlug style-demo-type-roles
801
+ * @dbxDocsUiExampleCategory style-demo
802
+ * @dbxDocsUiExampleSummary Material 3 typescale roles rendered via the .dbx-text-<role> utility classes.
803
+ * @dbxDocsUiExampleRelated text
804
+ */
805
+ declare class DbxStyleDemoTypeRolesSectionComponent {
806
+ readonly roles: DbxStyleDemoTypeRole[];
807
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleDemoTypeRolesSectionComponent, never>;
808
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxStyleDemoTypeRolesSectionComponent, "dbx-style-demo-type-roles-section", never, {}, {}, never, never, true, never>;
809
+ }
810
+
811
+ /**
812
+ * The starter set of style-lever templates contributed by `@dereekb/dbx-web/style-demo`.
813
+ *
814
+ * The five `corner-shape-*` levers, the controls-only `pill-controls`, the component-scoped `button-corner-*` /
815
+ * `list-corner-*` / `anchor-list-corner-*` levers, and `surface-tint` reference the disposable
816
+ * `.dbx-style-demo-template-*` debug classes (emitted by the `dbx-style-demo-debug-classes()` SCSS mixin); the
817
+ * `vivid-primary` `style` lever applies an inline CSS-token override directly. The `corner-shape-*` levers share the
818
+ * `'Shape'` toggle group, so only one is active at a time; `pill-controls` (`'Controls'`), `button-corner-*`
819
+ * (`'Button Shape'`), `list-corner-*` (`'List Shape'`) and `anchor-list-corner-*` (`'Anchor List Shape'`) each live in
820
+ * their own group so they compose on top of a corner lever instead of radio-excluding it — their debug classes are
821
+ * emitted after `corner-shape-*` / `pill-controls` so they win the shape tokens they share.
822
+ */
823
+ declare const DBX_WEB_STYLE_DEMO_TEMPLATES: DbxStyleDemoStyleTemplate[];
824
+ /**
825
+ * The controls levers exposed for {@link DBX_WEB_STYLE_DEMO_TEMPLATES}.
826
+ *
827
+ * The `corner-shape-*` levers share the `'Shape'` group (mutually exclusive); the component-scoped `button-corner-*`
828
+ * (`'Button Shape'`), `list-corner-*` (`'List Shape'`) and `anchor-list-corner-*` (`'Anchor List Shape'`) levers are
829
+ * mutually exclusive within their own groups but compose with `'Shape'` and `'Controls'`, letting a global corner
830
+ * preset be overridden for just buttons, just `dbx-list` rows, or just `dbx-anchor-list` (nav) rows. `pill-controls`
831
+ * (`'Controls'`), `surface-tint` and `vivid-primary` are independent toggles in their own groups.
832
+ */
833
+ declare const DBX_WEB_STYLE_DEMO_TEMPLATE_TOGGLES: DbxStyleDemoTemplateToggle[];
834
+ /**
835
+ * The `@dereekb/dbx-web/style-demo` section group.
836
+ */
837
+ declare const DBX_WEB_STYLE_DEMO_SECTION_GROUP: DbxStyleDemoSectionGroup;
838
+ /**
839
+ * Registers the `@dereekb/dbx-web/style-demo` sections and style levers with the `<dbx-style-demo>` playground.
840
+ *
841
+ * Contributes the web section group and template toggles via their multi-providers, and seeds the
842
+ * {@link DbxStyleDemoStyleLoaderService} with the matching templates via an environment initializer.
843
+ *
844
+ * Pair with `provideDbxStyleDemo()` (the shell).
845
+ *
846
+ * @returns EnvironmentProviders contributing the web sections and levers.
847
+ *
848
+ * @__NO_SIDE_EFFECTS__
849
+ */
850
+ declare function provideDbxWebStyleDemo(): EnvironmentProviders;
851
+
852
+ /**
853
+ * Configuration for {@link provideDbxStyleDemo}.
854
+ */
855
+ interface ProvideDbxStyleDemoConfig {
856
+ /**
857
+ * Templates to seed the {@link DbxStyleDemoStyleLoaderService} with at construction time.
858
+ *
859
+ * Libraries typically register their own templates via their own provider (e.g. `provideDbxWebStyleDemo()`); this
860
+ * app-level seed is for one-off templates an app defines directly.
861
+ */
862
+ readonly templates?: Maybe<DbxStyleDemoStyleTemplate[]>;
863
+ /**
864
+ * When false, the {@link DbxStyleDemoControlsService} does not forward its active style levers into the
865
+ * `DbxStyleService` as a body supplement, so levers only repaint the playground subtree. Defaults to true.
866
+ */
867
+ readonly applyStylesToApp?: Maybe<boolean>;
868
+ }
869
+ /**
870
+ * Provides the `<dbx-style-demo>` showcase shell: the {@link DbxStyleDemoStyleLoaderService}, the
871
+ * {@link DbxStyleDemoControlsService}, and an optional seed config.
872
+ *
873
+ * Pair with `provideDbxWebStyleDemo()` (and the per-library plumbing providers) to register the sections and style levers.
874
+ *
875
+ * @param config - Optional configuration seeding the loader service with templates and toggling app-wide style forwarding.
876
+ * @returns EnvironmentProviders for the showcase shell.
877
+ *
878
+ * @__NO_SIDE_EFFECTS__
879
+ */
880
+ declare function provideDbxStyleDemo(config?: ProvideDbxStyleDemoConfig): EnvironmentProviders;
881
+
882
+ export { DBX_STYLE_DEMO_CONTROLS_COMPONENT, DBX_STYLE_DEMO_CONTROLS_DETACH_KEY, DBX_STYLE_DEMO_SECTIONS_COMPONENT, DBX_STYLE_DEMO_SECTIONS_POPOVER_KEY, DBX_STYLE_DEMO_SECTION_GROUP, DBX_STYLE_DEMO_TEMPLATE_TOGGLE, DBX_WEB_STYLE_DEMO_SECTION_GROUP, DBX_WEB_STYLE_DEMO_TEMPLATES, DBX_WEB_STYLE_DEMO_TEMPLATE_TOGGLES, DbxStyleDemoButtonsSectionComponent, DbxStyleDemoCardsSectionComponent, DbxStyleDemoColorTemplatesSectionComponent, DbxStyleDemoColorTonesSectionComponent, DbxStyleDemoComponent, DbxStyleDemoControlsService, DbxStyleDemoControlsServiceConfig, DbxStyleDemoNavigationSectionComponent, DbxStyleDemoSectionRegistry, DbxStyleDemoShapeScaleSectionComponent, DbxStyleDemoStyleLoaderDirective, DbxStyleDemoStyleLoaderService, DbxStyleDemoStyleLoaderServiceConfig, DbxStyleDemoSurfacesSectionComponent, DbxStyleDemoTypeRolesSectionComponent, groupDbxStyleDemoTemplateToggles, isDbxStyleDemoStyleLoaderConfig, isDbxStyleDemoStyleTemplate, mergeDbxStyleDemoStyleTemplates, provideDbxStyleDemo, provideDbxStyleDemoSections, provideDbxStyleDemoTemplateToggles, provideDbxWebStyleDemo };
883
+ export type { DbxStyleDemoConfig, DbxStyleDemoControls, DbxStyleDemoSection, DbxStyleDemoSectionGroup, DbxStyleDemoSectionId, DbxStyleDemoStyleLoaderConfig, DbxStyleDemoStyleLoaderInput, DbxStyleDemoStyleSet, DbxStyleDemoStyleTemplate, DbxStyleDemoStyleTemplateKey, DbxStyleDemoTemplateToggle, DbxStyleDemoTemplateToggleGroup, ProvideDbxStyleDemoConfig };