@mr.slonn/my-scss-theme 1.0.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/README.md +182 -0
- package/index.scss +1 -0
- package/package.json +10 -0
- package/scss/.sassdocrc +85 -0
- package/scss/_font-vars.scss +25 -0
- package/scss/_fonts.scss +139 -0
- package/scss/abstracts/_animations.scss +819 -0
- package/scss/abstracts/_breakpoints.scss +865 -0
- package/scss/abstracts/_colors.scss +256 -0
- package/scss/abstracts/_functions.scss +3 -0
- package/scss/abstracts/_grid.scss +816 -0
- package/scss/abstracts/_index.scss +134 -0
- package/scss/abstracts/_mixins.scss +1142 -0
- package/scss/abstracts/_patterns.scss +657 -0
- package/scss/abstracts/_radius.scss +279 -0
- package/scss/abstracts/_search-form.scss +271 -0
- package/scss/abstracts/_spacing.scss +158 -0
- package/scss/abstracts/_typography.scss +477 -0
- package/scss/abstracts/_utilities.scss +0 -0
- package/scss/abstracts/_variables.scss +3 -0
- package/scss/abstracts/breadcrumb/_base.scss +194 -0
- package/scss/abstracts/breadcrumb/_index.scss +12 -0
- package/scss/abstracts/breadcrumb/_variables.scss +54 -0
- package/scss/abstracts/buttons/_base.scss +92 -0
- package/scss/abstracts/buttons/_index.scss +31 -0
- package/scss/abstracts/buttons/_modifiers.scss +114 -0
- package/scss/abstracts/buttons/_variables.scss +98 -0
- package/scss/abstracts/buttons/_variants.scss +295 -0
- package/scss/abstracts/callout/_base.scss +142 -0
- package/scss/abstracts/callout/_index.scss +23 -0
- package/scss/abstracts/callout/_variables.scss +27 -0
- package/scss/abstracts/cards/_base.scss +74 -0
- package/scss/abstracts/cards/_blur.scss +65 -0
- package/scss/abstracts/cards/_featured.scss +363 -0
- package/scss/abstracts/cards/_hover.scss +99 -0
- package/scss/abstracts/cards/_index.scss +51 -0
- package/scss/abstracts/cards/_parts.scss +135 -0
- package/scss/abstracts/cards/_sizes.scss +52 -0
- package/scss/abstracts/cards/_variables.scss +72 -0
- package/scss/abstracts/cards/_variants.scss +143 -0
- package/scss/abstracts/cards/_vertical.scss +218 -0
- package/scss/abstracts/chip/_base.scss +99 -0
- package/scss/abstracts/chip/_icon.scss +73 -0
- package/scss/abstracts/chip/_index.scss +21 -0
- package/scss/abstracts/chip/_variables.scss +57 -0
- package/scss/abstracts/chip/_variants.scss +98 -0
- package/scss/abstracts/file-card/_base.scss +326 -0
- package/scss/abstracts/file-card/_index.scss +12 -0
- package/scss/abstracts/file-card/_variables.scss +79 -0
- package/scss/abstracts/hero/_base.scss +182 -0
- package/scss/abstracts/hero/_index.scss +23 -0
- package/scss/abstracts/hero/_variables.scss +59 -0
- package/scss/abstracts/info-card/_base.scss +152 -0
- package/scss/abstracts/info-card/_index.scss +12 -0
- package/scss/abstracts/info-card/_variables.scss +44 -0
- package/scss/abstracts/news-card/_base.scss +143 -0
- package/scss/abstracts/news-card/_compact.scss +24 -0
- package/scss/abstracts/news-card/_featured.scss +83 -0
- package/scss/abstracts/news-card/_index.scss +31 -0
- package/scss/abstracts/news-card/_variables.scss +44 -0
- package/scss/abstracts/project-card/_base.scss +109 -0
- package/scss/abstracts/project-card/_index.scss +23 -0
- package/scss/abstracts/project-card/_variables.scss +20 -0
- package/scss/abstracts/search-form/_base.scss +132 -0
- package/scss/abstracts/search-form/_composite.scss +54 -0
- package/scss/abstracts/search-form/_index.scss +31 -0
- package/scss/abstracts/search-form/_theme.scss +89 -0
- package/scss/abstracts/search-form/_variables.scss +39 -0
- package/scss/abstracts/section-title/_base.scss +127 -0
- package/scss/abstracts/section-title/_index.scss +23 -0
- package/scss/abstracts/section-title/_variables.scss +27 -0
- package/scss/abstracts/service-card/_base.scss +77 -0
- package/scss/abstracts/service-card/_index.scss +23 -0
- package/scss/abstracts/service-card/_variables.scss +23 -0
- package/scss/abstracts/sidebar-menu/_base.scss +148 -0
- package/scss/abstracts/sidebar-menu/_index.scss +12 -0
- package/scss/abstracts/sidebar-menu/_variables.scss +55 -0
- package/scss/abstracts/stats-card/_base.scss +99 -0
- package/scss/abstracts/stats-card/_index.scss +23 -0
- package/scss/abstracts/stats-card/_variables.scss +32 -0
- package/scss/api.scss +12 -0
- package/scss/components/_breadcrumb.scss +140 -0
- package/scss/components/_buttons.scss +226 -0
- package/scss/components/_callout.scss +118 -0
- package/scss/components/_chip.scss +56 -0
- package/scss/components/_file-card.scss +182 -0
- package/scss/components/_hero.scss +103 -0
- package/scss/components/_index.scss +110 -0
- package/scss/components/_info-card.scss +103 -0
- package/scss/components/_news-card-compact.scss +33 -0
- package/scss/components/_news-card-featured.scss +49 -0
- package/scss/components/_news-card.scss +303 -0
- package/scss/components/_project-card.scss +93 -0
- package/scss/components/_search-form.scss +181 -0
- package/scss/components/_section-title.scss +94 -0
- package/scss/components/_service-card.scss +83 -0
- package/scss/components/_sidebar-menu.scss +82 -0
- package/scss/components/_stats-card.scss +92 -0
- package/scss/components/_tag.scss +144 -0
- package/scss/components/_top-nav.scss +537 -0
- package/scss/main.scss +73 -0
- package/scss/utilities/_index.scss +40 -0
- package/scss/utilities/_visibility.scss +224 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Система отступов темы MOEXP
|
|
3
|
+
/// Gap для flexbox/grid и spacing для padding/margin
|
|
4
|
+
/// @group spacing
|
|
5
|
+
/// @author MOEXP Team
|
|
6
|
+
////
|
|
7
|
+
|
|
8
|
+
// ============================================
|
|
9
|
+
// SPACING SYSTEM
|
|
10
|
+
// local\common\theme-moexp\src\scss\abstracts\_spacing.scss
|
|
11
|
+
// ============================================
|
|
12
|
+
|
|
13
|
+
@use "sass:map";
|
|
14
|
+
|
|
15
|
+
// ─────────────────────────────────────────
|
|
16
|
+
// Gap (для flexbox/grid)
|
|
17
|
+
// ─────────────────────────────────────────
|
|
18
|
+
|
|
19
|
+
/// Gap XS (4px) — минимальный отступ между элементами
|
|
20
|
+
/// @type Number
|
|
21
|
+
/// @group spacing
|
|
22
|
+
$gap-xs: 0.25rem !default;
|
|
23
|
+
|
|
24
|
+
/// Gap SM (8px) — маленький отступ
|
|
25
|
+
/// @type Number
|
|
26
|
+
/// @group spacing
|
|
27
|
+
$gap-sm: 0.5rem !default;
|
|
28
|
+
|
|
29
|
+
/// Gap MD (16px) — стандартный отступ
|
|
30
|
+
/// @type Number
|
|
31
|
+
/// @group spacing
|
|
32
|
+
$gap-md: 1rem !default;
|
|
33
|
+
|
|
34
|
+
/// Gap LG (24px) — увеличенный отступ
|
|
35
|
+
/// @type Number
|
|
36
|
+
/// @group spacing
|
|
37
|
+
$gap-lg: 1.5rem !default;
|
|
38
|
+
|
|
39
|
+
/// Gap XL (32px) — большой отступ
|
|
40
|
+
/// @type Number
|
|
41
|
+
/// @group spacing
|
|
42
|
+
$gap-xl: 2rem !default;
|
|
43
|
+
|
|
44
|
+
/// Gap 2XL (48px) — очень большой отступ
|
|
45
|
+
/// @type Number
|
|
46
|
+
/// @group spacing
|
|
47
|
+
$gap-2xl: 3rem !default;
|
|
48
|
+
|
|
49
|
+
/// Карта всех значений gap
|
|
50
|
+
/// @type Map
|
|
51
|
+
/// @prop {Number} xs [0.25rem] - 4px
|
|
52
|
+
/// @prop {Number} sm [0.5rem] - 8px
|
|
53
|
+
/// @prop {Number} md [1rem] - 16px
|
|
54
|
+
/// @prop {Number} lg [1.5rem] - 24px
|
|
55
|
+
/// @prop {Number} xl [2rem] - 32px
|
|
56
|
+
/// @prop {Number} 2xl [3rem] - 48px
|
|
57
|
+
/// @example scss - Получение значения из карты
|
|
58
|
+
/// gap: map.get($gaps, 'lg');
|
|
59
|
+
/// // => 1.5rem
|
|
60
|
+
/// @group spacing
|
|
61
|
+
$gaps: (
|
|
62
|
+
xs: $gap-xs,
|
|
63
|
+
sm: $gap-sm,
|
|
64
|
+
md: $gap-md,
|
|
65
|
+
lg: $gap-lg,
|
|
66
|
+
xl: $gap-xl,
|
|
67
|
+
2xl: $gap-2xl,
|
|
68
|
+
) !default;
|
|
69
|
+
|
|
70
|
+
// ─────────────────────────────────────────
|
|
71
|
+
// Spacing (для padding/margin)
|
|
72
|
+
// ─────────────────────────────────────────
|
|
73
|
+
|
|
74
|
+
/// Spacing 2XS (2px) — микро-отступ
|
|
75
|
+
/// @type Number
|
|
76
|
+
/// @group spacing
|
|
77
|
+
$spacing-2xs: 0.125rem !default;
|
|
78
|
+
|
|
79
|
+
/// Spacing XS (4px) — минимальный отступ
|
|
80
|
+
/// @type Number
|
|
81
|
+
/// @group spacing
|
|
82
|
+
$spacing-xs: 0.25rem !default;
|
|
83
|
+
|
|
84
|
+
/// Spacing SM (8px) — маленький отступ
|
|
85
|
+
/// @type Number
|
|
86
|
+
/// @group spacing
|
|
87
|
+
$spacing-sm: 0.5rem !default;
|
|
88
|
+
|
|
89
|
+
/// Spacing MD (16px) — стандартный отступ
|
|
90
|
+
/// @type Number
|
|
91
|
+
/// @group spacing
|
|
92
|
+
$spacing-md: 1rem !default;
|
|
93
|
+
|
|
94
|
+
/// Spacing LG (24px) — увеличенный отступ
|
|
95
|
+
/// @type Number
|
|
96
|
+
/// @group spacing
|
|
97
|
+
$spacing-lg: 1.5rem !default;
|
|
98
|
+
|
|
99
|
+
/// Spacing XL (32px) — большой отступ
|
|
100
|
+
/// @type Number
|
|
101
|
+
/// @group spacing
|
|
102
|
+
$spacing-xl: 2rem !default;
|
|
103
|
+
|
|
104
|
+
/// Spacing 2XL (48px) — очень большой отступ
|
|
105
|
+
/// @type Number
|
|
106
|
+
/// @group spacing
|
|
107
|
+
$spacing-2xl: 3rem !default;
|
|
108
|
+
|
|
109
|
+
/// Spacing 3XL (64px) — секционный отступ
|
|
110
|
+
/// @type Number
|
|
111
|
+
/// @group spacing
|
|
112
|
+
$spacing-3xl: 4rem !default;
|
|
113
|
+
|
|
114
|
+
/// Spacing 4XL (80px) — большой секционный отступ
|
|
115
|
+
/// @type Number
|
|
116
|
+
/// @group spacing
|
|
117
|
+
$spacing-4xl: 5rem !default;
|
|
118
|
+
|
|
119
|
+
/// Spacing 5XL (96px) — максимальный отступ
|
|
120
|
+
/// @type Number
|
|
121
|
+
/// @group spacing
|
|
122
|
+
$spacing-5xl: 6rem !default;
|
|
123
|
+
|
|
124
|
+
/// Карта всех значений spacing
|
|
125
|
+
/// @type Map
|
|
126
|
+
/// @prop {Number} 2xs [0.125rem] - 2px
|
|
127
|
+
/// @prop {Number} xs [0.25rem] - 4px
|
|
128
|
+
/// @prop {Number} sm [0.5rem] - 8px
|
|
129
|
+
/// @prop {Number} md [1rem] - 16px
|
|
130
|
+
/// @prop {Number} lg [1.5rem] - 24px
|
|
131
|
+
/// @prop {Number} xl [2rem] - 32px
|
|
132
|
+
/// @prop {Number} 2xl [3rem] - 48px
|
|
133
|
+
/// @prop {Number} 3xl [4rem] - 64px
|
|
134
|
+
/// @prop {Number} 4xl [5rem] - 80px
|
|
135
|
+
/// @prop {Number} 5xl [6rem] - 96px
|
|
136
|
+
/// @example scss - Padding секции
|
|
137
|
+
/// .section {
|
|
138
|
+
/// padding: map.get($spacings, '3xl') 0;
|
|
139
|
+
/// }
|
|
140
|
+
/// // => padding: 4rem 0;
|
|
141
|
+
/// @example scss - Margin между блоками
|
|
142
|
+
/// .card {
|
|
143
|
+
/// margin-bottom: map.get($spacings, 'lg');
|
|
144
|
+
/// }
|
|
145
|
+
/// // => margin-bottom: 1.5rem;
|
|
146
|
+
/// @group spacing
|
|
147
|
+
$spacings: (
|
|
148
|
+
2xs: $spacing-2xs,
|
|
149
|
+
xs: $spacing-xs,
|
|
150
|
+
sm: $spacing-sm,
|
|
151
|
+
md: $spacing-md,
|
|
152
|
+
lg: $spacing-lg,
|
|
153
|
+
xl: $spacing-xl,
|
|
154
|
+
2xl: $spacing-2xl,
|
|
155
|
+
3xl: $spacing-3xl,
|
|
156
|
+
4xl: $spacing-4xl,
|
|
157
|
+
5xl: $spacing-5xl,
|
|
158
|
+
) !default;
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Типографика темы MOEXP
|
|
3
|
+
/// Размеры шрифтов, высота строки, начертания и миксины для текста
|
|
4
|
+
/// @group typography
|
|
5
|
+
/// @author MOEXP Team
|
|
6
|
+
////
|
|
7
|
+
|
|
8
|
+
// ============================================
|
|
9
|
+
// TYPOGRAPHY
|
|
10
|
+
// local\common\theme-moexp\src\scss\abstracts\_typography.scss
|
|
11
|
+
// ============================================
|
|
12
|
+
|
|
13
|
+
@use "sass:map";
|
|
14
|
+
@use "mixins";
|
|
15
|
+
@use "breakpoints";
|
|
16
|
+
|
|
17
|
+
// ─────────────────────────────────────────
|
|
18
|
+
// Font Sizes
|
|
19
|
+
// ─────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
/// Размер шрифта 2XS (10px)
|
|
22
|
+
/// @type Number
|
|
23
|
+
/// @group typography
|
|
24
|
+
$font-size-2xs: 0.625rem !default;
|
|
25
|
+
|
|
26
|
+
/// Размер шрифта XS (12px)
|
|
27
|
+
/// @type Number
|
|
28
|
+
/// @group typography
|
|
29
|
+
$font-size-xs: 0.75rem !default;
|
|
30
|
+
|
|
31
|
+
/// Размер шрифта SM (14px)
|
|
32
|
+
/// @type Number
|
|
33
|
+
/// @group typography
|
|
34
|
+
$font-size-sm: 0.875rem !default;
|
|
35
|
+
|
|
36
|
+
/// Базовый размер шрифта (16px)
|
|
37
|
+
/// @type Number
|
|
38
|
+
/// @group typography
|
|
39
|
+
$font-size-base: 1rem !default;
|
|
40
|
+
|
|
41
|
+
/// Размер шрифта LG (18px)
|
|
42
|
+
/// @type Number
|
|
43
|
+
/// @group typography
|
|
44
|
+
$font-size-lg: 1.125rem !default;
|
|
45
|
+
|
|
46
|
+
/// Размер шрифта XL (20px)
|
|
47
|
+
/// @type Number
|
|
48
|
+
/// @group typography
|
|
49
|
+
$font-size-xl: 1.25rem !default;
|
|
50
|
+
|
|
51
|
+
/// Размер шрифта 2XL (24px)
|
|
52
|
+
/// @type Number
|
|
53
|
+
/// @group typography
|
|
54
|
+
$font-size-2xl: 1.5rem !default;
|
|
55
|
+
|
|
56
|
+
/// Размер шрифта 3XL (30px)
|
|
57
|
+
/// @type Number
|
|
58
|
+
/// @group typography
|
|
59
|
+
$font-size-3xl: 1.875rem !default;
|
|
60
|
+
|
|
61
|
+
/// Размер шрифта 4XL (36px)
|
|
62
|
+
/// @type Number
|
|
63
|
+
/// @group typography
|
|
64
|
+
$font-size-4xl: 2.25rem !default;
|
|
65
|
+
|
|
66
|
+
/// Размер шрифта 5XL (48px)
|
|
67
|
+
/// @type Number
|
|
68
|
+
/// @group typography
|
|
69
|
+
$font-size-5xl: 3rem !default;
|
|
70
|
+
|
|
71
|
+
/// Размер шрифта 6XL (60px)
|
|
72
|
+
/// @type Number
|
|
73
|
+
/// @group typography
|
|
74
|
+
$font-size-6xl: 3.75rem !default;
|
|
75
|
+
|
|
76
|
+
/// Размер шрифта 7XL (72px)
|
|
77
|
+
/// @type Number
|
|
78
|
+
/// @group typography
|
|
79
|
+
$font-size-7xl: 4.5rem !default;
|
|
80
|
+
|
|
81
|
+
/// Карта всех размеров шрифтов
|
|
82
|
+
/// @type Map
|
|
83
|
+
/// @prop {Number} 2xs [0.625rem] - 10px
|
|
84
|
+
/// @prop {Number} xs [0.75rem] - 12px
|
|
85
|
+
/// @prop {Number} sm [0.875rem] - 14px
|
|
86
|
+
/// @prop {Number} base [1rem] - 16px
|
|
87
|
+
/// @prop {Number} lg [1.125rem] - 18px
|
|
88
|
+
/// @prop {Number} xl [1.25rem] - 20px
|
|
89
|
+
/// @prop {Number} 2xl [1.5rem] - 24px
|
|
90
|
+
/// @prop {Number} 3xl [1.875rem] - 30px
|
|
91
|
+
/// @prop {Number} 4xl [2.25rem] - 36px
|
|
92
|
+
/// @prop {Number} 5xl [3rem] - 48px
|
|
93
|
+
/// @prop {Number} 6xl [3.75rem] - 60px
|
|
94
|
+
/// @prop {Number} 7xl [4.5rem] - 72px
|
|
95
|
+
/// @example scss - Получение размера из карты
|
|
96
|
+
/// font-size: map.get($font-sizes, '2xl');
|
|
97
|
+
/// // => 1.5rem
|
|
98
|
+
/// @group typography
|
|
99
|
+
$font-sizes: (
|
|
100
|
+
2xs: $font-size-2xs,
|
|
101
|
+
// ← Добавить
|
|
102
|
+
xs: $font-size-xs,
|
|
103
|
+
sm: $font-size-sm,
|
|
104
|
+
base: $font-size-base,
|
|
105
|
+
lg: $font-size-lg,
|
|
106
|
+
xl: $font-size-xl,
|
|
107
|
+
2xl: $font-size-2xl,
|
|
108
|
+
3xl: $font-size-3xl,
|
|
109
|
+
4xl: $font-size-4xl,
|
|
110
|
+
5xl: $font-size-5xl,
|
|
111
|
+
6xl: $font-size-6xl,
|
|
112
|
+
7xl: $font-size-7xl,
|
|
113
|
+
) !default;
|
|
114
|
+
|
|
115
|
+
// ─────────────────────────────────────────
|
|
116
|
+
// Line Heights
|
|
117
|
+
// ─────────────────────────────────────────
|
|
118
|
+
|
|
119
|
+
/// Высота строки none — без интерлиньяжа
|
|
120
|
+
/// @type Number
|
|
121
|
+
/// @group typography
|
|
122
|
+
$line-height-none: 1 !default;
|
|
123
|
+
|
|
124
|
+
/// Высота строки tight — плотная (для крупных заголовков)
|
|
125
|
+
/// @type Number
|
|
126
|
+
/// @group typography
|
|
127
|
+
$line-height-tight: 1.25 !default;
|
|
128
|
+
|
|
129
|
+
/// Высота строки snug — компактная
|
|
130
|
+
/// @type Number
|
|
131
|
+
/// @group typography
|
|
132
|
+
$line-height-snug: 1.375 !default;
|
|
133
|
+
|
|
134
|
+
/// Высота строки normal — стандартная
|
|
135
|
+
/// @type Number
|
|
136
|
+
/// @group typography
|
|
137
|
+
$line-height-normal: 1.5 !default;
|
|
138
|
+
|
|
139
|
+
/// Высота строки relaxed — комфортная для чтения
|
|
140
|
+
/// @type Number
|
|
141
|
+
/// @group typography
|
|
142
|
+
$line-height-relaxed: 1.625 !default;
|
|
143
|
+
|
|
144
|
+
/// Высота строки loose — свободная (двойной интерлиньяж)
|
|
145
|
+
/// @type Number
|
|
146
|
+
/// @group typography
|
|
147
|
+
$line-height-loose: 2 !default;
|
|
148
|
+
|
|
149
|
+
/// Карта всех значений высоты строки
|
|
150
|
+
/// @type Map
|
|
151
|
+
/// @prop {Number} none [1] - Без интерлиньяжа
|
|
152
|
+
/// @prop {Number} tight [1.25] - Плотная
|
|
153
|
+
/// @prop {Number} snug [1.375] - Компактная
|
|
154
|
+
/// @prop {Number} normal [1.5] - Стандартная
|
|
155
|
+
/// @prop {Number} relaxed [1.625] - Комфортная
|
|
156
|
+
/// @prop {Number} loose [2] - Свободная
|
|
157
|
+
/// @example scss - Получение значения из карты
|
|
158
|
+
/// line-height: map.get($line-heights, 'relaxed');
|
|
159
|
+
/// // => 1.625
|
|
160
|
+
/// @group typography
|
|
161
|
+
$line-heights: (
|
|
162
|
+
none: $line-height-none,
|
|
163
|
+
tight: $line-height-tight,
|
|
164
|
+
snug: $line-height-snug,
|
|
165
|
+
normal: $line-height-normal,
|
|
166
|
+
relaxed: $line-height-relaxed,
|
|
167
|
+
loose: $line-height-loose,
|
|
168
|
+
) !default;
|
|
169
|
+
|
|
170
|
+
// ─────────────────────────────────────────
|
|
171
|
+
// Font Weights
|
|
172
|
+
// ─────────────────────────────────────────
|
|
173
|
+
|
|
174
|
+
/// Тонкий
|
|
175
|
+
/// @type Number
|
|
176
|
+
/// @group typography
|
|
177
|
+
$font-weight-thin: 100 !default;
|
|
178
|
+
|
|
179
|
+
/// Очень лёгкий
|
|
180
|
+
/// @type Number
|
|
181
|
+
/// @group typography
|
|
182
|
+
$font-weight-extralight: 200 !default;
|
|
183
|
+
|
|
184
|
+
/// Лёгкий
|
|
185
|
+
/// @type Number
|
|
186
|
+
/// @group typography
|
|
187
|
+
$font-weight-light: 300 !default;
|
|
188
|
+
|
|
189
|
+
/// Нормальный
|
|
190
|
+
/// @type Number
|
|
191
|
+
/// @group typography
|
|
192
|
+
$font-weight-normal: 400 !default;
|
|
193
|
+
|
|
194
|
+
/// Средний
|
|
195
|
+
/// @type Number
|
|
196
|
+
/// @group typography
|
|
197
|
+
$font-weight-medium: 500 !default;
|
|
198
|
+
|
|
199
|
+
/// Полужирный
|
|
200
|
+
/// @type Number
|
|
201
|
+
/// @group typography
|
|
202
|
+
$font-weight-semibold: 600 !default;
|
|
203
|
+
|
|
204
|
+
/// Жирный
|
|
205
|
+
/// @type Number
|
|
206
|
+
/// @group typography
|
|
207
|
+
$font-weight-bold: 700 !default;
|
|
208
|
+
|
|
209
|
+
/// Очень жирный
|
|
210
|
+
/// @type Number
|
|
211
|
+
/// @group typography
|
|
212
|
+
$font-weight-extrabold: 800 !default;
|
|
213
|
+
|
|
214
|
+
/// Чёрный (максимальный)
|
|
215
|
+
/// @type Number
|
|
216
|
+
/// @group typography
|
|
217
|
+
$font-weight-black: 900 !default;
|
|
218
|
+
|
|
219
|
+
/// Карта всех начертаний шрифта
|
|
220
|
+
/// @type Map
|
|
221
|
+
/// @prop {Number} thin [100] - Тонкое
|
|
222
|
+
/// @prop {Number} extralight [200] - Очень лёгкое
|
|
223
|
+
/// @prop {Number} light [300] - Лёгкое
|
|
224
|
+
/// @prop {Number} normal [400] - Обычное
|
|
225
|
+
/// @prop {Number} medium [500] - Среднее
|
|
226
|
+
/// @prop {Number} semibold [600] - Полужирное
|
|
227
|
+
/// @prop {Number} bold [700] - Жирное
|
|
228
|
+
/// @prop {Number} extrabold [800] - Очень жирное
|
|
229
|
+
/// @prop {Number} black [900] - Сверхжирное
|
|
230
|
+
/// @example scss - Получение значения из карты
|
|
231
|
+
/// font-weight: map.get($font-weights, 'semibold');
|
|
232
|
+
/// // => 600
|
|
233
|
+
/// @group typography
|
|
234
|
+
$font-weights: (
|
|
235
|
+
thin: $font-weight-thin,
|
|
236
|
+
extralight: $font-weight-extralight,
|
|
237
|
+
light: $font-weight-light,
|
|
238
|
+
normal: $font-weight-normal,
|
|
239
|
+
medium: $font-weight-medium,
|
|
240
|
+
semibold: $font-weight-semibold,
|
|
241
|
+
bold: $font-weight-bold,
|
|
242
|
+
extrabold: $font-weight-extrabold,
|
|
243
|
+
black: $font-weight-black,
|
|
244
|
+
) !default;
|
|
245
|
+
|
|
246
|
+
// ============================================
|
|
247
|
+
// МИКСИНЫ ТИПОГРАФИКИ
|
|
248
|
+
// ============================================
|
|
249
|
+
|
|
250
|
+
/// Стили для Hero-заголовка (h1 на главном экране)
|
|
251
|
+
/// Адаптивный размер: 4xl → 5xl (lg) → 6xl (xl)
|
|
252
|
+
/// @param {String} $color [primary-foreground] - Имя цвета из палитры
|
|
253
|
+
/// @param {String} $font-heading - Семейство шрифта для заголовка
|
|
254
|
+
/// @require {mixin} mixins.text-color
|
|
255
|
+
/// @require {mixin} breakpoints.lg
|
|
256
|
+
/// @require {mixin} breakpoints.xl
|
|
257
|
+
/// @example scss - Использование в Hero-секции
|
|
258
|
+
/// .hero__title {
|
|
259
|
+
/// @include hero-title('primary-foreground', $font-golos-text);
|
|
260
|
+
/// }
|
|
261
|
+
/// @output
|
|
262
|
+
/// margin-bottom: 1.5rem;
|
|
263
|
+
/// font-family: ...;
|
|
264
|
+
/// font-weight: 700;
|
|
265
|
+
/// font-size: 2.25rem; // адаптивно до 3.75rem
|
|
266
|
+
/// line-height: 1;
|
|
267
|
+
/// color: hsl(var(--primary-foreground));
|
|
268
|
+
/// @group typography
|
|
269
|
+
@mixin hero-title($color: primary-foreground, $font-heading) {
|
|
270
|
+
margin-bottom: 1.5rem;
|
|
271
|
+
|
|
272
|
+
font-family: $font-heading;
|
|
273
|
+
font-weight: $font-weight-bold;
|
|
274
|
+
font-size: $font-size-4xl;
|
|
275
|
+
line-height: $line-height-none;
|
|
276
|
+
|
|
277
|
+
@include mixins.text-color($color);
|
|
278
|
+
|
|
279
|
+
@include breakpoints.lg {
|
|
280
|
+
font-size: $font-size-5xl;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@include breakpoints.xl {
|
|
284
|
+
font-size: $font-size-6xl;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/// Стили для Hero-подзаголовка
|
|
289
|
+
/// Адаптивный размер с ограничением ширины
|
|
290
|
+
/// @param {String} $color [primary-foreground] - Имя цвета из палитры
|
|
291
|
+
/// @param {Number} $alpha [0.8] - Прозрачность текста
|
|
292
|
+
/// @require {mixin} mixins.text-color
|
|
293
|
+
/// @require {mixin} breakpoints.lg
|
|
294
|
+
/// @require {mixin} breakpoints.xs
|
|
295
|
+
/// @example scss - Использование в Hero-секции
|
|
296
|
+
/// .hero__subtitle {
|
|
297
|
+
/// @include hero-subtitle('primary-foreground', 0.85);
|
|
298
|
+
/// }
|
|
299
|
+
/// @output
|
|
300
|
+
/// max-width: 42rem;
|
|
301
|
+
/// margin-bottom: 2.5rem;
|
|
302
|
+
/// font-size: 1.125rem; // адаптивно
|
|
303
|
+
/// color: hsl(var(--primary-foreground) / 0.8);
|
|
304
|
+
/// @group typography
|
|
305
|
+
@mixin hero-subtitle($color: primary-foreground, $alpha: 0.8) {
|
|
306
|
+
max-width: 42rem;
|
|
307
|
+
margin-bottom: 2.5rem;
|
|
308
|
+
|
|
309
|
+
font-size: $font-size-lg;
|
|
310
|
+
|
|
311
|
+
@include mixins.text-color($color, $alpha);
|
|
312
|
+
|
|
313
|
+
@include breakpoints.lg {
|
|
314
|
+
font-size: $font-size-xl;
|
|
315
|
+
line-height: $line-height-relaxed;
|
|
316
|
+
}
|
|
317
|
+
@include breakpoints.xs {
|
|
318
|
+
font-size: $font-size-lg;
|
|
319
|
+
line-height: $line-height-none;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/// Стили для заголовка секции (h2)
|
|
324
|
+
/// Адаптивный размер: 3xl → 4xl (lg)
|
|
325
|
+
/// @param {String} $color [foreground] - Имя цвета из палитры
|
|
326
|
+
/// @param {String} $font-heading - Семейство шрифта для заголовка
|
|
327
|
+
/// @require {mixin} mixins.text-color
|
|
328
|
+
/// @require {mixin} breakpoints.lg
|
|
329
|
+
/// @example scss - Использование в секции
|
|
330
|
+
/// .about__title {
|
|
331
|
+
/// @include section-title('foreground', $font-golos-text);
|
|
332
|
+
/// }
|
|
333
|
+
/// @output
|
|
334
|
+
/// margin-bottom: 1rem;
|
|
335
|
+
/// font-family: ...;
|
|
336
|
+
/// font-weight: 700;
|
|
337
|
+
/// font-size: 1.875rem; // адаптивно до 2.25rem
|
|
338
|
+
/// line-height: 1.25;
|
|
339
|
+
/// color: hsl(var(--foreground));
|
|
340
|
+
/// @group typography
|
|
341
|
+
@mixin section-title($color: foreground, $font-heading) {
|
|
342
|
+
margin-bottom: 1rem;
|
|
343
|
+
|
|
344
|
+
font-family: $font-heading;
|
|
345
|
+
font-weight: $font-weight-bold;
|
|
346
|
+
font-size: $font-size-3xl;
|
|
347
|
+
line-height: $line-height-tight;
|
|
348
|
+
|
|
349
|
+
@include mixins.text-color($color);
|
|
350
|
+
|
|
351
|
+
@include breakpoints.lg {
|
|
352
|
+
font-size: $font-size-4xl;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/// Стили для подзаголовка секции
|
|
357
|
+
/// С ограничением максимальной ширины для читаемости
|
|
358
|
+
/// @param {String} $color [foreground-muted] - Имя цвета из палитры
|
|
359
|
+
/// @require {mixin} mixins.text-color
|
|
360
|
+
/// @example scss - Использование в секции
|
|
361
|
+
/// .about__subtitle {
|
|
362
|
+
/// @include section-subtitle('foreground-muted');
|
|
363
|
+
/// }
|
|
364
|
+
/// @output
|
|
365
|
+
/// max-width: 36rem;
|
|
366
|
+
/// margin-bottom: 2rem;
|
|
367
|
+
/// font-size: 1.125rem;
|
|
368
|
+
/// line-height: 1.625;
|
|
369
|
+
/// color: hsl(var(--foreground-muted));
|
|
370
|
+
/// @group typography
|
|
371
|
+
@mixin section-subtitle($color: foreground-muted) {
|
|
372
|
+
max-width: 36rem;
|
|
373
|
+
margin-bottom: 2rem;
|
|
374
|
+
|
|
375
|
+
font-size: $font-size-lg;
|
|
376
|
+
line-height: $line-height-relaxed;
|
|
377
|
+
|
|
378
|
+
@include mixins.text-color($color);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/// Стили для надзаголовка секции (slogan)
|
|
382
|
+
/// Uppercase текст с letter-spacing
|
|
383
|
+
/// @param {String} $color [foreground-muted] - Имя цвета из палитры
|
|
384
|
+
/// @require {mixin} mixins.text-color
|
|
385
|
+
/// @require {mixin} breakpoints.md-down
|
|
386
|
+
/// @example scss - Использование в секции
|
|
387
|
+
/// .services__slogan {
|
|
388
|
+
/// @include section-slogan('foreground-muted');
|
|
389
|
+
/// }
|
|
390
|
+
/// @output
|
|
391
|
+
/// font-size: 0.875rem;
|
|
392
|
+
/// text-transform: uppercase;
|
|
393
|
+
/// letter-spacing: 0.1em;
|
|
394
|
+
/// color: hsl(var(--foreground-muted));
|
|
395
|
+
/// @group typography
|
|
396
|
+
@mixin section-slogan($color: foreground-muted) {
|
|
397
|
+
font-size: $font-size-sm;
|
|
398
|
+
font-weight: $font-weight-medium;
|
|
399
|
+
line-height: $line-height-normal;
|
|
400
|
+
text-transform: uppercase;
|
|
401
|
+
letter-spacing: 0.1em;
|
|
402
|
+
|
|
403
|
+
@include mixins.text-color($color);
|
|
404
|
+
|
|
405
|
+
@include breakpoints.md-down {
|
|
406
|
+
font-size: $font-size-xs;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/// Стили для заголовка карточки (h3)
|
|
411
|
+
/// @param {String} $color [foreground] - Имя цвета из палитры
|
|
412
|
+
/// @param {String} $font-heading - Семейство шрифта для заголовка
|
|
413
|
+
/// @require {mixin} mixins.text-color
|
|
414
|
+
/// @example scss - Использование в карточке
|
|
415
|
+
/// .card__title {
|
|
416
|
+
/// @include card-title('foreground', $font-golos-text);
|
|
417
|
+
/// }
|
|
418
|
+
/// @output
|
|
419
|
+
/// margin-bottom: 0.5rem;
|
|
420
|
+
/// font-family: ...;
|
|
421
|
+
/// font-weight: 600;
|
|
422
|
+
/// font-size: 1.25rem;
|
|
423
|
+
/// line-height: 1.375;
|
|
424
|
+
/// color: hsl(var(--foreground));
|
|
425
|
+
/// @group typography
|
|
426
|
+
@mixin card-title($color: foreground, $font-heading) {
|
|
427
|
+
margin-bottom: 0.5rem;
|
|
428
|
+
|
|
429
|
+
font-family: $font-heading;
|
|
430
|
+
font-weight: $font-weight-semibold;
|
|
431
|
+
font-size: $font-size-xl;
|
|
432
|
+
line-height: $line-height-snug;
|
|
433
|
+
|
|
434
|
+
@include mixins.text-color($color);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/// Стили для основного текста (body)
|
|
438
|
+
/// @param {String} $color [foreground-body] - Имя цвета из палитры
|
|
439
|
+
/// @require {mixin} mixins.text-color
|
|
440
|
+
/// @example scss - Использование для параграфов
|
|
441
|
+
/// .article__text {
|
|
442
|
+
/// @include body-text('foreground-body');
|
|
443
|
+
/// }
|
|
444
|
+
/// @output
|
|
445
|
+
/// font-size: 1rem;
|
|
446
|
+
/// line-height: 1.625;
|
|
447
|
+
/// color: hsl(var(--foreground-body));
|
|
448
|
+
/// @group typography
|
|
449
|
+
@mixin body-text($color: foreground-body) {
|
|
450
|
+
font-size: $font-size-base;
|
|
451
|
+
line-height: $line-height-relaxed;
|
|
452
|
+
|
|
453
|
+
@include mixins.text-color($color);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/// Стили для мелкого текста, подписей и caption
|
|
457
|
+
/// @param {String} $color [foreground-caption] - Имя цвета из палитры
|
|
458
|
+
/// @require {mixin} mixins.text-color
|
|
459
|
+
/// @example scss - Использование для подписей
|
|
460
|
+
/// .card__meta {
|
|
461
|
+
/// @include caption-text('foreground-caption');
|
|
462
|
+
/// }
|
|
463
|
+
/// @example scss - Кастомный цвет
|
|
464
|
+
/// .footer__copyright {
|
|
465
|
+
/// @include caption-text('foreground-muted');
|
|
466
|
+
/// }
|
|
467
|
+
/// @output
|
|
468
|
+
/// font-size: 0.875rem;
|
|
469
|
+
/// line-height: 1.5;
|
|
470
|
+
/// color: hsl(var(--foreground-caption));
|
|
471
|
+
/// @group typography
|
|
472
|
+
@mixin caption-text($color: foreground-caption) {
|
|
473
|
+
font-size: $font-size-sm;
|
|
474
|
+
line-height: $line-height-normal;
|
|
475
|
+
|
|
476
|
+
@include mixins.text-color($color);
|
|
477
|
+
}
|
|
File without changes
|