1
1
// Color variations
2
2
// Function to convert to HSL and adjust
3
3
@function adjust-color-lightness ($color , $adjustment ) {
4
- $lightness : lightness ($color );
5
- $new-lightness : $lightness ;
6
-
7
4
@if $adjustment > 0 {
8
- // Lightening
9
- $new-lightness : $lightness + (100 - $lightness ) * ($adjustment / 100 );
5
+ @return color-mix (in srgb , $color , white $adjustment );
10
6
} @else {
11
- // Darkening
12
- $new-lightness : $lightness + $lightness * ($adjustment / 100 );
7
+ @return color-mix (in srgb , $color , black calc ($adjustment * -1 ));
13
8
}
14
-
15
- // Return new color
16
- @return hsl (hue ($color ), saturation ($color ), $new-lightness );
17
9
}
18
10
19
- $brand-primary-50 : adjust-color-lightness ($brand-primary , 90 );
20
- $brand-primary-100 : adjust-color-lightness ($brand-primary , 80 );
21
- $brand-primary-150 : adjust-color-lightness ($brand-primary , 70 );
22
- $brand-primary-200 : adjust-color-lightness ($brand-primary , 60 );
23
- $brand-primary-250 : adjust-color-lightness ($brand-primary , 50 );
24
- $brand-primary-300 : adjust-color-lightness ($brand-primary , 40 );
25
- $brand-primary-350 : adjust-color-lightness ($brand-primary , 30 );
26
- $brand-primary-400 : adjust-color-lightness ($brand-primary , 20 );
27
- $brand-primary-450 : adjust-color-lightness ($brand-primary , 10 );
28
- $brand-primary-500 : $brand-primary ;
29
- $brand-primary-550 : adjust-color-lightness ($brand-primary , -10 );
30
- $brand-primary-600 : adjust-color-lightness ($brand-primary , -20 );
31
- $brand-primary-650 : adjust-color-lightness ($brand-primary , -30 );
32
- $brand-primary-700 : adjust-color-lightness ($brand-primary , -40 );
33
- $brand-primary-750 : adjust-color-lightness ($brand-primary , -50 );
34
- $brand-primary-800 : adjust-color-lightness ($brand-primary , -60 );
35
- $brand-primary-850 : adjust-color-lightness ($brand-primary , -70 );
36
- $brand-primary-900 : adjust-color-lightness ($brand-primary , -80 );
37
- $brand-primary-950 : adjust-color-lightness ($brand-primary , -90 );
38
-
39
- $brand-success-50 : adjust-color-lightness ($brand-success , 90 );
40
- $brand-success-100 : adjust-color-lightness ($brand-success , 80 );
41
- $brand-success-150 : adjust-color-lightness ($brand-success , 70 );
42
- $brand-success-200 : adjust-color-lightness ($brand-success , 60 );
43
- $brand-success-250 : adjust-color-lightness ($brand-success , 50 );
44
- $brand-success-300 : adjust-color-lightness ($brand-success , 40 );
45
- $brand-success-350 : adjust-color-lightness ($brand-success , 30 );
46
- $brand-success-400 : adjust-color-lightness ($brand-success , 20 );
47
- $brand-success-450 : adjust-color-lightness ($brand-success , 10 );
48
- $brand-success-500 : $brand-success ;
49
- $brand-success-550 : adjust-color-lightness ($brand-success , -10 );
50
- $brand-success-600 : adjust-color-lightness ($brand-success , -20 );
51
- $brand-success-650 : adjust-color-lightness ($brand-success , -30 );
52
- $brand-success-700 : adjust-color-lightness ($brand-success , -40 );
53
- $brand-success-750 : adjust-color-lightness ($brand-success , -50 );
54
- $brand-success-800 : adjust-color-lightness ($brand-success , -60 );
55
- $brand-success-850 : adjust-color-lightness ($brand-success , -70 );
56
- $brand-success-900 : adjust-color-lightness ($brand-success , -80 );
57
- $brand-success-950 : adjust-color-lightness ($brand-success , -90 );
58
-
59
- $brand-warning-50 : adjust-color-lightness ($brand-warning , 90 );
60
- $brand-warning-100 : adjust-color-lightness ($brand-warning , 80 );
61
- $brand-warning-150 : adjust-color-lightness ($brand-warning , 70 );
62
- $brand-warning-200 : adjust-color-lightness ($brand-warning , 60 );
63
- $brand-warning-250 : adjust-color-lightness ($brand-warning , 50 );
64
- $brand-warning-300 : adjust-color-lightness ($brand-warning , 40 );
65
- $brand-warning-350 : adjust-color-lightness ($brand-warning , 30 );
66
- $brand-warning-400 : adjust-color-lightness ($brand-warning , 20 );
67
- $brand-warning-450 : adjust-color-lightness ($brand-warning , 10 );
68
- $brand-warning-500 : $brand-warning ;
69
- $brand-warning-550 : adjust-color-lightness ($brand-warning , -10 );
70
- $brand-warning-600 : adjust-color-lightness ($brand-warning , -20 );
71
- $brand-warning-650 : adjust-color-lightness ($brand-warning , -30 );
72
- $brand-warning-700 : adjust-color-lightness ($brand-warning , -40 );
73
- $brand-warning-750 : adjust-color-lightness ($brand-warning , -50 );
74
- $brand-warning-800 : adjust-color-lightness ($brand-warning , -60 );
75
- $brand-warning-850 : adjust-color-lightness ($brand-warning , -70 );
76
- $brand-warning-900 : adjust-color-lightness ($brand-warning , -80 );
77
- $brand-warning-950 : adjust-color-lightness ($brand-warning , -90 );
78
-
79
- $brand-danger-50 : adjust-color-lightness ($brand-danger , 90 );
80
- $brand-danger-100 : adjust-color-lightness ($brand-danger , 80 );
81
- $brand-danger-150 : adjust-color-lightness ($brand-danger , 70 );
82
- $brand-danger-200 : adjust-color-lightness ($brand-danger , 60 );
83
- $brand-danger-250 : adjust-color-lightness ($brand-danger , 50 );
84
- $brand-danger-300 : adjust-color-lightness ($brand-danger , 40 );
85
- $brand-danger-350 : adjust-color-lightness ($brand-danger , 30 );
86
- $brand-danger-400 : adjust-color-lightness ($brand-danger , 20 );
87
- $brand-danger-450 : adjust-color-lightness ($brand-danger , 10 );
88
- $brand-danger-500 : $brand-danger ;
89
- $brand-danger-550 : adjust-color-lightness ($brand-danger , -10 );
90
- $brand-danger-600 : adjust-color-lightness ($brand-danger , -20 );
91
- $brand-danger-650 : adjust-color-lightness ($brand-danger , -30 );
92
- $brand-danger-700 : adjust-color-lightness ($brand-danger , -40 );
93
- $brand-danger-750 : adjust-color-lightness ($brand-danger , -50 );
94
- $brand-danger-800 : adjust-color-lightness ($brand-danger , -60 );
95
- $brand-danger-850 : adjust-color-lightness ($brand-danger , -70 );
96
- $brand-danger-900 : adjust-color-lightness ($brand-danger , -80 );
97
- $brand-danger-950 : adjust-color-lightness ($brand-danger , -90 );
98
-
99
- $brand-default-50 : adjust-color-lightness ($brand-default , 90 );
100
- $brand-default-100 : adjust-color-lightness ($brand-default , 80 );
101
- $brand-default-150 : adjust-color-lightness ($brand-default , 70 );
102
- $brand-default-200 : adjust-color-lightness ($brand-default , 60 );
103
- $brand-default-250 : adjust-color-lightness ($brand-default , 50 );
104
- $brand-default-300 : adjust-color-lightness ($brand-default , 40 );
105
- $brand-default-350 : adjust-color-lightness ($brand-default , 30 );
106
- $brand-default-400 : adjust-color-lightness ($brand-default , 20 );
107
- $brand-default-450 : adjust-color-lightness ($brand-default , 10 );
108
- $brand-default-500 : $brand-default ;
109
- $brand-default-550 : adjust-color-lightness ($brand-default , -10 );
110
- $brand-default-600 : adjust-color-lightness ($brand-default , -20 );
111
- $brand-default-650 : adjust-color-lightness ($brand-default , -30 );
112
- $brand-default-700 : adjust-color-lightness ($brand-default , -40 );
113
- $brand-default-750 : adjust-color-lightness ($brand-default , -50 );
114
- $brand-default-800 : adjust-color-lightness ($brand-default , -60 );
115
- $brand-default-850 : adjust-color-lightness ($brand-default , -70 );
116
- $brand-default-900 : adjust-color-lightness ($brand-default , -80 );
117
- $brand-default-950 : adjust-color-lightness ($brand-default , -90 );
118
-
119
- $gray-50 : adjust-color-lightness ($gray , 90 );
120
- $gray-100 : adjust-color-lightness ($gray , 80 );
121
- $gray-150 : adjust-color-lightness ($gray , 70 );
122
- $gray-200 : adjust-color-lightness ($gray , 60 );
123
- $gray-250 : adjust-color-lightness ($gray , 50 );
124
- $gray-300 : adjust-color-lightness ($gray , 40 );
125
- $gray-350 : adjust-color-lightness ($gray , 30 );
126
- $gray-400 : adjust-color-lightness ($gray , 20 );
127
- $gray-450 : adjust-color-lightness ($gray , 10 );
128
- $gray-500 : $gray ;
129
- $gray-550 : adjust-color-lightness ($gray , -10 );
130
- $gray-600 : adjust-color-lightness ($gray , -20 );
131
- $gray-650 : adjust-color-lightness ($gray , -30 );
132
- $gray-700 : adjust-color-lightness ($gray , -40 );
133
- $gray-750 : adjust-color-lightness ($gray , -50 );
134
- $gray-800 : adjust-color-lightness ($gray , -60 );
135
- $gray-850 : adjust-color-lightness ($gray , -70 );
136
- $gray-900 : adjust-color-lightness ($gray , -80 );
137
- $gray-950 : adjust-color-lightness ($gray , -90 );
138
-
139
11
$brand-colors : (
140
- " brand-primary" : $brand-primary ,
141
- " brand-success" : $brand-success ,
142
- " brand-warning" : $brand-warning ,
143
- " brand-danger" : $brand-danger ,
144
- " brand-default" : $brand-default ,
145
- " gray" : $gray
12
+ " brand-primary" " background-primary" " text-primary" var (--brand-primary ),
13
+ " brand-success" " background-success" " text-success" var (--brand-success ),
14
+ " brand-warning" " background-warning" " text-warning" var (--brand-warning ),
15
+ " brand-danger" " background-danger" " text-danger" var (--brand-danger ),
16
+ " brand-default" " background-default" " text-default" var (--brand-default ),
17
+ " gray" " " " " var (--gray )
18
+ );
19
+ $lightness-steps : (
20
+ 50 : 90% ,
21
+ 100 : 80% ,
22
+ 200 : 60% ,
23
+ 300 : 40% ,
24
+ 400 : 20% ,
25
+ 500 : 0% ,
26
+ 600 : -20% ,
27
+ 700 : -40% ,
28
+ 800 : -60% ,
29
+ 900 : -80% ,
146
30
);
147
31
148
32
// generate corresponding CSS variables
149
33
:root {
150
- @each $name , $base-color in $brand-colors {
151
- -- #{$name } - 50 : #{adjust-color-lightness ($base-color , 45 )} ;
152
- -- #{$name } - 100: #{adjust-color-lightness ($base-color , 40 )} ;
153
- -- #{$name } - 150: #{adjust-color-lightness ($base-color , 35 )} ;
154
- -- #{$name } - 200: #{adjust-color-lightness ($base-color , 30 )} ;
155
- -- #{$name } - 250: #{adjust-color-lightness ($base-color , 25 )} ;
156
- -- #{$name } - 300: #{adjust-color-lightness ($base-color , 20 )} ;
157
- -- #{$name } - 350: #{adjust-color-lightness ($base-color , 15 )} ;
158
- -- #{$name } - 400: #{adjust-color-lightness ($base-color , 10 )} ;
159
- -- #{$name } - 450: #{adjust-color-lightness ($base-color , 5 )} ;
160
- -- #{$name } - 500: #{$base-color } ;
161
- -- #{$name } - 550: #{adjust-color-lightness ($base-color , -5 )} ;
162
- -- #{$name } - 600: #{adjust-color-lightness ($base-color , -10 )} ;
163
- -- #{$name } - 650: #{adjust-color-lightness ($base-color , -15 )} ;
164
- -- #{$name } - 700: #{adjust-color-lightness ($base-color , -20 )} ;
165
- -- #{$name } - 750: #{adjust-color-lightness ($base-color , -25 )} ;
166
- -- #{$name } - 800: #{adjust-color-lightness ($base-color , -30 )} ;
167
- -- #{$name } - 850: #{adjust-color-lightness ($base-color , -35 )} ;
168
- -- #{$name } - 900: #{adjust-color-lightness ($base-color , -40 )} ;
169
- -- #{$name } - 950: #{adjust-color-lightness ($base-color , -45 )} ;
170
- }
171
- }
172
-
173
- $lightness-steps : (
174
- 50 : 90 ,
175
- 100 : 80 ,
176
- 150 : 70 ,
177
- 200 : 60 ,
178
- 250 : 50 ,
179
- 300 : 40 ,
180
- 350 : 30 ,
181
- 400 : 20 ,
182
- 450 : 10 ,
183
- 500 : 0 ,
184
- 550 : -10 ,
185
- 600 : -20 ,
186
- 650 : -30 ,
187
- 700 : -40 ,
188
- 750 : -50 ,
189
- 800 : -60 ,
190
- 850 : -70 ,
191
- 900 : -80 ,
192
- 950 : -90
193
- );
34
+ @each $name , $bg-class , $text-class , $base-color in $brand-colors {
35
+ @each $shade , $adjustment in $lightness-steps {
36
+ -- #{$name } - #{$shade } : #{adjust-color-lightness ($base-color , $adjustment )} ;
37
+ }
194
38
195
- // Generate utility classes for background color shades, e.g. .background-primary &.shade-200
196
- $bg-classes : (
197
- " background-primary" : $brand-primary ,
198
- " background-success" : $brand-success ,
199
- " background-warning" : $brand-warning ,
200
- " background-danger" : $brand-danger ,
201
- " background-default" : $brand-default
202
- );
203
- @each $name , $color in $bg-classes {
204
- .#{$name } {
205
- @each $step , $lightness in $lightness-steps {
206
- & .shade-#{$step } {
207
- background-color : adjust-color-lightness ($color , $lightness );
39
+ @if ($bg-class != ' ' ) {
40
+ .#{$bg-class } {
41
+ @each $shade , $adjustment in $lightness-steps {
42
+ & .shade-#{$shade } {
43
+ background-color : adjust-color-lightness ($base-color , $adjustment );
44
+ }
45
+ }
208
46
}
209
47
}
210
- }
211
- }
212
- // Generate utility classes for text color shades, e.g. .text-primary &.shade-300
213
- $text-classes : (
214
- " text-primary" : $brand-primary ,
215
- " text-success" : $brand-success ,
216
- " text-warning" : $brand-warning ,
217
- " text-danger" : $brand-danger ,
218
- " text-secondary" : $brand-default
219
- );
220
- @each $name , $color in $text-classes {
221
- .#{$name } {
222
- @each $step , $lightness in $lightness-steps {
223
- & .shade-#{$step } {
224
- color : adjust-color-lightness ($color , $lightness );
48
+
49
+ @if ($text-class != ' ' ) {
50
+ .#{$text-class } {
51
+ @each $shade , $adjustment in $lightness-steps {
52
+ & .shade-#{$shade } {
53
+ color : adjust-color-lightness ($base-color , $adjustment );
54
+ }
55
+ }
225
56
}
226
57
}
227
58
}
228
- }
59
+ }
0 commit comments