@candy-kingdom/bonnie-cms 0.23.0 → 0.25.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.
Files changed (157) hide show
  1. package/README.md +3 -7
  2. package/fesm2022/candy-kingdom-bonnie-cms.mjs +309 -430
  3. package/fesm2022/candy-kingdom-bonnie-cms.mjs.map +1 -1
  4. package/package.json +8 -10
  5. package/styles/admin-styles.scss +139 -139
  6. package/styles/admin-variables.scss +453 -451
  7. package/styles/variables.scss +415 -415
  8. package/types/candy-kingdom-bonnie-cms.d.ts +644 -0
  9. package/esm2022/candy-kingdom-bonnie-cms.mjs +0 -5
  10. package/esm2022/index.mjs +0 -15
  11. package/esm2022/lib/admin-controls/admin-controls.component.mjs +0 -44
  12. package/esm2022/lib/admin-controls/index.mjs +0 -2
  13. package/esm2022/lib/bone-editors/bone-editor-base.component.mjs +0 -143
  14. package/esm2022/lib/bone-editors/index.mjs +0 -3
  15. package/esm2022/lib/bone-editors/unknown-bone-editor/index.mjs +0 -2
  16. package/esm2022/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.mjs +0 -18
  17. package/esm2022/lib/bonnie-cms.module.mjs +0 -140
  18. package/esm2022/lib/core/DeviceType.mjs +0 -8
  19. package/esm2022/lib/core/DeviceVisibility.mjs +0 -9
  20. package/esm2022/lib/core/MediaType.mjs +0 -2
  21. package/esm2022/lib/core/TextEditorField.mjs +0 -7
  22. package/esm2022/lib/core/Utils.mjs +0 -18
  23. package/esm2022/lib/core/index.mjs +0 -6
  24. package/esm2022/lib/core-components/editable-group.mjs +0 -84
  25. package/esm2022/lib/core-components/editable.directive.mjs +0 -173
  26. package/esm2022/lib/core-components/form-base.component.mjs +0 -31
  27. package/esm2022/lib/core-components/index.mjs +0 -5
  28. package/esm2022/lib/core-components/link-popup/index.mjs +0 -2
  29. package/esm2022/lib/core-components/link-popup/link-popup.component.mjs +0 -73
  30. package/esm2022/lib/file-uploader/file-uploader.component.mjs +0 -119
  31. package/esm2022/lib/file-uploader/index.mjs +0 -2
  32. package/esm2022/lib/form-controls/form-controls.component.mjs +0 -16
  33. package/esm2022/lib/form-controls/index.mjs +0 -2
  34. package/esm2022/lib/forms/file-form/file-form.component.mjs +0 -43
  35. package/esm2022/lib/forms/file-form/index.mjs +0 -2
  36. package/esm2022/lib/forms/index.mjs +0 -9
  37. package/esm2022/lib/forms/lottie-form/index.mjs +0 -2
  38. package/esm2022/lib/forms/lottie-form/lottie-form.component.mjs +0 -45
  39. package/esm2022/lib/forms/one-image-form/index.mjs +0 -2
  40. package/esm2022/lib/forms/one-image-form/one-image-form.component.mjs +0 -64
  41. package/esm2022/lib/forms/seo-form/index.mjs +0 -2
  42. package/esm2022/lib/forms/seo-form/seo-form.component.mjs +0 -53
  43. package/esm2022/lib/forms/svg-form/index.mjs +0 -2
  44. package/esm2022/lib/forms/svg-form/svg-form.component.mjs +0 -48
  45. package/esm2022/lib/forms/text-form/TextInputStyle.mjs +0 -7
  46. package/esm2022/lib/forms/text-form/index.mjs +0 -3
  47. package/esm2022/lib/forms/text-form/text-form.component.mjs +0 -33
  48. package/esm2022/lib/forms/translation-form/index.mjs +0 -2
  49. package/esm2022/lib/forms/translation-form/translation-form.component.mjs +0 -32
  50. package/esm2022/lib/forms/unknown-form/index.mjs +0 -2
  51. package/esm2022/lib/forms/unknown-form/unknown-form.component.mjs +0 -23
  52. package/esm2022/lib/generated/file-setting-data.mjs +0 -6
  53. package/esm2022/lib/generated/i-equatable.mjs +0 -6
  54. package/esm2022/lib/generated/i-setting.mjs +0 -6
  55. package/esm2022/lib/generated/index.mjs +0 -18
  56. package/esm2022/lib/generated/localized-text-setting-data.mjs +0 -6
  57. package/esm2022/lib/generated/lottie-setting-data.mjs +0 -6
  58. package/esm2022/lib/generated/one-image-setting-data.mjs +0 -6
  59. package/esm2022/lib/generated/setting-base.mjs +0 -6
  60. package/esm2022/lib/generated/setting-data.mjs +0 -6
  61. package/esm2022/lib/generated/setting-group.mjs +0 -6
  62. package/esm2022/lib/generated/setting.mjs +0 -6
  63. package/esm2022/lib/generated/svg-setting-data.mjs +0 -6
  64. package/esm2022/lib/generated/text-setting-data.mjs +0 -6
  65. package/esm2022/lib/generated/text-setting-type.mjs +0 -10
  66. package/esm2022/lib/media-uploader/index.mjs +0 -2
  67. package/esm2022/lib/media-uploader/media-uploader.component.mjs +0 -161
  68. package/esm2022/lib/services/API_BASE_URL.mjs +0 -3
  69. package/esm2022/lib/services/admin-data.service.mjs +0 -37
  70. package/esm2022/lib/services/data.service.mjs +0 -75
  71. package/esm2022/lib/services/index.mjs +0 -4
  72. package/esm2022/lib/skeleton-editor/BoneEditorMap.mjs +0 -2
  73. package/esm2022/lib/skeleton-editor/ContentPreset.mjs +0 -9
  74. package/esm2022/lib/skeleton-editor/IBoneEditor.mjs +0 -2
  75. package/esm2022/lib/skeleton-editor/IBoneTemplate.mjs +0 -2
  76. package/esm2022/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.mjs +0 -119
  77. package/esm2022/lib/skeleton-editor/index.mjs +0 -9
  78. package/esm2022/lib/skeleton-editor/skeleton-editor-anchor.directive.mjs +0 -16
  79. package/esm2022/lib/skeleton-editor/skeleton-editor.component.mjs +0 -107
  80. package/esm2022/lib/translation-input/index.mjs +0 -2
  81. package/esm2022/lib/translation-input/translation-input.component.mjs +0 -42
  82. package/esm2022/lib/translation-textarea/index.mjs +0 -2
  83. package/esm2022/lib/translation-textarea/translation-textarea.component.mjs +0 -66
  84. package/index.d.ts +0 -14
  85. package/lib/admin-controls/admin-controls.component.d.ts +0 -14
  86. package/lib/admin-controls/index.d.ts +0 -1
  87. package/lib/bone-editors/bone-editor-base.component.d.ts +0 -44
  88. package/lib/bone-editors/index.d.ts +0 -2
  89. package/lib/bone-editors/unknown-bone-editor/index.d.ts +0 -1
  90. package/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.d.ts +0 -11
  91. package/lib/bonnie-cms.module.d.ts +0 -32
  92. package/lib/core/DeviceType.d.ts +0 -6
  93. package/lib/core/DeviceVisibility.d.ts +0 -7
  94. package/lib/core/MediaType.d.ts +0 -2
  95. package/lib/core/TextEditorField.d.ts +0 -5
  96. package/lib/core/Utils.d.ts +0 -4
  97. package/lib/core/index.d.ts +0 -5
  98. package/lib/core-components/editable-group.d.ts +0 -24
  99. package/lib/core-components/editable.directive.d.ts +0 -43
  100. package/lib/core-components/form-base.component.d.ts +0 -13
  101. package/lib/core-components/index.d.ts +0 -4
  102. package/lib/core-components/link-popup/index.d.ts +0 -1
  103. package/lib/core-components/link-popup/link-popup.component.d.ts +0 -28
  104. package/lib/file-uploader/file-uploader.component.d.ts +0 -32
  105. package/lib/file-uploader/index.d.ts +0 -1
  106. package/lib/form-controls/form-controls.component.d.ts +0 -7
  107. package/lib/form-controls/index.d.ts +0 -1
  108. package/lib/forms/file-form/file-form.component.d.ts +0 -14
  109. package/lib/forms/file-form/index.d.ts +0 -1
  110. package/lib/forms/index.d.ts +0 -8
  111. package/lib/forms/lottie-form/index.d.ts +0 -1
  112. package/lib/forms/lottie-form/lottie-form.component.d.ts +0 -16
  113. package/lib/forms/one-image-form/index.d.ts +0 -1
  114. package/lib/forms/one-image-form/one-image-form.component.d.ts +0 -23
  115. package/lib/forms/seo-form/index.d.ts +0 -1
  116. package/lib/forms/seo-form/seo-form.component.d.ts +0 -20
  117. package/lib/forms/svg-form/index.d.ts +0 -1
  118. package/lib/forms/svg-form/svg-form.component.d.ts +0 -19
  119. package/lib/forms/text-form/TextInputStyle.d.ts +0 -5
  120. package/lib/forms/text-form/index.d.ts +0 -2
  121. package/lib/forms/text-form/text-form.component.d.ts +0 -13
  122. package/lib/forms/translation-form/index.d.ts +0 -1
  123. package/lib/forms/translation-form/translation-form.component.d.ts +0 -14
  124. package/lib/forms/unknown-form/index.d.ts +0 -1
  125. package/lib/forms/unknown-form/unknown-form.component.d.ts +0 -9
  126. package/lib/generated/file-setting-data.d.ts +0 -10
  127. package/lib/generated/i-equatable.d.ts +0 -6
  128. package/lib/generated/i-setting.d.ts +0 -10
  129. package/lib/generated/index.d.ts +0 -17
  130. package/lib/generated/localized-text-setting-data.d.ts +0 -11
  131. package/lib/generated/lottie-setting-data.d.ts +0 -9
  132. package/lib/generated/one-image-setting-data.d.ts +0 -14
  133. package/lib/generated/setting-base.d.ts +0 -9
  134. package/lib/generated/setting-data.d.ts +0 -8
  135. package/lib/generated/setting-group.d.ts +0 -11
  136. package/lib/generated/setting.d.ts +0 -9
  137. package/lib/generated/svg-setting-data.d.ts +0 -9
  138. package/lib/generated/text-setting-data.d.ts +0 -10
  139. package/lib/generated/text-setting-type.d.ts +0 -8
  140. package/lib/media-uploader/index.d.ts +0 -1
  141. package/lib/media-uploader/media-uploader.component.d.ts +0 -35
  142. package/lib/services/API_BASE_URL.d.ts +0 -2
  143. package/lib/services/admin-data.service.d.ts +0 -16
  144. package/lib/services/data.service.d.ts +0 -19
  145. package/lib/services/index.d.ts +0 -3
  146. package/lib/skeleton-editor/BoneEditorMap.d.ts +0 -3
  147. package/lib/skeleton-editor/ContentPreset.d.ts +0 -11
  148. package/lib/skeleton-editor/IBoneEditor.d.ts +0 -26
  149. package/lib/skeleton-editor/IBoneTemplate.d.ts +0 -5
  150. package/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.d.ts +0 -32
  151. package/lib/skeleton-editor/index.d.ts +0 -8
  152. package/lib/skeleton-editor/skeleton-editor-anchor.directive.d.ts +0 -8
  153. package/lib/skeleton-editor/skeleton-editor.component.d.ts +0 -31
  154. package/lib/translation-input/index.d.ts +0 -1
  155. package/lib/translation-input/translation-input.component.d.ts +0 -17
  156. package/lib/translation-textarea/index.d.ts +0 -1
  157. package/lib/translation-textarea/translation-textarea.component.d.ts +0 -26
@@ -1,415 +1,415 @@
1
- $atom: 0.34364261168vw;
2
- $tabletAtom: 0.54644809vw;
3
- $mobileAtom: 1.49253731vw;
4
-
5
- $mobileScreenMaxSize: 767px;
6
- $desktopScreenSize: 1280px;
7
-
8
- @mixin page {
9
- display: block;
10
-
11
- color: var(--text-color);
12
- background-color: var(--bg-color);
13
-
14
- @include desktop {
15
- padding-bottom: $violetGap;
16
- }
17
-
18
- @include tablet {
19
- padding-bottom: $blueTabletGap;
20
- }
21
-
22
- @include mobile {
23
- padding-bottom: $redMobileGap + $yellowMobileGap - $big-text-line-height-mobile;
24
- }
25
- }
26
-
27
- @mixin mobile {
28
- @media (max-width: $mobileScreenMaxSize) {
29
- @content;
30
- }
31
- }
32
-
33
- @mixin tablet_only {
34
- @media (min-width: $mobileScreenMaxSize + 1px) and (max-width: $desktopScreenSize - 1px) {
35
- @content;
36
- }
37
- }
38
-
39
- @mixin tablet {
40
- @media (max-width: $desktopScreenSize - 1px) {
41
- @content;
42
- }
43
- }
44
-
45
- @mixin desktop {
46
- @media (min-width: $desktopScreenSize) {
47
- @content;
48
- }
49
- }
50
-
51
- @mixin projects-grid-with-rows($qty) {
52
- display: grid;
53
- position: relative;
54
- grid-template-columns: repeat($qty - 1, 1fr $desktopHGap) 1fr;
55
- }
56
-
57
-
58
- $desktopHGap: $atom * 3;
59
- $tabletHGap: $tabletAtom * 3;
60
- $mobileHGap: $mobileAtom * 3;
61
-
62
- ///// отступы
63
- $pinkGap: 5 * $atom;
64
- $redGap: 10 * $atom;
65
- $yellowGap: 15 * $atom;
66
- $blueGap: 30 * $atom;
67
- $violetGap: 45 * $atom;
68
-
69
- $pinkTabletGap: 5 * $tabletAtom;
70
- $redTabletGap: 10 * $tabletAtom;
71
- $yellowTabletGap: 15 * $tabletAtom;
72
- $blueTabletGap: 30 * $tabletAtom;
73
- $violetTabletGap: 45 * $tabletAtom;
74
-
75
- $pinkMobileGap: 5 * $mobileAtom;
76
- $redMobileGap: 10 * $mobileAtom;
77
- $yellowMobileGap: 15 * $mobileAtom;
78
- $blueMobileGap: 30 * $mobileAtom;
79
- $violetMobileGap: 45 * $mobileAtom;
80
-
81
-
82
- $defaultEasing: cubic-bezier(0.4, 0.0, 0.2, 1);
83
- $accelerateEasing: cubic-bezier(0.4, 0.0, 1, 1);
84
- $decelerateEasing: cubic-bezier(0.0, 0.0, 0.2, 1);
85
-
86
- $footerDesktopHeight: $violetGap + $blueGap;
87
- $footerTabletHeight: $violetTabletGap + $blueTabletGap;
88
- $footerMobileHeight: 2 * $violetMobileGap + $redMobileGap - 2 * $mobileAtom;;
89
-
90
- @mixin tablet-flex {
91
- display: flex;
92
- flex-direction: column;
93
- padding-right: $tabletHGap;
94
- padding-left: $tabletHGap;
95
- }
96
-
97
- @mixin mobile-flex {
98
- display: flex;
99
- flex-direction: column;
100
- padding-right: $mobileAtom;
101
- padding-left: $mobileAtom;
102
- }
103
-
104
- @mixin mobile-grid-6 {
105
- display: grid;
106
- grid-template-columns: repeat(6, 1fr);
107
- grid-column-gap: $mobileAtom;
108
- padding-left: $mobileAtom;
109
- padding-right: $mobileAtom;
110
- }
111
-
112
- @mixin tablet-grid-6 {
113
- display: grid;
114
- grid-template-columns: repeat(6, 1fr);
115
- grid-column-gap: $tabletHGap;
116
- padding-left: $tabletHGap;
117
- padding-right: $tabletHGap;
118
- }
119
-
120
- @mixin tablet-grid {
121
- display: grid;
122
- grid-template-columns: repeat(12, 1fr);
123
- grid-column-gap: $tabletHGap;
124
- padding-left: $tabletHGap;
125
- padding-right: $tabletHGap;
126
- }
127
-
128
- @mixin desktop-grid {
129
- display: grid;
130
- grid-template-columns: repeat(12, 1fr);
131
- grid-column-gap: $desktopHGap;
132
- padding-left: $desktopHGap;
133
- padding-right: $desktopHGap;
134
- }
135
-
136
- $big-text-line-height: 13 * $atom;
137
- $big-text-line-height-tablet: 13 * $tabletAtom;
138
- $big-text-line-height-mobile: 6 * $mobileAtom;
139
-
140
- @mixin big-text {
141
- letter-spacing: -0.01em;
142
- margin-left: -0.07em;
143
-
144
- @include desktop {
145
- font-size: $atom * 12;
146
- line-height: $big-text-line-height;
147
- }
148
-
149
- @include tablet {
150
- font-size: $tabletAtom * 12;
151
- line-height: $big-text-line-height-tablet;
152
- }
153
-
154
- @include mobile {
155
- font-size: $mobileAtom * 6;
156
- line-height: 1em;
157
- }
158
- }
159
-
160
- $small-text-line-height: $atom * 5;
161
- $small-text-line-height-tablet: $tabletAtom * 5;
162
- $small-text-line-height-mobile: $mobileAtom * 3.2 * 1.25;
163
-
164
- @mixin small-text {
165
- @include desktop {
166
- font-size: 4 * $atom;
167
- font-size: #{"min(#{4 * $atom}, 28px)"};
168
-
169
- line-height: (5/4);// $small-text-line-height;
170
- }
171
-
172
- @include tablet {
173
- font-size: $tabletAtom * 4;
174
- line-height: $small-text-line-height-tablet;
175
- }
176
-
177
- @include mobile {
178
- font-size: $mobileAtom * 3.2;
179
- line-height: $small-text-line-height-mobile;
180
- }
181
- }
182
-
183
- @mixin link {
184
- @include linkWithColor(var(--text-color));
185
- }
186
-
187
- $underlineHeight: 1px;
188
-
189
- @mixin hover-underline-small-text($color) {
190
-
191
- @include desktop {
192
- position: relative;
193
-
194
- &::after {
195
- display: none;
196
- content: '';
197
- position: absolute;
198
- width: 100%;
199
- height: $underlineHeight;
200
- left: 0;
201
- bottom: 0;
202
- background-color: $color;
203
- }
204
-
205
- &:hover::after {
206
- display: block;
207
- }
208
- }
209
-
210
- }
211
-
212
- @mixin hover-underline-big-text($color) {
213
-
214
- @include desktop {
215
- position: relative;
216
-
217
- &::after {
218
- display: none;
219
- content: '';
220
- position: absolute;
221
- width: 100%;
222
- height: $underlineHeight;
223
- left: 0;
224
- bottom: 0;
225
- background-color: $color;
226
- }
227
-
228
- &:hover::after {
229
- display: block;
230
- }
231
- }
232
- }
233
-
234
- @mixin underline-big-text($color) {
235
- position: relative;
236
-
237
- &::after {
238
- content: '';
239
- position: absolute;
240
- width: 100%;
241
- height: $underlineHeight;
242
- left: 0;
243
- bottom: 0;
244
- background-color: $color;
245
- }
246
- }
247
-
248
- @mixin underline-small-text($color) {
249
- position: relative;
250
-
251
- &::after {
252
- content: '';
253
- position: absolute;
254
- width: 100%;
255
- height: $underlineHeight;
256
- left: 0;
257
- bottom: 0;
258
- background-color: $color;
259
- }
260
-
261
- }
262
-
263
-
264
- @mixin linkWithColor($color) {
265
- color: $color;
266
- text-decoration: none;
267
- user-select: none;
268
-
269
- &:visited,
270
- &:hover,
271
- &:focus,
272
- &:active {
273
- color: $color;
274
- }
275
- }
276
-
277
- @mixin reset-button {
278
- margin: 0;
279
- padding: 0;
280
- text-align: left;
281
- font-family: inherit;
282
- font-weight: 400;
283
-
284
- background: transparent;
285
- border: 0;
286
- box-shadow: none;
287
- user-select: none;
288
-
289
- &:hover,
290
- &:focus,
291
- &:active {
292
- outline: none;
293
- }
294
- }
295
-
296
- @mixin bigTextMarginTopToMeetSmallText {
297
- margin-top: -0.1em;
298
- }
299
-
300
- @mixin categoryGrid($gapSelector, $projectInRow) {
301
- $totalColumns: (2 * $projectInRow - 1);
302
- display: grid;
303
- position: relative;
304
-
305
- @include desktop {
306
- grid-template-columns: repeat($projectInRow - 1, 1fr $desktopHGap) 1fr;
307
-
308
- #{$gapSelector} {
309
- &:nth-of-type(#{$projectInRow}n) {
310
- grid-column-start: 1;
311
- grid-column-end: 13;
312
- height: $desktopHGap;
313
- }
314
-
315
- &:nth-child(#{$totalColumns + 1}n):last-child {
316
- display: none;
317
- }
318
-
319
- $i: 2;
320
-
321
- @while $i < $totalColumns {
322
- &:nth-child(#{$totalColumns + 1}n + #{$i}):last-child {
323
- grid-column: span $totalColumns + 1 - $i;
324
- }
325
-
326
- $i: $i+2;
327
- }
328
- }
329
- }
330
-
331
- @include tablet {
332
- grid-template-columns: repeat($projectInRow - 1, 1fr $tabletHGap) 1fr;
333
-
334
- #{$gapSelector} {
335
- &:nth-of-type(#{$projectInRow}n) {
336
- grid-column-start: 1;
337
- grid-column-end: 13;
338
- height: $tabletHGap;
339
- }
340
-
341
- &:nth-child(#{$totalColumns + 1}n):last-child {
342
- display: none;
343
- }
344
-
345
- $i: 2;
346
-
347
- @while $i < $totalColumns {
348
- &:nth-child(#{$totalColumns + 1}n + #{$i}):last-child {
349
- grid-column: span $totalColumns + 1 - $i;
350
- }
351
-
352
- $i: $i+2;
353
- }
354
- }
355
- }
356
- }
357
-
358
- @mixin media_cover() {
359
- // objtct-fit для media
360
- position: relative;
361
- width: 100%;
362
- height: 100%;
363
-
364
- .media-container {
365
- position: static !important;
366
- padding-bottom: 0 !important;
367
- }
368
- }
369
-
370
- $touchCircleWidthTablet: 4vw;
371
- $touchCircleWidthMobile: 10vw;
372
-
373
- @mixin touch-response() {
374
- @include desktop {
375
- display: none;
376
- }
377
-
378
- @include tablet {
379
- position: relative;
380
-
381
- &:after {
382
- position: absolute;
383
- content: '';
384
- width: $touchCircleWidthTablet;
385
- height: $touchCircleWidthTablet;
386
- top: calc(50% - 2vw);
387
- left: calc(50% - 2vw);
388
- border-radius: 50%;
389
- background-color: black;
390
- opacity: 0;
391
- transition: opacity 0.2s $defaultEasing;
392
- }
393
-
394
- &:focus,
395
- &:active {
396
- outline: none;
397
- }
398
-
399
- &:focus:after,
400
- &:active:after {
401
- opacity: 0.2;
402
- }
403
-
404
- }
405
-
406
- @include mobile {
407
-
408
- &:after {
409
- width: $touchCircleWidthMobile;
410
- height: $touchCircleWidthMobile;
411
- top: calc(50% - 5vw);
412
- left: calc(50% - 5vw);
413
- }
414
- }
415
- }
1
+ $atom: 0.34364261168vw;
2
+ $tabletAtom: 0.54644809vw;
3
+ $mobileAtom: 1.49253731vw;
4
+
5
+ $mobileScreenMaxSize: 767px;
6
+ $desktopScreenSize: 1280px;
7
+
8
+ @mixin page {
9
+ display: block;
10
+
11
+ color: var(--text-color);
12
+ background-color: var(--bg-color);
13
+
14
+ @include desktop {
15
+ padding-bottom: $violetGap;
16
+ }
17
+
18
+ @include tablet {
19
+ padding-bottom: $blueTabletGap;
20
+ }
21
+
22
+ @include mobile {
23
+ padding-bottom: $redMobileGap + $yellowMobileGap - $big-text-line-height-mobile;
24
+ }
25
+ }
26
+
27
+ @mixin mobile {
28
+ @media (max-width: $mobileScreenMaxSize) {
29
+ @content;
30
+ }
31
+ }
32
+
33
+ @mixin tablet_only {
34
+ @media (min-width: $mobileScreenMaxSize + 1px) and (max-width: $desktopScreenSize - 1px) {
35
+ @content;
36
+ }
37
+ }
38
+
39
+ @mixin tablet {
40
+ @media (max-width: $desktopScreenSize - 1px) {
41
+ @content;
42
+ }
43
+ }
44
+
45
+ @mixin desktop {
46
+ @media (min-width: $desktopScreenSize) {
47
+ @content;
48
+ }
49
+ }
50
+
51
+ @mixin projects-grid-with-rows($qty) {
52
+ display: grid;
53
+ position: relative;
54
+ grid-template-columns: repeat($qty - 1, 1fr $desktopHGap) 1fr;
55
+ }
56
+
57
+
58
+ $desktopHGap: $atom * 3;
59
+ $tabletHGap: $tabletAtom * 3;
60
+ $mobileHGap: $mobileAtom * 3;
61
+
62
+ ///// отступы
63
+ $pinkGap: 5 * $atom;
64
+ $redGap: 10 * $atom;
65
+ $yellowGap: 15 * $atom;
66
+ $blueGap: 30 * $atom;
67
+ $violetGap: 45 * $atom;
68
+
69
+ $pinkTabletGap: 5 * $tabletAtom;
70
+ $redTabletGap: 10 * $tabletAtom;
71
+ $yellowTabletGap: 15 * $tabletAtom;
72
+ $blueTabletGap: 30 * $tabletAtom;
73
+ $violetTabletGap: 45 * $tabletAtom;
74
+
75
+ $pinkMobileGap: 5 * $mobileAtom;
76
+ $redMobileGap: 10 * $mobileAtom;
77
+ $yellowMobileGap: 15 * $mobileAtom;
78
+ $blueMobileGap: 30 * $mobileAtom;
79
+ $violetMobileGap: 45 * $mobileAtom;
80
+
81
+
82
+ $defaultEasing: cubic-bezier(0.4, 0.0, 0.2, 1);
83
+ $accelerateEasing: cubic-bezier(0.4, 0.0, 1, 1);
84
+ $decelerateEasing: cubic-bezier(0.0, 0.0, 0.2, 1);
85
+
86
+ $footerDesktopHeight: $violetGap + $blueGap;
87
+ $footerTabletHeight: $violetTabletGap + $blueTabletGap;
88
+ $footerMobileHeight: 2 * $violetMobileGap + $redMobileGap - 2 * $mobileAtom;;
89
+
90
+ @mixin tablet-flex {
91
+ display: flex;
92
+ flex-direction: column;
93
+ padding-right: $tabletHGap;
94
+ padding-left: $tabletHGap;
95
+ }
96
+
97
+ @mixin mobile-flex {
98
+ display: flex;
99
+ flex-direction: column;
100
+ padding-right: $mobileAtom;
101
+ padding-left: $mobileAtom;
102
+ }
103
+
104
+ @mixin mobile-grid-6 {
105
+ display: grid;
106
+ grid-template-columns: repeat(6, 1fr);
107
+ grid-column-gap: $mobileAtom;
108
+ padding-left: $mobileAtom;
109
+ padding-right: $mobileAtom;
110
+ }
111
+
112
+ @mixin tablet-grid-6 {
113
+ display: grid;
114
+ grid-template-columns: repeat(6, 1fr);
115
+ grid-column-gap: $tabletHGap;
116
+ padding-left: $tabletHGap;
117
+ padding-right: $tabletHGap;
118
+ }
119
+
120
+ @mixin tablet-grid {
121
+ display: grid;
122
+ grid-template-columns: repeat(12, 1fr);
123
+ grid-column-gap: $tabletHGap;
124
+ padding-left: $tabletHGap;
125
+ padding-right: $tabletHGap;
126
+ }
127
+
128
+ @mixin desktop-grid {
129
+ display: grid;
130
+ grid-template-columns: repeat(12, 1fr);
131
+ grid-column-gap: $desktopHGap;
132
+ padding-left: $desktopHGap;
133
+ padding-right: $desktopHGap;
134
+ }
135
+
136
+ $big-text-line-height: 13 * $atom;
137
+ $big-text-line-height-tablet: 13 * $tabletAtom;
138
+ $big-text-line-height-mobile: 6 * $mobileAtom;
139
+
140
+ @mixin big-text {
141
+ letter-spacing: -0.01em;
142
+ margin-left: -0.07em;
143
+
144
+ @include desktop {
145
+ font-size: $atom * 12;
146
+ line-height: $big-text-line-height;
147
+ }
148
+
149
+ @include tablet {
150
+ font-size: $tabletAtom * 12;
151
+ line-height: $big-text-line-height-tablet;
152
+ }
153
+
154
+ @include mobile {
155
+ font-size: $mobileAtom * 6;
156
+ line-height: 1em;
157
+ }
158
+ }
159
+
160
+ $small-text-line-height: $atom * 5;
161
+ $small-text-line-height-tablet: $tabletAtom * 5;
162
+ $small-text-line-height-mobile: $mobileAtom * 3.2 * 1.25;
163
+
164
+ @mixin small-text {
165
+ @include desktop {
166
+ font-size: 4 * $atom;
167
+ font-size: #{"min(#{4 * $atom}, 28px)"};
168
+
169
+ line-height: (5/4);// $small-text-line-height;
170
+ }
171
+
172
+ @include tablet {
173
+ font-size: $tabletAtom * 4;
174
+ line-height: $small-text-line-height-tablet;
175
+ }
176
+
177
+ @include mobile {
178
+ font-size: $mobileAtom * 3.2;
179
+ line-height: $small-text-line-height-mobile;
180
+ }
181
+ }
182
+
183
+ @mixin link {
184
+ @include linkWithColor(var(--text-color));
185
+ }
186
+
187
+ $underlineHeight: 1px;
188
+
189
+ @mixin hover-underline-small-text($color) {
190
+
191
+ @include desktop {
192
+ position: relative;
193
+
194
+ &::after {
195
+ display: none;
196
+ content: '';
197
+ position: absolute;
198
+ width: 100%;
199
+ height: $underlineHeight;
200
+ left: 0;
201
+ bottom: 0;
202
+ background-color: $color;
203
+ }
204
+
205
+ &:hover::after {
206
+ display: block;
207
+ }
208
+ }
209
+
210
+ }
211
+
212
+ @mixin hover-underline-big-text($color) {
213
+
214
+ @include desktop {
215
+ position: relative;
216
+
217
+ &::after {
218
+ display: none;
219
+ content: '';
220
+ position: absolute;
221
+ width: 100%;
222
+ height: $underlineHeight;
223
+ left: 0;
224
+ bottom: 0;
225
+ background-color: $color;
226
+ }
227
+
228
+ &:hover::after {
229
+ display: block;
230
+ }
231
+ }
232
+ }
233
+
234
+ @mixin underline-big-text($color) {
235
+ position: relative;
236
+
237
+ &::after {
238
+ content: '';
239
+ position: absolute;
240
+ width: 100%;
241
+ height: $underlineHeight;
242
+ left: 0;
243
+ bottom: 0;
244
+ background-color: $color;
245
+ }
246
+ }
247
+
248
+ @mixin underline-small-text($color) {
249
+ position: relative;
250
+
251
+ &::after {
252
+ content: '';
253
+ position: absolute;
254
+ width: 100%;
255
+ height: $underlineHeight;
256
+ left: 0;
257
+ bottom: 0;
258
+ background-color: $color;
259
+ }
260
+
261
+ }
262
+
263
+
264
+ @mixin linkWithColor($color) {
265
+ color: $color;
266
+ text-decoration: none;
267
+ user-select: none;
268
+
269
+ &:visited,
270
+ &:hover,
271
+ &:focus,
272
+ &:active {
273
+ color: $color;
274
+ }
275
+ }
276
+
277
+ @mixin reset-button {
278
+ margin: 0;
279
+ padding: 0;
280
+ text-align: left;
281
+ font-family: inherit;
282
+ font-weight: 400;
283
+
284
+ background: transparent;
285
+ border: 0;
286
+ box-shadow: none;
287
+ user-select: none;
288
+
289
+ &:hover,
290
+ &:focus,
291
+ &:active {
292
+ outline: none;
293
+ }
294
+ }
295
+
296
+ @mixin bigTextMarginTopToMeetSmallText {
297
+ margin-top: -0.1em;
298
+ }
299
+
300
+ @mixin categoryGrid($gapSelector, $projectInRow) {
301
+ $totalColumns: (2 * $projectInRow - 1);
302
+ display: grid;
303
+ position: relative;
304
+
305
+ @include desktop {
306
+ grid-template-columns: repeat($projectInRow - 1, 1fr $desktopHGap) 1fr;
307
+
308
+ #{$gapSelector} {
309
+ &:nth-of-type(#{$projectInRow}n) {
310
+ grid-column-start: 1;
311
+ grid-column-end: 13;
312
+ height: $desktopHGap;
313
+ }
314
+
315
+ &:nth-child(#{$totalColumns + 1}n):last-child {
316
+ display: none;
317
+ }
318
+
319
+ $i: 2;
320
+
321
+ @while $i < $totalColumns {
322
+ &:nth-child(#{$totalColumns + 1}n + #{$i}):last-child {
323
+ grid-column: span $totalColumns + 1 - $i;
324
+ }
325
+
326
+ $i: $i+2;
327
+ }
328
+ }
329
+ }
330
+
331
+ @include tablet {
332
+ grid-template-columns: repeat($projectInRow - 1, 1fr $tabletHGap) 1fr;
333
+
334
+ #{$gapSelector} {
335
+ &:nth-of-type(#{$projectInRow}n) {
336
+ grid-column-start: 1;
337
+ grid-column-end: 13;
338
+ height: $tabletHGap;
339
+ }
340
+
341
+ &:nth-child(#{$totalColumns + 1}n):last-child {
342
+ display: none;
343
+ }
344
+
345
+ $i: 2;
346
+
347
+ @while $i < $totalColumns {
348
+ &:nth-child(#{$totalColumns + 1}n + #{$i}):last-child {
349
+ grid-column: span $totalColumns + 1 - $i;
350
+ }
351
+
352
+ $i: $i+2;
353
+ }
354
+ }
355
+ }
356
+ }
357
+
358
+ @mixin media_cover() {
359
+ // objtct-fit для media
360
+ position: relative;
361
+ width: 100%;
362
+ height: 100%;
363
+
364
+ .media-container {
365
+ position: static !important;
366
+ padding-bottom: 0 !important;
367
+ }
368
+ }
369
+
370
+ $touchCircleWidthTablet: 4vw;
371
+ $touchCircleWidthMobile: 10vw;
372
+
373
+ @mixin touch-response() {
374
+ @include desktop {
375
+ display: none;
376
+ }
377
+
378
+ @include tablet {
379
+ position: relative;
380
+
381
+ &:after {
382
+ position: absolute;
383
+ content: '';
384
+ width: $touchCircleWidthTablet;
385
+ height: $touchCircleWidthTablet;
386
+ top: calc(50% - 2vw);
387
+ left: calc(50% - 2vw);
388
+ border-radius: 50%;
389
+ background-color: black;
390
+ opacity: 0;
391
+ transition: opacity 0.2s $defaultEasing;
392
+ }
393
+
394
+ &:focus,
395
+ &:active {
396
+ outline: none;
397
+ }
398
+
399
+ &:focus:after,
400
+ &:active:after {
401
+ opacity: 0.2;
402
+ }
403
+
404
+ }
405
+
406
+ @include mobile {
407
+
408
+ &:after {
409
+ width: $touchCircleWidthMobile;
410
+ height: $touchCircleWidthMobile;
411
+ top: calc(50% - 5vw);
412
+ left: calc(50% - 5vw);
413
+ }
414
+ }
415
+ }