itube-specs 0.0.856 → 0.0.857
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.
|
@@ -61,6 +61,11 @@ $button-variants: (
|
|
|
61
61
|
//
|
|
62
62
|
// Ключа в карте темы нет — не печатается ничего, работает вариант из пропа
|
|
63
63
|
// theme= на вызове. Так тема, которой тут нечего менять, не пишет ни строки.
|
|
64
|
+
//
|
|
65
|
+
// Класс на элементе при этом остаётся тем, что задан пропом: кнопка может
|
|
66
|
+
// висеть с `--muted`, а выглядеть как primary. Поэтому первой строкой
|
|
67
|
+
// печатается `--button-variant` — маркер для DevTools, который объясняет
|
|
68
|
+
// расхождение. Никем не читается, существует только как документация.
|
|
64
69
|
@mixin button-variant($key) {
|
|
65
70
|
$name: map.get($button-variant-overrides, $key);
|
|
66
71
|
|
|
@@ -71,6 +76,8 @@ $button-variants: (
|
|
|
71
76
|
@error 'button-variant(): неизвестный вариант `#{$name}` для ключа `#{$key}`. Допустимые: #{map.keys($button-variants)}';
|
|
72
77
|
}
|
|
73
78
|
|
|
79
|
+
--button-variant: #{$name};
|
|
80
|
+
|
|
74
81
|
@each $prop, $value in $variant {
|
|
75
82
|
--button-#{$prop}: #{$value};
|
|
76
83
|
}
|
|
@@ -1,23 +1,36 @@
|
|
|
1
|
+
@use 'sass:list';
|
|
1
2
|
@use 'sass:map';
|
|
2
|
-
@use '
|
|
3
|
+
@use 'vars' as *;
|
|
3
4
|
|
|
4
5
|
// Контракт подложки ("островка"): блок объявляет цвета для того, что лежит
|
|
5
6
|
// внутри, и всё подхватывает это каскадом.
|
|
6
7
|
//
|
|
8
|
+
// // в компоненте
|
|
9
|
+
// .ui-popup { @include surface(overlay); }
|
|
10
|
+
//
|
|
11
|
+
// // в теме — только отличия
|
|
12
|
+
// $surfaces: (overlay: (control-bg: $color-slate-750, text: $color-white));
|
|
13
|
+
//
|
|
14
|
+
// Подложки нет в карте темы — не печатается ничего, компоненты остаются на
|
|
15
|
+
// своих базовых токенах. Так тема, которой тут нечего менять, не пишет ни строки.
|
|
16
|
+
//
|
|
7
17
|
// Каждый цвет компонента читается своей переменной — var(--input-bg, <токен темы>).
|
|
8
18
|
// Один уровень, никакой вложенности. Значит любой цвет можно переопределить
|
|
9
|
-
// поштучно,
|
|
19
|
+
// поштучно, минуя роли:
|
|
10
20
|
//
|
|
11
21
|
// .promo-card {
|
|
12
22
|
// --input-s-border: transparent;
|
|
13
23
|
// }
|
|
14
24
|
//
|
|
15
|
-
// Роли
|
|
16
|
-
//
|
|
17
|
-
// тогда роль не раскрывается и компоненты остаются на своих базовых токенах.
|
|
25
|
+
// Роли — сокращение для частого случая: одна роль расписывается сразу на все
|
|
26
|
+
// переменные, которые ей соответствуют.
|
|
18
27
|
//
|
|
19
28
|
// Новый компонент не добавляет ролей — дописывает свои переменные в готовые.
|
|
20
29
|
// Новая роль нужна только когда тема должна развести то, что сейчас склеено.
|
|
30
|
+
|
|
31
|
+
// Тема вправе не описывать подложку, поэтому её отсутствие в карте — не ошибка.
|
|
32
|
+
// А вот опечатка в @include surface(...) иначе прошла бы молча, отсюда список.
|
|
33
|
+
$surface-names: (overlay,);
|
|
21
34
|
$surface-roles: (
|
|
22
35
|
text: (--video-mini-card-title, --radio-text, --checkbox-text),
|
|
23
36
|
text-muted: (--video-mini-card-channel, --video-mini-card-duration),
|
|
@@ -44,12 +57,18 @@ $surface-roles: (
|
|
|
44
57
|
accent-border: (--select-border--active,)
|
|
45
58
|
);
|
|
46
59
|
|
|
47
|
-
@mixin surface($
|
|
48
|
-
@
|
|
60
|
+
@mixin surface($name) {
|
|
61
|
+
@if not list.index($surface-names, $name) {
|
|
62
|
+
@error 'surface(): неизвестная подложка `#{$name}`. Допустимые: #{$surface-names}';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
$overrides: map.get($surfaces, $name);
|
|
66
|
+
|
|
67
|
+
@each $role, $value in if($overrides, $overrides, ()) {
|
|
49
68
|
$props: map.get($surface-roles, $role);
|
|
50
69
|
|
|
51
70
|
@if not $props {
|
|
52
|
-
@error 'surface(): неизвестная роль `#{$role}`. Допустимые: #{map.keys($surface-roles)}';
|
|
71
|
+
@error 'surface(#{$name}): неизвестная роль `#{$role}`. Допустимые: #{map.keys($surface-roles)}';
|
|
53
72
|
}
|
|
54
73
|
|
|
55
74
|
@if $value {
|
package/components/ui/btn.vue
CHANGED
|
@@ -64,13 +64,13 @@ const slotText = computed(() => {
|
|
|
64
64
|
padding-inline: 12px;
|
|
65
65
|
width: max-content;
|
|
66
66
|
font-weight: 500;
|
|
67
|
-
color: var(--button-text, #{$button-
|
|
67
|
+
color: var(--button-text, #{$button-text});
|
|
68
68
|
border-radius: $radius-lg;
|
|
69
69
|
text-decoration: none;
|
|
70
70
|
user-select: none;
|
|
71
71
|
white-space: nowrap;
|
|
72
72
|
text-transform: capitalize;
|
|
73
|
-
border: 1px solid var(--button-border, #{$button-
|
|
73
|
+
border: 1px solid var(--button-border, #{$button-border});
|
|
74
74
|
|
|
75
75
|
@include from-br(sm) {
|
|
76
76
|
padding-inline: 16px;
|
package/components/ui/popup.vue
CHANGED
|
@@ -124,31 +124,7 @@ const { snackbarText, isSnackBarInPopup } = useSnackbar();
|
|
|
124
124
|
|
|
125
125
|
<style lang="scss">
|
|
126
126
|
.ui-popup {
|
|
127
|
-
@include surface(
|
|
128
|
-
$text: $surface-overlay-text,
|
|
129
|
-
$text-muted: $surface-overlay-text-muted,
|
|
130
|
-
$control-bg: $surface-overlay-control-bg,
|
|
131
|
-
$control-compact-bg: $surface-overlay-control-compact-bg,
|
|
132
|
-
$control-bg--disabled: $surface-overlay-control-bg--disabled,
|
|
133
|
-
$control-text: $surface-overlay-control-text,
|
|
134
|
-
$control-text--disabled: $surface-overlay-control-text--disabled,
|
|
135
|
-
$control-placeholder: $surface-overlay-control-placeholder,
|
|
136
|
-
$control-label: $surface-overlay-control-label,
|
|
137
|
-
$control-compact-label: $surface-overlay-control-compact-label,
|
|
138
|
-
$control-border: $surface-overlay-control-border,
|
|
139
|
-
$control-compact-border: $surface-overlay-control-compact-border,
|
|
140
|
-
$control-border--focus: $surface-overlay-control-border--focus,
|
|
141
|
-
$control-compact-border--focus: $surface-overlay-control-compact-border--focus,
|
|
142
|
-
$control-border--error: $surface-overlay-control-border--error,
|
|
143
|
-
$control-icon: $surface-overlay-control-icon,
|
|
144
|
-
$control-icon--hover: $surface-overlay-control-icon--hover,
|
|
145
|
-
$option-bg: $surface-overlay-option-bg,
|
|
146
|
-
$option-text: $surface-overlay-option-text,
|
|
147
|
-
$accent: $surface-overlay-accent,
|
|
148
|
-
$accent-text: $surface-overlay-accent-text,
|
|
149
|
-
$accent-bg-subtle: $surface-overlay-accent-bg-subtle,
|
|
150
|
-
$accent-border: $surface-overlay-accent-border
|
|
151
|
-
);
|
|
127
|
+
@include surface(overlay);
|
|
152
128
|
}
|
|
153
129
|
|
|
154
130
|
.ui-popup[open] {
|