@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,194 @@
1
+ // ============================================
2
+ // BREADCRUMB — BASE
3
+ // local/common/theme-moexp/src/scss/abstracts/breadcrumb/_base.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Базовые миксины breadcrumb
8
+ /// @group breadcrumb-base
9
+ /// @author MOEXP Team
10
+ ////
11
+
12
+ @use "../typography";
13
+ @use "../spacing";
14
+ @use "../mixins";
15
+ @use "../animations";
16
+ @use "../breakpoints";
17
+ @use "variables" as *;
18
+
19
+ // ─────────────────────────────────────────
20
+ // CONTAINER (nav)
21
+ // ─────────────────────────────────────────
22
+
23
+ /// Базовые стили контейнера nav
24
+ /// @param {Number} $mb [$margin-bottom] - Отступ снизу
25
+ /// @output margin-bottom
26
+ /// @group breadcrumb-base
27
+ @mixin base($mb: $margin-bottom) {
28
+ margin-bottom: $mb;
29
+ }
30
+
31
+ // ─────────────────────────────────────────
32
+ // LIST (ol)
33
+ // ─────────────────────────────────────────
34
+
35
+ /// Стили списка ol с fallback для gap
36
+ /// @param {String} $color [foreground-muted] - Цвет текста
37
+ /// @output Flex с gap и fallback
38
+ /// @group breadcrumb-base
39
+ @mixin list($color: foreground-muted) {
40
+ display: flex;
41
+ flex-wrap: wrap;
42
+ align-items: center;
43
+ list-style: none;
44
+ margin: 0;
45
+ padding: 0;
46
+
47
+ font-size: typography.$font-size-sm;
48
+ line-height: typography.$line-height-normal;
49
+ overflow-wrap: break-word;
50
+
51
+ @include mixins.text-color($color);
52
+
53
+ // Fallback для gap (mobile)
54
+ > li {
55
+ margin-right: $gap-mobile;
56
+ margin-bottom: $gap-vertical;
57
+
58
+ &:last-child {
59
+ margin-right: 0;
60
+ }
61
+ }
62
+
63
+ // Modern gap (mobile)
64
+ @supports (gap: 1px) {
65
+ gap: $gap-vertical $gap-mobile;
66
+
67
+ > li {
68
+ margin-right: 0;
69
+ margin-bottom: 0;
70
+ }
71
+ }
72
+
73
+ // Desktop: увеличенный gap
74
+ @include breakpoints.sm {
75
+ // Fallback
76
+ > li {
77
+ margin-right: $gap;
78
+ }
79
+
80
+ // Modern
81
+ @supports (gap: 1px) {
82
+ gap: $gap-vertical $gap;
83
+
84
+ > li {
85
+ margin-right: 0;
86
+ }
87
+ }
88
+ }
89
+ }
90
+
91
+ // ─────────────────────────────────────────
92
+ // ITEM (li)
93
+ // ─────────────────────────────────────────
94
+
95
+ /// Стили элемента li
96
+ /// @output Inline-flex с выравниванием
97
+ /// @group breadcrumb-base
98
+ @mixin item {
99
+ display: inline-flex;
100
+ align-items: center;
101
+ }
102
+
103
+ // ─────────────────────────────────────────
104
+ // LINK (a)
105
+ // ─────────────────────────────────────────
106
+
107
+ /// Стили ссылки
108
+ /// @param {String} $hover-color [foreground] - Цвет при hover
109
+ /// @output Ссылка с transition и focus
110
+ /// @group breadcrumb-base
111
+ @mixin link($hover-color: foreground) {
112
+ color: inherit;
113
+ text-decoration: none;
114
+
115
+ @include animations.transition(color, $transition-duration);
116
+
117
+ &:hover {
118
+ @include mixins.text-color($hover-color);
119
+ }
120
+
121
+ &:focus-visible {
122
+ @include mixins.focus-ring(ring, 2px, 2px);
123
+ }
124
+ }
125
+
126
+ // ─────────────────────────────────────────
127
+ // SEPARATOR (li с svg)
128
+ // ─────────────────────────────────────────
129
+
130
+ /// Стили разделителя
131
+ /// @param {String} $color [foreground-muted] - Цвет иконки
132
+ /// @param {Number} $size [$separator-size] - Размер иконки
133
+ /// @output Стили для контейнера SVG
134
+ /// @group breadcrumb-base
135
+ @mixin separator($color: foreground-muted, $size: $separator-size) {
136
+ display: inline-flex;
137
+ align-items: center;
138
+ flex-shrink: 0;
139
+
140
+ @include mixins.text-color($color);
141
+
142
+ svg {
143
+ width: $size;
144
+ height: $size;
145
+ }
146
+ }
147
+
148
+ // ─────────────────────────────────────────
149
+ // CURRENT (span)
150
+ // ─────────────────────────────────────────
151
+
152
+ /// Стили текущей страницы
153
+ /// @param {String} $color [foreground] - Цвет текста
154
+ /// @output Стили текущего элемента
155
+ /// @group breadcrumb-base
156
+ @mixin current($color: foreground) {
157
+ font-weight: typography.$font-weight-normal;
158
+
159
+ @include mixins.text-color($color);
160
+ }
161
+
162
+ // ─────────────────────────────────────────
163
+ // VARIANTS
164
+ // ─────────────────────────────────────────
165
+
166
+ /// Вариант на тёмном фоне
167
+ /// @output Переопределение цветов для dark theme
168
+ /// @group breadcrumb-base
169
+ @mixin on-dark {
170
+ @include mixins.text-color(primary-foreground, 0.6);
171
+ }
172
+
173
+ /// Ссылка на тёмном фоне
174
+ /// @output Hover цвет для dark
175
+ /// @group breadcrumb-base
176
+ @mixin link-on-dark {
177
+ &:hover {
178
+ @include mixins.text-color(primary-foreground);
179
+ }
180
+ }
181
+
182
+ /// Разделитель на тёмном фоне
183
+ /// @output Цвет разделителя для dark
184
+ /// @group breadcrumb-base
185
+ @mixin separator-on-dark {
186
+ @include mixins.text-color(primary-foreground, 0.4);
187
+ }
188
+
189
+ /// Текущий элемент на тёмном фоне
190
+ /// @output Цвет current для dark
191
+ /// @group breadcrumb-base
192
+ @mixin current-on-dark {
193
+ @include mixins.text-color(primary-foreground);
194
+ }
@@ -0,0 +1,12 @@
1
+ // ============================================
2
+ // BREADCRUMB — INDEX
3
+ // local/common/theme-moexp/src/scss/abstracts/breadcrumb/_index.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Экспорт модуля breadcrumb
8
+ /// @group breadcrumb
9
+ ////
10
+
11
+ @forward "variables";
12
+ @forward "base";
@@ -0,0 +1,54 @@
1
+ // ============================================
2
+ // BREADCRUMB — VARIABLES
3
+ // local/common/theme-moexp/src/scss/abstracts/breadcrumb/_variables.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Переменные компонента breadcrumb
8
+ /// @group breadcrumb-variables
9
+ /// @author MOEXP Team
10
+ ////
11
+
12
+ @use "../spacing";
13
+ @use "../typography";
14
+ @use "../animations";
15
+
16
+ /// Отступ снизу компонента
17
+ /// @type Number
18
+ /// @group breadcrumb-variables
19
+ $margin-bottom: spacing.$spacing-lg !default;
20
+
21
+ /// Gap между элементами (desktop)
22
+ /// @type Number
23
+ /// @group breadcrumb-variables
24
+ $gap: spacing.$gap-sm !default;
25
+
26
+ /// Gap между элементами (mobile)
27
+ /// @type Number
28
+ /// @group breadcrumb-variables
29
+ $gap-mobile: spacing.$spacing-xs !default;
30
+
31
+ /// Вертикальный gap при переносе
32
+ /// @type Number
33
+ /// @group breadcrumb-variables
34
+ $gap-vertical: spacing.$spacing-2xs !default;
35
+
36
+ /// Размер иконки-разделителя
37
+ /// @type Number
38
+ /// @group breadcrumb-variables
39
+ $separator-size: 0.875rem !default;
40
+
41
+ /// Размер иконки (sm)
42
+ /// @type Number
43
+ /// @group breadcrumb-variables
44
+ $separator-size-sm: 0.75rem !default;
45
+
46
+ /// Размер иконки (lg)
47
+ /// @type Number
48
+ /// @group breadcrumb-variables
49
+ $separator-size-lg: 1rem !default;
50
+
51
+ /// Transition duration
52
+ /// @type Number
53
+ /// @group breadcrumb-variables
54
+ $transition-duration: animations.$duration-fast !default;
@@ -0,0 +1,92 @@
1
+ // ============================================
2
+ // BUTTONS — BASE
3
+ // local/common/theme-moexp/src/scss/abstracts/buttons/_base.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Базовый миксин кнопки
8
+ /// Фундамент для всех вариантов кнопок
9
+ /// @group buttons-base
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "sass:map";
14
+ @use "../colors";
15
+ @use "../mixins";
16
+ @use "../animations";
17
+ @use "variables" as *;
18
+
19
+ // ─────────────────────────────────────────
20
+ // БАЗОВЫЙ МИКСИН
21
+ // ─────────────────────────────────────────
22
+
23
+ /// Базовые стили кнопки — используется всеми вариантами
24
+ /// Включает: display, padding, typography, transition, focus, active, disabled
25
+ /// @param {String} $size [md] - Размер кнопки: sm, md, lg
26
+ /// @require {variable} $btn-sizes
27
+ /// @require {variable} $btn-font-weight
28
+ /// @require {variable} $btn-line-height
29
+ /// @require {variable} $btn-transition-duration
30
+ /// @require {mixin} animations.transition
31
+ /// @require {mixin} mixins.focus-ring
32
+ /// @example scss - Создание кастомной кнопки
33
+ /// .my-button {
34
+ /// @include btn-base('lg');
35
+ /// background: purple;
36
+ /// color: white;
37
+ /// }
38
+ /// @example scss - Использование в варианте
39
+ /// @mixin btn-custom($size: md) {
40
+ /// @include btn-base($size);
41
+ /// // кастомные стили...
42
+ /// }
43
+ /// @output Базовые стили кнопки с states (focus, active, disabled)
44
+ /// @group buttons-base
45
+ /// @access public
46
+ @mixin btn-base($size: md) {
47
+ $config: map.get($btn-sizes, $size);
48
+
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ gap: 0.5rem;
53
+
54
+ padding: map.get($config, padding-y) map.get($config, padding-x);
55
+
56
+ font-family: inherit;
57
+ font-weight: $btn-font-weight;
58
+ font-size: map.get($config, font-size);
59
+ line-height: $btn-line-height;
60
+ text-decoration: none;
61
+ white-space: nowrap;
62
+
63
+ border: none;
64
+ border-radius: map.get($config, border-radius);
65
+ cursor: pointer;
66
+
67
+ @include animations.transition((background-color, color, border-color, box-shadow, transform), $btn-transition-duration);
68
+
69
+ // Focus — убираем дефолтный outline
70
+ &:focus {
71
+ outline: none;
72
+ }
73
+
74
+ // Focus-visible — кастомный ring для клавиатурной навигации
75
+ &:focus-visible {
76
+ @include mixins.focus-ring(ring);
77
+ }
78
+
79
+ // Active — микро-эффект нажатия
80
+ &:active:not(:disabled) {
81
+ transform: scale(0.98);
82
+ }
83
+
84
+ // Disabled — все варианты отключённого состояния
85
+ &:disabled,
86
+ &[disabled],
87
+ &--disabled {
88
+ opacity: 0.5;
89
+ cursor: not-allowed;
90
+ pointer-events: none;
91
+ }
92
+ }
@@ -0,0 +1,31 @@
1
+ // ============================================
2
+ // BUTTONS — INDEX
3
+ // local/common/theme-moexp/src/scss/abstracts/buttons/_index.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Точка входа модуля кнопок
8
+ /// Экспортирует все переменные и миксины
9
+ /// @group buttons
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ // ─────────────────────────────────────────
14
+ // EXPORTS
15
+ // ─────────────────────────────────────────
16
+
17
+ /// Переменные кнопок
18
+ /// @see buttons/_variables.scss
19
+ @forward "variables";
20
+
21
+ /// Базовый миксин
22
+ /// @see buttons/_base.scss
23
+ @forward "base";
24
+
25
+ /// Варианты кнопок
26
+ /// @see buttons/_variants.scss
27
+ @forward "variants";
28
+
29
+ /// Модификаторы кнопок
30
+ /// @see buttons/_modifiers.scss
31
+ @forward "modifiers";
@@ -0,0 +1,114 @@
1
+ // ============================================
2
+ // BUTTONS — MODIFIERS
3
+ // local/common/theme-moexp/src/scss/abstracts/buttons/_modifiers.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Модификаторы кнопок
8
+ /// Дополнительные миксины для расширения вариантов
9
+ /// @group buttons-modifiers
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "../mixins";
14
+ @use "variables" as *;
15
+
16
+ // ─────────────────────────────────────────
17
+ // FULL WIDTH
18
+ // ─────────────────────────────────────────
19
+
20
+ /// Кнопка на всю ширину контейнера
21
+ /// @example scss
22
+ /// .form__submit {
23
+ /// @include btn-primary;
24
+ /// @include btn-full;
25
+ /// }
26
+ /// @example html
27
+ /// <button class="form__submit">Отправить</button>
28
+ /// @output width: 100%;
29
+ /// @group buttons-modifiers
30
+ /// @access public
31
+ @mixin btn-full {
32
+ width: 100%;
33
+ }
34
+
35
+ // ─────────────────────────────────────────
36
+ // WITH ICON
37
+ // ─────────────────────────────────────────
38
+
39
+ /// Кнопка с иконкой — правильные размеры для svg/icon
40
+ /// @example scss
41
+ /// .btn-with-arrow {
42
+ /// @include btn-primary;
43
+ /// @include btn-with-icon;
44
+ /// }
45
+ /// @example html
46
+ /// <button class="btn-with-arrow">
47
+ /// Next <svg>...</svg>
48
+ /// </button>
49
+ /// @output svg, .icon { flex-shrink: 0; width/height: 1.25em }
50
+ /// @group buttons-modifiers
51
+ /// @access public
52
+ @mixin btn-with-icon {
53
+ svg,
54
+ .icon {
55
+ flex-shrink: 0;
56
+ width: 1.25em;
57
+ height: 1.25em;
58
+ }
59
+ }
60
+
61
+ // ─────────────────────────────────────────
62
+ // LOADING
63
+ // ─────────────────────────────────────────
64
+
65
+ /// Loading состояние кнопки — спиннер поверх текста
66
+ /// Скрывает текст, показывает анимированный спиннер
67
+ /// @require {mixin} mixins.border-color-hsl
68
+ /// @example scss
69
+ /// .btn-submit {
70
+ /// @include btn-primary;
71
+ ///
72
+ /// &.is-loading {
73
+ /// @include btn-loading;
74
+ /// }
75
+ /// }
76
+ /// @example html
77
+ /// <button class="btn-submit is-loading">Submitting...</button>
78
+ /// @output Спиннер поверх прозрачного текста
79
+ /// @group buttons-modifiers
80
+ /// @access public
81
+ @mixin btn-loading {
82
+ position: relative;
83
+ color: transparent !important;
84
+ pointer-events: none;
85
+
86
+ &::after {
87
+ content: "";
88
+ position: absolute;
89
+ width: 1.25em;
90
+ height: 1.25em;
91
+ border: 2px solid currentColor;
92
+ border-right-color: transparent;
93
+ border-radius: 50%;
94
+ animation: btn-spin 0.6s linear infinite;
95
+
96
+ // Возвращаем цвет для спиннера
97
+ @include mixins.border-color-hsl(accent-foreground, 0.8);
98
+ border-right-color: transparent;
99
+ }
100
+ }
101
+
102
+ // ─────────────────────────────────────────
103
+ // KEYFRAMES
104
+ // ─────────────────────────────────────────
105
+
106
+ /// Keyframes для спиннера (вызвать один раз в компоненте)
107
+ /// @group buttons-modifiers
108
+ @mixin btn-spin-keyframes {
109
+ @keyframes btn-spin {
110
+ to {
111
+ transform: rotate(360deg);
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,98 @@
1
+ // ============================================
2
+ // BUTTONS — VARIABLES
3
+ // local/common/theme-moexp/src/scss/abstracts/buttons/_variables.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Переменные системы кнопок
8
+ /// Токены дизайна для размеров, отступов и типографики кнопок
9
+ /// @group buttons-variables
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "sass:map";
14
+
15
+ // ─────────────────────────────────────────
16
+ // БАЗОВЫЕ ПЕРЕМЕННЫЕ
17
+ // ─────────────────────────────────────────
18
+
19
+ /// Вертикальный padding кнопки по умолчанию
20
+ /// @type Number
21
+ /// @group buttons-variables
22
+ $btn-padding-y: 0.75rem !default;
23
+
24
+ /// Горизонтальный padding кнопки по умолчанию
25
+ /// @type Number
26
+ /// @group buttons-variables
27
+ $btn-padding-x: 2rem !default;
28
+
29
+ /// Размер шрифта кнопки по умолчанию
30
+ /// @type Number
31
+ /// @group buttons-variables
32
+ $btn-font-size: 1rem !default;
33
+
34
+ /// Начертание шрифта кнопки
35
+ /// @type Number
36
+ /// @group buttons-variables
37
+ $btn-font-weight: 500 !default;
38
+
39
+ /// Высота строки кнопки
40
+ /// @type Number
41
+ /// @group buttons-variables
42
+ $btn-line-height: 1.5 !default;
43
+
44
+ /// Border-radius кнопки по умолчанию
45
+ /// @type Number
46
+ /// @group buttons-variables
47
+ $btn-border-radius: 0.375rem !default;
48
+
49
+ /// Длительность transition кнопки
50
+ /// @type Number
51
+ /// @group buttons-variables
52
+ $btn-transition-duration: 200ms !default;
53
+
54
+ // ─────────────────────────────────────────
55
+ // КАРТА РАЗМЕРОВ
56
+ // ─────────────────────────────────────────
57
+
58
+ /// Карта размеров кнопок
59
+ /// @type Map
60
+ /// @prop {Map} sm - Маленькая кнопка
61
+ /// @prop {Number} sm.padding-y [0.5rem] - Вертикальный padding
62
+ /// @prop {Number} sm.padding-x [1rem] - Горизонтальный padding
63
+ /// @prop {Number} sm.font-size [0.875rem] - Размер шрифта (14px)
64
+ /// @prop {Number} sm.border-radius [0.25rem] - Скругление
65
+ /// @prop {Map} md - Средняя кнопка (по умолчанию)
66
+ /// @prop {Number} md.padding-y [0.75rem] - Вертикальный padding
67
+ /// @prop {Number} md.padding-x [2rem] - Горизонтальный padding
68
+ /// @prop {Number} md.font-size [1rem] - Размер шрифта (16px)
69
+ /// @prop {Number} md.border-radius [0.375rem] - Скругление
70
+ /// @prop {Map} lg - Большая кнопка
71
+ /// @prop {Number} lg.padding-y [1rem] - Вертикальный padding
72
+ /// @prop {Number} lg.padding-x [2.5rem] - Горизонтальный padding
73
+ /// @prop {Number} lg.font-size [1.125rem] - Размер шрифта (18px)
74
+ /// @prop {Number} lg.border-radius [0.5rem] - Скругление
75
+ /// @example scss - Получение конфига размера
76
+ /// $config: map.get($btn-sizes, 'lg');
77
+ /// padding: map.get($config, 'padding-y') map.get($config, 'padding-x');
78
+ /// @group buttons-variables
79
+ $btn-sizes: (
80
+ sm: (
81
+ padding-y: 0.5rem,
82
+ padding-x: 1rem,
83
+ font-size: 0.875rem,
84
+ border-radius: 0.25rem,
85
+ ),
86
+ md: (
87
+ padding-y: 0.75rem,
88
+ padding-x: 2rem,
89
+ font-size: 1rem,
90
+ border-radius: 0.375rem,
91
+ ),
92
+ lg: (
93
+ padding-y: 1rem,
94
+ padding-x: 2.5rem,
95
+ font-size: 1.125rem,
96
+ border-radius: 0.5rem,
97
+ ),
98
+ ) !default;