@de-kit/st-ui 0.1.6 → 0.1.8
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 +143 -143
- package/dist/components/button/button.cjs +4 -3
- package/dist/components/button/button.cjs.map +1 -1
- package/dist/components/button/button.d.cts +5 -3
- package/dist/components/button/button.d.ts +5 -3
- package/dist/components/button/button.js +4 -3
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/button.scss +147 -148
- package/dist/components/checkbox/checkbox.cjs.map +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox/checkbox.scss +137 -137
- package/dist/components/field/field-context.cjs.map +1 -1
- package/dist/components/field/field-context.js.map +1 -1
- package/dist/components/field/field.cjs.map +1 -1
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/field/field.scss +43 -43
- package/dist/components/input/input.cjs.map +1 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/input.scss +127 -127
- package/dist/components/radio/radio.cjs.map +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio/radio.scss +144 -144
- package/dist/components/spinner/spinner.cjs.map +1 -1
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/spinner/spinner.scss +29 -29
- package/dist/components/textarea/textarea.cjs.map +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/textarea/textarea.scss +85 -85
- package/dist/icons/icon-label-ozon.cjs +4 -4
- package/dist/icons/icon-label-ozon.cjs.map +1 -1
- package/dist/icons/icon-label-ozon.js +4 -4
- package/dist/icons/icon-label-ozon.js.map +1 -1
- package/dist/icons/icon-label-yandex.cjs +1 -1
- package/dist/icons/icon-label-yandex.cjs.map +1 -1
- package/dist/icons/icon-label-yandex.js +1 -1
- package/dist/icons/icon-label-yandex.js.map +1 -1
- package/dist/icons/svg.cjs.map +1 -1
- package/dist/icons/svg.js.map +1 -1
- package/dist/lib/cn.cjs.map +1 -1
- package/dist/lib/cn.js.map +1 -1
- package/dist/styles/global.scss +201 -201
- package/dist/styles/mixins.scss +51 -51
- package/dist/styles/vars.scss +87 -87
- package/package.json +1 -1
package/dist/styles/mixins.scss
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
@use 'sass:list';
|
|
2
|
-
@use 'sass:map';
|
|
3
|
-
@use 'sass:math';
|
|
4
|
-
@use 'sass:meta';
|
|
5
|
-
|
|
6
|
-
// Брейкпоинты для адаптивной вёрстки и единственный их источник: vars.scss
|
|
7
|
-
// генерирует из этого же списка --breakpoint-*. Отдельный список нужен потому,
|
|
8
|
-
// что в @media custom properties не работают.
|
|
9
|
-
$breakpoints: (
|
|
10
|
-
sm: 480px,
|
|
11
|
-
md: 680px,
|
|
12
|
-
lg: 1000px,
|
|
13
|
-
xl: 1200px,
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
// Единицы, которые понимает @media. Проверяем их, потому что sass разбирает
|
|
17
|
-
// имя вроде `2xl` как число 2 с единицей xl: без проверки оно уехало бы в
|
|
18
|
-
// @media как есть и правило молча пропало бы.
|
|
19
|
-
$-length-units: 'px', 'em', 'rem';
|
|
20
|
-
|
|
21
|
-
// Имя брейкпоинта или произвольный размер: breakpoint(md), breakpoint(900px).
|
|
22
|
-
// Список проверяем первым, иначе имя, начинающееся с цифры, до него не дойдёт.
|
|
23
|
-
@function breakpoint($point) {
|
|
24
|
-
@if map.has-key($breakpoints, $point) {
|
|
25
|
-
@return map.get($breakpoints, $point);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@if meta.type-of($point) ==
|
|
29
|
-
'number' and
|
|
30
|
-
list.index($-length-units, math.unit($point))
|
|
31
|
-
{
|
|
32
|
-
@return $point;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@error 'Нет брейкпоинта «#{$point}». Есть: #{map.keys($breakpoints)} или размер в px, em, rem.';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// От брейкпоинта и шире, включая его.
|
|
39
|
-
@mixin min-width($point) {
|
|
40
|
-
@media (min-width: breakpoint($point)) {
|
|
41
|
-
@content;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Уже брейкпоинта, не включая его: граница 679.98px, а не 680px, иначе на
|
|
46
|
-
// ровно 680px сработали бы оба правила сразу.
|
|
47
|
-
@mixin max-width($point) {
|
|
48
|
-
@media (max-width: (breakpoint($point) - 0.02px)) {
|
|
49
|
-
@content;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
@use 'sass:list';
|
|
2
|
+
@use 'sass:map';
|
|
3
|
+
@use 'sass:math';
|
|
4
|
+
@use 'sass:meta';
|
|
5
|
+
|
|
6
|
+
// Брейкпоинты для адаптивной вёрстки и единственный их источник: vars.scss
|
|
7
|
+
// генерирует из этого же списка --breakpoint-*. Отдельный список нужен потому,
|
|
8
|
+
// что в @media custom properties не работают.
|
|
9
|
+
$breakpoints: (
|
|
10
|
+
sm: 480px,
|
|
11
|
+
md: 680px,
|
|
12
|
+
lg: 1000px,
|
|
13
|
+
xl: 1200px,
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
// Единицы, которые понимает @media. Проверяем их, потому что sass разбирает
|
|
17
|
+
// имя вроде `2xl` как число 2 с единицей xl: без проверки оно уехало бы в
|
|
18
|
+
// @media как есть и правило молча пропало бы.
|
|
19
|
+
$-length-units: 'px', 'em', 'rem';
|
|
20
|
+
|
|
21
|
+
// Имя брейкпоинта или произвольный размер: breakpoint(md), breakpoint(900px).
|
|
22
|
+
// Список проверяем первым, иначе имя, начинающееся с цифры, до него не дойдёт.
|
|
23
|
+
@function breakpoint($point) {
|
|
24
|
+
@if map.has-key($breakpoints, $point) {
|
|
25
|
+
@return map.get($breakpoints, $point);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@if meta.type-of($point) ==
|
|
29
|
+
'number' and
|
|
30
|
+
list.index($-length-units, math.unit($point))
|
|
31
|
+
{
|
|
32
|
+
@return $point;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@error 'Нет брейкпоинта «#{$point}». Есть: #{map.keys($breakpoints)} или размер в px, em, rem.';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// От брейкпоинта и шире, включая его.
|
|
39
|
+
@mixin min-width($point) {
|
|
40
|
+
@media (min-width: breakpoint($point)) {
|
|
41
|
+
@content;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Уже брейкпоинта, не включая его: граница 679.98px, а не 680px, иначе на
|
|
46
|
+
// ровно 680px сработали бы оба правила сразу.
|
|
47
|
+
@mixin max-width($point) {
|
|
48
|
+
@media (max-width: (breakpoint($point) - 0.02px)) {
|
|
49
|
+
@content;
|
|
50
|
+
}
|
|
51
|
+
}
|
package/dist/styles/vars.scss
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
// Токены splittest. Роли как у Tailwind v4 (`--color-primary`), значения свои.
|
|
2
|
-
// Компоненты не знают про пигмент. Тема — переопределение этих --color-* на
|
|
3
|
-
// [data-theme='dark'], стили кнопок и полей не трогать.
|
|
4
|
-
// В @media custom properties нельзя, поэтому брейкпоинты живут в mixins.scss,
|
|
5
|
-
// а --breakpoint-* ниже генерируются из того же списка — значения не разъедутся.
|
|
6
|
-
@use './mixins.scss' as mixins;
|
|
7
|
-
|
|
8
|
-
:root {
|
|
9
|
-
// Текст и страница. Сейчас оба чёрный/белый, как и кнопка ниже — роли разные.
|
|
10
|
-
--color-background: #fff;
|
|
11
|
-
--color-foreground: #000;
|
|
12
|
-
|
|
13
|
-
// Залитая кнопка: фон и текст на нём. Outline берёт --color-foreground, не primary.
|
|
14
|
-
--color-primary: #000;
|
|
15
|
-
--color-primary-foreground: #fff;
|
|
16
|
-
--color-primary-hover: #
|
|
17
|
-
|
|
18
|
-
// Ховер outline. Выключенный контрол и вторичный текст/иконка.
|
|
19
|
-
--color-secondary: #f7f7f7;
|
|
20
|
-
--color-muted: #e5e5e5;
|
|
21
|
-
--color-muted-foreground: #727272;
|
|
22
|
-
|
|
23
|
-
--color-border: color-mix(in srgb, var(--color-foreground) 10%, transparent);
|
|
24
|
-
--color-input: #d9d9d9;
|
|
25
|
-
--color-ring: var(--color-foreground);
|
|
26
|
-
// Вуаль модалки и тень не от foreground: в тёмной теме свет не падает снизу,
|
|
27
|
-
// они остаются тёмными. Нужен другой оттенок — переопределять эти две роли.
|
|
28
|
-
--color-overlay: rgb(0 0 0 / 0.3);
|
|
29
|
-
--color-shadow: rgb(0 0 0 / 0.15);
|
|
30
|
-
--color-sidebar: color-mix(in srgb, var(--color-foreground) 3%, transparent);
|
|
31
|
-
|
|
32
|
-
// Акцент, ошибка, успех. Текст на акценте отдельный: в тёмной теме primary-foreground инвертируется, этот нет.
|
|
33
|
-
--color-accent: #002bff;
|
|
34
|
-
--color-accent-foreground: #fff;
|
|
35
|
-
--color-destructive: #ff0000;
|
|
36
|
-
--color-success: #00a66f;
|
|
37
|
-
--color-warning: #ffbf00;
|
|
38
|
-
|
|
39
|
-
// Фон recommended — разбавленный warning, компоненты этот процент не знают.
|
|
40
|
-
// В тёмной теме достаточно переопределить --color-warning.
|
|
41
|
-
--color-recommended: color-mix(
|
|
42
|
-
in srgb,
|
|
43
|
-
var(--color-warning) 10%,
|
|
44
|
-
transparent
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
--radius-sm: 5px;
|
|
48
|
-
--radius-lg: 10px;
|
|
49
|
-
|
|
50
|
-
--font-sans: 'Inter', sans-serif;
|
|
51
|
-
|
|
52
|
-
// Шкала текста: размер и парная к нему высота строки. Других размеров в splittest нет,
|
|
53
|
-
// по умолчанию почти везде --text-sm. Заголовки: h1 и h2 — 2xl (h1 с 680px — 3xl), h3 — lg, h4 — sm.
|
|
54
|
-
--text-xs: 11px;
|
|
55
|
-
--text-xs--line-height: 15px;
|
|
56
|
-
--text-sm: 14px;
|
|
57
|
-
--text-sm--line-height: 20px;
|
|
58
|
-
--text-base: 16px;
|
|
59
|
-
--text-base--line-height: 20px;
|
|
60
|
-
--text-lg: 18px;
|
|
61
|
-
--text-lg--line-height: 20px;
|
|
62
|
-
--text-2xl: 28px;
|
|
63
|
-
--text-2xl--line-height: 30px;
|
|
64
|
-
--text-3xl: 45px;
|
|
65
|
-
--text-3xl--line-height: 50px;
|
|
66
|
-
|
|
67
|
-
// Сетка 5px. Паддинги кнопки и инпута сняты с макета вне сетки и остаются литералами.
|
|
68
|
-
--space-1: 5px;
|
|
69
|
-
--space-2: 10px;
|
|
70
|
-
--space-3: 15px;
|
|
71
|
-
--space-4: 20px;
|
|
72
|
-
--space-6: 30px;
|
|
73
|
-
|
|
74
|
-
// Фокус. Одна обводка на всю библиотеку: и box-shadow у инпута, и outline у кнопки.
|
|
75
|
-
--focus-ring-width: 1px;
|
|
76
|
-
--focus-ring-color: var(--color-ring);
|
|
77
|
-
--focus-ring-offset: 2px;
|
|
78
|
-
|
|
79
|
-
--shadow-xl: 0 10px 40px 0 var(--color-shadow);
|
|
80
|
-
|
|
81
|
-
@each $name, $value in mixins.$breakpoints {
|
|
82
|
-
--breakpoint-#{$name}: #{$value};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
--default-transition-duration: 0.3s;
|
|
86
|
-
--default-transition-timing-function: ease;
|
|
87
|
-
}
|
|
1
|
+
// Токены splittest. Роли как у Tailwind v4 (`--color-primary`), значения свои.
|
|
2
|
+
// Компоненты не знают про пигмент. Тема — переопределение этих --color-* на
|
|
3
|
+
// [data-theme='dark'], стили кнопок и полей не трогать.
|
|
4
|
+
// В @media custom properties нельзя, поэтому брейкпоинты живут в mixins.scss,
|
|
5
|
+
// а --breakpoint-* ниже генерируются из того же списка — значения не разъедутся.
|
|
6
|
+
@use './mixins.scss' as mixins;
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
// Текст и страница. Сейчас оба чёрный/белый, как и кнопка ниже — роли разные.
|
|
10
|
+
--color-background: #fff;
|
|
11
|
+
--color-foreground: #000;
|
|
12
|
+
|
|
13
|
+
// Залитая кнопка: фон и текст на нём. Outline берёт --color-foreground, не primary.
|
|
14
|
+
--color-primary: #000;
|
|
15
|
+
--color-primary-foreground: #fff;
|
|
16
|
+
--color-primary-hover: #000;
|
|
17
|
+
|
|
18
|
+
// Ховер outline. Выключенный контрол и вторичный текст/иконка.
|
|
19
|
+
--color-secondary: #f7f7f7;
|
|
20
|
+
--color-muted: #e5e5e5;
|
|
21
|
+
--color-muted-foreground: #727272;
|
|
22
|
+
|
|
23
|
+
--color-border: color-mix(in srgb, var(--color-foreground) 10%, transparent);
|
|
24
|
+
--color-input: #d9d9d9;
|
|
25
|
+
--color-ring: var(--color-foreground);
|
|
26
|
+
// Вуаль модалки и тень не от foreground: в тёмной теме свет не падает снизу,
|
|
27
|
+
// они остаются тёмными. Нужен другой оттенок — переопределять эти две роли.
|
|
28
|
+
--color-overlay: rgb(0 0 0 / 0.3);
|
|
29
|
+
--color-shadow: rgb(0 0 0 / 0.15);
|
|
30
|
+
--color-sidebar: color-mix(in srgb, var(--color-foreground) 3%, transparent);
|
|
31
|
+
|
|
32
|
+
// Акцент, ошибка, успех. Текст на акценте отдельный: в тёмной теме primary-foreground инвертируется, этот нет.
|
|
33
|
+
--color-accent: #002bff;
|
|
34
|
+
--color-accent-foreground: #fff;
|
|
35
|
+
--color-destructive: #ff0000;
|
|
36
|
+
--color-success: #00a66f;
|
|
37
|
+
--color-warning: #ffbf00;
|
|
38
|
+
|
|
39
|
+
// Фон recommended — разбавленный warning, компоненты этот процент не знают.
|
|
40
|
+
// В тёмной теме достаточно переопределить --color-warning.
|
|
41
|
+
--color-recommended: color-mix(
|
|
42
|
+
in srgb,
|
|
43
|
+
var(--color-warning) 10%,
|
|
44
|
+
transparent
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
--radius-sm: 5px;
|
|
48
|
+
--radius-lg: 10px;
|
|
49
|
+
|
|
50
|
+
--font-sans: 'Inter', sans-serif;
|
|
51
|
+
|
|
52
|
+
// Шкала текста: размер и парная к нему высота строки. Других размеров в splittest нет,
|
|
53
|
+
// по умолчанию почти везде --text-sm. Заголовки: h1 и h2 — 2xl (h1 с 680px — 3xl), h3 — lg, h4 — sm.
|
|
54
|
+
--text-xs: 11px;
|
|
55
|
+
--text-xs--line-height: 15px;
|
|
56
|
+
--text-sm: 14px;
|
|
57
|
+
--text-sm--line-height: 20px;
|
|
58
|
+
--text-base: 16px;
|
|
59
|
+
--text-base--line-height: 20px;
|
|
60
|
+
--text-lg: 18px;
|
|
61
|
+
--text-lg--line-height: 20px;
|
|
62
|
+
--text-2xl: 28px;
|
|
63
|
+
--text-2xl--line-height: 30px;
|
|
64
|
+
--text-3xl: 45px;
|
|
65
|
+
--text-3xl--line-height: 50px;
|
|
66
|
+
|
|
67
|
+
// Сетка 5px. Паддинги кнопки и инпута сняты с макета вне сетки и остаются литералами.
|
|
68
|
+
--space-1: 5px;
|
|
69
|
+
--space-2: 10px;
|
|
70
|
+
--space-3: 15px;
|
|
71
|
+
--space-4: 20px;
|
|
72
|
+
--space-6: 30px;
|
|
73
|
+
|
|
74
|
+
// Фокус. Одна обводка на всю библиотеку: и box-shadow у инпута, и outline у кнопки.
|
|
75
|
+
--focus-ring-width: 1px;
|
|
76
|
+
--focus-ring-color: var(--color-ring);
|
|
77
|
+
--focus-ring-offset: 2px;
|
|
78
|
+
|
|
79
|
+
--shadow-xl: 0 10px 40px 0 var(--color-shadow);
|
|
80
|
+
|
|
81
|
+
@each $name, $value in mixins.$breakpoints {
|
|
82
|
+
--breakpoint-#{$name}: #{$value};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
--default-transition-duration: 0.3s;
|
|
86
|
+
--default-transition-timing-function: ease;
|
|
87
|
+
}
|