@ethlete/core 5.0.0-next.45 → 5.0.0-next.47

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.
@@ -10,6 +10,11 @@
10
10
  "schema": "./migrate-provider-shape/schema.json",
11
11
  "description": "Rewrite destructured provider tuples into the tree-shakeable definition shape"
12
12
  },
13
+ "migrate-surface-interaction-swatch": {
14
+ "factory": "./migrate-surface-interaction-swatch/migration",
15
+ "schema": "./migrate-surface-interaction-swatch/schema.json",
16
+ "description": "Rewrite surface theme interactionColor maps into the { color, onColor, inkColor } swatch shape"
17
+ },
13
18
  "tailwind-4-color-theme": {
14
19
  "factory": "./tailwind-4-color-theme/generator",
15
20
  "schema": "./tailwind-4-color-theme/schema.json",
@@ -0,0 +1,43 @@
1
+ import { Project, SyntaxKind } from 'ts-morph';
2
+ const INTERACTION_KEYS = ['default', 'hover', 'focus', 'active', 'disabled'];
3
+ const createProject = () => new Project({
4
+ useInMemoryFileSystem: true,
5
+ compilerOptions: {
6
+ target: 99,
7
+ module: 99,
8
+ },
9
+ });
10
+ const isFlatInteractionColor = (initializer) => initializer
11
+ .getProperties()
12
+ .some((property) => property.isKind(SyntaxKind.PropertyAssignment) && INTERACTION_KEYS.includes(property.getName()));
13
+ const findFlatInteractionColor = (sourceFile) => {
14
+ for (const property of sourceFile.getDescendantsOfKind(SyntaxKind.PropertyAssignment)) {
15
+ if (property.getName() !== 'interactionColor')
16
+ continue;
17
+ const initializer = property.getInitializer();
18
+ if (initializer?.isKind(SyntaxKind.ObjectLiteralExpression) && isFlatInteractionColor(initializer)) {
19
+ return initializer;
20
+ }
21
+ }
22
+ return null;
23
+ };
24
+ /**
25
+ * Rewrites `interactionColor: { default, hover, … }` into `interactionColor: { color: { default, … } }`,
26
+ * the swatch shape that also carries the optional `onColor` and `inkColor` maps.
27
+ */
28
+ export const migrateInteractionSwatchInFile = (filePath, content) => {
29
+ if (!content.includes('interactionColor')) {
30
+ return { changed: false, content };
31
+ }
32
+ const sourceFile = createProject().createSourceFile(filePath, content);
33
+ let changed = false;
34
+ // Re-queried after every rewrite: manipulating the AST forgets the nodes a single up-front
35
+ // collection would have handed us.
36
+ for (let initializer = findFlatInteractionColor(sourceFile); initializer;) {
37
+ initializer.replaceWithText(`{ color: ${initializer.getText()} }`);
38
+ changed = true;
39
+ initializer = findFlatInteractionColor(sourceFile);
40
+ }
41
+ return { changed, content: changed ? sourceFile.getFullText() : content };
42
+ };
43
+ //# sourceMappingURL=interaction-swatch.js.map
@@ -0,0 +1,29 @@
1
+ import { formatFiles } from '@nx/devkit';
2
+ import { createMigrationScope } from '../migrate-provider-shape/migration-scope.js';
3
+ import { migrateInteractionSwatchInFile } from './interaction-swatch.js';
4
+ export default async function migrateSurfaceInteractionSwatch(tree, schema) {
5
+ console.log('\n🔄 Migrating surface interactionColor to the swatch shape...');
6
+ const scope = createMigrationScope(tree, schema);
7
+ console.log(` Scope: ${scope.describe()}`);
8
+ let filesChanged = 0;
9
+ scope.visit(tree, (filePath) => {
10
+ if (!filePath.endsWith('.ts') || filePath.endsWith('.d.ts'))
11
+ return;
12
+ const before = tree.read(filePath, 'utf-8');
13
+ if (!before)
14
+ return;
15
+ const result = migrateInteractionSwatchInFile(filePath, before);
16
+ if (!result.changed)
17
+ return;
18
+ tree.write(filePath, result.content);
19
+ filesChanged++;
20
+ console.log(` ✓ ${filePath}`);
21
+ });
22
+ console.log(filesChanged === 0
23
+ ? ' Nothing to migrate.\n'
24
+ : `\n✅ Migrated ${filesChanged} file(s). Regenerate your surface CSS with \`nx g @ethlete/core:tailwind-4-surface-theme\`.\n`);
25
+ if (!schema.skipFormat) {
26
+ await formatFiles(tree);
27
+ }
28
+ }
29
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "migrate-surface-interaction-swatch",
4
+ "title": "Migrate surface interactionColor to the swatch shape",
5
+ "type": "object",
6
+ "properties": {
7
+ "projects": {
8
+ "type": "array",
9
+ "items": { "type": "string" },
10
+ "description": "Nx projects to migrate. Defaults to every project in the workspace.",
11
+ "alias": "project"
12
+ },
13
+ "include": {
14
+ "type": "array",
15
+ "items": { "type": "string" },
16
+ "description": "Path prefixes to migrate, relative to the workspace root (e.g. 'apps/web'). Unioned with `projects`. Defaults to the whole workspace.",
17
+ "alias": "includePath"
18
+ },
19
+ "skipFormat": {
20
+ "type": "boolean",
21
+ "description": "Skip formatting files after migration",
22
+ "default": false
23
+ }
24
+ },
25
+ "required": []
26
+ }
@@ -158,9 +158,52 @@ const COLOR_PROPS = ['background', 'color', 'colorMuted', 'colorSubtle', 'border
158
158
  const isColorProp = (name) => COLOR_PROPS.some((p) => p === name);
159
159
  const INTERACTION_KEYS = ['default', 'hover', 'focus', 'active', 'disabled'];
160
160
  const isInteractionKey = (name) => INTERACTION_KEYS.some((key) => key === name);
161
+ const SWATCH_KEYS = ['color', 'onColor', 'inkColor'];
162
+ const isSwatchKey = (name) => SWATCH_KEYS.some((key) => key === name);
163
+ function parseInteractionColorMap(obj) {
164
+ const map = {};
165
+ for (const prop of obj.getProperties()) {
166
+ if (!prop.isKind(SyntaxKind.PropertyAssignment))
167
+ continue;
168
+ const name = prop.getName();
169
+ const initializer = prop.getInitializer();
170
+ if (initializer?.isKind(SyntaxKind.StringLiteral) && isInteractionKey(name)) {
171
+ map[name] = initializer.getLiteralValue();
172
+ }
173
+ }
174
+ return map;
175
+ }
176
+ function parseInteractionColor(obj, themeName) {
177
+ const swatch = {};
178
+ for (const prop of obj.getProperties()) {
179
+ if (!prop.isKind(SyntaxKind.PropertyAssignment))
180
+ continue;
181
+ const name = prop.getName();
182
+ const initializer = prop.getInitializer();
183
+ if (isInteractionKey(name)) {
184
+ throw new Error(`Surface theme "${themeName}" uses the old flat \`interactionColor\` shape. It now takes a swatch: ` +
185
+ `{ color: { default, hover, focus, active, disabled }, onColor?, inkColor? }. ` +
186
+ `Run \`nx g @ethlete/core:migrate-surface-interaction-swatch\` to convert your themes.`);
187
+ }
188
+ if (!initializer?.isKind(SyntaxKind.ObjectLiteralExpression) || !isSwatchKey(name))
189
+ continue;
190
+ const map = parseInteractionColorMap(initializer);
191
+ if (name === 'color') {
192
+ if (map.default && map.hover && map.focus && map.active && map.disabled) {
193
+ swatch.color = map;
194
+ }
195
+ continue;
196
+ }
197
+ if (map.default) {
198
+ swatch[name] = map;
199
+ }
200
+ }
201
+ return swatch.color ? swatch : undefined;
202
+ }
161
203
  function parseSurfaceThemeObject(obj) {
162
204
  const properties = obj.getProperties();
163
205
  const theme = {};
206
+ let interactionColorObj = null;
164
207
  for (const prop of properties) {
165
208
  if (!prop.isKind(SyntaxKind.PropertyAssignment)) {
166
209
  continue;
@@ -177,24 +220,7 @@ function parseSurfaceThemeObject(obj) {
177
220
  continue;
178
221
  }
179
222
  if (propName === 'interactionColor' && initializer.isKind(SyntaxKind.ObjectLiteralExpression)) {
180
- const interactionProps = initializer.getProperties();
181
- const interactionColor = {};
182
- for (const iProp of interactionProps) {
183
- if (!iProp.isKind(SyntaxKind.PropertyAssignment))
184
- continue;
185
- const iPropName = iProp.getName();
186
- const iInit = iProp.getInitializer();
187
- if (iInit?.isKind(SyntaxKind.StringLiteral) && isInteractionKey(iPropName)) {
188
- interactionColor[iPropName] = iInit.getLiteralValue();
189
- }
190
- }
191
- if (interactionColor.default &&
192
- interactionColor.hover &&
193
- interactionColor.focus &&
194
- interactionColor.active &&
195
- interactionColor.disabled) {
196
- theme.interactionColor = interactionColor;
197
- }
223
+ interactionColorObj = initializer;
198
224
  continue;
199
225
  }
200
226
  if (propName === 'elevation') {
@@ -227,6 +253,9 @@ function parseSurfaceThemeObject(obj) {
227
253
  !theme.border) {
228
254
  throw new Error('SurfaceTheme must have name, type, elevation, background, color, colorMuted, colorSubtle, and border properties');
229
255
  }
256
+ if (interactionColorObj) {
257
+ theme.interactionColor = parseInteractionColor(interactionColorObj, theme.name);
258
+ }
230
259
  return theme;
231
260
  }
232
261
  // Makes the named theme the sole default of its surface type, overriding any isDefault
@@ -322,11 +351,14 @@ function generateSurfaceThemeCss(themes, utilityPrefix, runtimePrefix, schema) {
322
351
  tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-subtle: rgb(${theme.colorSubtle});`);
323
352
  tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-border: rgb(${theme.border});`);
324
353
  if (theme.interactionColor) {
325
- tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-interaction: rgb(${theme.interactionColor.default});`);
326
- tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-interaction-hover: rgb(${theme.interactionColor.hover});`);
327
- tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-interaction-focus: rgb(${theme.interactionColor.focus});`);
328
- tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-interaction-active: rgb(${theme.interactionColor.active});`);
329
- tailwindVars.push(` --color-${utilityPrefix}-surface-${name}-interaction-disabled: rgb(${theme.interactionColor.disabled});`);
354
+ const { color, onColor, inkColor } = theme.interactionColor;
355
+ pushStaticInteractionColors(tailwindVars, `--color-${utilityPrefix}-surface-${name}-interaction`, color);
356
+ if (onColor) {
357
+ pushStaticInteractionColors(tailwindVars, `--color-${utilityPrefix}-surface-${name}-on-interaction`, onColor);
358
+ }
359
+ if (inkColor) {
360
+ pushStaticInteractionColors(tailwindVars, `--color-${utilityPrefix}-surface-${name}-interaction-ink`, inkColor);
361
+ }
330
362
  }
331
363
  tailwindVars.push('');
332
364
  }
@@ -420,11 +452,39 @@ ${tailwindVars.join('\n')}
420
452
  ${themeVars.join('\n')}
421
453
  }
422
454
 
423
- ${aliasBlock}`;
455
+ ${aliasBlock}
456
+ ${buildSurfaceColorScope(runtimePrefix)}`;
457
+ }
458
+ // The reserved `surface` color scope. It bridges the two theming systems - color variables out of
459
+ // surface variables - so `[etProvideColor]="'surface'"` renders a component in the neutral of
460
+ // whatever surface it sits on. It lives here rather than in the SDK's own CSS because a stylesheet
461
+ // shipped with `ProvideColorDirective` would land in every bundle that themes anything, and only
462
+ // apps that use the scope should pay for it.
463
+ function buildSurfaceColorScope(runtimePrefix) {
464
+ const tint = `var(--${runtimePrefix}-surface-interaction, var(--${runtimePrefix}-surface-color))`;
465
+ const on = `var(--${runtimePrefix}-surface-on-interaction, var(--${runtimePrefix}-surface-background))`;
466
+ const ink = `var(--${runtimePrefix}-surface-interaction-ink, var(--${runtimePrefix}-surface-color))`;
467
+ const state = (name, source, fallback) => INTERACTION_STATE_SUFFIXES.map((suffix) => ` --${runtimePrefix}-color-${name}${suffix}: ${suffix ? `var(--${runtimePrefix}-surface-${source}${suffix}, ${fallback})` : fallback};`).join('\n');
468
+ return `/* The reserved \`surface\` color: resolves the color tokens from the ambient surface's neutral swatch. */
469
+ @layer base {
470
+ .${runtimePrefix}-color--surface {
471
+ ${state('primary', 'interaction', tint)}
472
+
473
+ ${state('on-primary', 'on-interaction', on)}
474
+
475
+ ${state('primary-ink', 'interaction-ink', ink)}
476
+ }
477
+ }
478
+ `;
424
479
  }
425
480
  // Dynamic surface color declarations (unindented). Emitted in `@theme` (so Tailwind generates
426
481
  // the utilities) and re-declared on every surface selector (so the utilities resolve per scope).
427
482
  function buildDynamicSurfaceColors(utilityPrefix, runtimePrefix) {
483
+ // `on-interaction` and `interaction-ink` are optional per theme, so each falls back to the
484
+ // surface's own background/color - the same defaults the `.<runtimePrefix>-color--surface`
485
+ // bridge applies.
486
+ const onFallback = `var(--${runtimePrefix}-surface-background)`;
487
+ const inkFallback = `var(--${runtimePrefix}-surface-color)`;
428
488
  return [
429
489
  `--color-${utilityPrefix}-surface-bg: rgb(var(--${runtimePrefix}-surface-background));`,
430
490
  `--color-${utilityPrefix}-surface: rgb(var(--${runtimePrefix}-surface-color));`,
@@ -436,8 +496,35 @@ function buildDynamicSurfaceColors(utilityPrefix, runtimePrefix) {
436
496
  `--color-${utilityPrefix}-surface-interaction-focus: rgb(var(--${runtimePrefix}-surface-interaction-focus));`,
437
497
  `--color-${utilityPrefix}-surface-interaction-active: rgb(var(--${runtimePrefix}-surface-interaction-active));`,
438
498
  `--color-${utilityPrefix}-surface-interaction-disabled: rgb(var(--${runtimePrefix}-surface-interaction-disabled));`,
499
+ ...INTERACTION_STATE_SUFFIXES.map((suffix) => `--color-${utilityPrefix}-surface-on-interaction${suffix}: rgb(var(--${runtimePrefix}-surface-on-interaction${suffix}, ${onFallback}));`),
500
+ ...INTERACTION_STATE_SUFFIXES.map((suffix) => `--color-${utilityPrefix}-surface-interaction-ink${suffix}: rgb(var(--${runtimePrefix}-surface-interaction-ink${suffix}, ${inkFallback}));`),
439
501
  ];
440
502
  }
503
+ const INTERACTION_STATE_SUFFIXES = ['', '-hover', '-focus', '-active', '-disabled'];
504
+ // Fills the optional states from the ones that are set, matching how the color theme generator
505
+ // resolves a swatch: hover falls back to default, focus to hover, active and disabled to default.
506
+ function resolveInteractionStates(map) {
507
+ const hover = map.hover || map.default;
508
+ return {
509
+ '': map.default,
510
+ '-hover': hover,
511
+ '-focus': map.focus || hover,
512
+ '-active': map.active || map.default,
513
+ '-disabled': map.disabled || map.default,
514
+ };
515
+ }
516
+ function pushStaticInteractionColors(vars, name, map) {
517
+ const states = resolveInteractionStates(map);
518
+ for (const suffix of INTERACTION_STATE_SUFFIXES) {
519
+ vars.push(` ${name}${suffix}: rgb(${states[suffix]});`);
520
+ }
521
+ }
522
+ function pushRuntimeInteractionVars(vars, name, map, indent) {
523
+ const states = resolveInteractionStates(map);
524
+ for (const suffix of INTERACTION_STATE_SUFFIXES) {
525
+ vars.push(`${indent}${name}${suffix}: ${states[suffix]};`);
526
+ }
527
+ }
441
528
  function pushSurfaceVars(vars, runtimePrefix, theme, indent) {
442
529
  vars.push(`${indent}--${runtimePrefix}-surface-background: ${theme.background};`);
443
530
  vars.push(`${indent}--${runtimePrefix}-surface-color: ${theme.color};`);
@@ -447,11 +534,14 @@ function pushSurfaceVars(vars, runtimePrefix, theme, indent) {
447
534
  vars.push(`${indent}--${runtimePrefix}-surface-type: ${theme.type};`);
448
535
  vars.push(`${indent}--${runtimePrefix}-surface-elevation: ${theme.elevation};`);
449
536
  if (theme.interactionColor) {
450
- vars.push(`${indent}--${runtimePrefix}-surface-interaction: ${theme.interactionColor.default};`);
451
- vars.push(`${indent}--${runtimePrefix}-surface-interaction-hover: ${theme.interactionColor.hover};`);
452
- vars.push(`${indent}--${runtimePrefix}-surface-interaction-focus: ${theme.interactionColor.focus};`);
453
- vars.push(`${indent}--${runtimePrefix}-surface-interaction-active: ${theme.interactionColor.active};`);
454
- vars.push(`${indent}--${runtimePrefix}-surface-interaction-disabled: ${theme.interactionColor.disabled};`);
537
+ const { color, onColor, inkColor } = theme.interactionColor;
538
+ pushRuntimeInteractionVars(vars, `--${runtimePrefix}-surface-interaction`, color, indent);
539
+ if (onColor) {
540
+ pushRuntimeInteractionVars(vars, `--${runtimePrefix}-surface-on-interaction`, onColor, indent);
541
+ }
542
+ if (inkColor) {
543
+ pushRuntimeInteractionVars(vars, `--${runtimePrefix}-surface-interaction-ink`, inkColor, indent);
544
+ }
455
545
  }
456
546
  }
457
547
  function findMainStylesFile(tree) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethlete/core",
3
- "version": "5.0.0-next.45",
3
+ "version": "5.0.0-next.47",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "peerDependencies": {
@@ -3066,13 +3066,33 @@ declare const SURFACE_TYPE: {
3066
3066
  };
3067
3067
  type SurfaceType = (typeof SURFACE_TYPE)[keyof typeof SURFACE_TYPE];
3068
3068
  type SurfaceThemeColor = `${number} ${number} ${number}`;
3069
- type SurfaceInteractionColor = {
3069
+ type SurfaceInteractionColorMap = {
3070
3070
  default: SurfaceThemeColor;
3071
3071
  hover: SurfaceThemeColor;
3072
3072
  focus: SurfaceThemeColor;
3073
3073
  active: SurfaceThemeColor;
3074
3074
  disabled: SurfaceThemeColor;
3075
3075
  };
3076
+ type SurfaceOnInteractionColorMap = {
3077
+ default: SurfaceThemeColor;
3078
+ hover?: SurfaceThemeColor;
3079
+ focus?: SurfaceThemeColor;
3080
+ active?: SurfaceThemeColor;
3081
+ disabled?: SurfaceThemeColor;
3082
+ };
3083
+ /**
3084
+ * The surface's neutral color, shaped like a color theme's swatch. It serves both roles: `color`
3085
+ * is the tint source `[etSurfaceInteractive]` mixes for hover/active feedback, and the whole
3086
+ * swatch is the palette a component picks up from `[etProvideColor]="'surface'"`.
3087
+ *
3088
+ * `onColor` (text on a filled neutral) defaults to the surface background, `inkColor` (text and
3089
+ * borders on a tinted or transparent neutral) to the surface color.
3090
+ */
3091
+ type SurfaceInteractionColor = {
3092
+ color: SurfaceInteractionColorMap;
3093
+ onColor?: SurfaceOnInteractionColorMap;
3094
+ inkColor?: SurfaceOnInteractionColorMap;
3095
+ };
3076
3096
  type SurfaceTheme = {
3077
3097
  name: string;
3078
3098
  type: SurfaceType;
@@ -3226,6 +3246,16 @@ interface EthleteColorThemeNameRegistry {
3226
3246
  type RegisteredColorThemeName = EthleteColorThemeNameRegistry extends {
3227
3247
  name: infer N extends string;
3228
3248
  } ? N : string;
3249
+ /**
3250
+ * Reserved color name. Resolves the color tokens from the ambient surface's neutral swatch
3251
+ * (`SurfaceTheme['interactionColor']`) instead of a registered accent, so a secondary action can
3252
+ * read as chrome without the app registering a neutral color theme. Apps must not register a color
3253
+ * theme under this name.
3254
+ */
3255
+ declare const SURFACE_COLOR = "surface";
3256
+ type SurfaceColor = typeof SURFACE_COLOR;
3257
+ /** Everything `[etProvideColor]` accepts: a registered theme name, a theme object, `surface`, or nothing. */
3258
+ type ColorThemeInput = RegisteredColorThemeName | SurfaceColor | ColorTheme | null;
3229
3259
  declare const createCssColorThemeName: (name: string) => string;
3230
3260
  declare const ɵProvideColorThemes: (valueOverride?: (ColorTheme | undefined)[] | undefined) => _angular_core.Provider[];
3231
3261
  declare const injectColorThemes: _ethlete_core.InjectFn<ColorTheme[]>;
@@ -3237,6 +3267,33 @@ declare const injectWarningTheme: () => ColorTheme;
3237
3267
  declare const injectSuccessTheme: () => ColorTheme;
3238
3268
  declare const injectDefaultColorTheme: () => ColorTheme;
3239
3269
 
3270
+ /** One choice in a {@link provideColorPalette} palette. */
3271
+ type ColorPaletteEntry = {
3272
+ /** The color theme this choice selects - a name the app registered with `provideColorThemesWithTailwind4`. */
3273
+ token: RegisteredColorThemeName;
3274
+ /** What a user reads next to the swatch. Provide it already translated. */
3275
+ label: string;
3276
+ };
3277
+ /**
3278
+ * The color themes a subtree may offer a user as pickable choices, in the order they should appear.
3279
+ * A curated slice of what `provideColorThemesWithTailwind4` registered: an app registers every theme
3280
+ * it renders with, including ones nobody should pick by hand (`error`, `warning`), and adds the
3281
+ * user-facing label a swatch needs.
3282
+ *
3283
+ * Components that let a user choose a color read it optionally and fall back to accepting a raw
3284
+ * theme name when it is absent - the scheduler's `colorToken` field is the reference consumer.
3285
+ *
3286
+ * @example
3287
+ * provideColorPalette([
3288
+ * { token: 'brand', label: 'Team green' },
3289
+ * { token: 'ocean', label: 'Training blue' },
3290
+ * ]);
3291
+ */
3292
+ declare const provideColorPalette: (valueOverride?: (ColorPaletteEntry | undefined)[] | undefined) => _angular_core.Provider[];
3293
+ /** The palette from {@link provideColorPalette}. Pass `{ optional: true }` - most apps provide none. */
3294
+ declare const injectColorPalette: _ethlete_core.InjectFn<ColorPaletteEntry[]>;
3295
+ declare const COLOR_PALETTE: _angular_core.InjectionToken<ColorPaletteEntry[]>;
3296
+
3240
3297
  /**
3241
3298
  * @deprecated Migrate to Tailwind v4. Intent to remove in v6.
3242
3299
  */
@@ -3291,8 +3348,8 @@ declare class ProvideColorDirective {
3291
3348
  private parentProvider;
3292
3349
  private currentProviderSync;
3293
3350
  private forcedColor;
3294
- color: InputSignal<RegisteredColorThemeName | ColorTheme | null | undefined>;
3295
- effectiveColor: _angular_core.Signal<string | ColorTheme | null | undefined>;
3351
+ color: InputSignal<ColorThemeInput | undefined>;
3352
+ effectiveColor: _angular_core.Signal<ColorThemeInput | undefined>;
3296
3353
  /**
3297
3354
  * The color that actually applies at this provider's location: its own effective color, or -
3298
3355
  * when this provider is passive (no input, nothing forced) - the nearest ancestor provider's.
@@ -3300,13 +3357,13 @@ declare class ProvideColorDirective {
3300
3357
  * consumers that re-apply context across detached DOM (overlay panes) must use this instead
3301
3358
  * of `effectiveColor` or a passive in-between provider (e.g. a form field's) erases the theme.
3302
3359
  */
3303
- resolvedColor: _angular_core.Signal<string | ColorTheme | null | undefined>;
3360
+ resolvedColor: _angular_core.Signal<ColorThemeInput | undefined>;
3304
3361
  colorName: _angular_core.Signal<string | undefined>;
3305
3362
  protected themeClass: _angular_core.Signal<string>;
3306
3363
  syncWithProvider(provider: ProvideColorDirective): void;
3307
3364
  stopSyncWithProvider(): void;
3308
3365
  /** @internal */
3309
- forceColor(color: RegisteredColorThemeName | ColorTheme | null): void;
3366
+ forceColor(color: ColorThemeInput): void;
3310
3367
  /** @internal */
3311
3368
  clearForcedColor(): void;
3312
3369
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProvideColorDirective, never>;
@@ -3341,8 +3398,8 @@ declare const injectSurfaceContextTracker: _ethlete_core.InjectFn<SurfaceContext
3341
3398
  * Same shape as `ColorInteractiveDirective` - reacts to its own `:hover`/`:focus-visible`/
3342
3399
  * `:active`/`[disabled]` - but drives `--et-surface-interaction-*`, a neutral/muted tint, instead
3343
3400
  * of the ambient color theme. Use it for chrome-level interaction feedback that shouldn't borrow
3344
- * the page's brand color (a tab trigger's hover state, a toggle button that should look neutral
3345
- * until it's actually active - see `ButtonDirective`'s `mutedUntilPressed`).
3401
+ * the page's brand color (a tab trigger's hover state, a row's hover fill). For a whole component
3402
+ * that should render neutral rather than accented, provide the `surface` color instead.
3346
3403
  *
3347
3404
  * Has no container/exclude/has-focus variants: it has no descendant-cascading CSS at all, so
3348
3405
  * applying it to a wrapper with independently-interactive children is safe by construction -
@@ -3628,7 +3685,7 @@ type UnsavedChangesGuardRef<T> = UnsavedChangesTrackerRef<T> & {
3628
3685
  declare const createUnsavedChangesGuard: <T>(config: CreateUnsavedChangesGuardConfig<T>) => UnsavedChangesGuardRef<T>;
3629
3686
 
3630
3687
  /** The version of `@ethlete/core` this build was cut from. */
3631
- declare const CORE_VERSION = "5.0.0-next.45";
3688
+ declare const CORE_VERSION = "5.0.0-next.47";
3632
3689
 
3633
- export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PROVIDER, CORE_VERSION, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, ET_RESTORE_SCROLL, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd_d as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MatchStateType, MustMatch, NOTIFICATION_CLICK_MESSAGE_TYPE, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RestoreScrollDirective, RuntimeError, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, Validators, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createObjectUrlHandle, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSetup, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDefaultColorTheme, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFileDownload, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectNotifications, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideNotifications, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, resetPositioningStyles, resolveAppRootColorProvider, resolveSurfaceByElevation, round, routerDisableScrollTop, routerRestoreScroll, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, suppressTextSelection, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
3634
- export type { AlternateLanguagesConfig, AnchoredPositionMiddlewareExtras, AnchoredPositionSetup, AngularRenderer, AnimatedBlockSizeConfig, AnimatedLifecycleState, AnimatedNumberSignal, AnimatedSizeAxis, AnimationEndEvent, AnyTemplateType, ArticleConfig, BindPropsOptions, BoolBreakpointSignal, Breakpoint, BreakpointInput, BreakpointMap, BuildMediaQueryOptions, BuildSignalEffectsConfig, ColorTheme, ColorThemeType, ComponentTemplate, ComponentType, ComponentTypeWithInputs, ConsentHandler, ControlValueSignalOptions, CreateLoggerConfig, CreatePropsOptions, CreateSessionMemoryConfig, CreateUnsavedChangesGuardConfig, CreateUnsavedChangesTabLockConfig, CreateUnsavedChangesTrackerConfig, CreateUserConsentProviderOptions, CurrentElementVisibility, CursorDragScrollDirection, CursorDragScrollOptions, DragEndEvent, DragGestureEvent, DragMoveEvent, DragStartEvent, ElementDimensions, ElementLastScrollDirection, ElementLastScrollDirectionType, ElementRect, ElementScrollState, ElementSignal, ElementSignalValue, ElementSize, EthleteColorThemeNameRegistry, EthleteSurfaceThemeNameRegistry, FaviconOverlay, FileDownloadOptions, FlipAnimationConfig, HeadBinding, HostProps, InjectFn, InjectQueryParamConfig, InjectUtilConfig, InjectUtilTransformConfig, IntersectionObserverEntryWithDetails, IsElementVisibleOptions, LabelsDefinition, LabelsSource, LinkConfig, LinkStoreConfig, LogicalSize, MaybeSignal, MetaConfig, MetaTagConfig, NgClassType, NgTemplateTemplate, NormalizedGameResultType, NormalizedMatchParticipant, NormalizedMatchParticipants, NormalizedMatchScore, NormalizedUnsavedChangesSource, NotificationActionConfig, NotificationClickContext, NotificationClickMessage, NotificationDeliveryPath, NotificationPermissionState, NotificationRef, Notifications, NullableElementDimensions, NumberBreakpointSignal, ObjectUrlHandle, OnThemeColorMap, OpenGraphConfig, OverlayRuntimeAnchoredPosition, OverlayRuntimeAnimationDelegate, OverlayRuntimeAnimationDelegateEnterContext, OverlayRuntimeAnimationDelegateLeaveContext, OverlayRuntimeAutoFocusTarget, OverlayRuntimeCenteredPosition, OverlayRuntimeCloseEvent, OverlayRuntimeCloseGuard, OverlayRuntimeCloseSource, OverlayRuntimeComponentBase, OverlayRuntimeElements, OverlayRuntimeGlobalPosition, OverlayRuntimeGlobalPositionAlignment, OverlayRuntimeMountConfig, OverlayRuntimePositionStrategy, OverlayRuntimeRef, OverlayRuntimeRole, OverlayRuntimeShiftOptions, OverlayRuntimeState, PropHandlers, Props, PropsAttachedElements, PropsAttachedElementsInternal, PropsInternal, ProviderDefinition, ProviderDefinitionOptions, RegisteredColorThemeName, RegisteredSurfaceThemeName, ResizeEdge, ResizeMoveEvent, ResourceHintsConfig, RobotsConfig, RouterDisableScrollTopConfig, RouterState, ScrollContainerTarget, ScrollItemTarget, ScrollRestorationRestoreConfig, ScrollRestorationScrollElement, ScrollSnapOrigin, ScrollSnapTarget, ScrollToElementOptions, SetupScrollRestorationConfig, ShowNotificationConfig, SignalAnimatedNumberOptions, SignalElementBindingComplexType, SignalElementBindingType, SignalElementChildrenOptions, SignalElementIntersectionOptions, SignalElementScrollStateOptions, SocialMediaConfig, StaticProviderDefinition, StringTemplate, StructuredDataConfig, StyleManager, SurfaceContextEntry, SurfaceContextSurface, SurfaceContextTracker, SurfaceInteractionColor, SurfaceTheme, SurfaceThemeColor, SurfaceType, SwipeEndEvent, SwipeTracker, SwipeUpdateEvent, SyncSignalOptions, TemplateRefWithContext, ThemeColor, ThemeColorMap, ThemeHSLColor, ThemeInkColorMap, ThemeRGBColor, ThemeSwatch, TitleConfig, TitlePart, Translatable, TwitterCardConfig, TypedBreakpointSignal, UnbindPropsOptions, UnsavedChangesAbandonReason, UnsavedChangesConfirmContext, UnsavedChangesConfirmFn, UnsavedChangesGuardRef, UnsavedChangesRegistration, UnsavedChangesSource, UnsavedChangesTabConfig, UnsavedChangesTabLockRef, UnsavedChangesTrackerRef, ValidateAtLeastOneRequiredConfig, Vec2, ViewportConfig };
3690
+ export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PALETTE, COLOR_PROVIDER, CORE_VERSION, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, ET_RESTORE_SCROLL, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd_d as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MatchStateType, MustMatch, NOTIFICATION_CLICK_MESSAGE_TYPE, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RestoreScrollDirective, RuntimeError, SURFACE_COLOR, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, Validators, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createObjectUrlHandle, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSetup, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorPalette, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDefaultColorTheme, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFileDownload, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectNotifications, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorPalette, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideNotifications, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, resetPositioningStyles, resolveAppRootColorProvider, resolveSurfaceByElevation, round, routerDisableScrollTop, routerRestoreScroll, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, suppressTextSelection, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
3691
+ export type { AlternateLanguagesConfig, AnchoredPositionMiddlewareExtras, AnchoredPositionSetup, AngularRenderer, AnimatedBlockSizeConfig, AnimatedLifecycleState, AnimatedNumberSignal, AnimatedSizeAxis, AnimationEndEvent, AnyTemplateType, ArticleConfig, BindPropsOptions, BoolBreakpointSignal, Breakpoint, BreakpointInput, BreakpointMap, BuildMediaQueryOptions, BuildSignalEffectsConfig, ColorPaletteEntry, ColorTheme, ColorThemeInput, ColorThemeType, ComponentTemplate, ComponentType, ComponentTypeWithInputs, ConsentHandler, ControlValueSignalOptions, CreateLoggerConfig, CreatePropsOptions, CreateSessionMemoryConfig, CreateUnsavedChangesGuardConfig, CreateUnsavedChangesTabLockConfig, CreateUnsavedChangesTrackerConfig, CreateUserConsentProviderOptions, CurrentElementVisibility, CursorDragScrollDirection, CursorDragScrollOptions, DragEndEvent, DragGestureEvent, DragMoveEvent, DragStartEvent, ElementDimensions, ElementLastScrollDirection, ElementLastScrollDirectionType, ElementRect, ElementScrollState, ElementSignal, ElementSignalValue, ElementSize, EthleteColorThemeNameRegistry, EthleteSurfaceThemeNameRegistry, FaviconOverlay, FileDownloadOptions, FlipAnimationConfig, HeadBinding, HostProps, InjectFn, InjectQueryParamConfig, InjectUtilConfig, InjectUtilTransformConfig, IntersectionObserverEntryWithDetails, IsElementVisibleOptions, LabelsDefinition, LabelsSource, LinkConfig, LinkStoreConfig, LogicalSize, MaybeSignal, MetaConfig, MetaTagConfig, NgClassType, NgTemplateTemplate, NormalizedGameResultType, NormalizedMatchParticipant, NormalizedMatchParticipants, NormalizedMatchScore, NormalizedUnsavedChangesSource, NotificationActionConfig, NotificationClickContext, NotificationClickMessage, NotificationDeliveryPath, NotificationPermissionState, NotificationRef, Notifications, NullableElementDimensions, NumberBreakpointSignal, ObjectUrlHandle, OnThemeColorMap, OpenGraphConfig, OverlayRuntimeAnchoredPosition, OverlayRuntimeAnimationDelegate, OverlayRuntimeAnimationDelegateEnterContext, OverlayRuntimeAnimationDelegateLeaveContext, OverlayRuntimeAutoFocusTarget, OverlayRuntimeCenteredPosition, OverlayRuntimeCloseEvent, OverlayRuntimeCloseGuard, OverlayRuntimeCloseSource, OverlayRuntimeComponentBase, OverlayRuntimeElements, OverlayRuntimeGlobalPosition, OverlayRuntimeGlobalPositionAlignment, OverlayRuntimeMountConfig, OverlayRuntimePositionStrategy, OverlayRuntimeRef, OverlayRuntimeRole, OverlayRuntimeShiftOptions, OverlayRuntimeState, PropHandlers, Props, PropsAttachedElements, PropsAttachedElementsInternal, PropsInternal, ProviderDefinition, ProviderDefinitionOptions, RegisteredColorThemeName, RegisteredSurfaceThemeName, ResizeEdge, ResizeMoveEvent, ResourceHintsConfig, RobotsConfig, RouterDisableScrollTopConfig, RouterState, ScrollContainerTarget, ScrollItemTarget, ScrollRestorationRestoreConfig, ScrollRestorationScrollElement, ScrollSnapOrigin, ScrollSnapTarget, ScrollToElementOptions, SetupScrollRestorationConfig, ShowNotificationConfig, SignalAnimatedNumberOptions, SignalElementBindingComplexType, SignalElementBindingType, SignalElementChildrenOptions, SignalElementIntersectionOptions, SignalElementScrollStateOptions, SocialMediaConfig, StaticProviderDefinition, StringTemplate, StructuredDataConfig, StyleManager, SurfaceColor, SurfaceContextEntry, SurfaceContextSurface, SurfaceContextTracker, SurfaceInteractionColor, SurfaceInteractionColorMap, SurfaceOnInteractionColorMap, SurfaceTheme, SurfaceThemeColor, SurfaceType, SwipeEndEvent, SwipeTracker, SwipeUpdateEvent, SyncSignalOptions, TemplateRefWithContext, ThemeColor, ThemeColorMap, ThemeHSLColor, ThemeInkColorMap, ThemeRGBColor, ThemeSwatch, TitleConfig, TitlePart, Translatable, TwitterCardConfig, TypedBreakpointSignal, UnbindPropsOptions, UnsavedChangesAbandonReason, UnsavedChangesConfirmContext, UnsavedChangesConfirmFn, UnsavedChangesGuardRef, UnsavedChangesRegistration, UnsavedChangesSource, UnsavedChangesTabConfig, UnsavedChangesTabLockRef, UnsavedChangesTrackerRef, ValidateAtLeastOneRequiredConfig, Vec2, ViewportConfig };