-
Notifications
You must be signed in to change notification settings - Fork 6
/
vwc-button.scss
127 lines (105 loc) 路 3.45 KB
/
vwc-button.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
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
@forward './vwc-button-coupling';
@use './vwc-button-variables' as button-variables;
@use '@vonage/vwc-icon/src/partials/vwc-icon-variables' as icon-variables;
@use '@vonage/vvd-style-coupling/scss/vvd-formfield' as vvd-formfield;
@use '@vonage/vvd-design-tokens/build/scss/semantic-variables/scheme-variables' as scheme-variables;
@use '@vonage/vvd-foundation/scss/mixins/connotation/config' with (
$connotations-set: primary cta success alert info announcement,
$shades: diverse,
$default: primary,
);
@use '@vonage/vvd-foundation/scss/mixins/connotation' as connotation;
@use '@vonage/vvd-foundation/scss/mixins/shape-mixins' with(
$variable-name: --vvd-button-shape
);
@use '@vonage/vvd-foundation/scss/mixins/layout/config' as layout-config with (
$layout-set: filled outlined ghost,
$default: ghost,
);
@use '@vonage/vvd-foundation/scss/mixins/layout' as layout;
@mixin size($type, $unit) {
:host([#{$type}]) & {
--button-block-size: #{$unit * 8px};
vwc-icon {
#{icon-variables.$icon-size-variable-name}: var(#{button-variables.$button-icon-size-variable-name}, #{$unit * 4px});
}
@content;
}
}
.mdc-button {
--mdc-button-disabled-ink-color: var(#{vvd-formfield.$formfield-disabled-ink});
--mdc-button-disabled-fill-color: var(#{scheme-variables.$vvd-color-neutral-30});
--mdc-button-disabled-outline-color: var(#{vvd-formfield.$formfield-disabled-ink});
--mdc-button-outline-color: var(#{layout.$vvd-layout-color-outline}, var(--mdc-theme-primary));
--mdc-button-horizontal-padding: 16px;
--button-block-size: 40px;
$gutter: 8px;
@include vvd-formfield.coupling;
@include connotation.connotation;
@include layout.layout;
height: var(--vvd-button-block-size, var(--button-block-size));
border-radius: var(#{button-variables.$vvd-button-shape});
// ! this was supposed to be set by MDC
font-stretch: var(--mdc-typography-button-font-stretch);
letter-spacing: normal;
&:not(.mdc-button--dense) {
vwc-icon {
#{icon-variables.$icon-size-variable-name}: var(#{button-variables.$button-icon-size-variable-name}, 20px);
}
}
.leading-icon,
.trailing-icon {
// TODO remove next line when VIV-704 resolved
#{connotation.$vvd-color-connotation}: initial;
display: flex;
}
> .trailing-icon {
vwc-icon {
margin-inline-start: $gutter;
}
}
> .leading-icon {
vwc-icon {
margin-inline-end: $gutter;
}
}
/* stylelint-disable-next-line order/order -- variants */
@include size(dense, 4);
@include size(enlarged, 6) {
$gutter: 10px;
> .trailing-icon {
vwc-icon {
margin-inline-start: $gutter;
}
}
> .leading-icon {
vwc-icon {
margin-inline-end: $gutter;
}
}
}
:host([raised]) &,
:host([unelevated]) & {
--mdc-ripple-color: var(#{button-variables.$vvd-button-on-color}, var(#{layout.$vvd-layout-color-text}));
}
:host([unelevated]) & {
--mdc-theme-primary: var(#{button-variables.$vvd-button-color}, var(#{layout.$vvd-layout-color-fill}));
--mdc-theme-on-primary: var(#{button-variables.$vvd-button-on-color}, var(#{layout.$vvd-layout-color-text}));
}
&:not(.layout-filled) {
--mdc-theme-primary: var(#{button-variables.$vvd-button-color}, var(#{layout.$vvd-layout-color-text}));
--mdc-theme-on-primary: var(#{button-variables.$vvd-button-on-color}, var(#{layout.$vvd-layout-color-fill}));
}
:host([dense]) & {
--mdc-button-horizontal-padding: 12px;
}
:host([enlarged]) & {
--mdc-button-horizontal-padding: 20px;
}
}
@include shape-mixins.shape(
$shapes: (
rounded: 6px,
pill: 24px,
)
);