@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,182 @@
1
+ // ============================================
2
+ // FILE CARD — CSS Classes
3
+ // local/common/theme-moexp/src/scss/components/_file-card.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// File Card — карточка файла для скачивания
8
+ /// CSS классы для использования в шаблонах Bitrix
9
+ /// @group components-file-card
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "../abstracts/file-card" as fc;
14
+ @use "../abstracts/mixins";
15
+ @use "../abstracts/spacing";
16
+ @use "../abstracts/typography";
17
+ @use "../abstracts/radius";
18
+ @use "../abstracts/breakpoints";
19
+
20
+ // ============================================
21
+ // LIST
22
+ // ============================================
23
+
24
+ // ============================================
25
+ // LIST
26
+ // ============================================
27
+
28
+ .file-list {
29
+ @include fc.list;
30
+
31
+ > .file-item:not(:last-child) {
32
+ border-bottom: 1px solid;
33
+ @include mixins.border-color-hsl(border, 0.5);
34
+ }
35
+
36
+ // вложенный список
37
+ &--nested {
38
+ @include fc.nested;
39
+ border: 0;
40
+ border-radius: 0;
41
+ background: transparent;
42
+
43
+ > .file-item:not(:last-child) {
44
+ border-bottom: 0;
45
+ }
46
+ }
47
+ }
48
+
49
+ // позиция списка
50
+ .file-item {
51
+ margin: 0;
52
+ padding: 0;
53
+
54
+ &--group {
55
+ // группа = единый визуальный блок
56
+ > .file-card {
57
+ border-bottom: 0;
58
+ }
59
+ }
60
+ }
61
+
62
+ // ============================================
63
+ // CARD
64
+ // ============================================
65
+
66
+ .file-card {
67
+ @include fc.card;
68
+
69
+ // ──────────────────────────────
70
+ // Элементы
71
+ // ──────────────────────────────
72
+
73
+ &__icon {
74
+ @include fc.icon;
75
+
76
+ svg {
77
+ @include fc.icon-color(accent);
78
+ }
79
+ }
80
+
81
+ &__content {
82
+ @include fc.content;
83
+ }
84
+
85
+ &__title {
86
+ @include fc.title(foreground);
87
+ }
88
+
89
+ &__description {
90
+ @include fc.description(foreground-muted);
91
+ }
92
+
93
+ &__actions {
94
+ @include fc.actions;
95
+ }
96
+
97
+ &__meta {
98
+ @include fc.meta;
99
+ }
100
+
101
+ &__date {
102
+ @include fc.date(foreground-muted);
103
+ }
104
+
105
+ &__size {
106
+ @include fc.size(foreground-caption);
107
+ }
108
+
109
+ &__download {
110
+ @include fc.download;
111
+ }
112
+
113
+ // ──────────────────────────────
114
+ // Вложенная карточка
115
+ // ──────────────────────────────
116
+
117
+ &--nested {
118
+ @include fc.card-nested;
119
+
120
+ .file-card__icon {
121
+ width: fc.$icon-size-nested;
122
+ height: fc.$icon-size-nested;
123
+
124
+ svg {
125
+ width: fc.$icon-svg-size-nested;
126
+ height: fc.$icon-svg-size-nested;
127
+ }
128
+ }
129
+
130
+ .file-card__download {
131
+ width: fc.$download-size-nested;
132
+ height: fc.$download-size-nested;
133
+ }
134
+
135
+ .file-card__title {
136
+ font-size: typography.$font-size-sm;
137
+ margin-bottom: spacing.$spacing-2xs;
138
+ }
139
+
140
+ .file-card__description {
141
+ font-size: typography.$font-size-xs;
142
+ }
143
+ }
144
+
145
+ // ──────────────────────────────
146
+ // Модификаторы
147
+ // ──────────────────────────────
148
+
149
+ &--compact {
150
+ .file-card__title {
151
+ margin-bottom: 0;
152
+ }
153
+ }
154
+
155
+ &--static {
156
+ &:hover {
157
+ background-color: transparent;
158
+ }
159
+ }
160
+ }
161
+
162
+ // ============================================
163
+ // STANDALONE (вне списка)
164
+ // ============================================
165
+
166
+ .file-card--standalone {
167
+ @include mixins.bg-color(background-card);
168
+ @include mixins.border-hsl(1px, solid, border, 0.5);
169
+ @include radius.rounded(sm);
170
+ overflow: hidden;
171
+ }
172
+
173
+ // ============================================
174
+ // ACCESSIBILITY
175
+ // ============================================
176
+
177
+ @media (prefers-reduced-motion: reduce) {
178
+ .file-card,
179
+ .file-card__download {
180
+ transition: none !important;
181
+ }
182
+ }
@@ -0,0 +1,103 @@
1
+ // ============================================
2
+ // HERO COMPONENT
3
+ // local/common/theme-moexp/src/scss/components/_hero.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Hero — Hero-секция с фоновым изображением
8
+ ///
9
+ /// Готовые CSS-классы для использования в HTML.
10
+ /// Для кастомизации используйте миксины из abstracts/hero.
11
+ ///
12
+ /// @group components-hero
13
+ /// @author MOEXP Team
14
+ /// @since 1.0.0
15
+ ///
16
+ /// @example html - Базовая структура
17
+ /// <section class="hero">
18
+ /// <picture class="hero__bg">
19
+ /// <source srcset="image.webp" type="image/webp">
20
+ /// <img src="image.jpg" alt="" width="1920" height="600">
21
+ /// </picture>
22
+ ///
23
+ /// <div class="container">
24
+ /// <div class="hero__container">
25
+ /// <h1 class="hero__title">Заголовок</h1>
26
+ /// <p class="hero__subtitle">Подзаголовок</p>
27
+ /// <div class="hero__actions">
28
+ /// <a href="#" class="hero__actions-btn btn btn--primary">Кнопка 1</a>
29
+ /// <a href="#" class="hero__actions-btn btn btn--outline">Кнопка 2</a>
30
+ /// </div>
31
+ /// </div>
32
+ /// </div>
33
+ /// </section>
34
+ ////
35
+
36
+ @use "../abstracts/hero" as hero;
37
+ @use "../abstracts/typography";
38
+ @use "../font-vars" as fonts;
39
+
40
+ // ============================================
41
+ // BASE
42
+ // ============================================
43
+
44
+ /// Hero секция
45
+ /// @output position: relative, overflow: hidden, overlay
46
+ .hero {
47
+ @include hero.hero;
48
+
49
+ // ----------------------------------------
50
+ // CONTAINER
51
+ // ----------------------------------------
52
+
53
+ /// Контейнер контента Hero
54
+ /// @output max-width, padding, z-index
55
+ &__container {
56
+ @include hero.hero-container;
57
+ }
58
+
59
+ // ----------------------------------------
60
+ // TITLE
61
+ // ----------------------------------------
62
+
63
+ /// Заголовок Hero (h1)
64
+ /// @output Адаптивный размер, color
65
+ &__title {
66
+ @include typography.hero-title($font-heading: fonts.$font-golos-text);
67
+ }
68
+
69
+ // ----------------------------------------
70
+ // SUBTITLE
71
+ // ----------------------------------------
72
+
73
+ /// Подзаголовок Hero
74
+ /// @output max-width, font-size, opacity
75
+ &__subtitle {
76
+ @include typography.hero-subtitle;
77
+ }
78
+
79
+ // ----------------------------------------
80
+ // ACTIONS
81
+ // ----------------------------------------
82
+
83
+ /// Контейнер кнопок
84
+ /// @output flex, flex-wrap, gap
85
+ &__actions {
86
+ @include hero.hero-actions;
87
+
88
+ // Кнопка внутри actions
89
+ &-btn {
90
+ @include hero.hero-actions-btn;
91
+ }
92
+ }
93
+
94
+ // ----------------------------------------
95
+ // BACKGROUND
96
+ // ----------------------------------------
97
+
98
+ /// Фоновое изображение (picture)
99
+ /// @output Абсолютное позиционирование, object-fit
100
+ &__bg {
101
+ @include hero.hero-bg;
102
+ }
103
+ }
@@ -0,0 +1,110 @@
1
+ // ============================================
2
+ // COMPONENTS INDEX
3
+ // local\common\theme-moexp\src\scss\components\_index.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Индекс CSS-компонентов темы
8
+ ///
9
+ /// Центральная точка входа для всех готовых CSS-компонентов.
10
+ /// При `@use "components"` все классы попадают в итоговый CSS.
11
+ ///
12
+ /// **Отличие от abstracts:**
13
+ /// - `abstracts/` — миксины для использования через `@include`
14
+ /// - `components/` — готовые CSS-классы для HTML
15
+ ///
16
+ /// @group components
17
+ /// @author MOEXP Team
18
+ /// @since 1.0.0
19
+ ///
20
+ /// @example scss - Подключение в main.scss
21
+ /// @use "components";
22
+ /// // → .chip, .chip--link, .chip--on-dark и т.д.
23
+ ///
24
+ /// @example html - Использование в разметке
25
+ /// <a href="tel:+74951234567" class="chip chip--link">
26
+ /// <svg class="chip__icon">...</svg>
27
+ /// <span class="chip__text">+7 (495) 123-45-67</span>
28
+ /// </a>
29
+ ////
30
+
31
+ // ─────────────────────────────────────────
32
+ // UI ELEMENTS
33
+ // ─────────────────────────────────────────
34
+
35
+ /// Chip — компактные ссылки/кнопки с иконками
36
+ /// @see components-chip
37
+ @use "chip";
38
+
39
+ /// Search Form — форма поиска с иконкой
40
+ /// @see components-search-form
41
+ @use "search-form";
42
+
43
+ /// Title — заголовки
44
+ /// @see components-section-title
45
+ @use "section-title";
46
+
47
+ /// Tag — лейбл на краточках
48
+ /// @see components-tag
49
+ @use "tag";
50
+
51
+ /// Service Card — карточки услуг
52
+ /// @see components-service-card
53
+ @use "service-card";
54
+
55
+ /// Callout — выноска с информацией
56
+ /// @see components-callout
57
+ @use "callout";
58
+
59
+ /// News Card Featured — карточка с изображением
60
+ /// @see components-news-card-featured
61
+ @use "news-card-featured";
62
+
63
+ /// News Card Compact — карточка без изображения
64
+ /// @see components-news-card-compact
65
+ @use "news-card-compact";
66
+
67
+ /// Project Card — карточки проектов
68
+ /// @see components-project-card
69
+ @use "project-card";
70
+
71
+ /// Stats Card — карточка статистики
72
+ /// @see components-stats-card
73
+ @use "stats-card";
74
+
75
+ /// Buttons — кнопки всех вариантов
76
+ /// @see components-buttons
77
+ @use "buttons";
78
+
79
+ /// Top Menu — Верхнее меню
80
+ /// @see top-nav
81
+ @forward "top-nav";
82
+
83
+ /// Hero — Hero-секция с фоном и overlay
84
+ /// @see components-hero
85
+ @use "hero";
86
+
87
+ /// Breadcrumb — навигационная цепочка
88
+ /// @see components-breadcrumb
89
+ @use "breadcrumb";
90
+
91
+ /// Sidebar Menu — боковое меню навигации
92
+ /// @see components-sidebar-menu
93
+ @use "sidebar-menu";
94
+
95
+ /// Info Card — карточка с информацией
96
+ /// @see components-info-card
97
+ @use "info-card";
98
+
99
+ /// File Card — карточка файла для скачивания
100
+ /// @see components-file-card
101
+ @use "file-card";
102
+
103
+ // ─────────────────────────────────────────
104
+ // TODO: Будущие компоненты
105
+ // ─────────────────────────────────────────
106
+
107
+ // @use "badge"; // Бейджи, метки
108
+ // @use "tag"; // Теги
109
+ // @use "avatar"; // Аватары
110
+ // @use "tooltip"; // Подсказки
@@ -0,0 +1,103 @@
1
+ // ============================================
2
+ // INFO CARD — CSS Classes
3
+ // local/common/theme-moexp/src/scss/components/_info-card.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Info Card — карточка с информацией
8
+ /// CSS классы для использования в шаблонах Bitrix
9
+ /// @group components-info-card
10
+ /// @author MOEXP Team
11
+ ////
12
+
13
+ @use "../abstracts/info-card" as ic;
14
+ @use "../abstracts/mixins";
15
+ @use "../abstracts/spacing";
16
+
17
+ // ============================================
18
+ // CSS КЛАССЫ
19
+ // ============================================
20
+
21
+ .info-card {
22
+ @include ic.base;
23
+
24
+ // ──────────────────────────────
25
+ // Элементы
26
+ // ──────────────────────────────
27
+
28
+ &__title {
29
+ @include ic.title(foreground);
30
+ }
31
+
32
+ &__highlight {
33
+ @include ic.highlight(accent);
34
+ }
35
+
36
+ &__subtitle {
37
+ @include ic.subtitle(foreground);
38
+ }
39
+
40
+ &__list {
41
+ @include ic.list;
42
+ }
43
+
44
+ &__item {
45
+ @include ic.item;
46
+ }
47
+
48
+ &__label {
49
+ @include ic.label(foreground-muted);
50
+ }
51
+
52
+ &__value {
53
+ @include ic.value(foreground);
54
+ }
55
+
56
+ // ──────────────────────────────
57
+ // Модификаторы
58
+ // ──────────────────────────────
59
+
60
+ /// Компактный вариант
61
+ &--compact {
62
+ padding: spacing.$spacing-md;
63
+
64
+ .info-card__title {
65
+ margin-bottom: spacing.$spacing-sm;
66
+ }
67
+
68
+ .info-card__highlight {
69
+ margin-bottom: spacing.$spacing-sm;
70
+ }
71
+ }
72
+
73
+ /// Без рамки
74
+ &--borderless {
75
+ border: none;
76
+ }
77
+
78
+ /// На тёмном фоне
79
+ &--on-dark {
80
+ @include mixins.bg-color(primary, 0.1);
81
+ @include mixins.border-hsl(1px, solid, primary-foreground, 0.2);
82
+
83
+ .info-card__title {
84
+ @include mixins.text-color(primary-foreground);
85
+ }
86
+
87
+ .info-card__highlight {
88
+ @include mixins.text-color(accent);
89
+ }
90
+
91
+ .info-card__subtitle {
92
+ @include mixins.text-color(primary-foreground);
93
+ }
94
+
95
+ .info-card__label {
96
+ @include mixins.text-color(primary-foreground, 0.7);
97
+ }
98
+
99
+ .info-card__value {
100
+ @include mixins.text-color(primary-foreground);
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,33 @@
1
+ // ============================================
2
+ // NEWS CARD COMPACT COMPONENT
3
+ // local/common/theme-moexp/src/scss/components/_news-card-compact.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Compact карточка новости (без изображения)
8
+ /// @group components-news-card-compact
9
+ ////
10
+
11
+ @use "../abstracts/news-card" as nc;
12
+ @use "../font-vars" as fonts;
13
+
14
+ .news-card-compact {
15
+ @include nc.news-card-base;
16
+
17
+ &__content {
18
+ @include nc.news-card-compact-content;
19
+ }
20
+
21
+ &__meta {
22
+ @include nc.news-card-meta;
23
+ }
24
+
25
+ &__title {
26
+ font-family: fonts.$font-literata;
27
+ @include nc.news-card-title($size: xl, $parent-selector: ".news-card-compact");
28
+ }
29
+
30
+ &__description {
31
+ @include nc.news-card-description;
32
+ }
33
+ }
@@ -0,0 +1,49 @@
1
+ // ============================================
2
+ // NEWS CARD FEATURED COMPONENT
3
+ // local/common/theme-moexp/src/scss/components/_news-card-featured.scss
4
+ // ============================================
5
+
6
+ ////
7
+ /// Featured карточка новости (с изображением)
8
+ /// @group components-news-card-featured
9
+ ////
10
+
11
+ @use "../abstracts/news-card" as nc;
12
+ @use "../font-vars" as fonts;
13
+
14
+ .news-card-featured {
15
+ @include nc.news-card-base;
16
+
17
+ &__grid {
18
+ @include nc.news-card-featured-grid(left);
19
+ }
20
+
21
+ &--image-right &__grid {
22
+ @include nc.news-card-featured-grid(right);
23
+ }
24
+
25
+ &__image-wrap {
26
+ @include nc.news-card-featured-image-wrap;
27
+ }
28
+
29
+ &__image {
30
+ @include nc.news-card-featured-image($parent-selector: ".news-card-featured");
31
+ }
32
+
33
+ &__content {
34
+ @include nc.news-card-content;
35
+ }
36
+
37
+ &__meta {
38
+ @include nc.news-card-meta;
39
+ }
40
+
41
+ &__title {
42
+ font-family: fonts.$font-literata;
43
+ @include nc.news-card-title($parent-selector: ".news-card-featured");
44
+ }
45
+
46
+ &__description {
47
+ @include nc.news-card-description;
48
+ }
49
+ }