@skbkontur/colors 2.0.0-alpha.1 → 2.0.0-alpha.3

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 (126) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +104 -171
  3. package/dist/colors.default-dark.js +326 -319
  4. package/dist/colors.default-light.js +329 -319
  5. package/dist/colors.js +319 -319
  6. package/dist/colors.less +319 -319
  7. package/dist/colors.scss +319 -319
  8. package/dist/esm/consts/params/abney-correction.d.ts +2 -0
  9. package/dist/esm/consts/params/chroma-params.d.ts +2 -0
  10. package/dist/esm/{constants/chroma-settings.js → consts/params/chroma-params.js} +1 -1
  11. package/dist/esm/consts/params/logo-lightness.d.ts +1 -0
  12. package/dist/esm/consts/params/logo-lightness.js +1 -0
  13. package/dist/esm/get-colors-base.d.ts +12 -0
  14. package/dist/esm/get-colors-base.js +81 -0
  15. package/dist/{cjs/get-default-tokens.d.ts → esm/get-colors-default-tokens.d.ts} +2 -2
  16. package/dist/{cjs/get-default-tokens.js → esm/get-colors-default-tokens.js} +34 -38
  17. package/dist/esm/get-colors.d.ts +3 -9
  18. package/dist/esm/get-colors.js +6 -13
  19. package/dist/esm/get-default-tokens.d.ts +1 -1
  20. package/dist/esm/get-default-tokens.js +33 -33
  21. package/dist/esm/helpers/get-interactions.js +1 -1
  22. package/dist/esm/helpers/get-logo.js +4 -4
  23. package/dist/esm/helpers/get-palette.d.ts +3 -3
  24. package/dist/esm/helpers/get-palette.js +9 -9
  25. package/dist/esm/helpers/get-promo.js +1 -1
  26. package/dist/esm/types/{generator-tokens.d.ts → tokens-base-generator.d.ts} +2 -2
  27. package/dist/esm/types/tokens.d.ts +12 -0
  28. package/dist/esm/types/tokens.js +1 -0
  29. package/dist/esm/utils/convert-color.d.ts +3 -0
  30. package/dist/esm/utils/convert-color.js +133 -0
  31. package/dist/tokens/brand-blue-deep_accent-brand.css +33 -33
  32. package/dist/tokens/brand-blue-deep_accent-gray.css +33 -33
  33. package/dist/tokens/brand-blue_accent-brand.css +33 -33
  34. package/dist/tokens/brand-blue_accent-gray.css +33 -33
  35. package/dist/tokens/brand-green_accent-brand.css +33 -33
  36. package/dist/tokens/brand-green_accent-gray.css +33 -33
  37. package/dist/tokens/brand-mint_accent-brand.css +33 -33
  38. package/dist/tokens/brand-mint_accent-gray.css +33 -33
  39. package/dist/tokens/brand-orange_accent-gray.css +33 -33
  40. package/dist/tokens/brand-purple_accent-brand.css +33 -33
  41. package/dist/tokens/brand-purple_accent-gray.css +33 -33
  42. package/dist/tokens/brand-red_accent-gray.css +33 -33
  43. package/dist/tokens/brand-violet_accent-brand.css +33 -33
  44. package/dist/tokens/brand-violet_accent-gray.css +33 -33
  45. package/dist/tokens-js/brand-blue-deep_accent-brand.js +33 -33
  46. package/dist/tokens-js/brand-blue-deep_accent-gray.js +33 -33
  47. package/dist/tokens-js/brand-blue_accent-brand.js +33 -33
  48. package/dist/tokens-js/brand-blue_accent-gray.js +33 -33
  49. package/dist/tokens-js/brand-green_accent-brand.js +33 -33
  50. package/dist/tokens-js/brand-green_accent-gray.js +33 -33
  51. package/dist/tokens-js/brand-mint_accent-brand.js +33 -33
  52. package/dist/tokens-js/brand-mint_accent-gray.js +33 -33
  53. package/dist/tokens-js/brand-orange_accent-gray.js +33 -33
  54. package/dist/tokens-js/brand-purple_accent-brand.js +33 -33
  55. package/dist/tokens-js/brand-purple_accent-gray.js +33 -33
  56. package/dist/tokens-js/brand-red_accent-gray.js +33 -33
  57. package/dist/tokens-js/brand-violet_accent-brand.js +33 -33
  58. package/dist/tokens-js/brand-violet_accent-gray.js +33 -33
  59. package/dist/tokens-mobile/brand-blue-deep_accent-brand.json +304 -304
  60. package/dist/tokens-mobile/brand-blue-deep_accent-gray.json +304 -304
  61. package/dist/tokens-mobile/brand-blue_accent-brand.json +304 -304
  62. package/dist/tokens-mobile/brand-blue_accent-gray.json +304 -304
  63. package/dist/tokens-mobile/brand-green_accent-brand.json +304 -304
  64. package/dist/tokens-mobile/brand-green_accent-gray.json +304 -304
  65. package/dist/tokens-mobile/brand-mint_accent-brand.json +304 -304
  66. package/dist/tokens-mobile/brand-mint_accent-gray.json +304 -304
  67. package/dist/tokens-mobile/brand-orange_accent-gray.json +303 -303
  68. package/dist/tokens-mobile/brand-purple_accent-brand.json +304 -304
  69. package/dist/tokens-mobile/brand-purple_accent-gray.json +304 -304
  70. package/dist/tokens-mobile/brand-red_accent-gray.json +303 -303
  71. package/dist/tokens-mobile/brand-violet_accent-brand.json +300 -300
  72. package/dist/tokens-mobile/brand-violet_accent-gray.json +302 -302
  73. package/package.json +13 -22
  74. package/scripts/babel-register.js +4 -0
  75. package/scripts/tokens-base.json +3499 -0
  76. package/scripts/tokens.json +710 -0
  77. package/dist/cjs/constants/abney-correction.d.ts +0 -2
  78. package/dist/cjs/constants/abney-correction.js +0 -1105
  79. package/dist/cjs/constants/chroma-settings.d.ts +0 -2
  80. package/dist/cjs/constants/chroma-settings.js +0 -105
  81. package/dist/cjs/constants/default-swatch.js +0 -112
  82. package/dist/cjs/constants/interaction-settings.js +0 -19
  83. package/dist/cjs/constants/logo-lightness.d.ts +0 -1
  84. package/dist/cjs/constants/logo-lightness.js +0 -4
  85. package/dist/cjs/constants/promo-hue-shift.js +0 -14
  86. package/dist/cjs/constants/warning-hue-patch.js +0 -25
  87. package/dist/cjs/get-base-tokens.d.ts +0 -19
  88. package/dist/cjs/get-base-tokens.js +0 -199
  89. package/dist/cjs/get-colors.d.ts +0 -19
  90. package/dist/cjs/get-colors.js +0 -25
  91. package/dist/cjs/helpers/get-interactions.d.ts +0 -7
  92. package/dist/cjs/helpers/get-interactions.js +0 -61
  93. package/dist/cjs/helpers/get-logo.d.ts +0 -6
  94. package/dist/cjs/helpers/get-logo.js +0 -32
  95. package/dist/cjs/helpers/get-palette.d.ts +0 -76
  96. package/dist/cjs/helpers/get-palette.js +0 -287
  97. package/dist/cjs/helpers/get-promo.d.ts +0 -12
  98. package/dist/cjs/helpers/get-promo.js +0 -56
  99. package/dist/cjs/types/base-tokens.js +0 -2
  100. package/dist/cjs/types/generator-tokens.d.ts +0 -43
  101. package/dist/cjs/types/generator-tokens.js +0 -2
  102. package/dist/cjs/utils/format-variable.d.ts +0 -2
  103. package/dist/cjs/utils/format-variable.js +0 -15
  104. package/dist/esm/constants/abney-correction.d.ts +0 -2
  105. package/dist/esm/constants/chroma-settings.d.ts +0 -2
  106. package/dist/esm/constants/default-swatch.d.ts +0 -109
  107. package/dist/esm/constants/interaction-settings.d.ts +0 -8
  108. package/dist/esm/constants/logo-lightness.d.ts +0 -1
  109. package/dist/esm/constants/logo-lightness.js +0 -1
  110. package/dist/esm/constants/promo-hue-shift.d.ts +0 -3
  111. package/dist/esm/constants/warning-hue-patch.d.ts +0 -3
  112. package/dist/esm/get-base-tokens.d.ts +0 -19
  113. package/dist/esm/get-base-tokens.js +0 -147
  114. package/dist/esm/types/base-tokens.d.ts +0 -125
  115. /package/dist/{cjs/constants → esm/consts}/default-swatch.d.ts +0 -0
  116. /package/dist/esm/{constants → consts}/default-swatch.js +0 -0
  117. /package/dist/esm/{constants → consts/params}/abney-correction.js +0 -0
  118. /package/dist/{cjs/constants/interaction-settings.d.ts → esm/consts/params/interactions.d.ts} +0 -0
  119. /package/dist/esm/{constants/interaction-settings.js → consts/params/interactions.js} +0 -0
  120. /package/dist/{cjs/constants → esm/consts/params}/promo-hue-shift.d.ts +0 -0
  121. /package/dist/esm/{constants → consts/params}/promo-hue-shift.js +0 -0
  122. /package/dist/{cjs/constants → esm/consts/params}/warning-hue-patch.d.ts +0 -0
  123. /package/dist/esm/{constants → consts/params}/warning-hue-patch.js +0 -0
  124. /package/dist/esm/types/{base-tokens.js → tokens-base-generator.js} +0 -0
  125. /package/dist/{cjs/types/base-tokens.d.ts → esm/types/tokens-base.d.ts} +0 -0
  126. /package/dist/esm/types/{generator-tokens.js → tokens-base.js} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,84 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [1.1.1](https://git.skbkontur.ru/ui/ui-parking-2/compare/@skbkontur/colors@1.1.0...@skbkontur/colors@1.1.1) (2025-05-06)
7
+
8
+ **Note:** Version bump only for package @skbkontur/colors
9
+
10
+ # [1.1.0](https://git.skbkontur.ru/ui/ui-parking-2/compare/@skbkontur/colors@1.0.0...@skbkontur/colors@1.1.0) (2025-03-17)
11
+
12
+ ### Features
13
+
14
+ - add new storybook documentation ([c267b12](https://git.skbkontur.ru/ui/ui-parking-2/commits/c267b12a86e845a219b173a4e69be6a04b972df8))
15
+
16
+ # [1.0.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.5.1...@skbkontur/colors@1.0.0) (2024-08-08)
17
+
18
+ ### Features
19
+
20
+ - **colors:** add scss and change naming ([ef3345f](https://git.skbkontur.ru/ui/ui-parking/commits/ef3345f5f54be830f284c9a2a53991e117b8ba0b))
21
+ - **colors:** add scss and change naming ([78b32b7](https://git.skbkontur.ru/ui/ui-parking/commits/78b32b7a22d260baf166195e7eb1adeea5b2c9f7))
22
+
23
+ ### BREAKING CHANGES
24
+
25
+ - **colors:** change naming from camelCase to dash-case
26
+ - **colors:** change naming from camelCase to dash-case
27
+
28
+ ## [0.5.1](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.5.0...@skbkontur/colors@0.5.1) (2024-08-08)
29
+
30
+ **Note:** Version bump only for package @skbkontur/colors
31
+
32
+ # [0.5.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.4.4...@skbkontur/colors@0.5.0) (2024-06-25)
33
+
34
+ ### Features
35
+
36
+ - **colors:** update colors 2024 ([7020c9b](https://git.skbkontur.ru/ui/ui-parking/commits/7020c9b1311e4e37973847af70bad28cbbd2902d))
37
+
38
+ ### Reverts
39
+
40
+ - remove screenshots in ie11 and obsolete packages ([57a6e89](https://git.skbkontur.ru/ui/ui-parking/commits/57a6e8962089825b6c71c1b96f4d09bc8a5a4ef7))
41
+
42
+ ## [0.4.4](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.4.3...@skbkontur/colors@0.4.4) (2023-08-11)
43
+
44
+ **Note:** Version bump only for package @skbkontur/colors
45
+
46
+ ## [0.4.3](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.4.2...@skbkontur/colors@0.4.3) (2023-08-11)
47
+
48
+ **Note:** Version bump only for package @skbkontur/colors
49
+
50
+ ## [0.4.2](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.4.1...@skbkontur/colors@0.4.2) (2023-08-11)
51
+
52
+ **Note:** Version bump only for package @skbkontur/colors
53
+
54
+ ## [0.4.1](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.4.0...@skbkontur/colors@0.4.1) (2023-06-29)
55
+
56
+ **Note:** Version bump only for package @skbkontur/colors
57
+
58
+ # [0.4.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.3.0...@skbkontur/colors@0.4.0) (2023-05-22)
59
+
60
+ ### Features
61
+
62
+ - **colors:** обновление grayscaleSecondaryText с [#858585](https://git.skbkontur.ru/ui/ui-parking/issues/858585) на [#757575](https://git.skbkontur.ru/ui/ui-parking/issues/757575) ([8f27457](https://git.skbkontur.ru/ui/ui-parking/commits/8f27457477e25ecd52dfb7ab9b1f521145b25125))
63
+
64
+ # [0.3.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.1.1...@skbkontur/colors@0.3.0) (2023-05-12)
65
+
66
+ ### Features
67
+
68
+ - **colors:** добавила новые цвета с прозрачностью ([9cd91ef](https://git.skbkontur.ru/ui/ui-parking/commits/9cd91ef608a9f619d02cfb818cf2a4dc2c410929))
69
+
70
+ # [0.2.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.1.1...@skbkontur/colors@0.2.0) (2023-05-12)
71
+
72
+ ### Features
73
+
74
+ - **colors:** добавила новые цвета с прозрачностью ([9cd91ef](https://git.skbkontur.ru/ui/ui-parking/commits/9cd91ef608a9f619d02cfb818cf2a4dc2c410929))
75
+
76
+ ## [0.1.1](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/colors@0.1.0...@skbkontur/colors@0.1.1) (2023-02-06)
77
+
78
+ **Note:** Version bump only for package @skbkontur/colors
79
+
80
+ # 0.1.0 (2023-02-03)
81
+
82
+ ### Features
83
+
84
+ - new package @skbkontur/colors ([e9e1a88](https://git.skbkontur.ru/ui/ui-parking/commits/e9e1a88b3f5cea124a770a9e18c5eef2524521dc))
package/README.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # Библиотека цветов
2
2
 
3
- NPM-пакет для доступа к цветам из общей Figma-библиотеки [Kontur.Colors](https://www.figma.com/file/XuiIin3JAOEcHHPihtthOJ/%E2%9A%A1%EF%B8%8F-Kontur-Colors?node-id=0%3A1&t=pL38Ju5ZOo3VC6vt-0)
3
+ Kontur Colors библиотека цветов для продуктов Контура
4
+
5
+ **Возможности**
6
+
7
+ - Содержит цветовые схемы для каждого брендового цвета
8
+ - Построена на семантических токенах
9
+ - Поддерживает тёмные темы
10
+ - Доступность. Контрастность цветов по APCA W3
11
+ - Полностью синхронизирована с переменными Figma
12
+
13
+ **Совместимость с любыми веб-фреймворками**
14
+
15
+ - Работает на CSS-переменных `var(--k-color-token-name)` доступных через JS/SCSS/Less
16
+ - Конфигурация сразу нескольких схем через HTML-атрибуты `data-k-brand`, `data-k-accent`, `data-k-theme`
17
+ - [Расширеный JS API](./?path=/docs/colors-colors-api--docs) для генерации палитр любых оттенков и создания кастомных токенов
4
18
 
5
19
  ## Установка
6
20
 
@@ -8,203 +22,122 @@ NPM-пакет для доступа к цветам из общей Figma-би
8
22
  npm i @skbkontur/colors
9
23
  ```
10
24
 
11
- ## Использование
25
+ ## Подключение
12
26
 
13
- - JS/TS токены содержатся в объекте `KonturColors.color.name`
14
- - В CSS в виде глобальных переменных`--kontur-color-name` в `:root { ... }`
15
- - В препроцессорах Less `@color-name` и SCSS `$color-name`
27
+ <br />
16
28
 
17
- #### JS/TS
29
+ ### 1. Подключение CSS
18
30
 
19
- ```js static
20
- import { KonturColors } from '@skbkontur/colors';
31
+ Подключить CSS-файл с одной или несколькими цветовыми схемами продукта: `brand-[цвет]_accent-[gray|brand].css`
21
32
 
22
- const text = `<div style="color: ${KonturColors.blueDark90}">Цвет blueDark90</div>`;
33
+ ```css
34
+ /* Список всех цветовых схем. Выберите одну или несколько */
35
+ @import '@skbkontur/colors/tokens/brand-red_accent-gray.css';
36
+ @import '@skbkontur/colors/tokens/brand-orange_accent-gray.css';
37
+ @import '@skbkontur/colors/tokens/brand-mint_accent-brand.css';
38
+ @import '@skbkontur/colors/tokens/brand-mint_accent-gray.css';
39
+ @import '@skbkontur/colors/tokens/brand-blue_accent-brand.css';
40
+ @import '@skbkontur/colors/tokens/brand-blue_accent-gray.css';
41
+ @import '@skbkontur/colors/tokens/brand-blue-deep_accent-brand.css';
42
+ @import '@skbkontur/colors/tokens/brand-blue-deep_accent-gray.css';
43
+ @import '@skbkontur/colors/tokens/brand-green_accent-brand.css';
44
+ @import '@skbkontur/colors/tokens/brand-green_accent-gray.css';
45
+ @import '@skbkontur/colors/tokens/brand-violet_accent-brand.css';
46
+ @import '@skbkontur/colors/tokens/brand-violet_accent-gray.css';
47
+ @import '@skbkontur/colors/tokens/brand-purple_accent-brand.css';
48
+ @import '@skbkontur/colors/tokens/brand-purple_accent-gray.css';
23
49
  ```
24
50
 
25
- #### React
51
+ ### 2. Конфигурация в HTML
52
+
53
+ Настройка контекста через 3 data-атрибута:
26
54
 
27
- ```jsx static
28
- import { KonturColors } from '@skbkontur/colors';
55
+ - **data-k-brand** — брендовый цвет `red | orange | green | mint | blue | blueDeep | violet | purple`
56
+ - **data-k-accent** акцентный цвет `gray | brand`
57
+ - **data-k-theme** — тема `light | dark` (по умолчанию light)
29
58
 
30
- const Component = () => {
31
- return <div style={{ color: KonturColors.blueDark90 }}>Цвет blueDark90</div>;
32
- };
59
+ ```html
60
+ <div data-k-brand="orange" data-k-accent="gray" data-k-theme="light">
61
+ <div class="block">Блок Контур.Экстерна</div>
62
+
63
+ <div data-k-brand="blue" data-k-accent="brand" data-k-theme="light">
64
+ <div class="banner">Рекламный баннер Контур.Эльбы</div>
65
+ </div>
66
+ </div>
33
67
  ```
34
68
 
35
- #### CSS
69
+ ## Использование
36
70
 
37
- ```css
38
- @import '@skbkontur/colors/colors.css';
71
+ ### CSS
39
72
 
40
- .class {
41
- color: var(--blue-dark-90);
73
+ Токены доступны в виде CSS-переменных `var(--k-color-token-name)`
74
+
75
+ ```css
76
+ .block {
77
+ color: var(--k-color-text-on-accent-default-primary);
78
+ background: var(--k-color-shape-default-accent-faint);
42
79
  }
43
80
  ```
44
81
 
45
- #### SCSS
82
+ ### JS/TS
46
83
 
47
- ```scss
48
- @import '@skbkontur/colors/colors.scss';
84
+ Переменные `colors.tokenName` содержат ссылки на `var(--k-color-token-name)`
85
+
86
+ ```js
87
+ import * as colors from '@skbkontur/colors';
88
+
89
+ const text = `
90
+ <div style="color: ${colors.textNeutralHeavy}">
91
+ Блок с текстом
92
+ </div>
93
+ `;
94
+ ```
95
+
96
+ ### SCSS
97
+
98
+ Переменные `colors.$token-name` содержат ссылки на `var(--k-color-token-name)`
99
+
100
+ ```css
101
+ @use '@skbkontur/colors/colors.scss';
49
102
 
50
103
  .class {
51
- color: $blue-dark-90;
104
+ color: colors.$text-neutral-heavy;
52
105
  }
53
106
  ```
54
107
 
55
- #### Less
108
+ ### Less
109
+
110
+ Переменные `$token-name` содержат ссылки на `var(--k-color-token-name)`
56
111
 
57
- ```less
112
+ ```css
58
113
  @import '@skbkontur/colors/colors.less';
59
114
 
60
115
  .class {
61
- color: @blue-dark-90;
116
+ color: $text-neutral-heavy;
62
117
  }
63
118
  ```
64
119
 
65
- ## Палитра
66
-
67
- ```jsx harmony
68
- import { KonturColors } from '@skbkontur/colors';
69
- import {
70
- Toast,
71
- DropdownMenu,
72
- MenuHeader,
73
- MenuItem,
74
- ThemeContext,
75
- ThemeFactory,
76
- THEME_2022_UPDATE_2024,
77
- } from '@skbkontur/react-ui';
78
-
79
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
80
-
81
- const styles = {
82
- colors: css`
83
- display: grid;
84
- grid-template-columns: repeat(3, minmax(0, 1fr));
85
- gap: 24px;
86
- `,
87
- colorGroup: css`
88
- break-inside: avoid;
89
- margin-bottom: 64px;
90
- `,
91
- colorBlock: css`
92
- display: flex;
93
- align-items: center;
94
- gap: 10px;
95
- width: 100%;
96
- border: none;
97
- text-align: left;
98
- background: none;
99
- cursor: pointer;
100
- padding: 8px;
101
- border-radius: 8px;
102
- transition: 0.1s ease;
103
-
104
- &:hover {
105
- background: rgba(0, 0, 0, 0.06);
106
- }
107
-
108
- &:active {
109
- background: rgba(0, 0, 0, 0.1);
110
- }
111
- `,
112
- colorTile: css`
113
- display: block;
114
- height: 32px;
115
- width: 32px;
116
- border: 1px solid rgba(0, 0, 0, 0.08);
117
- border-radius: 8px;
118
- flex-shrink: 0;
119
- `,
120
- groupTitle: css`
121
- display: block;
122
- font-size: 20px;
123
- font-weight: 600;
124
- margin: 0 8px 12px;
125
- `,
126
- title: css`
127
- display: block;
128
- padding: 1px 0 0 8px;
129
- `,
130
- colorName: css`
131
- display: block;
132
- font-size: 14px;
133
- line-height: 1.2;
134
- `,
135
- colorValue: css`
136
- display: block;
137
- fontSize: 12px;
138
- color: #8b8b8b;
139
- }`,
140
- };
141
-
142
- const colorGroups = Object.entries(KonturColors).reduce((acc, [colorKey, colorValue]) => {
143
- const firstWord = ['greenMint', 'blueDark'].find((color) => colorKey.match(color)) || colorKey.match(/^[a-z]+/)[0];
144
-
145
- acc[firstWord] = { ...acc[firstWord], [colorKey]: colorValue };
146
-
147
- return acc;
148
- }, {});
149
-
150
- const getColors = (color) => {
151
- const colorDashCase = color
152
- .replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())
153
- .replace(/\d/, (m) => `-${m}`)
154
- .replace('f-f-f', 'fff');
155
-
156
- return {
157
- 'JavaScript / TypeScript': `KonturColors.${color}`,
158
- CSS: `var(--kontur-${colorDashCase})`,
159
- SCSS: `$${colorDashCase}`,
160
- Less: `@${colorDashCase}`,
161
- };
162
- };
163
-
164
- const copyColor = (color) => {
165
- navigator.clipboard.writeText(color);
166
- Toast.push('Цвет скопирован', null, 1000);
167
- };
168
-
169
- <div className={styles.colors}>
170
- <ThemeContext.Provider value={THEME_2022_UPDATE_2024}>
171
- {Object.entries(colorGroups).map(([group, colors]) => {
172
- return (
173
- <div className={styles.colorGroup}>
174
- <div className={styles.groupTitle}>{group}</div>
175
- {Object.keys(colors).map((colorName) => {
176
- const colorValue = KonturColors[colorName];
177
- const colorTile = (
178
- <div className={styles.colorBlock}>
179
- <span className={styles.colorTile} style={{ backgroundColor: colorValue }} />
180
- <span>
181
- <span className={styles.colorName}>{colorName}</span>
182
- <span className={styles.colorValue}>{colorValue}</span>
183
- </span>
184
- </div>
185
- );
186
- return (
187
- <div>
188
- <DropdownMenu caption={colorTile} width="300">
189
- <MenuHeader>Скопировать переменную</MenuHeader>
190
- {Object.entries(getColors(colorName)).map(([lang, color]) => (
191
- <MenuItem onClick={() => copyColor(color)} comment={lang}>
192
- <div style={{ minWidth: 270 }}>{color}</div>
193
- </MenuItem>
194
- ))}
195
- </DropdownMenu>
196
- </div>
197
- );
198
- })}
199
- </div>
200
- );
201
- })}
202
- </ThemeContext.Provider>
203
- </div>;
204
- ```
120
+ <br />
205
121
 
206
- ## Разработка
122
+ ## Colors API: генерация палитр и кастомные токены
207
123
 
208
- - Токены выгружаются в формате `camelCase`
209
- - `src/colors.ts` — файл с токенами
210
- - `npm run build` сборка пакета в `/dist`
124
+ Библиотека Colors содержит JS API для продвинутых сценариев:
125
+
126
+ - Генерация палитр для произвольных HEX-цветов, а не только брендовых
127
+ - Создание/расширение цветовых палитр с собственными семантическими токенами
128
+ - Генерация цветов в форматах для разных платформ (oklch, hex, rgba и др.)
129
+ - Перекраска интерфейсов в любой цвет на лету
130
+
131
+ Функция `getColors` позволяет получать цвета для произвольных `brand`, `accent` и `theme`. Настраивать образцы оттенков `warning`, `error`. Указывать формат цвета, задавать кастомные токены со ссылками на сгенерированные палитры и другие параметры.
132
+
133
+ ```js static
134
+ import { getColors } from '@skbkontur/colors';
135
+
136
+ const colors = getColors({ brand: 'orange', accent: 'gray', theme: 'light' });
137
+
138
+ const text = `
139
+ <div style="color: ${colors.textNeutralHeavy}">
140
+ Блок с текстом
141
+ </div>
142
+ `;
143
+ ```