@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,127 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SECTION TITLE — BASE
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/section-title/_base.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Базовые миксины section-title
|
|
8
|
+
/// @group section-title-base
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../typography";
|
|
13
|
+
@use "../spacing";
|
|
14
|
+
@use "../mixins";
|
|
15
|
+
@use "../breakpoints";
|
|
16
|
+
@use "../../font-vars" as fonts;
|
|
17
|
+
@use "variables" as *;
|
|
18
|
+
|
|
19
|
+
// ─────────────────────────────────────────
|
|
20
|
+
// БАЗОВЫЕ МИКСИНЫ
|
|
21
|
+
// ─────────────────────────────────────────
|
|
22
|
+
|
|
23
|
+
/// Базовые стили контейнера section-title
|
|
24
|
+
/// @param {String} $align [center] - Выравнивание: center, left, right
|
|
25
|
+
/// @output Flex column с выравниванием
|
|
26
|
+
/// @group section-title-base
|
|
27
|
+
@mixin base($align: center) {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
text-align: $align;
|
|
31
|
+
gap: $gap;
|
|
32
|
+
margin-bottom: $margin-bottom;
|
|
33
|
+
|
|
34
|
+
@if $align == center {
|
|
35
|
+
align-items: center;
|
|
36
|
+
} @else if $align == right {
|
|
37
|
+
align-items: flex-end;
|
|
38
|
+
} @else {
|
|
39
|
+
align-items: flex-start;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// Стили для slogan (надзаголовок)
|
|
44
|
+
/// @param {String} $color [foreground-muted] - Цвет текста
|
|
45
|
+
/// @output Uppercase текст с letter-spacing
|
|
46
|
+
/// @group section-title-base
|
|
47
|
+
@mixin slogan($color: foreground-muted) {
|
|
48
|
+
font-size: typography.$font-size-sm;
|
|
49
|
+
font-weight: typography.$font-weight-medium;
|
|
50
|
+
line-height: typography.$line-height-normal;
|
|
51
|
+
text-transform: uppercase;
|
|
52
|
+
letter-spacing: 0.1em;
|
|
53
|
+
|
|
54
|
+
@include mixins.text-color($color);
|
|
55
|
+
|
|
56
|
+
@include breakpoints.md-down {
|
|
57
|
+
font-size: typography.$font-size-xs;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/// Стили для title (h2)
|
|
62
|
+
/// @param {String} $color [foreground] - Цвет текста
|
|
63
|
+
/// @param {String} $font-family [fonts.$font-literata] - Семейство шрифта
|
|
64
|
+
/// @output Заголовок секции
|
|
65
|
+
/// @group section-title-base
|
|
66
|
+
@mixin title($color: foreground, $font-family: fonts.$font-literata) {
|
|
67
|
+
font-family: $font-family;
|
|
68
|
+
font-size: typography.$font-size-4xl;
|
|
69
|
+
font-weight: typography.$font-weight-bold;
|
|
70
|
+
line-height: typography.$line-height-tight;
|
|
71
|
+
|
|
72
|
+
@include mixins.text-color($color);
|
|
73
|
+
|
|
74
|
+
@include breakpoints.md-down {
|
|
75
|
+
font-size: typography.$font-size-3xl;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// Стили для subtitle (h3)
|
|
80
|
+
/// @param {String} $color [foreground] - Цвет текста
|
|
81
|
+
/// @output Подзаголовок секции
|
|
82
|
+
/// @group section-title-base
|
|
83
|
+
@mixin subtitle($color: foreground) {
|
|
84
|
+
font-size: typography.$font-size-lg;
|
|
85
|
+
font-weight: typography.$font-weight-normal;
|
|
86
|
+
line-height: typography.$line-height-relaxed;
|
|
87
|
+
|
|
88
|
+
@include mixins.text-color($color);
|
|
89
|
+
|
|
90
|
+
@include breakpoints.md-down {
|
|
91
|
+
font-size: typography.$font-size-base;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ─────────────────────────────────────────
|
|
96
|
+
// МОДИФИКАТОРЫ
|
|
97
|
+
// ─────────────────────────────────────────
|
|
98
|
+
|
|
99
|
+
/// Выравнивание влево
|
|
100
|
+
/// @output text-align: left, align-items: flex-start
|
|
101
|
+
/// @group section-title-base
|
|
102
|
+
@mixin align-left {
|
|
103
|
+
text-align: left;
|
|
104
|
+
align-items: flex-start;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/// Выравнивание вправо
|
|
108
|
+
/// @output text-align: right, align-items: flex-end
|
|
109
|
+
/// @group section-title-base
|
|
110
|
+
@mixin align-right {
|
|
111
|
+
text-align: right;
|
|
112
|
+
align-items: flex-end;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/// Компактный вариант (уменьшенный отступ)
|
|
116
|
+
/// @output margin-bottom: $margin-bottom-compact
|
|
117
|
+
/// @group section-title-base
|
|
118
|
+
@mixin compact {
|
|
119
|
+
margin-bottom: $margin-bottom-compact;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// Без отступа снизу
|
|
123
|
+
/// @output margin-bottom: 0
|
|
124
|
+
/// @group section-title-base
|
|
125
|
+
@mixin no-margin {
|
|
126
|
+
margin-bottom: 0;
|
|
127
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SECTION TITLE — INDEX
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/section-title/_index.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Точка входа модуля section-title
|
|
8
|
+
/// Экспортирует все переменные и миксины
|
|
9
|
+
/// @group section-title
|
|
10
|
+
/// @author MOEXP Team
|
|
11
|
+
////
|
|
12
|
+
|
|
13
|
+
// ─────────────────────────────────────────
|
|
14
|
+
// EXPORTS
|
|
15
|
+
// ─────────────────────────────────────────
|
|
16
|
+
|
|
17
|
+
/// Переменные
|
|
18
|
+
/// @see section-title/_variables.scss
|
|
19
|
+
@forward "variables";
|
|
20
|
+
|
|
21
|
+
/// Базовые миксины
|
|
22
|
+
/// @see section-title/_base.scss
|
|
23
|
+
@forward "base";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SECTION TITLE — VARIABLES
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/section-title/_variables.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Переменные компонента section-title
|
|
8
|
+
/// @group section-title-variables
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../spacing";
|
|
13
|
+
|
|
14
|
+
/// Отступ между элементами заголовка
|
|
15
|
+
/// @type Number
|
|
16
|
+
/// @group section-title-variables
|
|
17
|
+
$gap: spacing.$gap-sm !default;
|
|
18
|
+
|
|
19
|
+
/// Отступ снизу компонента
|
|
20
|
+
/// @type Number
|
|
21
|
+
/// @group section-title-variables
|
|
22
|
+
$margin-bottom: spacing.$spacing-xl !default;
|
|
23
|
+
|
|
24
|
+
/// Уменьшенный отступ (compact)
|
|
25
|
+
/// @type Number
|
|
26
|
+
/// @group section-title-variables
|
|
27
|
+
$margin-bottom-compact: spacing.$spacing-lg !default;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SERVICE CARD — BASE
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/service-card/_base.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Базовые миксины карточки услуги
|
|
8
|
+
/// @group service-card-base
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../typography";
|
|
13
|
+
@use "../spacing";
|
|
14
|
+
@use "../mixins";
|
|
15
|
+
@use "../animations";
|
|
16
|
+
@use "../cards";
|
|
17
|
+
@use "../../font-vars" as fonts;
|
|
18
|
+
@use "variables" as *;
|
|
19
|
+
|
|
20
|
+
// ─────────────────────────────────────────
|
|
21
|
+
// БАЗОВЫЕ МИКСИНЫ
|
|
22
|
+
// ─────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
/// Базовые стили карточки услуги
|
|
25
|
+
/// @output Интерактивная карточка
|
|
26
|
+
/// @group service-card-base
|
|
27
|
+
@mixin base {
|
|
28
|
+
@include cards.card-interactive;
|
|
29
|
+
display: block;
|
|
30
|
+
text-decoration: none;
|
|
31
|
+
color: inherit;
|
|
32
|
+
|
|
33
|
+
&:focus-visible {
|
|
34
|
+
@include mixins.focus-ring(ring);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// Иконка карточки
|
|
39
|
+
/// @param {String} $color [accent] - Цвет иконки
|
|
40
|
+
/// @output Стили иконки
|
|
41
|
+
/// @group service-card-base
|
|
42
|
+
@mixin icon($color: accent) {
|
|
43
|
+
width: $icon-size;
|
|
44
|
+
height: $icon-size;
|
|
45
|
+
margin-bottom: spacing.$spacing-md;
|
|
46
|
+
flex-shrink: 0;
|
|
47
|
+
|
|
48
|
+
@include mixins.text-color($color);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// Заголовок карточки
|
|
52
|
+
/// @param {String} $color [foreground] - Цвет текста
|
|
53
|
+
/// @param {String} $font-family [fonts.$font-literata] - Шрифт
|
|
54
|
+
/// @output Стили заголовка
|
|
55
|
+
/// @group service-card-base
|
|
56
|
+
@mixin title($color: foreground, $font-family: fonts.$font-literata) {
|
|
57
|
+
font-family: $font-family;
|
|
58
|
+
font-size: typography.$font-size-lg;
|
|
59
|
+
font-weight: typography.$font-weight-semibold;
|
|
60
|
+
line-height: typography.$line-height-snug;
|
|
61
|
+
margin-bottom: spacing.$spacing-sm;
|
|
62
|
+
|
|
63
|
+
@include mixins.text-color($color);
|
|
64
|
+
@include animations.transition(color);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/// Описание карточки
|
|
68
|
+
/// @param {String} $color [foreground] - Цвет текста
|
|
69
|
+
/// @param {Number} $alpha [0.8] - Прозрачность
|
|
70
|
+
/// @output Стили описания
|
|
71
|
+
/// @group service-card-base
|
|
72
|
+
@mixin description($color: foreground, $alpha: 0.8) {
|
|
73
|
+
font-size: typography.$font-size-sm;
|
|
74
|
+
line-height: typography.$line-height-relaxed;
|
|
75
|
+
|
|
76
|
+
@include mixins.text-color($color, $alpha);
|
|
77
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SERVICE CARD — INDEX
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/service-card/_index.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Точка входа модуля карточки услуги
|
|
8
|
+
/// Экспортирует все переменные и миксины
|
|
9
|
+
/// @group service-card
|
|
10
|
+
/// @author MOEXP Team
|
|
11
|
+
////
|
|
12
|
+
|
|
13
|
+
// ─────────────────────────────────────────
|
|
14
|
+
// EXPORTS
|
|
15
|
+
// ─────────────────────────────────────────
|
|
16
|
+
|
|
17
|
+
/// Переменные
|
|
18
|
+
/// @see service-card/_variables.scss
|
|
19
|
+
@forward "variables";
|
|
20
|
+
|
|
21
|
+
/// Базовые миксины
|
|
22
|
+
/// @see service-card/_base.scss
|
|
23
|
+
@forward "base";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SERVICE CARD — VARIABLES
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/service-card/_variables.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Переменные карточки услуги
|
|
8
|
+
/// @group service-card-variables
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../typography";
|
|
13
|
+
@use "../spacing";
|
|
14
|
+
|
|
15
|
+
/// Размер иконки
|
|
16
|
+
/// @type Number
|
|
17
|
+
/// @group service-card-variables
|
|
18
|
+
$icon-size: typography.$font-size-5xl !default;
|
|
19
|
+
|
|
20
|
+
/// Padding карточки
|
|
21
|
+
/// @type Number
|
|
22
|
+
/// @group service-card-variables
|
|
23
|
+
$padding: spacing.$spacing-lg !default;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SIDEBAR MENU — BASE
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/sidebar-menu/_base.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Базовые миксины sidebar-menu
|
|
8
|
+
/// @group sidebar-menu-base
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../typography";
|
|
13
|
+
@use "../spacing";
|
|
14
|
+
@use "../mixins";
|
|
15
|
+
@use "../radius";
|
|
16
|
+
@use "../animations";
|
|
17
|
+
@use "../../font-vars" as fonts;
|
|
18
|
+
@use "variables" as *;
|
|
19
|
+
|
|
20
|
+
// ─────────────────────────────────────────
|
|
21
|
+
// CONTAINER
|
|
22
|
+
// ─────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
/// Базовые стили контейнера
|
|
25
|
+
/// @output Стили обёртки меню
|
|
26
|
+
/// @group sidebar-menu-base
|
|
27
|
+
@mixin base {
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
|
|
30
|
+
@include mixins.bg-color(background-card);
|
|
31
|
+
@include mixins.border-hsl(1px, solid, border, 0.5);
|
|
32
|
+
@include radius.rounded(sm);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ─────────────────────────────────────────
|
|
36
|
+
// HEADER
|
|
37
|
+
// ─────────────────────────────────────────
|
|
38
|
+
|
|
39
|
+
/// Стили заголовка
|
|
40
|
+
/// @param {String} $bg [primary] - Фон заголовка
|
|
41
|
+
/// @output Стили шапки меню
|
|
42
|
+
/// @group sidebar-menu-base
|
|
43
|
+
@mixin header($bg: primary) {
|
|
44
|
+
padding: $header-padding-y $header-padding-x;
|
|
45
|
+
|
|
46
|
+
@include mixins.bg-color($bg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/// Стили заголовка (h3)
|
|
50
|
+
/// @param {String} $color [primary-foreground] - Цвет текста
|
|
51
|
+
/// @param {String} $font-family [fonts.$font-golos-text] - Шрифт
|
|
52
|
+
/// @output Стили текста заголовка
|
|
53
|
+
/// @group sidebar-menu-base
|
|
54
|
+
@mixin title($color: primary-foreground, $font-family: fonts.$font-golos-text) {
|
|
55
|
+
margin: 0;
|
|
56
|
+
font-family: $font-family;
|
|
57
|
+
font-size: typography.$font-size-sm;
|
|
58
|
+
font-weight: typography.$font-weight-semibold;
|
|
59
|
+
line-height: typography.$line-height-normal;
|
|
60
|
+
|
|
61
|
+
@include mixins.text-color($color);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ─────────────────────────────────────────
|
|
65
|
+
// NAV
|
|
66
|
+
// ─────────────────────────────────────────
|
|
67
|
+
|
|
68
|
+
/// Стили навигации
|
|
69
|
+
/// @output Padding контейнера nav
|
|
70
|
+
/// @group sidebar-menu-base
|
|
71
|
+
@mixin nav {
|
|
72
|
+
padding: $nav-padding-y 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/// Стили списка
|
|
76
|
+
/// @output Reset для ul
|
|
77
|
+
/// @group sidebar-menu-base
|
|
78
|
+
@mixin list {
|
|
79
|
+
list-style: none;
|
|
80
|
+
margin: 0;
|
|
81
|
+
padding: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/// Стили элемента списка
|
|
85
|
+
/// @output Стили li
|
|
86
|
+
/// @group sidebar-menu-base
|
|
87
|
+
@mixin item {
|
|
88
|
+
// Пустой, для расширения при необходимости
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ─────────────────────────────────────────
|
|
92
|
+
// LINK
|
|
93
|
+
// ─────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
/// Стили ссылки
|
|
96
|
+
/// @param {String} $color [foreground-body] - Цвет текста
|
|
97
|
+
/// @param {String} $hover-bg [background-section] - Фон при hover
|
|
98
|
+
/// @param {String} $hover-color [accent] - Цвет текста при hover
|
|
99
|
+
/// @param {String} $border-color [accent] - Цвет левой границы при hover
|
|
100
|
+
/// @output Стили ссылки с hover и transition
|
|
101
|
+
/// @group sidebar-menu-base
|
|
102
|
+
@mixin link($color: foreground-body, $hover-bg: background-section, $hover-color: accent, $border-color: accent) {
|
|
103
|
+
display: block;
|
|
104
|
+
padding: $link-padding-y $link-padding-x;
|
|
105
|
+
|
|
106
|
+
font-size: typography.$font-size-sm;
|
|
107
|
+
line-height: typography.$line-height-relaxed;
|
|
108
|
+
text-decoration: none;
|
|
109
|
+
|
|
110
|
+
border-left: $link-border-width solid transparent;
|
|
111
|
+
|
|
112
|
+
@include mixins.text-color($color);
|
|
113
|
+
|
|
114
|
+
// Fallback transition
|
|
115
|
+
transition:
|
|
116
|
+
color $transition-duration ease-out,
|
|
117
|
+
background-color $transition-duration ease-out,
|
|
118
|
+
border-color $transition-duration ease-out;
|
|
119
|
+
|
|
120
|
+
// Modern transition
|
|
121
|
+
@supports (transition-behavior: allow-discrete) {
|
|
122
|
+
@include animations.transition((color, background-color, border-color), $transition-duration);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&:hover {
|
|
126
|
+
@include mixins.bg-color($hover-bg);
|
|
127
|
+
@include mixins.text-color($hover-color);
|
|
128
|
+
@include mixins.border-color-hsl($border-color);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
&:focus-visible {
|
|
132
|
+
@include mixins.focus-ring(ring, 2px, -2px);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// Стили активной ссылки
|
|
137
|
+
/// @param {String} $bg [background-section] - Фон
|
|
138
|
+
/// @param {String} $color [accent] - Цвет текста
|
|
139
|
+
/// @param {String} $border-color [accent] - Цвет левой границы
|
|
140
|
+
/// @output Стили для aria-current="page"
|
|
141
|
+
/// @group sidebar-menu-base
|
|
142
|
+
@mixin link-active($bg: background-section, $color: accent, $border-color: accent) {
|
|
143
|
+
@include mixins.bg-color($bg);
|
|
144
|
+
@include mixins.text-color($color);
|
|
145
|
+
@include mixins.border-color-hsl($border-color);
|
|
146
|
+
|
|
147
|
+
pointer-events: none;
|
|
148
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SIDEBAR MENU — INDEX
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/sidebar-menu/_index.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Экспорт модуля sidebar-menu
|
|
8
|
+
/// @group sidebar-menu
|
|
9
|
+
////
|
|
10
|
+
|
|
11
|
+
@forward "variables";
|
|
12
|
+
@forward "base";
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SIDEBAR MENU — VARIABLES
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/sidebar-menu/_variables.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Переменные компонента sidebar-menu
|
|
8
|
+
/// @group sidebar-menu-variables
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../spacing";
|
|
13
|
+
@use "../typography";
|
|
14
|
+
@use "../animations";
|
|
15
|
+
@use "../radius";
|
|
16
|
+
|
|
17
|
+
/// Скругление контейнера
|
|
18
|
+
/// @type Number
|
|
19
|
+
/// @group sidebar-menu-variables
|
|
20
|
+
$border-radius: radius.$radius-sm !default;
|
|
21
|
+
|
|
22
|
+
/// Padding заголовка (X)
|
|
23
|
+
/// @type Number
|
|
24
|
+
/// @group sidebar-menu-variables
|
|
25
|
+
$header-padding-x: spacing.$spacing-md !default;
|
|
26
|
+
|
|
27
|
+
/// Padding заголовка (Y)
|
|
28
|
+
/// @type Number
|
|
29
|
+
/// @group sidebar-menu-variables
|
|
30
|
+
$header-padding-y: spacing.$spacing-sm !default;
|
|
31
|
+
|
|
32
|
+
/// Padding навигации (Y)
|
|
33
|
+
/// @type Number
|
|
34
|
+
/// @group sidebar-menu-variables
|
|
35
|
+
$nav-padding-y: spacing.$spacing-sm !default;
|
|
36
|
+
|
|
37
|
+
/// Padding ссылки (X)
|
|
38
|
+
/// @type Number
|
|
39
|
+
/// @group sidebar-menu-variables
|
|
40
|
+
$link-padding-x: spacing.$spacing-md !default;
|
|
41
|
+
|
|
42
|
+
/// Padding ссылки (Y)
|
|
43
|
+
/// @type Number
|
|
44
|
+
/// @group sidebar-menu-variables
|
|
45
|
+
$link-padding-y: spacing.$spacing-sm !default;
|
|
46
|
+
|
|
47
|
+
/// Толщина левой границы ссылки
|
|
48
|
+
/// @type Number
|
|
49
|
+
/// @group sidebar-menu-variables
|
|
50
|
+
$link-border-width: 2px !default;
|
|
51
|
+
|
|
52
|
+
/// Transition duration
|
|
53
|
+
/// @type Number
|
|
54
|
+
/// @group sidebar-menu-variables
|
|
55
|
+
$transition-duration: animations.$duration-fast !default;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// STATS CARD — BASE
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/stats-card/_base.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Базовые миксины карточки статистики
|
|
8
|
+
/// @group stats-card-base
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../typography";
|
|
13
|
+
@use "../spacing";
|
|
14
|
+
@use "../mixins";
|
|
15
|
+
@use "../breakpoints";
|
|
16
|
+
@use "variables" as *;
|
|
17
|
+
|
|
18
|
+
// ─────────────────────────────────────────
|
|
19
|
+
// БАЗОВЫЕ МИКСИНЫ
|
|
20
|
+
// ─────────────────────────────────────────
|
|
21
|
+
|
|
22
|
+
/// Базовые стили карточки (обёртка)
|
|
23
|
+
/// @output Стили контейнера с относительным позиционированием
|
|
24
|
+
/// @group stats-card-base
|
|
25
|
+
@mixin base {
|
|
26
|
+
position: relative;
|
|
27
|
+
padding-left: $offset;
|
|
28
|
+
padding-top: $offset;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/// Иконка карточки
|
|
32
|
+
/// @param {String} $color [primary] - Цвет иконки
|
|
33
|
+
/// @output Стили иконки с абсолютным позиционированием
|
|
34
|
+
/// @group stats-card-base
|
|
35
|
+
@mixin icon($color: primary) {
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 0;
|
|
38
|
+
left: 0;
|
|
39
|
+
z-index: 1;
|
|
40
|
+
|
|
41
|
+
width: $icon-size;
|
|
42
|
+
height: $icon-size;
|
|
43
|
+
|
|
44
|
+
@include mixins.text-color($color);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Контент карточки
|
|
48
|
+
/// @param {String} $bg-color [background-section] - Фон
|
|
49
|
+
/// @output Стили контента с backdrop-filter
|
|
50
|
+
/// @group stats-card-base
|
|
51
|
+
@mixin content($bg-color: background-section) {
|
|
52
|
+
height: 100%;
|
|
53
|
+
padding: $padding;
|
|
54
|
+
border-radius: $radius;
|
|
55
|
+
|
|
56
|
+
@include mixins.bg-color($bg-color);
|
|
57
|
+
backdrop-filter: blur(10px);
|
|
58
|
+
-webkit-backdrop-filter: blur(10px);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/// Число/значение
|
|
62
|
+
/// @param {String} $color [accent] - Цвет числа
|
|
63
|
+
/// @output Стили крупного числа
|
|
64
|
+
/// @group stats-card-base
|
|
65
|
+
@mixin value($color: accent) {
|
|
66
|
+
display: block;
|
|
67
|
+
margin-bottom: spacing.$spacing-sm;
|
|
68
|
+
|
|
69
|
+
font-size: typography.$font-size-4xl;
|
|
70
|
+
font-weight: typography.$font-weight-extrabold;
|
|
71
|
+
line-height: typography.$line-height-none;
|
|
72
|
+
|
|
73
|
+
background-color: transparent;
|
|
74
|
+
|
|
75
|
+
@include mixins.text-color($color);
|
|
76
|
+
|
|
77
|
+
@include breakpoints.xl-down {
|
|
78
|
+
font-size: typography.$font-size-3xl;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@include breakpoints.lg-down {
|
|
82
|
+
font-size: typography.$font-size-2xl;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Описание
|
|
87
|
+
/// @param {String} $color [foreground] - Цвет текста
|
|
88
|
+
/// @output Стили описания
|
|
89
|
+
/// @group stats-card-base
|
|
90
|
+
@mixin description($color: foreground) {
|
|
91
|
+
font-size: typography.$font-size-lg;
|
|
92
|
+
line-height: typography.$line-height-relaxed;
|
|
93
|
+
|
|
94
|
+
@include mixins.text-color($color);
|
|
95
|
+
|
|
96
|
+
@include breakpoints.lg-down {
|
|
97
|
+
font-size: typography.$font-size-base;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// STATS CARD — INDEX
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/stats-card/_index.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Точка входа модуля карточки статистики
|
|
8
|
+
/// Экспортирует все переменные и миксины
|
|
9
|
+
/// @group stats-card
|
|
10
|
+
/// @author MOEXP Team
|
|
11
|
+
////
|
|
12
|
+
|
|
13
|
+
// ─────────────────────────────────────────
|
|
14
|
+
// EXPORTS
|
|
15
|
+
// ─────────────────────────────────────────
|
|
16
|
+
|
|
17
|
+
/// Переменные
|
|
18
|
+
/// @see stats-card/_variables.scss
|
|
19
|
+
@forward "variables";
|
|
20
|
+
|
|
21
|
+
/// Базовые миксины
|
|
22
|
+
/// @see stats-card/_base.scss
|
|
23
|
+
@forward "base";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// STATS CARD — VARIABLES
|
|
3
|
+
// local/common/theme-moexp/src/scss/abstracts/stats-card/_variables.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Переменные карточки статистики
|
|
8
|
+
/// @group stats-card-variables
|
|
9
|
+
/// @author MOEXP Team
|
|
10
|
+
////
|
|
11
|
+
|
|
12
|
+
@use "../spacing";
|
|
13
|
+
|
|
14
|
+
/// Размер иконки
|
|
15
|
+
/// @type Number
|
|
16
|
+
/// @group stats-card-variables
|
|
17
|
+
$icon-size: 7rem !default;
|
|
18
|
+
|
|
19
|
+
/// Отступ карточки от иконки (top, left)
|
|
20
|
+
/// @type Number
|
|
21
|
+
/// @group stats-card-variables
|
|
22
|
+
$offset: 3rem !default;
|
|
23
|
+
|
|
24
|
+
/// Padding контента
|
|
25
|
+
/// @type List
|
|
26
|
+
/// @group stats-card-variables
|
|
27
|
+
$padding: spacing.$spacing-3xl spacing.$spacing-lg !default;
|
|
28
|
+
|
|
29
|
+
/// Скругления карточки (асимметричные)
|
|
30
|
+
/// @type List
|
|
31
|
+
/// @group stats-card-variables
|
|
32
|
+
$radius: spacing.$spacing-2xl spacing.$spacing-md spacing.$spacing-2xl spacing.$spacing-md !default;
|