@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
package/scss/api.scss ADDED
@@ -0,0 +1,12 @@
1
+ // ─────────────────────────────────────────
2
+ // ABSTRACTS (миксины, функции, переменные)
3
+ // ─────────────────────────────────────────
4
+
5
+ /// Экспорт всех абстракций для использования через @use
6
+ ///
7
+ /// @example scss
8
+ /// @use "main" as theme;
9
+ /// @include theme.pattern-stripes;
10
+ ///
11
+ /// @see abstracts
12
+ @forward "abstracts";
@@ -0,0 +1,140 @@
1
+ // ============================================
2
+ // BREADCRUMB — CSS Classes
3
+ // local/common/theme-moexp/src/scss/components/_breadcrumb.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Breadcrumb — навигационная цепочка
8
+ /// CSS классы для использования в шаблонах Bitrix
9
+ /// @group components-breadcrumb
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "../abstracts/breadcrumb" as bc;
14
+ @use "../abstracts/typography";
15
+ @use "../abstracts/spacing";
16
+ @use "../abstracts/mixins";
17
+
18
+ // ============================================
19
+ // CSS КЛАССЫ
20
+ // ============================================
21
+
22
+ .breadcrumb {
23
+ @include bc.base(0);
24
+
25
+ // ──────────────────────────────
26
+ // Элементы
27
+ // ──────────────────────────────
28
+
29
+ &__list {
30
+ @include bc.list(foreground-muted);
31
+ }
32
+
33
+ &__item {
34
+ @include bc.item;
35
+ }
36
+
37
+ &__link {
38
+ @include bc.link(foreground);
39
+ }
40
+
41
+ &__separator {
42
+ @include bc.separator(foreground-muted);
43
+ }
44
+
45
+ &__current {
46
+ @include bc.current(foreground);
47
+ }
48
+
49
+ // ──────────────────────────────
50
+ // Модификаторы размера
51
+ // ──────────────────────────────
52
+
53
+ &--sm {
54
+ .breadcrumb__list {
55
+ font-size: typography.$font-size-xs;
56
+
57
+ // Fallback
58
+ > li {
59
+ margin-right: spacing.$spacing-xs;
60
+ }
61
+
62
+ @supports (gap: 1px) {
63
+ gap: spacing.$spacing-2xs spacing.$spacing-xs;
64
+
65
+ > li {
66
+ margin-right: 0;
67
+ }
68
+ }
69
+ }
70
+
71
+ .breadcrumb__separator svg {
72
+ width: bc.$separator-size-sm;
73
+ height: bc.$separator-size-sm;
74
+ }
75
+ }
76
+
77
+ &--lg {
78
+ .breadcrumb__list {
79
+ font-size: typography.$font-size-base;
80
+
81
+ // Fallback
82
+ > li {
83
+ margin-right: spacing.$gap-md;
84
+ }
85
+
86
+ @supports (gap: 1px) {
87
+ gap: spacing.$spacing-xs spacing.$gap-md;
88
+
89
+ > li {
90
+ margin-right: 0;
91
+ }
92
+ }
93
+ }
94
+
95
+ .breadcrumb__separator svg {
96
+ width: bc.$separator-size-lg;
97
+ height: bc.$separator-size-lg;
98
+ }
99
+ }
100
+
101
+ // ──────────────────────────────
102
+ // На тёмном фоне
103
+ // ──────────────────────────────
104
+
105
+ &--on-dark {
106
+ .breadcrumb__list {
107
+ @include bc.on-dark;
108
+ }
109
+
110
+ .breadcrumb__link {
111
+ @include bc.link-on-dark;
112
+ }
113
+
114
+ .breadcrumb__separator {
115
+ @include bc.separator-on-dark;
116
+ }
117
+
118
+ .breadcrumb__current {
119
+ @include bc.current-on-dark;
120
+ }
121
+ }
122
+
123
+ // ──────────────────────────────
124
+ // Без отступа снизу
125
+ // ──────────────────────────────
126
+
127
+ &--no-margin {
128
+ margin-bottom: 0;
129
+ }
130
+ }
131
+
132
+ // ============================================
133
+ // ACCESSIBILITY
134
+ // ============================================
135
+
136
+ @media (prefers-reduced-motion: reduce) {
137
+ .breadcrumb__link {
138
+ transition: none !important;
139
+ }
140
+ }
@@ -0,0 +1,226 @@
1
+ // ============================================
2
+ // BUTTONS — CSS CLASSES
3
+ // local/common/theme-moexp/src/scss/components/_buttons.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Готовые CSS-классы кнопок
8
+ /// Используют миксины из abstracts/buttons/
9
+ ///
10
+ /// **Использование:**
11
+ /// - Напрямую в HTML: `<button class="btn-primary">Click</button>`
12
+ /// - Или через миксины в SCSS (рекомендуется для БЭМ)
13
+ ///
14
+ /// @group buttons-classes
15
+ /// @author MOEXP Team
16
+ ////
17
+
18
+ @use "../abstracts/buttons" as btn;
19
+
20
+ // ─────────────────────────────────────────
21
+ // PRIMARY
22
+ // ─────────────────────────────────────────
23
+
24
+ /// Primary кнопка — готовый класс
25
+ /// @example html
26
+ /// <button class="btn-primary">Click me</button>
27
+ /// @group buttons-classes
28
+ .btn-primary {
29
+ @include btn.btn-primary;
30
+ }
31
+
32
+ /// Primary кнопка маленькая
33
+ /// @example html
34
+ /// <button class="btn-primary--sm">Small</button>
35
+ /// @group buttons-classes
36
+ .btn-primary--sm {
37
+ @include btn.btn-primary(sm);
38
+ }
39
+
40
+ /// Primary кнопка большая
41
+ /// @example html
42
+ /// <button class="btn-primary--lg">Large</button>
43
+ /// @group buttons-classes
44
+ .btn-primary--lg {
45
+ @include btn.btn-primary(lg);
46
+ }
47
+
48
+ // ─────────────────────────────────────────
49
+ // SECONDARY
50
+ // ─────────────────────────────────────────
51
+
52
+ /// Secondary кнопка
53
+ /// @example html
54
+ /// <button class="btn-secondary">Cancel</button>
55
+ /// @group buttons-classes
56
+ .btn-secondary {
57
+ @include btn.btn-secondary;
58
+ }
59
+
60
+ /// Secondary кнопка маленькая
61
+ /// @example html
62
+ /// <button class="btn-secondary--sm">Small</button>
63
+ /// @group buttons-classes
64
+ .btn-secondary--sm {
65
+ @include btn.btn-secondary(sm);
66
+ }
67
+
68
+ /// Secondary кнопка большая
69
+ /// @example html
70
+ /// <button class="btn-secondary--lg">Large</button>
71
+ /// @group buttons-classes
72
+ .btn-secondary--lg {
73
+ @include btn.btn-secondary(lg);
74
+ }
75
+
76
+ // ─────────────────────────────────────────
77
+ // OUTLINE
78
+ // ─────────────────────────────────────────
79
+
80
+ /// Outline кнопка
81
+ /// @example html
82
+ /// <button class="btn-outline">Learn more</button>
83
+ /// @group buttons-classes
84
+ .btn-outline {
85
+ @include btn.btn-outline;
86
+ }
87
+
88
+ /// Outline кнопка маленькая
89
+ /// @example html
90
+ /// <button class="btn-outline--sm">Small</button>
91
+ /// @group buttons-classes
92
+ .btn-outline--sm {
93
+ @include btn.btn-outline($size: sm);
94
+ }
95
+
96
+ /// Outline кнопка большая
97
+ /// @example html
98
+ /// <button class="btn-outline--lg">Large</button>
99
+ /// @group buttons-classes
100
+ .btn-outline--lg {
101
+ @include btn.btn-outline($size: lg);
102
+ }
103
+
104
+ // ─────────────────────────────────────────
105
+ // GHOST
106
+ // ─────────────────────────────────────────
107
+
108
+ /// Ghost кнопка
109
+ /// @example html
110
+ /// <button class="btn-ghost">Menu item</button>
111
+ /// @group buttons-classes
112
+ .btn-ghost {
113
+ @include btn.btn-ghost;
114
+ }
115
+
116
+ /// Ghost кнопка маленькая
117
+ /// @example html
118
+ /// <button class="btn-ghost--sm">Small</button>
119
+ /// @group buttons-classes
120
+ .btn-ghost--sm {
121
+ @include btn.btn-ghost($size: sm);
122
+ }
123
+
124
+ /// Ghost кнопка большая
125
+ /// @example html
126
+ /// <button class="btn-ghost--lg">Large</button>
127
+ /// @group buttons-classes
128
+ .btn-ghost--lg {
129
+ @include btn.btn-ghost($size: lg);
130
+ }
131
+
132
+ // ─────────────────────────────────────────
133
+ // DESTRUCTIVE
134
+ // ─────────────────────────────────────────
135
+
136
+ /// Destructive кнопка
137
+ /// @example html
138
+ /// <button class="btn-destructive">Delete</button>
139
+ /// @group buttons-classes
140
+ .btn-destructive {
141
+ @include btn.btn-destructive;
142
+ }
143
+
144
+ /// Destructive кнопка маленькая
145
+ /// @example html
146
+ /// <button class="btn-destructive--sm">Small</button>
147
+ /// @group buttons-classes
148
+ .btn-destructive--sm {
149
+ @include btn.btn-destructive(sm);
150
+ }
151
+
152
+ /// Destructive кнопка большая
153
+ /// @example html
154
+ /// <button class="btn-destructive--lg">Large</button>
155
+ /// @group buttons-classes
156
+ .btn-destructive--lg {
157
+ @include btn.btn-destructive(lg);
158
+ }
159
+
160
+ // ─────────────────────────────────────────
161
+ // LINK
162
+ // ─────────────────────────────────────────
163
+
164
+ /// Link кнопка
165
+ /// @example html
166
+ /// <button class="btn-link">Read more →</button>
167
+ /// @group buttons-classes
168
+ .btn-link {
169
+ @include btn.btn-link;
170
+ }
171
+
172
+ // ─────────────────────────────────────────
173
+ // ICON
174
+ // ─────────────────────────────────────────
175
+
176
+ /// Icon кнопка
177
+ /// @example html
178
+ /// <button class="btn-icon"><svg>...</svg></button>
179
+ /// @group buttons-classes
180
+ .btn-icon {
181
+ @include btn.btn-icon;
182
+ }
183
+
184
+ /// Icon кнопка маленькая
185
+ /// @example html
186
+ /// <button class="btn-icon--sm"><svg>...</svg></button>
187
+ /// @group buttons-classes
188
+ .btn-icon--sm {
189
+ @include btn.btn-icon(sm);
190
+ }
191
+
192
+ /// Icon кнопка большая
193
+ /// @example html
194
+ /// <button class="btn-icon--lg"><svg>...</svg></button>
195
+ /// @group buttons-classes
196
+ .btn-icon--lg {
197
+ @include btn.btn-icon(lg);
198
+ }
199
+
200
+ // ─────────────────────────────────────────
201
+ // MODIFIERS
202
+ // ─────────────────────────────────────────
203
+
204
+ /// Модификатор полной ширины
205
+ /// @example html
206
+ /// <button class="btn-primary btn-full">Submit</button>
207
+ /// @group buttons-classes
208
+ .btn-full {
209
+ @include btn.btn-full;
210
+ }
211
+
212
+ /// Модификатор с иконкой
213
+ /// @example html
214
+ /// <button class="btn-primary btn-with-icon">Next <svg>...</svg></button>
215
+ /// @group buttons-classes
216
+ .btn-with-icon {
217
+ @include btn.btn-with-icon;
218
+ }
219
+
220
+ /// Модификатор loading
221
+ /// @example html
222
+ /// <button class="btn-primary btn-loading">Loading...</button>
223
+ /// @group buttons-classes
224
+ .btn-loading {
225
+ @include btn.btn-loading;
226
+ }
@@ -0,0 +1,118 @@
1
+ ////
2
+ /// Callout — информационный блок с иконкой и текстом
3
+ /// CSS-классы компонента
4
+ /// @group components-callout
5
+ /// @author MOEXP Team
6
+ ////
7
+
8
+ @use "../abstracts/callout" as callout;
9
+ @use "../abstracts/spacing";
10
+ @use "../abstracts/mixins";
11
+
12
+ // ============================================
13
+ // CSS КЛАССЫ
14
+ // ============================================
15
+
16
+ .callout {
17
+ @include callout.base(primary);
18
+
19
+ // ──────────────────────────────
20
+ // Элементы
21
+ // ──────────────────────────────
22
+
23
+ &__pattern {
24
+ @include callout.pattern;
25
+ }
26
+
27
+ &__container {
28
+ @include callout.container;
29
+ }
30
+
31
+ &__content {
32
+ @include callout.content;
33
+ }
34
+
35
+ &__icon {
36
+ @include callout.icon(accent);
37
+ }
38
+
39
+ &__text {
40
+ @include callout.text(primary-foreground);
41
+ }
42
+
43
+ &__title {
44
+ @include callout.title(primary-foreground);
45
+ }
46
+
47
+ &__subtitle {
48
+ @include callout.subtitle(primary-foreground);
49
+ }
50
+
51
+ &__action {
52
+ @include callout.action;
53
+ }
54
+
55
+ // ──────────────────────────────
56
+ // Модификаторы цвета фона
57
+ // ──────────────────────────────
58
+
59
+ /// Акцентный фон
60
+ &--accent {
61
+ @include mixins.bg-color(accent);
62
+
63
+ .callout__icon {
64
+ @include mixins.text-color(accent-foreground);
65
+ }
66
+
67
+ .callout__text,
68
+ .callout__title {
69
+ @include mixins.text-color(accent-foreground);
70
+ }
71
+
72
+ .callout__subtitle {
73
+ @include mixins.text-color(accent-foreground, 0.85);
74
+ }
75
+ }
76
+
77
+ /// Светлый фон
78
+ &--light {
79
+ @include mixins.bg-color(background-section);
80
+
81
+ .callout__icon {
82
+ @include mixins.text-color(accent);
83
+ }
84
+
85
+ .callout__text,
86
+ .callout__title {
87
+ @include mixins.text-color(foreground);
88
+ }
89
+
90
+ .callout__subtitle {
91
+ @include mixins.text-color(foreground-muted);
92
+ }
93
+ }
94
+
95
+ // ──────────────────────────────
96
+ // Без паттерна
97
+ // ──────────────────────────────
98
+
99
+ &--no-pattern {
100
+ .callout__pattern {
101
+ display: none;
102
+ }
103
+ }
104
+
105
+ // ──────────────────────────────
106
+ // Компактный вариант
107
+ // ──────────────────────────────
108
+
109
+ &--compact {
110
+ padding-top: spacing.$spacing-lg;
111
+ padding-bottom: spacing.$spacing-lg;
112
+
113
+ .callout__content {
114
+ padding-top: spacing.$spacing-md;
115
+ padding-bottom: spacing.$spacing-md;
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,56 @@
1
+ ////
2
+ /// Chip CSS Classes — готовые классы для HTML
3
+ /// @group components-chip
4
+ /// @author MOEXP Team
5
+ ////
6
+
7
+ @use "../abstracts/chip" as chip;
8
+
9
+ // ============================================
10
+ // BASE
11
+ // ============================================
12
+
13
+ .chip {
14
+ @include chip.chip-base;
15
+
16
+ &__icon {
17
+ @include chip.chip-icon;
18
+ }
19
+
20
+ &__text {
21
+ @include chip.chip-text;
22
+ }
23
+ }
24
+
25
+ // ============================================
26
+ // VARIANTS
27
+ // ============================================
28
+
29
+ .chip--link {
30
+ @include chip.chip-link;
31
+ }
32
+
33
+ .chip--on-dark {
34
+ @include chip.chip-on-dark;
35
+ }
36
+
37
+ .chip--on-light {
38
+ @include chip.chip-on-light;
39
+ }
40
+
41
+ // ============================================
42
+ // ICON ONLY
43
+ // ============================================
44
+
45
+ .chip--icon-only {
46
+ @include chip.chip-icon-only;
47
+ }
48
+
49
+ // ============================================
50
+ // DISABLED
51
+ // ============================================
52
+
53
+ .chip[aria-disabled="true"],
54
+ .chip:disabled {
55
+ @include chip.chip-disabled;
56
+ }