@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,83 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Service Card — карточка услуги с иконкой
|
|
3
|
+
/// CSS-классы компонента
|
|
4
|
+
/// @group components-service-card
|
|
5
|
+
/// @author MOEXP Team
|
|
6
|
+
////
|
|
7
|
+
|
|
8
|
+
@use "../abstracts/service-card" as service;
|
|
9
|
+
@use "../abstracts/spacing";
|
|
10
|
+
@use "../abstracts/mixins";
|
|
11
|
+
|
|
12
|
+
// ============================================
|
|
13
|
+
// CSS КЛАССЫ
|
|
14
|
+
// ============================================
|
|
15
|
+
|
|
16
|
+
.service-card {
|
|
17
|
+
@include service.base;
|
|
18
|
+
|
|
19
|
+
// ──────────────────────────────
|
|
20
|
+
// Элементы
|
|
21
|
+
// ──────────────────────────────
|
|
22
|
+
|
|
23
|
+
&__icon {
|
|
24
|
+
@include service.icon(accent);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&__title {
|
|
28
|
+
@include service.title(foreground);
|
|
29
|
+
|
|
30
|
+
// Hover на родителе
|
|
31
|
+
.service-card:hover &,
|
|
32
|
+
[class*="service-card"]:hover & {
|
|
33
|
+
@include mixins.text-color(accent);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__description {
|
|
38
|
+
@include service.description(foreground);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// ──────────────────────────────
|
|
42
|
+
// На тёмном фоне
|
|
43
|
+
// ──────────────────────────────
|
|
44
|
+
|
|
45
|
+
&--on-dark {
|
|
46
|
+
@include mixins.bg-color(primary, 0.1);
|
|
47
|
+
@include mixins.border-hsl(1px, solid, primary-foreground, 0.2);
|
|
48
|
+
|
|
49
|
+
&:hover {
|
|
50
|
+
@include mixins.border-color-hsl(accent, 0.6);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.service-card__icon {
|
|
54
|
+
@include mixins.text-color(accent);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.service-card__title {
|
|
58
|
+
@include mixins.text-color(primary-foreground);
|
|
59
|
+
|
|
60
|
+
.service-card:hover & {
|
|
61
|
+
@include mixins.text-color(accent);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.service-card__description {
|
|
66
|
+
@include mixins.text-color(primary-foreground, 0.75);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ──────────────────────────────
|
|
71
|
+
// С тегом (tag внутри карточки)
|
|
72
|
+
// ──────────────────────────────
|
|
73
|
+
|
|
74
|
+
&--with-tag {
|
|
75
|
+
position: relative;
|
|
76
|
+
|
|
77
|
+
.tag {
|
|
78
|
+
position: absolute;
|
|
79
|
+
top: spacing.$spacing-md;
|
|
80
|
+
right: spacing.$spacing-md;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// SIDEBAR MENU — CSS Classes
|
|
3
|
+
// local/common/theme-moexp/src/scss/components/_sidebar-menu.scss
|
|
4
|
+
// ============================================
|
|
5
|
+
|
|
6
|
+
////
|
|
7
|
+
/// Sidebar Menu — навигационное меню боковой панели
|
|
8
|
+
/// CSS классы для использования в шаблонах Bitrix
|
|
9
|
+
/// @group components-sidebar-menu
|
|
10
|
+
/// @author MOEXP Team
|
|
11
|
+
////
|
|
12
|
+
|
|
13
|
+
@use "../abstracts/sidebar-menu" as sm;
|
|
14
|
+
@use "../abstracts/mixins";
|
|
15
|
+
|
|
16
|
+
// ============================================
|
|
17
|
+
// CSS КЛАССЫ
|
|
18
|
+
// ============================================
|
|
19
|
+
|
|
20
|
+
.sidebar-menu {
|
|
21
|
+
@include sm.base;
|
|
22
|
+
|
|
23
|
+
// ──────────────────────────────
|
|
24
|
+
// Элементы
|
|
25
|
+
// ──────────────────────────────
|
|
26
|
+
|
|
27
|
+
&__header {
|
|
28
|
+
@include sm.header(primary);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&__title {
|
|
32
|
+
@include sm.title(primary-foreground);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&__nav {
|
|
36
|
+
@include sm.nav;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&__list {
|
|
40
|
+
@include sm.list;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&__item {
|
|
44
|
+
@include sm.item;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&__link {
|
|
48
|
+
@include sm.link($color: foreground-body, $hover-bg: background-section, $hover-color: accent, $border-color: accent);
|
|
49
|
+
|
|
50
|
+
&--active {
|
|
51
|
+
@include sm.link-active($bg: background-section, $color: accent, $border-color: accent);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// ──────────────────────────────
|
|
56
|
+
// Модификаторы
|
|
57
|
+
// ──────────────────────────────
|
|
58
|
+
|
|
59
|
+
/// Без заголовка
|
|
60
|
+
&--no-header {
|
|
61
|
+
.sidebar-menu__nav {
|
|
62
|
+
padding-top: sm.$nav-padding-y;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/// Компактный вариант
|
|
67
|
+
&--compact {
|
|
68
|
+
.sidebar-menu__link {
|
|
69
|
+
padding: sm.$link-padding-y * 0.75 sm.$link-padding-x;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ============================================
|
|
75
|
+
// ACCESSIBILITY
|
|
76
|
+
// ============================================
|
|
77
|
+
|
|
78
|
+
@media (prefers-reduced-motion: reduce) {
|
|
79
|
+
.sidebar-menu__link {
|
|
80
|
+
transition: none !important;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Stats Card — карточка статистики/достижений
|
|
3
|
+
/// CSS-классы компонента
|
|
4
|
+
/// @group components-stats-card
|
|
5
|
+
/// @author MOEXP Team
|
|
6
|
+
////
|
|
7
|
+
|
|
8
|
+
@use "../abstracts/stats-card" as stats;
|
|
9
|
+
@use "../abstracts/spacing";
|
|
10
|
+
@use "../abstracts/typography";
|
|
11
|
+
@use "../abstracts/mixins";
|
|
12
|
+
@use "../abstracts/breakpoints";
|
|
13
|
+
|
|
14
|
+
// ============================================
|
|
15
|
+
// CSS КЛАССЫ
|
|
16
|
+
// ============================================
|
|
17
|
+
|
|
18
|
+
.stats-card {
|
|
19
|
+
@include stats.base;
|
|
20
|
+
|
|
21
|
+
// ──────────────────────────────
|
|
22
|
+
// Элементы
|
|
23
|
+
// ──────────────────────────────
|
|
24
|
+
|
|
25
|
+
&__icon {
|
|
26
|
+
@include stats.icon(stats-icon-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&__content {
|
|
30
|
+
@include stats.content(background-section);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&__value {
|
|
34
|
+
@include stats.value(accent);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__description {
|
|
38
|
+
@include stats.description(foreground);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// ──────────────────────────────
|
|
42
|
+
// На тёмном фоне
|
|
43
|
+
// ──────────────────────────────
|
|
44
|
+
|
|
45
|
+
&--on-dark {
|
|
46
|
+
.stats-card__icon {
|
|
47
|
+
@include mixins.text-color(accent);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.stats-card__content {
|
|
51
|
+
@include mixins.bg-color(primary-foreground, 0.1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.stats-card__value {
|
|
55
|
+
@include mixins.text-color(accent);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.stats-card__description {
|
|
59
|
+
@include mixins.text-color(primary-foreground);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ──────────────────────────────
|
|
64
|
+
// Компактный вариант
|
|
65
|
+
// ──────────────────────────────
|
|
66
|
+
|
|
67
|
+
&--compact {
|
|
68
|
+
padding-left: spacing.$spacing-xl;
|
|
69
|
+
padding-top: spacing.$spacing-xl;
|
|
70
|
+
|
|
71
|
+
.stats-card__icon {
|
|
72
|
+
width: 5rem;
|
|
73
|
+
height: 5rem;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.stats-card__content {
|
|
77
|
+
padding: spacing.$spacing-2xl spacing.$spacing-md;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.stats-card__value {
|
|
81
|
+
font-size: typography.$font-size-3xl;
|
|
82
|
+
|
|
83
|
+
@include breakpoints.lg-down {
|
|
84
|
+
font-size: typography.$font-size-2xl;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.stats-card__description {
|
|
89
|
+
font-size: typography.$font-size-base;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Tag — метка/badge для категоризации
|
|
3
|
+
/// Используется в карточках услуг, новостях и др.
|
|
4
|
+
/// @group components-tag
|
|
5
|
+
/// @author MOEXP Team
|
|
6
|
+
////
|
|
7
|
+
|
|
8
|
+
@use "../abstracts/typography";
|
|
9
|
+
@use "../abstracts/spacing";
|
|
10
|
+
@use "../abstracts/mixins";
|
|
11
|
+
@use "../abstracts/radius";
|
|
12
|
+
|
|
13
|
+
// ============================================
|
|
14
|
+
// ПЕРЕМЕННЫЕ
|
|
15
|
+
// ============================================
|
|
16
|
+
|
|
17
|
+
/// Padding тега
|
|
18
|
+
/// @type List
|
|
19
|
+
/// @group components-tag
|
|
20
|
+
$tag-padding: spacing.$spacing-xs spacing.$spacing-sm !default;
|
|
21
|
+
|
|
22
|
+
/// Размер шрифта
|
|
23
|
+
/// @type Number
|
|
24
|
+
/// @group components-tag
|
|
25
|
+
$tag-font-size: typography.$font-size-xs !default;
|
|
26
|
+
|
|
27
|
+
// ============================================
|
|
28
|
+
// МИКСИНЫ
|
|
29
|
+
// ============================================
|
|
30
|
+
|
|
31
|
+
/// Базовые стили тега
|
|
32
|
+
/// @param {String} $bg-color [background-section] - Фон
|
|
33
|
+
/// @param {String} $text-color [foreground-muted] - Цвет текста
|
|
34
|
+
/// @output Стили badge/tag
|
|
35
|
+
/// @group components-tag
|
|
36
|
+
@mixin tag-base($bg-color: background-section, $text-color: foreground-muted) {
|
|
37
|
+
display: inline-block;
|
|
38
|
+
padding: $tag-padding;
|
|
39
|
+
|
|
40
|
+
font-size: $tag-font-size;
|
|
41
|
+
font-weight: typography.$font-weight-semibold;
|
|
42
|
+
line-height: typography.$line-height-normal;
|
|
43
|
+
|
|
44
|
+
@include mixins.bg-color($bg-color);
|
|
45
|
+
@include mixins.text-color($text-color);
|
|
46
|
+
@include radius.rounded(sm);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/// Тег с абсолютным позиционированием (для карточек)
|
|
50
|
+
/// @param {String} $position [top-right] - Позиция: top-right, top-left, bottom-right, bottom-left
|
|
51
|
+
/// @output Абсолютное позиционирование
|
|
52
|
+
/// @group components-tag
|
|
53
|
+
@mixin tag-absolute($position: top-right) {
|
|
54
|
+
position: absolute;
|
|
55
|
+
|
|
56
|
+
@if $position == top-right {
|
|
57
|
+
top: spacing.$spacing-md;
|
|
58
|
+
right: spacing.$spacing-md;
|
|
59
|
+
} @else if $position == top-left {
|
|
60
|
+
top: spacing.$spacing-md;
|
|
61
|
+
left: spacing.$spacing-md;
|
|
62
|
+
} @else if $position == bottom-right {
|
|
63
|
+
bottom: spacing.$spacing-md;
|
|
64
|
+
right: spacing.$spacing-md;
|
|
65
|
+
} @else if $position == bottom-left {
|
|
66
|
+
bottom: spacing.$spacing-md;
|
|
67
|
+
left: spacing.$spacing-md;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/// Тег для тёмного фона
|
|
72
|
+
/// @output Инвертированные цвета
|
|
73
|
+
/// @group components-tag
|
|
74
|
+
@mixin tag-on-dark {
|
|
75
|
+
@include mixins.bg-color(primary-foreground, 0.15);
|
|
76
|
+
@include mixins.text-color(primary-foreground, 0.9);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// Тег для акцентного фона
|
|
80
|
+
/// @output Акцентные цвета
|
|
81
|
+
/// @group components-tag
|
|
82
|
+
@mixin tag-on-accent {
|
|
83
|
+
@include mixins.bg-color(accent-foreground, 0.15);
|
|
84
|
+
@include mixins.text-color(accent-foreground, 0.9);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ============================================
|
|
88
|
+
// CSS КЛАССЫ
|
|
89
|
+
// ============================================
|
|
90
|
+
|
|
91
|
+
.tag {
|
|
92
|
+
@include tag-base;
|
|
93
|
+
|
|
94
|
+
// ──────────────────────────────
|
|
95
|
+
// Модификаторы позиции
|
|
96
|
+
// ──────────────────────────────
|
|
97
|
+
|
|
98
|
+
/// Абсолютная позиция (требует position: relative у родителя)
|
|
99
|
+
&--absolute {
|
|
100
|
+
@include tag-absolute(top-right);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&--top-left {
|
|
104
|
+
@include tag-absolute(top-left);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&--bottom-right {
|
|
108
|
+
@include tag-absolute(bottom-right);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&--bottom-left {
|
|
112
|
+
@include tag-absolute(bottom-left);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ──────────────────────────────
|
|
116
|
+
// Модификаторы цвета
|
|
117
|
+
// ──────────────────────────────
|
|
118
|
+
|
|
119
|
+
/// На тёмном фоне
|
|
120
|
+
&--on-dark {
|
|
121
|
+
@include tag-on-dark;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/// На акцентном фоне
|
|
125
|
+
&--on-accent {
|
|
126
|
+
@include tag-on-accent;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ──────────────────────────────
|
|
130
|
+
// Модификаторы размера
|
|
131
|
+
// ──────────────────────────────
|
|
132
|
+
|
|
133
|
+
/// Маленький тег
|
|
134
|
+
&--sm {
|
|
135
|
+
padding: spacing.$spacing-2xs spacing.$spacing-xs;
|
|
136
|
+
font-size: typography.$font-size-2xs;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// Большой тег
|
|
140
|
+
&--lg {
|
|
141
|
+
padding: spacing.$spacing-sm spacing.$spacing-md;
|
|
142
|
+
font-size: typography.$font-size-sm;
|
|
143
|
+
}
|
|
144
|
+
}
|