diff --git a/docs/src/app/pages/component-viewer/token-table.html b/docs/src/app/pages/component-viewer/token-table.html
index 9b4d47f6059c..81ca2c59a147 100644
--- a/docs/src/app/pages/component-viewer/token-table.html
+++ b/docs/src/app/pages/component-viewer/token-table.html
@@ -10,11 +10,23 @@
Filter by type
-
+
@for (type of types; track $index) {
{{type | titlecase}}
}
+ @if (typeFilter()) {
+
+ }
+
+
+
+ Filter by system token
+
diff --git a/docs/src/app/pages/component-viewer/token-table.ts b/docs/src/app/pages/component-viewer/token-table.ts
index d3fd8962be05..80b2f942cb3d 100644
--- a/docs/src/app/pages/component-viewer/token-table.ts
+++ b/docs/src/app/pages/component-viewer/token-table.ts
@@ -8,10 +8,12 @@
import {ChangeDetectionStrategy, Component, computed, input, signal} from '@angular/core';
import {TitleCasePipe} from '@angular/common';
-import {MatButton} from '@angular/material/button';
-import {MatFormField, MatLabel} from '@angular/material/form-field';
+import {MatButton, MatIconButton} from '@angular/material/button';
+import {MatFormField, MatLabel, MatSuffix} from '@angular/material/form-field';
+import {MatIcon} from '@angular/material/icon';
import {MatInput} from '@angular/material/input';
import {MatOption, MatSelect} from '@angular/material/select';
+import {MatTooltip} from '@angular/material/tooltip';
import {TokenName} from './token-name';
type TokenType = 'base' | 'color' | 'typography' | 'density';
@@ -31,34 +33,42 @@ export interface Token {
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
MatButton,
+ MatIconButton,
MatFormField,
MatLabel,
+ MatSuffix,
+ MatIcon,
MatInput,
MatSelect,
MatOption,
+ MatTooltip,
TokenName,
TitleCasePipe,
],
})
export class TokenTable {
- tokens = input.required();
+ readonly tokens = input.required();
- protected nameFilter = signal('');
- protected typeFilter = signal(null);
- protected types: TokenType[] = ['base', 'color', 'typography', 'density'];
- protected filteredTokens = computed(() => {
+ protected readonly nameFilter = signal('');
+ protected readonly typeFilter = signal(null);
+ protected readonly systemTokenFilter = signal('');
+ protected readonly types: TokenType[] = ['base', 'color', 'typography', 'density'];
+ protected readonly filteredTokens = computed(() => {
const name = this.nameFilter().trim().toLowerCase();
const typeFilter = this.typeFilter();
+ const systemTokenFilter = this.systemTokenFilter();
return this.tokens().filter(
token =>
(!name || token.overridesName.toLowerCase().includes(name)) &&
- (!typeFilter || token.type === typeFilter),
+ (!typeFilter || token.type === typeFilter) &&
+ (!systemTokenFilter || token.derivedFrom?.toLowerCase().includes(systemTokenFilter)),
);
});
protected reset() {
this.nameFilter.set('');
this.typeFilter.set(null);
+ this.systemTokenFilter.set('');
}
}