@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,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
+ }