@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,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
+ // }
@@ -0,0 +1,3 @@
1
+ // ============================================
2
+ // FUNCTIONS
3
+ // ============================================