@sberbusiness/triplex-next-mcp-server 1.44.0-beta → 1.46.0-beta
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 +7 -6
- package/bundle/components/AlertContext.md +11 -8
- package/bundle/components/AlertProcess.md +13 -10
- package/bundle/components/Badge.md +6 -3
- package/bundle/components/Button.md +46 -43
- package/bundle/components/ButtonDropdownExtended.md +3 -2
- package/bundle/components/ButtonIcon.md +7 -4
- package/bundle/components/Calendar.md +62 -59
- package/bundle/components/Caption.md +26 -23
- package/bundle/components/CardAction.md +615 -0
- package/bundle/components/Checkbox.md +32 -29
- package/bundle/components/CheckboxTreeExtended.md +9 -5
- package/bundle/components/Chip.md +51 -47
- package/bundle/components/ChipMonthYearPicker.md +344 -0
- package/bundle/components/ChipMultiselect.md +1251 -0
- package/bundle/components/ChipOptions.md +329 -0
- package/bundle/components/ChipSort.md +333 -0
- package/bundle/components/ChipSuggest.md +587 -0
- package/bundle/components/CodeText.md +26 -23
- package/bundle/components/Col.md +1 -2
- package/bundle/components/CollapsibleTree.md +8 -5
- package/bundle/components/DateField.md +222 -303
- package/bundle/components/DatePickerExtended.md +3 -1
- package/bundle/components/Dropdown.md +33 -28
- package/bundle/components/EmptyView.md +12 -5
- package/bundle/components/FooterPage.md +6 -2
- package/bundle/components/FormField.md +47 -42
- package/bundle/components/FormGroup.md +192 -52
- package/bundle/components/Header.md +491 -211
- package/bundle/components/HeaderPage.md +6 -2
- package/bundle/components/HelpBox.md +7 -1
- package/bundle/components/ImageGallery.md +33 -34
- package/bundle/components/ImageGalleryExtended.md +33 -34
- package/bundle/components/Island.md +16 -13
- package/bundle/components/IslandAccordion.md +443 -152
- package/bundle/components/IslandWidget.md +622 -157
- package/bundle/components/LightBox.md +14 -12
- package/bundle/components/Link.md +211 -96
- package/bundle/components/ListActionItem.md +7 -4
- package/bundle/components/ListItem.md +11 -8
- package/bundle/components/ListItemControlsButton.md +16 -13
- package/bundle/components/ListItemControlsButtonDropdown.md +9 -6
- package/bundle/components/ListItemSelectable.md +7 -4
- package/bundle/components/ListMasterFooter.md +8 -5
- package/bundle/components/ListMasterHeader.md +8 -5
- package/bundle/components/ListSortableItem.md +11 -8
- package/bundle/components/ListTableItem.md +7 -4
- package/bundle/components/LoaderMiddle.md +7 -4
- package/bundle/components/LoaderScreen.md +11 -8
- package/bundle/components/LoaderSmall.md +7 -4
- package/bundle/components/Marker.md +184 -69
- package/bundle/components/MarkerStatus.md +206 -88
- package/bundle/components/MaskedField.md +4 -5
- package/bundle/components/MasterTable.md +602 -0
- package/bundle/components/ModalWindow.md +7 -4
- package/bundle/components/MonthYearField.md +3 -1
- package/bundle/components/MultiselectField.md +2183 -132
- package/bundle/components/Notification.md +12 -9
- package/bundle/components/Overlay.md +9 -4
- package/bundle/components/Page.md +2 -2
- package/bundle/components/Pagination.md +15 -8
- package/bundle/components/Row.md +1 -1
- package/bundle/components/SelectExtendedField.md +3 -3
- package/bundle/components/SelectField.md +466 -148
- package/bundle/components/SliderExtended.md +39 -36
- package/bundle/components/SmallInput.md +194 -51
- package/bundle/components/Suggest.md +535 -99
- package/bundle/components/SwipeableArea.md +428 -79
- package/bundle/components/TableBasic.md +19 -11
- package/bundle/components/TabsExtended.md +24 -21
- package/bundle/components/Tag.md +6 -2
- package/bundle/components/Text.md +28 -25
- package/bundle/components/TextField.md +3 -4
- package/bundle/components/ThemeProvider.md +50 -1
- package/bundle/components/Title.md +26 -23
- package/bundle/components/Tooltip.md +24 -21
- package/bundle/components/TopOverlay.md +7 -4
- package/bundle/guides/codestyle.md +3 -0
- package/bundle/guides/context.md +84 -12
- package/bundle/guides/guidelines.md +321 -0
- package/bundle/guides/template.md +22 -12
- package/bundle/manifest.json +75 -17
- package/bundle/release-notes/1.45.0.mdx +117 -0
- package/bundle/release-notes/1.46.0.mdx +66 -0
- package/bundle/release-notes/1.47.0.mdx +7 -0
- package/bundle/tokens.json +6362 -0
- package/dist/index.js +177 -28
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,16 +3,16 @@ component: TabsExtended
|
|
|
3
3
|
category: Tabs
|
|
4
4
|
related: [Tabs, TabsLine, Badge, Text]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
6
|
+
- Tabs.Type1_Background
|
|
7
|
+
- Tabs.Type2_Background
|
|
8
|
+
- Tabs.Type1_Tab_Background_Default
|
|
9
|
+
- Tabs.Type2_Tab_Background_Default
|
|
10
|
+
- Tabs.Type1_Tab_Background_Hover
|
|
11
|
+
- Tabs.Type2_Tab_Background_Hover
|
|
12
|
+
- Tabs.Type1_Tab_Background_Selected
|
|
13
|
+
- Tabs.Type2_Tab_Background_Selected
|
|
14
|
+
- Tabs.Tab_BorderColor_Default
|
|
15
|
+
- Tabs.Tab_BorderColor_Focus
|
|
16
16
|
stories: stories/TabsExtended/TabsExtended.stories.tsx
|
|
17
17
|
version: "1.0"
|
|
18
18
|
---
|
|
@@ -88,22 +88,25 @@ version: "1.0"
|
|
|
88
88
|
|
|
89
89
|
## Дизайн-токены
|
|
90
90
|
|
|
91
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
92
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Tabs.ts`.
|
|
93
|
+
|
|
91
94
|
Компонент использует токены семейства `Tabs` — они общие с `Tabs`:
|
|
92
95
|
|
|
93
96
|
```text
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
Tabs.Type1_Background
|
|
98
|
+
Tabs.Type2_Background
|
|
99
|
+
Tabs.Type1_Tab_Background_Default
|
|
100
|
+
Tabs.Type2_Tab_Background_Default
|
|
101
|
+
Tabs.Type1_Tab_Background_Hover
|
|
102
|
+
Tabs.Type2_Tab_Background_Hover
|
|
103
|
+
Tabs.Type1_Tab_Background_Selected
|
|
104
|
+
Tabs.Type2_Tab_Background_Selected
|
|
105
|
+
Tabs.Tab_BorderColor_Default
|
|
106
|
+
Tabs.Tab_BorderColor_Focus
|
|
104
107
|
```
|
|
105
108
|
|
|
106
|
-
|
|
109
|
+
Собственной группы токенов `TabsExtended` нет: переименование токенов группы `Tabs` ломает оба компонента сразу.
|
|
107
110
|
|
|
108
111
|
---
|
|
109
112
|
|
package/bundle/components/Tag.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
component: Tag
|
|
3
3
|
category: Tag
|
|
4
4
|
related: [TagGroup, TagColor, ButtonIcon, Text]
|
|
5
|
-
tokens:
|
|
5
|
+
tokens:
|
|
6
|
+
- Tag.Background
|
|
6
7
|
stories: stories/Tag/Tag.stories.tsx
|
|
7
8
|
version: "1.0"
|
|
8
9
|
---
|
|
@@ -64,8 +65,11 @@ version: "1.0"
|
|
|
64
65
|
|
|
65
66
|
## Дизайн-токены
|
|
66
67
|
|
|
68
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
69
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Tag.ts`.
|
|
70
|
+
|
|
67
71
|
```text
|
|
68
|
-
|
|
72
|
+
Tag.Background
|
|
69
73
|
```
|
|
70
74
|
|
|
71
75
|
Единственный собственный токен — фон плашки. Цвет текста задаёт `Text` через токены типографики
|
|
@@ -3,28 +3,28 @@ component: Text
|
|
|
3
3
|
category: Typography
|
|
4
4
|
related: [Title, Caption, CodeText]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
6
|
+
- Typography.Primary_Color
|
|
7
|
+
- Typography.PrimaryInvert_Color
|
|
8
|
+
- Typography.Complementary_Color
|
|
9
|
+
- Typography.ComplementaryInvert_Color
|
|
10
|
+
- Typography.Secondary_Color
|
|
11
|
+
- Typography.SecondaryInvert_Color
|
|
12
|
+
- Typography.Tertiary_Color
|
|
13
|
+
- Typography.TertiaryInvert_Color
|
|
14
|
+
- Typography.Disabled_Color
|
|
15
|
+
- Typography.DisabledInvert_Color
|
|
16
|
+
- Typography.Brand_Color
|
|
17
|
+
- Typography.BrandInvert_Color
|
|
18
|
+
- Typography.Info_Color
|
|
19
|
+
- Typography.InfoInvert_Color
|
|
20
|
+
- Typography.Success_Color
|
|
21
|
+
- Typography.SuccessInvert_Color
|
|
22
|
+
- Typography.Warning_Color
|
|
23
|
+
- Typography.WarningInvert_Color
|
|
24
|
+
- Typography.Error_Color
|
|
25
|
+
- Typography.ErrorInvert_Color
|
|
26
|
+
- Typography.System_Color
|
|
27
|
+
- Typography.SystemInvert_Color
|
|
28
28
|
stories: stories/Typography/Text.stories.tsx
|
|
29
29
|
version: "1.0"
|
|
30
30
|
---
|
|
@@ -74,11 +74,14 @@ version: "1.0"
|
|
|
74
74
|
|
|
75
75
|
## Дизайн-токены
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
78
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Typography.ts`.
|
|
79
|
+
|
|
80
|
+
Цвета — только через токены группы `Typography` (общие для всего семейства, см. frontmatter):
|
|
78
81
|
|
|
79
82
|
```text
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
Typography.{Type}_Color
|
|
84
|
+
Typography.{Type}Invert_Color
|
|
82
85
|
```
|
|
83
86
|
|
|
84
87
|
где `{Type}` ∈ Primary, Complementary, Secondary, Tertiary, Disabled, Brand, Info, Success, Warning, Error, System.
|
|
@@ -54,7 +54,7 @@ version: "1.0"
|
|
|
54
54
|
|
|
55
55
|
## Дизайн-токены
|
|
56
56
|
|
|
57
|
-
Собственных
|
|
57
|
+
Собственных токенов и стилей нет. Внешний вид полностью наследуется от семейства `FormField` (группа токенов `FormField`, стили — `src/components/FormField/styles/`).
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -62,7 +62,7 @@ version: "1.0"
|
|
|
62
62
|
|
|
63
63
|
- `forwardRef` на `TextField` и `TextFieldBase` — не убирать. Внешний `ref` указывает на корневой `<div>` `FormField`; ref на сам input — только через `inputProps.ref`.
|
|
64
64
|
- Публичный API (`ITextFieldProps`: `inputProps` + `label`/`prefix`/`postfix`/`description`/`counter` + унаследованные `size`/`status`/`active`) — изменение имён/типов/значений enum — breaking change.
|
|
65
|
-
-
|
|
65
|
+
- `TextFieldBase` намеренно НЕ экспортируется — приватная база.
|
|
66
66
|
- Известное ограничение контракта: `inputProps.ref` типизирован как `React.RefObject<HTMLInputElement>` (не `React.Ref`), callback-ref формально не проходит по типам. Исправление — breaking change, требует отдельной задачи.
|
|
67
67
|
- Уникальный `id` для связки label↔input генерируется через `lodash uniqueId` в `FormFieldInput` — не заменять на `useId` (React 17 совместимость через release-0).
|
|
68
68
|
- `description || counter` рендерятся в общем блоке `FormFieldDescription` — не разносить по отдельным блокам (изменит DOM и скриншоты).
|
|
@@ -80,8 +80,7 @@ version: "1.0"
|
|
|
80
80
|
|
|
81
81
|
## Связанные компоненты
|
|
82
82
|
|
|
83
|
-
- `TextFieldBase` (внутренний, не в barrel) — базовая раскладка `FormGroup`/`FormField` + слоты `prefix`/`children`/`label`/`postfix` и блок `description`/`counter`.
|
|
84
|
-
- `MaskedField` — сосед по папке: то же самое, но с `FormFieldMaskedInput` (ввод по маске) через prop `maskedInputProps`. Документируется отдельно.
|
|
83
|
+
- `TextFieldBase` (внутренний, не в barrel) — базовая раскладка `FormGroup`/`FormField` + слоты `prefix`/`children`/`label`/`postfix` и блок `description`/`counter`. Описан здесь, отдельного AI.md не имеет.
|
|
85
84
|
- `FormField` / `FormFieldInput` и слоты семейства — низкоуровневые строительные блоки; используются напрямую, когда нужна нестандартная композиция.
|
|
86
85
|
- `FormGroup` — контейнер вертикальной раскладки поля и описания.
|
|
87
86
|
- `FormFieldClear` — кнопка очистки, передаётся в `postfix`.
|
|
@@ -65,7 +65,55 @@ version: "1.0"
|
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Версия в имени переменной — версия пакета с точками, заменёнными на дефисы
|
|
68
|
-
(см. `DesignTokenUtils.getCSSVariableByTokenGroup`).
|
|
68
|
+
(см. `DesignTokenUtils.getCSSVariableByTokenGroup`). Из-за версии эти имена нельзя
|
|
69
|
+
использовать в коде потребителя — они меняются каждый релиз. Публичный способ
|
|
70
|
+
поменять оформление — prop `tokens`.
|
|
71
|
+
|
|
72
|
+
### Как переопределять токены
|
|
73
|
+
|
|
74
|
+
Путь токена — `{Группа}.{Токен}`. Объект `tokens` плоский: группы лежат на верхнем
|
|
75
|
+
уровне, вложенности `core` / `components` в API нет.
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
import {useRef} from "react";
|
|
79
|
+
import {ThemeProvider, ETriplexNextTheme} from "@sberbusiness/triplex-next";
|
|
80
|
+
|
|
81
|
+
// tokens сравнивается по ссылке — объект вынесен из рендера, иначе <style> пересобирается
|
|
82
|
+
// на каждый рендер.
|
|
83
|
+
const TOKENS = {
|
|
84
|
+
// core-токен: палитра, меняется сразу для всех компонентов, которые на неё ссылаются
|
|
85
|
+
ColorBrand: {50: {value: "#1D6BF3"}},
|
|
86
|
+
// компонентный токен: значением или ссылкой на core-токен
|
|
87
|
+
Calendar: {
|
|
88
|
+
Background: {value: "#FFFFFF"},
|
|
89
|
+
View_Item_Background_Selected_Default: {ref: "ColorBrand.50"},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const App = () => {
|
|
94
|
+
const scopeRef = useRef<HTMLDivElement>(null);
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<ThemeProvider theme={ETriplexNextTheme.LIGHT} tokens={TOKENS} scopeRef={scopeRef}>
|
|
98
|
+
<div ref={scopeRef}>…</div>
|
|
99
|
+
</ThemeProvider>
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Правила:
|
|
105
|
+
|
|
106
|
+
- значение задаётся либо `{value: "<css>"}`, либо `{ref: "<Группа>.<Токен>"}`;
|
|
107
|
+
- `ref` указывает **только на core-токен**: тип ссылок генерируется из `DesignTokensCore`
|
|
108
|
+
(`scripts/generateRefTokensTypes.ts`), ссылка на компонентный токен не скомпилируется;
|
|
109
|
+
- одним объектом можно переопределить сколько угодно групп — и core, и компонентные;
|
|
110
|
+
- переопределения мерджатся поверх токенов темы (`defaultsDeep`), тема при этом
|
|
111
|
+
продолжает действовать: то, что не переопределено, берётся из неё;
|
|
112
|
+
- действуют внутри `scopeRef`; вложенные `ThemeProvider` переопределяют друг друга.
|
|
113
|
+
|
|
114
|
+
Где смотреть значения по умолчанию: `src/components/DesignTokens/DesignTokensCore.ts`
|
|
115
|
+
(палитра) и `src/components/DesignTokens/components/{Группа}.ts` (пара «светлая /
|
|
116
|
+
тёмная тема» для каждого компонентного токена).
|
|
69
117
|
|
|
70
118
|
---
|
|
71
119
|
|
|
@@ -145,6 +193,7 @@ version: "1.0"
|
|
|
145
193
|
|---|---|
|
|
146
194
|
| 2026-08-05 | Создан документ. AI-рефакторинг: JSDoc на props и экспортах, ключ тега стилей вынесен в хелпер, упрощён эффект `ThemeProviderView`, добавлены unit-тесты `ThemeProviderView` и `useToken`, stories переведены на modern pattern |
|
|
147
195
|
| 2026-08-05 | `related` сокращён до `useToken`. Удалён неактуальный комментарий про относительный импорт в `ThemeProviderView` |
|
|
196
|
+
| 2026-08-31 | Добавлен раздел «Как переопределять токены»: путь `{Группа}.{Токен}`, плоская форма prop `tokens`, `value` / `ref` |
|
|
148
197
|
|
|
149
198
|
---
|
|
150
199
|
|
|
@@ -3,28 +3,28 @@ component: Title
|
|
|
3
3
|
category: Typography
|
|
4
4
|
related: [Text, Caption, CodeText]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
6
|
+
- Typography.Primary_Color
|
|
7
|
+
- Typography.PrimaryInvert_Color
|
|
8
|
+
- Typography.Complementary_Color
|
|
9
|
+
- Typography.ComplementaryInvert_Color
|
|
10
|
+
- Typography.Secondary_Color
|
|
11
|
+
- Typography.SecondaryInvert_Color
|
|
12
|
+
- Typography.Tertiary_Color
|
|
13
|
+
- Typography.TertiaryInvert_Color
|
|
14
|
+
- Typography.Disabled_Color
|
|
15
|
+
- Typography.DisabledInvert_Color
|
|
16
|
+
- Typography.Brand_Color
|
|
17
|
+
- Typography.BrandInvert_Color
|
|
18
|
+
- Typography.Info_Color
|
|
19
|
+
- Typography.InfoInvert_Color
|
|
20
|
+
- Typography.Success_Color
|
|
21
|
+
- Typography.SuccessInvert_Color
|
|
22
|
+
- Typography.Warning_Color
|
|
23
|
+
- Typography.WarningInvert_Color
|
|
24
|
+
- Typography.Error_Color
|
|
25
|
+
- Typography.ErrorInvert_Color
|
|
26
|
+
- Typography.System_Color
|
|
27
|
+
- Typography.SystemInvert_Color
|
|
28
28
|
stories: stories/Typography/Title.stories.tsx
|
|
29
29
|
version: "1.0"
|
|
30
30
|
---
|
|
@@ -73,7 +73,10 @@ version: "1.0"
|
|
|
73
73
|
|
|
74
74
|
## Дизайн-токены
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
77
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Typography.ts`.
|
|
78
|
+
|
|
79
|
+
Цвета — общие токены группы `Typography` (см. frontmatter): `Typography.{Type}_Color` и `Typography.{Type}Invert_Color`.
|
|
77
80
|
|
|
78
81
|
Размеры шрифта и line-height — фиксированные пиксельные значения в `styles/Title.module.less` (токенов для них нет).
|
|
79
82
|
|
|
@@ -3,16 +3,16 @@ component: Tooltip
|
|
|
3
3
|
category: Tooltip
|
|
4
4
|
related: [HelpBox, SMSField, Dropdown, DropdownMobile, Portal, MobileView, ThemeProvider, ButtonIcon]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
6
|
+
- Tooltip.Background
|
|
7
|
+
- Tooltip.Color
|
|
8
|
+
- Tooltip.Link_Desktop_Color_Default
|
|
9
|
+
- Tooltip.Link_Desktop_Color_Hover
|
|
10
|
+
- Tooltip.Link_Desktop_Color_Active
|
|
11
|
+
- Tooltip.Link_Desktop_Shadow_Focus
|
|
12
|
+
- Tooltip.Link_Mobile_Color_Default
|
|
13
|
+
- Tooltip.Link_Mobile_Color_Hover
|
|
14
|
+
- Tooltip.Link_Mobile_Color_Active
|
|
15
|
+
- Tooltip.Link_Mobile_Shadow_Focus
|
|
16
16
|
stories: stories/Tooltip/Tooltip.stories.tsx
|
|
17
17
|
version: "1.0"
|
|
18
18
|
---
|
|
@@ -85,20 +85,23 @@ version: "1.0"
|
|
|
85
85
|
|
|
86
86
|
## Дизайн-токены
|
|
87
87
|
|
|
88
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
89
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Tooltip.ts`.
|
|
90
|
+
|
|
88
91
|
```text
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
Tooltip.Background
|
|
93
|
+
Tooltip.Color
|
|
94
|
+
Tooltip.Link_Desktop_Color_Default
|
|
95
|
+
Tooltip.Link_Desktop_Color_Hover
|
|
96
|
+
Tooltip.Link_Desktop_Color_Active
|
|
97
|
+
Tooltip.Link_Desktop_Shadow_Focus
|
|
98
|
+
Tooltip.Link_Mobile_Color_Default
|
|
99
|
+
Tooltip.Link_Mobile_Color_Hover
|
|
100
|
+
Tooltip.Link_Mobile_Color_Active
|
|
101
|
+
Tooltip.Link_Mobile_Shadow_Focus
|
|
99
102
|
```
|
|
100
103
|
|
|
101
|
-
Мобильная версия дополнительно наследует токены `DropdownMobile
|
|
104
|
+
Мобильная версия дополнительно наследует токены группы `DropdownMobile`, так как построена на его субкомпонентах.
|
|
102
105
|
|
|
103
106
|
---
|
|
104
107
|
|
|
@@ -3,7 +3,7 @@ component: TopOverlay
|
|
|
3
3
|
category: TopOverlay
|
|
4
4
|
related: [LightBox, Overlay]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
6
|
+
- TopOverlay.Background
|
|
7
7
|
stories: stories/TopOverlay/TopOverlay.stories.tsx
|
|
8
8
|
version: "1.0"
|
|
9
9
|
---
|
|
@@ -89,13 +89,16 @@ LESS: `top: var(--triplex-next-runtime-TopOverlay-Top, 0)` — inline-стили
|
|
|
89
89
|
|
|
90
90
|
## Дизайн-токены
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
93
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/TopOverlay.ts`.
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
TopOverlay.Background
|
|
94
97
|
```
|
|
95
98
|
|
|
96
99
|
Токен задаёт цвет маски. Панель намеренно рисуется без фона и тени
|
|
97
100
|
(`background: none`, `box-shadow: none`) — фон даёт контент, который в неё кладут
|
|
98
|
-
(обычно `Confirm`), поэтому токен
|
|
101
|
+
(обычно `Confirm`), поэтому токен `Overlay.Panel_Background`
|
|
99
102
|
здесь не действует.
|
|
100
103
|
|
|
101
104
|
Runtime CSS-переменная (задаётся компонентом через `style`, **не** дизайн-токен,
|
|
@@ -135,6 +135,9 @@ import { Button } from "../Button";
|
|
|
135
135
|
- Имена классов — **camelCase**: `styles.secondaryLight`, `styles.iconOnly`.
|
|
136
136
|
- Никаких **inline styles** в компонентах (в stories допустимо для лейаута примеров).
|
|
137
137
|
- **Цвета** — только через CSS-переменные токенов (`var(--triplex-next-...)`). Никаких hex/rgb.
|
|
138
|
+
В стилях это правильная запись: CSS-переменные — внутренний слой токенов. А в документации
|
|
139
|
+
(`*-ai.md`, тексты Storybook) токен указывается путём `{Группа}.{Токен}` — см.
|
|
140
|
+
`docs/ai/CONTEXT.md` → «Дизайн-токены».
|
|
138
141
|
- Runtime CSS-переменные, которые компонент задаёт сам (например через `style` для динамической высоты,
|
|
139
142
|
transform или координат), называй с префиксом `--triplex-next-runtime-...`.
|
|
140
143
|
Они не являются дизайн-токенами и не должны попадать в `src/components/DesignTokens` или generated-файлы.
|
package/bundle/guides/context.md
CHANGED
|
@@ -70,27 +70,99 @@ src/components/Button/
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
## Дизайн-токены
|
|
73
|
+
## Дизайн-токены
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
У токенов два слоя. Не путай их: в документации для потребителя описывается
|
|
76
|
+
только первый.
|
|
77
|
+
|
|
78
|
+
### Публичный слой — токены в TypeScript
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
Источник значений: `src/components/DesignTokens/DesignTokensCore.ts` (палитра,
|
|
81
|
+
10 групп) и `src/components/DesignTokens/components/{Group}.ts` (токены
|
|
82
|
+
компонентов, 56 групп). Путь токена — `{Группа}.{Токен}`:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
ColorBrand.50
|
|
86
|
+
Button.General_Background_Default
|
|
87
|
+
Calendar.View_Item_Background_Selected_Hover
|
|
81
88
|
```
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
|
|
90
|
+
Ровно в этом виде токен переопределяется потребителем через `ThemeProvider`:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
// tokens сравнивается по ссылке — объект выносится из рендера.
|
|
94
|
+
const TOKENS = {
|
|
95
|
+
ColorBrand: {50: {value: "blue"}},
|
|
96
|
+
Calendar: {Background: {ref: "ColorNeutral.100"}},
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
<ThemeProvider tokens={TOKENS} scopeRef={scopeRef}>…</ThemeProvider>
|
|
86
100
|
```
|
|
87
101
|
|
|
102
|
+
Правила слоя:
|
|
103
|
+
|
|
104
|
+
- объект токенов **плоский** — группы лежат на верхнем уровне
|
|
105
|
+
(`TDesignTokens = TDesignTokensCore & TDesignTokensComponents`). Вложенности
|
|
106
|
+
`core` / `components` в API нет, она есть только в раскладке исходников;
|
|
107
|
+
- значение токена — либо `{value: "<css>"}`, либо `{ref: "<Группа>.<Токен>"}`;
|
|
108
|
+
- `ref` указывает **только на core-токены**: тип `designTokensRefs` генерируется
|
|
109
|
+
из `DesignTokensCore` (`scripts/generateRefTokensTypes.ts`), ссылка на
|
|
110
|
+
компонентный токен не скомпилируется;
|
|
111
|
+
- у компонентного токена всегда пара значений — `[светлая, тёмная]` тема;
|
|
112
|
+
- имена core-групп и групп компонентов не должны пересекаться: в одном плоском
|
|
113
|
+
неймспейсе они схлопнутся. Проверяется гардом в `scripts/syncAiMdTokens.ts`.
|
|
114
|
+
|
|
88
115
|
**Состояния:** `Default`, `Hover`, `Active`, `Focus`, `Disabled`
|
|
89
116
|
**Свойства:** `Background`, `Color`, `Shadow`, `Border`
|
|
90
117
|
|
|
91
|
-
|
|
118
|
+
Если добавляешь новое визуальное состояние — нужен новый токен. Имя токена
|
|
119
|
+
согласуй с дизайнером.
|
|
120
|
+
|
|
121
|
+
### Внутренний слой — CSS-переменные
|
|
122
|
+
|
|
123
|
+
В LESS токен читается как css-переменная:
|
|
124
|
+
|
|
125
|
+
```less
|
|
126
|
+
background: var(--triplex-next-Button-General_Background_Default);
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Это внутренняя реализация, а не публичное имя: на сборке
|
|
130
|
+
`scripts/replaceDesignTokenVersion.js` дописывает к переменной версию пакета,
|
|
131
|
+
и в опубликованном коде она выглядит как
|
|
132
|
+
`--triplex-next-{Группа}-{Токен}-{версия}`. Имя меняется каждый релиз, поэтому
|
|
133
|
+
потребитель не может на него опереться.
|
|
134
|
+
|
|
135
|
+
Отсюда правило: **в стилях библиотеки пиши `var(--triplex-next-...)`, а в
|
|
136
|
+
документации (`*-ai.md`, описания в Storybook) указывай путь токена
|
|
137
|
+
`{Группа}.{Токен}`.** Переименование css-переменной остаётся breaking change —
|
|
138
|
+
её видят потребители, дотянувшиеся до внутреннего слоя.
|
|
139
|
+
|
|
140
|
+
Полный набор переменных генерируется в `src/generated/themesCssVariables.css`.
|
|
141
|
+
Не редактируй этот файл вручную.
|
|
142
|
+
|
|
143
|
+
### Токены в AI-документации
|
|
144
|
+
|
|
145
|
+
Frontmatter `{Component}-ai.md` перечисляет пути токенов:
|
|
146
|
+
|
|
147
|
+
```yaml
|
|
148
|
+
tokens:
|
|
149
|
+
- Calendar.Background
|
|
150
|
+
- Calendar.View_Header_Color
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Этот список читает MCP-сервер (`get_tokens`), поэтому формат обязателен.
|
|
154
|
+
Проверяется и нормализуется скриптом:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm run syncAiMdTokens # нормализовать блоки tokens:
|
|
158
|
+
npm run syncAiMdTokens -- --check # проверить, ничего не записывая
|
|
159
|
+
npm run syncAiMdTokens -- --check src/components/Badge/Badge-ai.md # только эти файлы
|
|
160
|
+
```
|
|
92
161
|
|
|
93
|
-
|
|
162
|
+
Скрипт не определяет состав токенов за автора (в одной директории живёт
|
|
163
|
+
несколько компонентов с разными наборами) — он нормализует и проверяет то, что
|
|
164
|
+
перечислено, а расхождения с LESS показывает предупреждениями. Файл, по которому
|
|
165
|
+
нашлись ошибки, скрипт не переписывает — чинит автор.
|
|
94
166
|
|
|
95
167
|
---
|
|
96
168
|
|