@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,256 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Цветовая палитра темы MOEXP
|
|
3
|
+
/// @group colors
|
|
4
|
+
/// @author MOEXP Team
|
|
5
|
+
////
|
|
6
|
+
|
|
7
|
+
// ============================================
|
|
8
|
+
// ЦВЕТОВАЯ ПАЛИТРА (local\common\theme-moexp\src\scss\abstracts\_colors.scss)
|
|
9
|
+
// ============================================
|
|
10
|
+
|
|
11
|
+
@use "sass:map";
|
|
12
|
+
@use "sass:list";
|
|
13
|
+
@use "sass:meta";
|
|
14
|
+
|
|
15
|
+
/// Основная карта HSL-цветов для светлой темы
|
|
16
|
+
/// @type Map
|
|
17
|
+
/// @prop {List} primary [209 32% 35%] - Основной цвет бренда
|
|
18
|
+
/// @prop {List} primary-foreground [40 14% 96%] - Текст на primary
|
|
19
|
+
/// @prop {List} secondary [209 24% 42%] - Вторичный цвет
|
|
20
|
+
/// @prop {List} secondary-foreground [40 14% 98%] - Текст на secondary
|
|
21
|
+
/// @prop {List} accent [11 54% 51%] - Акцентный цвет
|
|
22
|
+
/// @prop {List} accent-foreground [40 14% 96%] - Текст на accent
|
|
23
|
+
/// @prop {List} accent-on-light [11 54% 43%] - Акцент для светлого фона
|
|
24
|
+
/// @prop {List} background [40 14% 96%] - Фон страницы
|
|
25
|
+
/// @prop {List} background-section [40 11% 93%] - Фон секций
|
|
26
|
+
/// @prop {List} background-card [40 33% 99%] - Фон карточек
|
|
27
|
+
/// @prop {List} foreground [210 25% 24%] - Цвет заголовков
|
|
28
|
+
/// @prop {List} foreground-body [210 8% 25%] - Цвет основного текста
|
|
29
|
+
/// @prop {List} foreground-muted [210 6% 40%] - Приглушённый текст
|
|
30
|
+
/// @prop {List} foreground-caption [210 10% 57%] - Подписи и caption
|
|
31
|
+
/// @prop {List} border [210 15% 85%] - Цвет границ
|
|
32
|
+
/// @prop {List} input [210 15% 85%] - Границы полей ввода
|
|
33
|
+
/// @prop {List} ring [209 32% 35%] - Цвет focus-ring
|
|
34
|
+
/// @prop {List} destructive [0 84% 60%] - Цвет ошибок/удаления
|
|
35
|
+
/// @prop {List} destructive-foreground [210 40% 98%] - Текст на destructive
|
|
36
|
+
/// @prop {List} success [142 71% 45%] - Цвет успеха
|
|
37
|
+
/// @prop {List} success-foreground [210 40% 98%] - Текст на success
|
|
38
|
+
/// @prop {List} warning [38 92% 50%] - Цвет предупреждений
|
|
39
|
+
/// @prop {List} warning-foreground [210 25% 24%] - Текст на warning
|
|
40
|
+
/// @prop {List} shadow [210 10% 10%] - Цвет теней
|
|
41
|
+
/// @prop {List} overlay [210 25% 10%] - Цвет оверлея
|
|
42
|
+
/// @group colors
|
|
43
|
+
/// @see $css-hsl-vars-dark
|
|
44
|
+
$css-hsl-vars: (
|
|
45
|
+
// Основные цвета бренда
|
|
46
|
+
primary: 209 32% 35%,
|
|
47
|
+
primary-foreground: 40 14% 96%,
|
|
48
|
+
secondary: 209 24% 42%,
|
|
49
|
+
secondary-foreground: 40 14% 98%,
|
|
50
|
+
accent: 11 54% 51%,
|
|
51
|
+
accent-foreground: 40 14% 96%,
|
|
52
|
+
accent-on-light: 11 54% 43%,
|
|
53
|
+
|
|
54
|
+
// Фоны
|
|
55
|
+
background: 40 14% 96%,
|
|
56
|
+
background-section: 40 11% 93%,
|
|
57
|
+
background-card: 40 33% 99%,
|
|
58
|
+
|
|
59
|
+
// Текст
|
|
60
|
+
foreground: 210 25% 24%,
|
|
61
|
+
foreground-body: 210 8% 25%,
|
|
62
|
+
foreground-muted: 210 6% 40%,
|
|
63
|
+
foreground-caption: 210 10% 57%,
|
|
64
|
+
|
|
65
|
+
// UI
|
|
66
|
+
border: 210 15% 85%,
|
|
67
|
+
input: 210 15% 85%,
|
|
68
|
+
ring: 209 32% 35%,
|
|
69
|
+
|
|
70
|
+
// Состояния
|
|
71
|
+
destructive: 0 84% 60%,
|
|
72
|
+
destructive-foreground: 210 40% 98%,
|
|
73
|
+
success: 142 71% 45%,
|
|
74
|
+
success-foreground: 210 40% 98%,
|
|
75
|
+
warning: 38 92% 50%,
|
|
76
|
+
warning-foreground: 210 25% 24%,
|
|
77
|
+
|
|
78
|
+
// Эффекты
|
|
79
|
+
shadow: 210 10% 10%,
|
|
80
|
+
overlay: 210 25% 10%,
|
|
81
|
+
|
|
82
|
+
// ─────────────────────────────────────────
|
|
83
|
+
// Семантические цвета компонентов
|
|
84
|
+
// ─────────────────────────────────────────
|
|
85
|
+
stats-icon-color: 209 32% 35%,
|
|
86
|
+
// = primary
|
|
87
|
+
project-card-meta-color: 11 54% 43%,
|
|
88
|
+
// = accent-on-light
|
|
89
|
+
search-on-light-color: 209 32% 35%,
|
|
90
|
+
|
|
91
|
+
// = primary
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
/// Карта HSL-цветов для тёмной темы (переопределения)
|
|
95
|
+
/// @type Map
|
|
96
|
+
/// @prop {List} background [210 25% 12%] - Тёмный фон страницы
|
|
97
|
+
/// @prop {List} background-section [210 20% 15%] - Тёмный фон секций
|
|
98
|
+
/// @prop {List} background-card [210 20% 18%] - Тёмный фон карточек
|
|
99
|
+
/// @prop {List} foreground [40 14% 96%] - Светлый текст заголовков
|
|
100
|
+
/// @prop {List} foreground-body [40 14% 90%] - Светлый основной текст
|
|
101
|
+
/// @prop {List} foreground-muted [210 10% 70%] - Приглушённый светлый текст
|
|
102
|
+
/// @prop {List} foreground-caption [210 10% 60%] - Светлые подписи
|
|
103
|
+
/// @prop {List} border [210 15% 25%] - Тёмные границы
|
|
104
|
+
/// @prop {List} input [210 15% 25%] - Тёмные границы полей
|
|
105
|
+
/// @prop {List} ring [209 50% 50%] - Светлый focus-ring
|
|
106
|
+
/// @prop {List} shadow [210 15% 5%] - Глубокие тени
|
|
107
|
+
/// @prop {List} overlay [210 25% 5%] - Тёмный оверлей
|
|
108
|
+
/// @group colors
|
|
109
|
+
/// @see $css-hsl-vars
|
|
110
|
+
$css-hsl-vars-dark: (
|
|
111
|
+
primary: 210 20% 18%,
|
|
112
|
+
background: 210 25% 12%,
|
|
113
|
+
background-section: 210 20% 15%,
|
|
114
|
+
background-card: 210 20% 18%,
|
|
115
|
+
foreground: 40 14% 96%,
|
|
116
|
+
foreground-body: 40 14% 90%,
|
|
117
|
+
foreground-muted: 210 10% 70%,
|
|
118
|
+
foreground-caption: 210 10% 60%,
|
|
119
|
+
border: 210 15% 25%,
|
|
120
|
+
input: 210 15% 25%,
|
|
121
|
+
ring: 209 50% 50%,
|
|
122
|
+
shadow: 210 15% 5%,
|
|
123
|
+
overlay: 210 25% 5%,
|
|
124
|
+
|
|
125
|
+
// ─────────────────────────────────────────
|
|
126
|
+
// Семантические цвета компонентов
|
|
127
|
+
// ─────────────────────────────────────────
|
|
128
|
+
stats-icon-color: 210 10% 70%,
|
|
129
|
+
// = foreground-muted
|
|
130
|
+
project-card-meta-color: 210 10% 70%,
|
|
131
|
+
// = foreground-muted
|
|
132
|
+
search-on-light-color: 40 14% 96%,
|
|
133
|
+
// = foreground
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
// ============================================
|
|
137
|
+
// ФУНКЦИИ ДЛЯ РАБОТЫ С ЦВЕТАМИ
|
|
138
|
+
// ============================================
|
|
139
|
+
|
|
140
|
+
/// Проверяет существование цвета и возвращает HSL-список
|
|
141
|
+
/// @param {String} $name - Имя цвета из карты $css-hsl-vars
|
|
142
|
+
/// @return {List} HSL-значения в формате (h, s%, l%)
|
|
143
|
+
/// @throw Ошибка если цвет не найден
|
|
144
|
+
/// @example scss - Получение HSL-значений
|
|
145
|
+
/// $hsl: get-hsl('primary');
|
|
146
|
+
/// // => 209 32% 35%
|
|
147
|
+
/// @group colors
|
|
148
|
+
/// @access public
|
|
149
|
+
@function get-hsl($name) {
|
|
150
|
+
$hsl: map.get($css-hsl-vars, $name);
|
|
151
|
+
@if not $hsl {
|
|
152
|
+
@error "Цвет `#{$name}` не найден в $css-hsl-vars. Доступные: #{map.keys($css-hsl-vars)}";
|
|
153
|
+
}
|
|
154
|
+
@return $hsl;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/// Возвращает статический hsl()/hsla() цвет
|
|
158
|
+
/// Используется для fallback или когда CSS-переменные недоступны
|
|
159
|
+
/// @param {String} $name - Имя цвета из карты $css-hsl-vars
|
|
160
|
+
/// @param {Number} $alpha [1] - Прозрачность от 0 до 1
|
|
161
|
+
/// @return {Color} HSL/HSLA цвет
|
|
162
|
+
/// @example scss - Непрозрачный цвет
|
|
163
|
+
/// background: color-static('primary');
|
|
164
|
+
/// // => hsl(209, 32%, 35%)
|
|
165
|
+
/// @example scss - Полупрозрачный цвет
|
|
166
|
+
/// background: color-static('primary', 0.5);
|
|
167
|
+
/// // => hsla(209, 32%, 35%, 0.5)
|
|
168
|
+
/// @group colors
|
|
169
|
+
/// @access public
|
|
170
|
+
/// @see color-var
|
|
171
|
+
@function color-static($name, $alpha: 1) {
|
|
172
|
+
$hsl: get-hsl($name);
|
|
173
|
+
$h: list.nth($hsl, 1);
|
|
174
|
+
$s: list.nth($hsl, 2);
|
|
175
|
+
$l: list.nth($hsl, 3);
|
|
176
|
+
|
|
177
|
+
@if $alpha == 1 {
|
|
178
|
+
@return hsl($h, $s, $l);
|
|
179
|
+
} @else {
|
|
180
|
+
@return hsla($h, $s, $l, $alpha);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/// Возвращает CSS-переменную обёрнутую в hsl()
|
|
185
|
+
/// Основной способ использования цветов — поддерживает темизацию
|
|
186
|
+
/// @param {String} $name - Имя цвета (соответствует CSS custom property)
|
|
187
|
+
/// @param {Number} $alpha [1] - Прозрачность от 0 до 1
|
|
188
|
+
/// @return {String} CSS hsl() с переменной внутри
|
|
189
|
+
/// @example scss - Непрозрачный цвет
|
|
190
|
+
/// background: color-var('primary');
|
|
191
|
+
/// // => hsl(var(--primary))
|
|
192
|
+
/// @example scss - Полупрозрачный цвет
|
|
193
|
+
/// background: color-var('primary', 0.5);
|
|
194
|
+
/// // => hsl(var(--primary) / 0.5)
|
|
195
|
+
/// @example scss - В компоненте
|
|
196
|
+
/// .button {
|
|
197
|
+
/// background: color-var('accent');
|
|
198
|
+
/// color: color-var('accent-foreground');
|
|
199
|
+
///
|
|
200
|
+
/// &:hover {
|
|
201
|
+
/// background: color-var('accent', 0.9);
|
|
202
|
+
/// }
|
|
203
|
+
/// }
|
|
204
|
+
/// @group colors
|
|
205
|
+
/// @access public
|
|
206
|
+
/// @see color-static
|
|
207
|
+
@function color-var($name, $alpha: 1) {
|
|
208
|
+
// Проверка существования (для ошибки на этапе компиляции)
|
|
209
|
+
$hsl: get-hsl($name);
|
|
210
|
+
|
|
211
|
+
@if $alpha == 1 {
|
|
212
|
+
@return hsl(var(--#{$name}));
|
|
213
|
+
} @else {
|
|
214
|
+
@return hsl(var(--#{$name}) / #{$alpha});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// ============================================
|
|
219
|
+
// CSS CUSTOM PROPERTIES
|
|
220
|
+
// ============================================
|
|
221
|
+
|
|
222
|
+
/// Корневые CSS-переменные для светлой темы
|
|
223
|
+
/// @output CSS custom properties для всех цветов
|
|
224
|
+
/// @group colors
|
|
225
|
+
@mixin theme-light-vars {
|
|
226
|
+
:root {
|
|
227
|
+
color-scheme: light;
|
|
228
|
+
|
|
229
|
+
@each $name, $hsl in $css-hsl-vars {
|
|
230
|
+
--#{$name}: #{$hsl};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/// Тёмная тема — активируется классом .dark или атрибутом [data-theme="dark"]
|
|
236
|
+
/// @output Переопределённые CSS custom properties для тёмной темы
|
|
237
|
+
/// @group colors
|
|
238
|
+
@mixin theme-dark-vars {
|
|
239
|
+
.dark,
|
|
240
|
+
[data-theme="dark"] {
|
|
241
|
+
color-scheme: dark;
|
|
242
|
+
|
|
243
|
+
@each $name, $hsl in $css-hsl-vars-dark {
|
|
244
|
+
--#{$name}: #{$hsl};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Автоматическая тёмная тема по системным настройкам
|
|
250
|
+
// @media (prefers-color-scheme: dark) {
|
|
251
|
+
// :root:not([data-theme="light"]) {
|
|
252
|
+
// @each $name, $hsl in $css-hsl-vars-dark {
|
|
253
|
+
// --#{$name}: #{$hsl};
|
|
254
|
+
// }
|
|
255
|
+
// }
|
|
256
|
+
// }
|