-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Expand file tree
/
Copy path_token-registry.scss
More file actions
139 lines (129 loc) · 6.97 KB
/
_token-registry.scss
File metadata and controls
139 lines (129 loc) · 6.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
@use 'sass:map';
// Sorted alphabetically by component name, matching the $registry map order below.
@use '../m3-app';
@use '../../autocomplete/m3-autocomplete';
@use '../../badge/m3-badge';
@use '../../bottom-sheet/m3-bottom-sheet';
@use '../../button/m3-button';
@use '../../button/m3-fab';
@use '../../button/m3-icon-button';
@use '../../button-toggle/m3-button-toggle';
@use '../../card/m3-card';
@use '../../checkbox/m3-checkbox';
@use '../../chips/m3-chip';
@use '../../datepicker/m3-datepicker';
@use '../../dialog/m3-dialog';
@use '../../divider/m3-divider';
@use '../../expansion/m3-expansion';
@use '../../form-field/m3-form-field';
@use '../../grid-list/m3-grid-list';
@use '../../icon/m3-icon';
@use '../../list/m3-list';
@use '../../menu/m3-menu';
@use '../option/m3-optgroup';
@use '../option/m3-option';
@use '../../paginator/m3-paginator';
@use '../../progress-bar/m3-progress-bar';
@use '../../progress-spinner/m3-progress-spinner';
@use '../selection/pseudo-checkbox/m3-pseudo-checkbox';
@use '../../radio/m3-radio';
@use '../ripple/m3-ripple';
@use '../../select/m3-select';
@use '../../sidenav/m3-sidenav';
@use '../../slide-toggle/m3-slide-toggle';
@use '../../slider/m3-slider';
@use '../../snack-bar/m3-snack-bar';
@use '../../sort/m3-sort';
@use '../../stepper/m3-stepper';
@use '../../table/m3-table';
@use '../../tabs/m3-tabs';
@use '../../timepicker/m3-timepicker';
@use '../../toolbar/m3-toolbar';
@use '../../tooltip/m3-tooltip';
@use '../../tree/m3-tree';
@use './token-utils';
// Note: `input` is intentionally absent from the registry — it has no M3 tokens
// of its own and delegates all theming to `form-field`.
// Registry maps each component namespace to its overrides map.
// The overrides map has an `all` key containing token-name → default-value entries.
// Token names have the component prefix removed
// (e.g. `container-color` not `snack-bar-container-color`,
// and `filled-container-color` not `button-filled-container-color`).
$_registry: (
app: token-utils.get-overrides(m3-app.get-tokens(), app),
autocomplete: token-utils.get-overrides(m3-autocomplete.get-tokens(), autocomplete),
badge: token-utils.get-overrides(m3-badge.get-tokens(), badge),
bottom-sheet: token-utils.get-overrides(m3-bottom-sheet.get-tokens(), bottom-sheet),
button: token-utils.get-overrides(m3-button.get-tokens(), button),
button-toggle: token-utils.get-overrides(m3-button-toggle.get-tokens(), button-toggle),
card: token-utils.get-overrides(m3-card.get-tokens(), card),
checkbox: token-utils.get-overrides(m3-checkbox.get-tokens(), checkbox),
chip: token-utils.get-overrides(m3-chip.get-tokens(), chip),
datepicker: token-utils.get-overrides(m3-datepicker.get-tokens(), datepicker),
dialog: token-utils.get-overrides(m3-dialog.get-tokens(), dialog),
divider: token-utils.get-overrides(m3-divider.get-tokens(), divider),
expansion: token-utils.get-overrides(m3-expansion.get-tokens(), expansion),
fab: token-utils.get-overrides(m3-fab.get-tokens(), fab),
form-field: token-utils.get-overrides(m3-form-field.get-tokens(), form-field),
grid-list: token-utils.get-overrides(m3-grid-list.get-tokens(), grid-list),
icon: token-utils.get-overrides(m3-icon.get-tokens(), icon),
icon-button: token-utils.get-overrides(m3-icon-button.get-tokens(), icon-button),
list: token-utils.get-overrides(m3-list.get-tokens(), list),
menu: token-utils.get-overrides(m3-menu.get-tokens(), menu),
optgroup: token-utils.get-overrides(m3-optgroup.get-tokens(), optgroup),
option: token-utils.get-overrides(m3-option.get-tokens(), option),
paginator: token-utils.get-overrides(m3-paginator.get-tokens(), paginator),
progress-bar: token-utils.get-overrides(m3-progress-bar.get-tokens(), progress-bar),
progress-spinner: token-utils.get-overrides(m3-progress-spinner.get-tokens(), progress-spinner),
pseudo-checkbox: token-utils.get-overrides(m3-pseudo-checkbox.get-tokens(), pseudo-checkbox),
radio: token-utils.get-overrides(m3-radio.get-tokens(), radio),
ripple: token-utils.get-overrides(m3-ripple.get-tokens(), ripple),
select: token-utils.get-overrides(m3-select.get-tokens(), select),
sidenav: token-utils.get-overrides(m3-sidenav.get-tokens(), sidenav),
slide-toggle: token-utils.get-overrides(m3-slide-toggle.get-tokens(), slide-toggle),
slider: token-utils.get-overrides(m3-slider.get-tokens(), slider),
snack-bar: token-utils.get-overrides(m3-snack-bar.get-tokens(), snack-bar),
sort: token-utils.get-overrides(m3-sort.get-tokens(), sort),
stepper: token-utils.get-overrides(m3-stepper.get-tokens(), stepper),
table: token-utils.get-overrides(m3-table.get-tokens(), table),
tabs: token-utils.get-overrides(m3-tabs.get-tokens(), tabs),
timepicker: token-utils.get-overrides(m3-timepicker.get-tokens(), timepicker),
toolbar: token-utils.get-overrides(m3-toolbar.get-tokens(), toolbar),
tooltip: token-utils.get-overrides(m3-tooltip.get-tokens(), tooltip),
tree: token-utils.get-overrides(m3-tree.get-tokens(), tree),
);
/// Returns a CSS variable reference for a Material Design token.
/// Throws a Sass compile error if the component or token name is invalid.
///
/// Token names are the CSS variable name with the `--mat-{component}-` prefix removed.
/// Components with sub-variants retain those prefixes in the token name. For example,
/// `--mat-button-filled-container-color` → token `filled-container-color`, not
/// `container-color`. Use `mat.{component}-overrides()` documentation to discover
/// the exact token names for a given component.
///
/// @param {String} $component - Component namespace (e.g. `snack-bar`, `button`)
/// @param {String} $token - Token name without component prefix (e.g. `container-color`,
/// `filled-container-color`)
/// @param {*} $fallback - Optional CSS fallback value
/// @return CSS var() expression
@function token-var($component, $token, $fallback: null) {
@if not map.has-key($_registry, $component) {
@error 'Unknown component `#{$component}` in mat.token-var(). ' +
'Valid components are: #{map.keys($_registry)}';
}
$all: map.get(map.get($_registry, $component), all);
@if not map.has-key($all, $token) {
@error 'Unknown token `#{$token}` for component `#{$component}` in mat.token-var(). ' +
'Valid tokens are: #{map.keys($all)}';
}
@if $fallback != null {
@return var(--mat-#{$component}-#{$token}, #{$fallback});
}
@return var(--mat-#{$component}-#{$token});
}
/// Returns the list of component names registered in the token registry.
/// Not forwarded through `_index.scss` — available only to consumers that
/// directly `@use` this module, such as the token-var completeness tests.
@function registry-keys() {
@return map.keys($_registry);
}