@ws-serenity/sass-styling 1.1.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/generator/colors/functions/regenerateColor.scss +58 -58
- package/lib/generator/colors/functions/strReplace.scss +9 -9
- package/lib/generator/colors/index.scss +101 -101
- package/lib/generator/fonts/commonWeights.scss +12 -12
- package/lib/generator/fonts/cssVarsConveyor.scss +60 -60
- package/lib/generator/fonts/index.scss +35 -35
- package/lib/sass/adaptive.scss +11 -11
- package/lib/sass/alignment.scss +66 -66
- package/lib/sass/functions.scss +3 -3
- package/lib/sass/index.scss +7 -6
- package/lib/sass/keyframes.scss +212 -23
- package/lib/sass/styling.scss +55 -55
- package/lib/sass/svgUtils.scss +14 -14
- package/lib/sass/textUtils.scss +19 -19
- package/lib/side-effect/reset.scss +74 -74
- package/package.json +17 -17
- package/readme.md +92 -92
package/lib/sass/alignment.scss
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
@use 'sass:string';
|
|
2
|
-
@use 'sass:list';
|
|
3
|
-
|
|
4
|
-
%__flex {
|
|
5
|
-
display: flex;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
%__flex-column {
|
|
9
|
-
flex-direction: column;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@mixin flex-column($gap:null) {
|
|
13
|
-
@extend %__flex;
|
|
14
|
-
@extend %__flex-column;
|
|
15
|
-
|
|
16
|
-
@if ($gap != null) {
|
|
17
|
-
row-gap: $gap;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@mixin flex($gap:null) {
|
|
22
|
-
@extend %__flex;
|
|
23
|
-
|
|
24
|
-
@if ($gap != null) {
|
|
25
|
-
column-gap: $gap;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
%margin-center {
|
|
30
|
-
margin: 0 auto;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
%absolute-stretch {
|
|
34
|
-
position: absolute;
|
|
35
|
-
top: 0;
|
|
36
|
-
left: 0;
|
|
37
|
-
right: 0;
|
|
38
|
-
bottom: 0;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@mixin grid-areas($grid-template-areas, $isGlobal:false) {
|
|
42
|
-
display: grid;
|
|
43
|
-
grid-template-areas: $grid-template-areas;
|
|
44
|
-
// чтобы не дублировать стили храним массив созданных классов
|
|
45
|
-
$used: ();
|
|
46
|
-
|
|
47
|
-
@each $areaLine in $grid-template-areas {
|
|
48
|
-
$areas: string.split($areaLine, ' ');
|
|
49
|
-
|
|
50
|
-
@each $a in $areas {
|
|
51
|
-
@if not list.index($used, $a) and $a != '.' {
|
|
52
|
-
@if ($isGlobal) {
|
|
53
|
-
:global(.#{$a}) {
|
|
54
|
-
grid-area: string.unquote($a);
|
|
55
|
-
}
|
|
56
|
-
} @else {
|
|
57
|
-
.#{$a} {
|
|
58
|
-
grid-area: string.unquote($a);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
$used: list.append($used, $a);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
@use 'sass:list';
|
|
3
|
+
|
|
4
|
+
%__flex {
|
|
5
|
+
display: flex;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
%__flex-column {
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@mixin flex-column($gap:null) {
|
|
13
|
+
@extend %__flex;
|
|
14
|
+
@extend %__flex-column;
|
|
15
|
+
|
|
16
|
+
@if ($gap != null) {
|
|
17
|
+
row-gap: $gap;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@mixin flex($gap:null) {
|
|
22
|
+
@extend %__flex;
|
|
23
|
+
|
|
24
|
+
@if ($gap != null) {
|
|
25
|
+
column-gap: $gap;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
%margin-center {
|
|
30
|
+
margin: 0 auto;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
%absolute-stretch {
|
|
34
|
+
position: absolute;
|
|
35
|
+
top: 0;
|
|
36
|
+
left: 0;
|
|
37
|
+
right: 0;
|
|
38
|
+
bottom: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@mixin grid-areas($grid-template-areas, $isGlobal:false) {
|
|
42
|
+
display: grid;
|
|
43
|
+
grid-template-areas: $grid-template-areas;
|
|
44
|
+
// чтобы не дублировать стили храним массив созданных классов
|
|
45
|
+
$used: ();
|
|
46
|
+
|
|
47
|
+
@each $areaLine in $grid-template-areas {
|
|
48
|
+
$areas: string.split($areaLine, ' ');
|
|
49
|
+
|
|
50
|
+
@each $a in $areas {
|
|
51
|
+
@if not list.index($used, $a) and $a != '.' {
|
|
52
|
+
@if ($isGlobal) {
|
|
53
|
+
:global(.#{$a}) {
|
|
54
|
+
grid-area: string.unquote($a);
|
|
55
|
+
}
|
|
56
|
+
} @else {
|
|
57
|
+
.#{$a} {
|
|
58
|
+
grid-area: string.unquote($a);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
$used: list.append($used, $a);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
package/lib/sass/functions.scss
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@function hex-to-rgba($hex, $alpha) {
|
|
2
|
-
@return rgba(red($hex), green($hex), blue($hex), $alpha);
|
|
3
|
-
}
|
|
1
|
+
@function hex-to-rgba($hex, $alpha) {
|
|
2
|
+
@return rgba(red($hex), green($hex), blue($hex), $alpha);
|
|
3
|
+
}
|
package/lib/sass/index.scss
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
@import './adaptive';
|
|
2
|
-
@import './alignment';
|
|
3
|
-
@import './functions';
|
|
4
|
-
@import './styling';
|
|
5
|
-
@import './svgUtils';
|
|
6
|
-
@import './textUtils';
|
|
1
|
+
@import './adaptive';
|
|
2
|
+
@import './alignment';
|
|
3
|
+
@import './functions';
|
|
4
|
+
@import './styling';
|
|
5
|
+
@import './svgUtils';
|
|
6
|
+
@import './textUtils';
|
|
7
|
+
@import './keyframes';
|
package/lib/sass/keyframes.scss
CHANGED
|
@@ -1,23 +1,212 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// @formatter:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
$default-animation-timing: ease-out;
|
|
2
|
+
$default-shimmer-color: rgba(255, 255, 255, 0.5);
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Миксин для создания fade-анимаций с опциональным направлением.
|
|
6
|
+
* @param $color - цвет для анимации.
|
|
7
|
+
* @param $animation-duration - Длительность анимации.
|
|
8
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
9
|
+
*/
|
|
10
|
+
@mixin shake-animation($color, $animation-duration, $animation-timing: $default-animation-timing) {
|
|
11
|
+
animation: shake $animation-duration $animation-timing;
|
|
12
|
+
|
|
13
|
+
// @formatter:off
|
|
14
|
+
@keyframes shake {
|
|
15
|
+
// allow pass color
|
|
16
|
+
5%, 45% { transform: translate3d(-1px, 0, 0); }
|
|
17
|
+
10%, 40% { transform: translate3d(2px, 0, 0); }
|
|
18
|
+
20%, 80% { color: $color; }
|
|
19
|
+
15%, 25%, 35% { transform: translate3d(-4px, 0, 0); }
|
|
20
|
+
20%, 30% { transform: translate3d(4px, 0, 0); }
|
|
21
|
+
}
|
|
22
|
+
// @formatter:on
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Миксин для создания эффекта пульсации (осцилляции) прозрачности элемента
|
|
27
|
+
*/
|
|
28
|
+
// @formatter:off
|
|
29
|
+
@keyframes oscillating {
|
|
30
|
+
0% { opacity: 100%; }
|
|
31
|
+
50% { opacity: 50%; }
|
|
32
|
+
100% { opacity: 100%; }
|
|
33
|
+
}
|
|
34
|
+
// @formatter:on
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Миксин для создания keyframes с автоматической генерацией префиксов.
|
|
38
|
+
* @param $name - Название анимации.
|
|
39
|
+
* @content - Блок с ключевыми кадрами анимации.
|
|
40
|
+
*/
|
|
41
|
+
@mixin keyframes($name) {
|
|
42
|
+
@keyframes #{$name} {
|
|
43
|
+
@content;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Миксин для transition с настраиваемыми параметрами
|
|
49
|
+
* @param $animation-duration - Длительность анимации.
|
|
50
|
+
* @param $property - Свойство для анимации (по умолчанию: all)
|
|
51
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
52
|
+
*/
|
|
53
|
+
@mixin transition($animation-duration, $properties: all, $animation-timing: $default-animation-timing) {
|
|
54
|
+
@if type-of($properties) == 'list' {
|
|
55
|
+
transition: #{$properties} $animation-duration $animation-timing;
|
|
56
|
+
} @else {
|
|
57
|
+
transition: $properties $animation-duration $animation-timing;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Миксин для создания fade-анимаций с опциональным направлением.
|
|
63
|
+
* Генерирует анимации исчезновения/появления с перемещением или без.
|
|
64
|
+
* @param $animation-duration - Длительность анимации.
|
|
65
|
+
* @param $direction - Направление анимации (Up, Down или null для появления без смещения).
|
|
66
|
+
* @param $animation-distance - Расстояние смещения (e.g. 100%, 64px) при появлении.
|
|
67
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
68
|
+
* @param $start-opacity - Изначальная прозрачность (по умолчанию - 0)
|
|
69
|
+
* @param $end-opacity - Конечная прозрачность (по умолчанию - 1).
|
|
70
|
+
*/
|
|
71
|
+
@mixin fade-animation($animation-duration, $direction: null, $animation-distance: 100%, $animation-timing: $default-animation-timing, $start-opacity: 0, $end-opacity: 1) {
|
|
72
|
+
// Генерация имени анимации в зависимости от направления.
|
|
73
|
+
$animation-name: if($direction, fadeIn#{$direction}, fadeIn);
|
|
74
|
+
|
|
75
|
+
@include keyframes(#{$animation-name}) {
|
|
76
|
+
0% {
|
|
77
|
+
opacity: $start-opacity;
|
|
78
|
+
@if $direction == 'Up' {
|
|
79
|
+
transform: translate3d(0, $animation-distance, 0);
|
|
80
|
+
} @else if $direction == 'Down' {
|
|
81
|
+
transform: translate3d(0, calc(-1 * #{$animation-distance}), 0);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
100% {
|
|
86
|
+
opacity: $end-opacity;
|
|
87
|
+
@if $direction {
|
|
88
|
+
transform: none;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
animation: $animation-name $animation-duration $animation-timing;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Миксин для создания slide-анимаций с различными направлениями.
|
|
98
|
+
* @param $animation-duration - Длительность анимации.
|
|
99
|
+
* @param $direction - Направление движения (Left, Right, Up, Down).
|
|
100
|
+
* @param $animation-slide-offset - Расстояние смещения (e.g. 100%, 64px).
|
|
101
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
102
|
+
*/
|
|
103
|
+
@mixin slide-animation($animation-duration, $direction, $animation-slide-offset: 100%, $animation-timing: $default-animation-timing) {
|
|
104
|
+
$animation-name: slideIn#{$direction};
|
|
105
|
+
|
|
106
|
+
@include keyframes(#{$animation-name}) {
|
|
107
|
+
0% {
|
|
108
|
+
opacity: 0;
|
|
109
|
+
@if $direction == 'Left' {
|
|
110
|
+
transform: translate3d(calc(-1 * #{$animation-slide-offset}), 0, 0);
|
|
111
|
+
} @else if $direction == 'Right' {
|
|
112
|
+
transform: translate3d($animation-slide-offset, 0, 0);
|
|
113
|
+
} @else if $direction == 'Up' {
|
|
114
|
+
transform: translate3d(0, calc(-1 * #{$animation-slide-offset}), 0);
|
|
115
|
+
} @else if $direction == 'Down' {
|
|
116
|
+
transform: translate3d(0, $animation-slide-offset, 0);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
100% {
|
|
121
|
+
opacity: 1;
|
|
122
|
+
transform: none;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
animation: $animation-name $animation-duration $animation-timing;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Миксин для создания scale-анимации.
|
|
131
|
+
* @param $animation-duration - Длительность анимации.
|
|
132
|
+
* @param $values - Значения для трансформации.
|
|
133
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
134
|
+
*/
|
|
135
|
+
@mixin scale3d-animation($animation-duration, $scaleX, $scaleY: $scaleX, $scaleZ: $scaleX, $animation-timing: $default-animation-timing) {
|
|
136
|
+
@include keyframes(fadeInWithScale) {
|
|
137
|
+
0% {
|
|
138
|
+
opacity: 0;
|
|
139
|
+
transform: scale3d($scaleX, $scaleY, $scaleZ);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
100% {
|
|
143
|
+
opacity: 1;
|
|
144
|
+
transform: none;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
animation: fadeInWithScale $animation-duration $animation-timing;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Миксин для создания pulse-анимации.
|
|
153
|
+
* @param $animation-duration - Длительность анимации.
|
|
154
|
+
* @param $animation-timing - Функция плавности (по умолчанию: ease-out)
|
|
155
|
+
*/
|
|
156
|
+
@mixin pulse-animation($animation-duration: 1s, $animation-timing: $default-animation-timing) {
|
|
157
|
+
@include keyframes(pulse) {
|
|
158
|
+
0% {
|
|
159
|
+
opacity: 1;
|
|
160
|
+
filter: brightness(1);
|
|
161
|
+
}
|
|
162
|
+
50% {
|
|
163
|
+
opacity: 0.4;
|
|
164
|
+
filter: brightness(0.95);
|
|
165
|
+
}
|
|
166
|
+
100% {
|
|
167
|
+
opacity: 1;
|
|
168
|
+
filter: brightness(1);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
animation: pulse $animation-duration $animation-timing infinite !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Миксин для создания эффекта "блика" (Shimmer/Skeleton).
|
|
177
|
+
* Создает псевдоэлемент ::after с градиентом, который пробегает по контейнеру.
|
|
178
|
+
*
|
|
179
|
+
* ВАЖНО: Родительский элемент должен иметь position: relative и overflow: hidden.
|
|
180
|
+
*
|
|
181
|
+
* @param $color - Цвет блика (по умолчанию полупрозрачный белый).
|
|
182
|
+
* @param $animation-duration - Длительность анимаци (по умолчанию 2s).
|
|
183
|
+
*/
|
|
184
|
+
@mixin shimmer-animation($color: $default-shimmer-color, $animation-duration: 2s) {
|
|
185
|
+
@include keyframes(shimmerSlide) {
|
|
186
|
+
0% {
|
|
187
|
+
transform: translateX(-100%);
|
|
188
|
+
}
|
|
189
|
+
100% {
|
|
190
|
+
transform: translateX(100%);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
&::after {
|
|
195
|
+
content: '';
|
|
196
|
+
position: absolute;
|
|
197
|
+
top: 0;
|
|
198
|
+
right: 0;
|
|
199
|
+
bottom: 0;
|
|
200
|
+
left: 0;
|
|
201
|
+
|
|
202
|
+
background: linear-gradient(
|
|
203
|
+
90deg,
|
|
204
|
+
transparent 0%,
|
|
205
|
+
$color 50%,
|
|
206
|
+
transparent 100%
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
animation: shimmerSlide $animation-duration infinite;
|
|
210
|
+
pointer-events: none;
|
|
211
|
+
}
|
|
212
|
+
}
|
package/lib/sass/styling.scss
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
%__background-alpha {
|
|
2
|
-
&::before {
|
|
3
|
-
content: '';
|
|
4
|
-
width: 100%;
|
|
5
|
-
height: 100%;
|
|
6
|
-
position: absolute;
|
|
7
|
-
left: 0;
|
|
8
|
-
z-index: -1;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@mixin background-alpha($color, $alpha) {
|
|
13
|
-
@extend %__background-alpha;
|
|
14
|
-
|
|
15
|
-
&::before {
|
|
16
|
-
background-color: $color;
|
|
17
|
-
opacity: $alpha;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
%border-radius-max {
|
|
22
|
-
// таким образом получается добиться максимального радиуса скругления, а не круглого элемента
|
|
23
|
-
border-radius: 9999px;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
%hide-scrollbar {
|
|
27
|
-
/* Hide scrollbar for Chrome, Safari and Opera */
|
|
28
|
-
&::-webkit-scrollbar {
|
|
29
|
-
display: none;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
-ms-overflow-style: none; /* IE and Edge */
|
|
33
|
-
scrollbar-width: none; /* Firefox */
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@mixin scrollbar($width, $track-color, $track-radius, $thumb-color, $thumb-color-hover, $thumb-radius) {
|
|
37
|
-
&::-webkit-scrollbar {
|
|
38
|
-
width: $width;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
&::-webkit-scrollbar-track {
|
|
42
|
-
background-color: $track-color;
|
|
43
|
-
border-radius: $track-radius;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
&::-webkit-scrollbar-thumb {
|
|
47
|
-
background-color: $thumb-color;
|
|
48
|
-
border-radius: $thumb-radius;
|
|
49
|
-
|
|
50
|
-
&:hover {
|
|
51
|
-
background-color: $thumb-color-hover;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
1
|
+
%__background-alpha {
|
|
2
|
+
&::before {
|
|
3
|
+
content: '';
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 100%;
|
|
6
|
+
position: absolute;
|
|
7
|
+
left: 0;
|
|
8
|
+
z-index: -1;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@mixin background-alpha($color, $alpha) {
|
|
13
|
+
@extend %__background-alpha;
|
|
14
|
+
|
|
15
|
+
&::before {
|
|
16
|
+
background-color: $color;
|
|
17
|
+
opacity: $alpha;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
%border-radius-max {
|
|
22
|
+
// таким образом получается добиться максимального радиуса скругления, а не круглого элемента
|
|
23
|
+
border-radius: 9999px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
%hide-scrollbar {
|
|
27
|
+
/* Hide scrollbar for Chrome, Safari and Opera */
|
|
28
|
+
&::-webkit-scrollbar {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
-ms-overflow-style: none; /* IE and Edge */
|
|
33
|
+
scrollbar-width: none; /* Firefox */
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@mixin scrollbar($width, $track-color, $track-radius, $thumb-color, $thumb-color-hover, $thumb-radius) {
|
|
37
|
+
&::-webkit-scrollbar {
|
|
38
|
+
width: $width;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&::-webkit-scrollbar-track {
|
|
42
|
+
background-color: $track-color;
|
|
43
|
+
border-radius: $track-radius;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&::-webkit-scrollbar-thumb {
|
|
47
|
+
background-color: $thumb-color;
|
|
48
|
+
border-radius: $thumb-radius;
|
|
49
|
+
|
|
50
|
+
&:hover {
|
|
51
|
+
background-color: $thumb-color-hover;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
package/lib/sass/svgUtils.scss
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
@mixin color-svg($color) {
|
|
2
|
-
color: $color;
|
|
3
|
-
|
|
4
|
-
svg {
|
|
5
|
-
fill: $color;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
@mixin size-svg($height, $width: $height) {
|
|
10
|
-
svg {
|
|
11
|
-
height: $height;
|
|
12
|
-
width: $width;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
1
|
+
@mixin color-svg($color) {
|
|
2
|
+
color: $color;
|
|
3
|
+
|
|
4
|
+
svg {
|
|
5
|
+
fill: $color;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@mixin size-svg($height, $width: $height) {
|
|
10
|
+
svg {
|
|
11
|
+
height: $height;
|
|
12
|
+
width: $width;
|
|
13
|
+
}
|
|
14
|
+
}
|
package/lib/sass/textUtils.scss
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
%__multiline-ellipsis-overflow {
|
|
2
|
-
display: -webkit-box;
|
|
3
|
-
overflow: hidden;
|
|
4
|
-
text-overflow: ellipsis;
|
|
5
|
-
-webkit-box-orient: vertical;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
@mixin multiline-ellipsis-overflow($lines-amount) {
|
|
9
|
-
@extend %__multiline-ellipsis-overflow;
|
|
10
|
-
|
|
11
|
-
-webkit-line-clamp: $lines-amount;
|
|
12
|
-
line-clamp: $lines-amount;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
%text-overflow-ellipsis {
|
|
16
|
-
white-space: nowrap;
|
|
17
|
-
overflow: hidden;
|
|
18
|
-
text-overflow: ellipsis;
|
|
19
|
-
}
|
|
1
|
+
%__multiline-ellipsis-overflow {
|
|
2
|
+
display: -webkit-box;
|
|
3
|
+
overflow: hidden;
|
|
4
|
+
text-overflow: ellipsis;
|
|
5
|
+
-webkit-box-orient: vertical;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@mixin multiline-ellipsis-overflow($lines-amount) {
|
|
9
|
+
@extend %__multiline-ellipsis-overflow;
|
|
10
|
+
|
|
11
|
+
-webkit-line-clamp: $lines-amount;
|
|
12
|
+
line-clamp: $lines-amount;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
%text-overflow-ellipsis {
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
text-overflow: ellipsis;
|
|
19
|
+
}
|