@skbkontur/colors 2.0.0-alpha.6 → 2.0.1
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/.gitignore +10 -0
- package/.npmignore +10 -0
- package/CHANGELOG.md +117 -0
- package/__docs__/Colors.docs.stories.tsx +1578 -0
- package/__docs__/Colors.mdx +228 -0
- package/__docs__/ColorsAPI.docs.stories.tsx +954 -0
- package/__docs__/ColorsAPI.mdx +133 -0
- package/__stories__/colors.stories.tsx +452 -0
- package/__tests__/convert-color.test.ts +23 -0
- package/__tests__/create-tokens-from-figma.test.ts +162 -0
- package/__tests__/format-variable.test.ts +16 -0
- package/__tests__/get-colors-base.test.ts +55 -0
- package/__tests__/get-colors.test.ts +75 -0
- package/__tests__/get-interactions.test.ts +37 -0
- package/__tests__/get-logo.test.ts +24 -0
- package/__tests__/get-palette.test.ts +43 -0
- package/__tests__/get-promo.test.ts +32 -0
- package/colors-default-dark.d.ts +319 -0
- package/colors-default-dark.js +319 -0
- package/colors-default-dark.ts +332 -0
- package/colors-default-light.d.ts +319 -0
- package/colors-default-light.js +319 -0
- package/colors-default-light.ts +336 -0
- package/package.json +25 -28
- package/scripts/create-tokens-files.ts +424 -0
- package/scripts/create-tokens-from-figma.ts +376 -0
- package/scripts/figma-tokens-base.json +3499 -0
- package/scripts/figma-tokens.json +710 -0
- package/tokens/brand-blue-deep_accent-brand.css +1 -1
- package/tokens/brand-blue-deep_accent-gray.css +1 -1
- package/tokens/brand-blue_accent-brand.css +1 -1
- package/tokens/brand-blue_accent-gray.css +1 -1
- package/tokens/brand-green_accent-brand.css +1 -1
- package/tokens/brand-green_accent-gray.css +1 -1
- package/tokens/brand-mint_accent-brand.css +1 -1
- package/tokens/brand-mint_accent-gray.css +1 -1
- package/tokens/brand-orange_accent-gray.css +1 -1
- package/tokens/brand-purple_accent-brand.css +1 -1
- package/tokens/brand-purple_accent-gray.css +1 -1
- package/tokens/brand-red_accent-gray.css +1 -1
- package/tokens/brand-violet_accent-brand.css +1 -1
- package/tokens/brand-violet_accent-gray.css +1 -1
- package/tsconfig.json +8 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import * as ColorsStories from './Colors.docs.stories';
|
|
2
|
+
import { Stories } from '@storybook/blocks';
|
|
3
|
+
import { Meta } from '../../../.storybook-docs/Meta';
|
|
4
|
+
|
|
5
|
+
<Meta of={ColorsStories} />
|
|
6
|
+
|
|
7
|
+
# Kontur Colors
|
|
8
|
+
|
|
9
|
+
<style>{`
|
|
10
|
+
.docs-link {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
gap: 6px;
|
|
14
|
+
padding: 4px 8px;
|
|
15
|
+
align-items: center;
|
|
16
|
+
transition: 0.15s;
|
|
17
|
+
border-radius: 8px;
|
|
18
|
+
font-size: 16px;
|
|
19
|
+
text-decoration: none !important;
|
|
20
|
+
margin-top: 12px;
|
|
21
|
+
margin-bottom: 12px;
|
|
22
|
+
margin-left: -8px;
|
|
23
|
+
margin-right: 8px;
|
|
24
|
+
}
|
|
25
|
+
.docs-link img {
|
|
26
|
+
width: 16px;
|
|
27
|
+
height: 16px;
|
|
28
|
+
}
|
|
29
|
+
.docs-link:hover {
|
|
30
|
+
background: rgba(0, 0, 0, 0.06);
|
|
31
|
+
}
|
|
32
|
+
.docs-link:active {
|
|
33
|
+
background: rgba(0, 0, 0, 0.1);
|
|
34
|
+
}
|
|
35
|
+
.ep__pageLayout {
|
|
36
|
+
min-height: 720px;
|
|
37
|
+
}
|
|
38
|
+
`}</style>
|
|
39
|
+
|
|
40
|
+
<a
|
|
41
|
+
className="docs-link"
|
|
42
|
+
href="https://guides.kontur.ru/principles/base/color/"
|
|
43
|
+
target="_blank"
|
|
44
|
+
children={
|
|
45
|
+
<>
|
|
46
|
+
<img src="https://tech.skbkontur.ru/kontur-ui/favicon.svg" alt="" /> Гайд
|
|
47
|
+
</>
|
|
48
|
+
}
|
|
49
|
+
/>
|
|
50
|
+
<a
|
|
51
|
+
className="docs-link"
|
|
52
|
+
href="https://www.figma.com/design/XVgPCAAFhEbIiQDDznkdat/%F0%9F%9A%A7-Kontur-Colors?m=auto&t=cg9j7F8DpdELh2px-6"
|
|
53
|
+
target="_blank"
|
|
54
|
+
children={
|
|
55
|
+
<>
|
|
56
|
+
<img src="https://static.figma.com/app/icon/1/favicon.svg" alt="" /> Figma
|
|
57
|
+
</>
|
|
58
|
+
}
|
|
59
|
+
/>
|
|
60
|
+
<a
|
|
61
|
+
className="docs-link"
|
|
62
|
+
target="_blank"
|
|
63
|
+
href="https://git.skbkontur.ru/ui/ui-parking-2/-/tree/master/packages/colors"
|
|
64
|
+
children={
|
|
65
|
+
<>
|
|
66
|
+
<img
|
|
67
|
+
src="https://git.skbkontur.ru/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7c80d5b2b82aa5143ef.png"
|
|
68
|
+
alt=""
|
|
69
|
+
/>{' '}
|
|
70
|
+
GitLab
|
|
71
|
+
</>
|
|
72
|
+
}
|
|
73
|
+
/>
|
|
74
|
+
|
|
75
|
+
Kontur Colors — библиотека цветов для продуктов Контура.
|
|
76
|
+
|
|
77
|
+
**Возможности**
|
|
78
|
+
|
|
79
|
+
- Содержит цветовые схемы для каждого брендового цвета
|
|
80
|
+
- Построена на семантических токенах
|
|
81
|
+
- Поддерживает тёмные темы
|
|
82
|
+
- Доступность. Контрастность цветов по APCA W3
|
|
83
|
+
- Полностью синхронизирована с переменными Figma
|
|
84
|
+
|
|
85
|
+
**Совместимость с любыми веб-фреймворками**
|
|
86
|
+
|
|
87
|
+
- Работает на CSS-переменных `var(--k-color-token-name)` доступных через JS/SCSS/Less
|
|
88
|
+
- Конфигурация сразу нескольких схем через HTML-атрибуты `data-k-brand`, `data-k-accent`, `data-k-theme`
|
|
89
|
+
- [Расширеный JS API](./?path=/docs/colors-colors-api--docs) для генерации палитр любых оттенков и создания кастомных токенов
|
|
90
|
+
|
|
91
|
+
<br />
|
|
92
|
+
<br />
|
|
93
|
+
|
|
94
|
+
## Установка
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm i @skbkontur/colors
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Доступны [выгрузки из 14 цветовых схем в виде JSON](https://app.unpkg.com/@skbkontur/colors/files/tokens-mobile) для приложений iOS/Android, языков C#/Java/Python и других платформ.
|
|
101
|
+
|
|
102
|
+
<br />
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
<Stories title="" includePrimary={true} />
|
|
107
|
+
|
|
108
|
+
## Подключение
|
|
109
|
+
|
|
110
|
+
<br />
|
|
111
|
+
|
|
112
|
+
### 1. Подключение CSS
|
|
113
|
+
|
|
114
|
+
Подключить CSS-файл с одной или несколькими цветовыми схемами продукта: `brand-[цвет]_accent-[gray|brand].css`
|
|
115
|
+
|
|
116
|
+
```css
|
|
117
|
+
/* Список всех цветовых схем. Выберите одну или несколько */
|
|
118
|
+
@import '@skbkontur/colors/tokens/brand-red_accent-gray.css';
|
|
119
|
+
@import '@skbkontur/colors/tokens/brand-orange_accent-gray.css';
|
|
120
|
+
@import '@skbkontur/colors/tokens/brand-mint_accent-brand.css';
|
|
121
|
+
@import '@skbkontur/colors/tokens/brand-mint_accent-gray.css';
|
|
122
|
+
@import '@skbkontur/colors/tokens/brand-blue_accent-brand.css';
|
|
123
|
+
@import '@skbkontur/colors/tokens/brand-blue_accent-gray.css';
|
|
124
|
+
@import '@skbkontur/colors/tokens/brand-blue-deep_accent-brand.css';
|
|
125
|
+
@import '@skbkontur/colors/tokens/brand-blue-deep_accent-gray.css';
|
|
126
|
+
@import '@skbkontur/colors/tokens/brand-green_accent-brand.css';
|
|
127
|
+
@import '@skbkontur/colors/tokens/brand-green_accent-gray.css';
|
|
128
|
+
@import '@skbkontur/colors/tokens/brand-violet_accent-brand.css';
|
|
129
|
+
@import '@skbkontur/colors/tokens/brand-violet_accent-gray.css';
|
|
130
|
+
@import '@skbkontur/colors/tokens/brand-purple_accent-brand.css';
|
|
131
|
+
@import '@skbkontur/colors/tokens/brand-purple_accent-gray.css';
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 2. Конфигурация в HTML
|
|
135
|
+
|
|
136
|
+
Настройка контекста через 3 data-атрибута:
|
|
137
|
+
|
|
138
|
+
- **data-k-brand** — брендовый цвет `red | orange | green | mint | blue | blueDeep | violet | purple`
|
|
139
|
+
- **data-k-accent** — акцентный цвет `gray | brand`
|
|
140
|
+
- **data-k-theme** — тема `light | dark` (по умолчанию light)
|
|
141
|
+
|
|
142
|
+
```html
|
|
143
|
+
<div data-k-brand="orange" data-k-accent="gray" data-k-theme="light">
|
|
144
|
+
<div class="block">Блок Контур.Экстерна</div>
|
|
145
|
+
|
|
146
|
+
<div data-k-brand="blue" data-k-accent="brand" data-k-theme="light">
|
|
147
|
+
<div class="banner">Рекламный баннер Контур.Эльбы</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Использование
|
|
153
|
+
|
|
154
|
+
### CSS
|
|
155
|
+
|
|
156
|
+
Токены доступны в виде CSS-переменных `var(--k-color-token-name)`
|
|
157
|
+
|
|
158
|
+
```css
|
|
159
|
+
.block {
|
|
160
|
+
color: var(--k-color-text-on-accent-default-primary);
|
|
161
|
+
background: var(--k-color-shape-default-accent-faint);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### JS/TS
|
|
166
|
+
|
|
167
|
+
Переменные `colors.tokenName` содержат ссылки на `var(--k-color-token-name)`
|
|
168
|
+
|
|
169
|
+
```js
|
|
170
|
+
import * as colors from '@skbkontur/colors';
|
|
171
|
+
|
|
172
|
+
const text = `
|
|
173
|
+
<div style="color: ${colors.textNeutralHeavy}">
|
|
174
|
+
Блок с текстом
|
|
175
|
+
</div>
|
|
176
|
+
`;
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### SCSS
|
|
180
|
+
|
|
181
|
+
Переменные `colors.$token-name` содержат ссылки на `var(--k-color-token-name)`
|
|
182
|
+
|
|
183
|
+
```css
|
|
184
|
+
@use '@skbkontur/colors/colors.scss';
|
|
185
|
+
|
|
186
|
+
.class {
|
|
187
|
+
color: $color-text-neutral-heavy;
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Less
|
|
192
|
+
|
|
193
|
+
Переменные `$token-name` содержат ссылки на `var(--k-color-token-name)`
|
|
194
|
+
|
|
195
|
+
```css
|
|
196
|
+
@import '@skbkontur/colors/colors.less';
|
|
197
|
+
|
|
198
|
+
.class {
|
|
199
|
+
color: $color-text-neutral-heavy;
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
<br />
|
|
204
|
+
|
|
205
|
+
## Colors API: генерация палитр и кастомные токены
|
|
206
|
+
|
|
207
|
+
Библиотека Colors содержит JS API для продвинутых сценариев:
|
|
208
|
+
|
|
209
|
+
- Генерация палитр для произвольных HEX-цветов, а не только брендовых
|
|
210
|
+
- Создание/расширение цветовых палитр с собственными семантическими токенами
|
|
211
|
+
- Генерация цветов в форматах для разных платформ (oklch, hex, rgba и др.)
|
|
212
|
+
- Перекраска интерфейсов в любой цвет на лету
|
|
213
|
+
|
|
214
|
+
Функция `getColors` позволяет получать цвета для произвольных `brand`, `accent` и `theme`. Настраивать образцы оттенков `warning`, `error`. Указывать формат цвета, задавать кастомные токены со ссылками на сгенерированные палитры и другие параметры.
|
|
215
|
+
|
|
216
|
+
```js static
|
|
217
|
+
import { getColors } from '@skbkontur/colors';
|
|
218
|
+
|
|
219
|
+
const colors = getColors({ brand: 'orange', accent: 'gray', theme: 'light' });
|
|
220
|
+
|
|
221
|
+
const text = `
|
|
222
|
+
<div style="color: ${colors.textNeutralHeavy}">
|
|
223
|
+
Блок с текстом
|
|
224
|
+
</div>
|
|
225
|
+
`;
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
[Более подробно в разделе Colors API →](./?path=/docs/colors-colors-api--docs)
|