-
Notifications
You must be signed in to change notification settings - Fork 6.8k
/
Copy path_m2-menu.scss
74 lines (66 loc) · 2.87 KB
/
_m2-menu.scss
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
@use '../core/tokens/m2-utils';
@use '../core/theming/inspection';
@use '../core/style/sass-utils';
@use '../core/style/elevation';
// The prefix used to generate the fully qualified name for tokens in this file.
$prefix: (mat, menu);
// Tokens that can't be configured through Angular Material's current theming API,
// but may be in a future version of the theming API.
@function get-unthemable-tokens() {
@return (
container-shape: 4px,
divider-bottom-spacing: 0,
divider-top-spacing: 0,
item-spacing: 16px,
item-icon-size: 24px,
item-leading-spacing: 16px,
item-trailing-spacing: 16px,
item-with-icon-leading-spacing: 16px,
item-with-icon-trailing-spacing: 16px,
container-elevation-shadow: elevation.get-box-shadow(8),
// Unused
base-elevation-level: null,
);
}
// Tokens that can be configured through Angular Material's color theming API.
@function get-color-tokens($theme) {
$is-dark: inspection.get-theme-type($theme) == dark;
$active-state-layer-color: inspection.get-theme-color($theme, foreground, base,
if($is-dark, 0.08, 0.04));
$disabled-background: inspection.get-theme-color($theme, foreground, disabled-button);
$text-color: inspection.get-theme-color($theme, foreground, text);
@return (
item-label-text-color: $text-color,
item-icon-color: $text-color,
item-hover-state-layer-color: $active-state-layer-color,
item-disabled-hover-state-layer-color: $disabled-background,
item-focus-state-layer-color: $active-state-layer-color,
item-disabled-focus-state-layer-color: $disabled-background,
container-color: inspection.get-theme-color($theme, background, card),
divider-color: inspection.get-theme-color($theme, foreground, divider),
);
}
// Tokens that can be configured through Angular Material's typography theming API.
@function get-typography-tokens($theme) {
@return (
item-label-text-font: inspection.get-theme-typography($theme, body-1, font-family),
item-label-text-size: inspection.get-theme-typography($theme, body-1, font-size),
item-label-text-tracking: inspection.get-theme-typography($theme, body-1, letter-spacing),
item-label-text-line-height: inspection.get-theme-typography($theme, body-1, line-height),
item-label-text-weight: inspection.get-theme-typography($theme, body-1, font-weight),
);
}
// Tokens that can be configured through Angular Material's density theming API.
@function get-density-tokens($theme) {
@return ();
}
// Combines the tokens generated by the above functions into a single map with placeholder values.
// This is used to create token slots.
@function get-token-slots() {
@return sass-utils.deep-merge-all(
get-unthemable-tokens(),
get-color-tokens(m2-utils.$placeholder-color-config),
get-typography-tokens(m2-utils.$placeholder-typography-config),
get-density-tokens(m2-utils.$placeholder-density-config)
);
}