@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.
Files changed (103) hide show
  1. package/README.md +182 -0
  2. package/index.scss +1 -0
  3. package/package.json +10 -0
  4. package/scss/.sassdocrc +85 -0
  5. package/scss/_font-vars.scss +25 -0
  6. package/scss/_fonts.scss +139 -0
  7. package/scss/abstracts/_animations.scss +819 -0
  8. package/scss/abstracts/_breakpoints.scss +865 -0
  9. package/scss/abstracts/_colors.scss +256 -0
  10. package/scss/abstracts/_functions.scss +3 -0
  11. package/scss/abstracts/_grid.scss +816 -0
  12. package/scss/abstracts/_index.scss +134 -0
  13. package/scss/abstracts/_mixins.scss +1142 -0
  14. package/scss/abstracts/_patterns.scss +657 -0
  15. package/scss/abstracts/_radius.scss +279 -0
  16. package/scss/abstracts/_search-form.scss +271 -0
  17. package/scss/abstracts/_spacing.scss +158 -0
  18. package/scss/abstracts/_typography.scss +477 -0
  19. package/scss/abstracts/_utilities.scss +0 -0
  20. package/scss/abstracts/_variables.scss +3 -0
  21. package/scss/abstracts/breadcrumb/_base.scss +194 -0
  22. package/scss/abstracts/breadcrumb/_index.scss +12 -0
  23. package/scss/abstracts/breadcrumb/_variables.scss +54 -0
  24. package/scss/abstracts/buttons/_base.scss +92 -0
  25. package/scss/abstracts/buttons/_index.scss +31 -0
  26. package/scss/abstracts/buttons/_modifiers.scss +114 -0
  27. package/scss/abstracts/buttons/_variables.scss +98 -0
  28. package/scss/abstracts/buttons/_variants.scss +295 -0
  29. package/scss/abstracts/callout/_base.scss +142 -0
  30. package/scss/abstracts/callout/_index.scss +23 -0
  31. package/scss/abstracts/callout/_variables.scss +27 -0
  32. package/scss/abstracts/cards/_base.scss +74 -0
  33. package/scss/abstracts/cards/_blur.scss +65 -0
  34. package/scss/abstracts/cards/_featured.scss +363 -0
  35. package/scss/abstracts/cards/_hover.scss +99 -0
  36. package/scss/abstracts/cards/_index.scss +51 -0
  37. package/scss/abstracts/cards/_parts.scss +135 -0
  38. package/scss/abstracts/cards/_sizes.scss +52 -0
  39. package/scss/abstracts/cards/_variables.scss +72 -0
  40. package/scss/abstracts/cards/_variants.scss +143 -0
  41. package/scss/abstracts/cards/_vertical.scss +218 -0
  42. package/scss/abstracts/chip/_base.scss +99 -0
  43. package/scss/abstracts/chip/_icon.scss +73 -0
  44. package/scss/abstracts/chip/_index.scss +21 -0
  45. package/scss/abstracts/chip/_variables.scss +57 -0
  46. package/scss/abstracts/chip/_variants.scss +98 -0
  47. package/scss/abstracts/file-card/_base.scss +326 -0
  48. package/scss/abstracts/file-card/_index.scss +12 -0
  49. package/scss/abstracts/file-card/_variables.scss +79 -0
  50. package/scss/abstracts/hero/_base.scss +182 -0
  51. package/scss/abstracts/hero/_index.scss +23 -0
  52. package/scss/abstracts/hero/_variables.scss +59 -0
  53. package/scss/abstracts/info-card/_base.scss +152 -0
  54. package/scss/abstracts/info-card/_index.scss +12 -0
  55. package/scss/abstracts/info-card/_variables.scss +44 -0
  56. package/scss/abstracts/news-card/_base.scss +143 -0
  57. package/scss/abstracts/news-card/_compact.scss +24 -0
  58. package/scss/abstracts/news-card/_featured.scss +83 -0
  59. package/scss/abstracts/news-card/_index.scss +31 -0
  60. package/scss/abstracts/news-card/_variables.scss +44 -0
  61. package/scss/abstracts/project-card/_base.scss +109 -0
  62. package/scss/abstracts/project-card/_index.scss +23 -0
  63. package/scss/abstracts/project-card/_variables.scss +20 -0
  64. package/scss/abstracts/search-form/_base.scss +132 -0
  65. package/scss/abstracts/search-form/_composite.scss +54 -0
  66. package/scss/abstracts/search-form/_index.scss +31 -0
  67. package/scss/abstracts/search-form/_theme.scss +89 -0
  68. package/scss/abstracts/search-form/_variables.scss +39 -0
  69. package/scss/abstracts/section-title/_base.scss +127 -0
  70. package/scss/abstracts/section-title/_index.scss +23 -0
  71. package/scss/abstracts/section-title/_variables.scss +27 -0
  72. package/scss/abstracts/service-card/_base.scss +77 -0
  73. package/scss/abstracts/service-card/_index.scss +23 -0
  74. package/scss/abstracts/service-card/_variables.scss +23 -0
  75. package/scss/abstracts/sidebar-menu/_base.scss +148 -0
  76. package/scss/abstracts/sidebar-menu/_index.scss +12 -0
  77. package/scss/abstracts/sidebar-menu/_variables.scss +55 -0
  78. package/scss/abstracts/stats-card/_base.scss +99 -0
  79. package/scss/abstracts/stats-card/_index.scss +23 -0
  80. package/scss/abstracts/stats-card/_variables.scss +32 -0
  81. package/scss/api.scss +12 -0
  82. package/scss/components/_breadcrumb.scss +140 -0
  83. package/scss/components/_buttons.scss +226 -0
  84. package/scss/components/_callout.scss +118 -0
  85. package/scss/components/_chip.scss +56 -0
  86. package/scss/components/_file-card.scss +182 -0
  87. package/scss/components/_hero.scss +103 -0
  88. package/scss/components/_index.scss +110 -0
  89. package/scss/components/_info-card.scss +103 -0
  90. package/scss/components/_news-card-compact.scss +33 -0
  91. package/scss/components/_news-card-featured.scss +49 -0
  92. package/scss/components/_news-card.scss +303 -0
  93. package/scss/components/_project-card.scss +93 -0
  94. package/scss/components/_search-form.scss +181 -0
  95. package/scss/components/_section-title.scss +94 -0
  96. package/scss/components/_service-card.scss +83 -0
  97. package/scss/components/_sidebar-menu.scss +82 -0
  98. package/scss/components/_stats-card.scss +92 -0
  99. package/scss/components/_tag.scss +144 -0
  100. package/scss/components/_top-nav.scss +537 -0
  101. package/scss/main.scss +73 -0
  102. package/scss/utilities/_index.scss +40 -0
  103. 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;