@sberbusiness/triplex-next-mcp-server 1.44.0-beta → 1.45.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.
Files changed (76) hide show
  1. package/README.md +7 -6
  2. package/bundle/components/AlertContext.md +11 -8
  3. package/bundle/components/AlertProcess.md +13 -10
  4. package/bundle/components/Badge.md +6 -3
  5. package/bundle/components/Button.md +46 -43
  6. package/bundle/components/ButtonDropdownExtended.md +3 -2
  7. package/bundle/components/ButtonIcon.md +7 -4
  8. package/bundle/components/Calendar.md +62 -59
  9. package/bundle/components/Caption.md +26 -23
  10. package/bundle/components/Checkbox.md +32 -29
  11. package/bundle/components/CheckboxTreeExtended.md +9 -5
  12. package/bundle/components/Chip.md +44 -41
  13. package/bundle/components/CodeText.md +26 -23
  14. package/bundle/components/Col.md +1 -2
  15. package/bundle/components/CollapsibleTree.md +8 -5
  16. package/bundle/components/Dropdown.md +33 -28
  17. package/bundle/components/EmptyView.md +12 -5
  18. package/bundle/components/FooterPage.md +6 -2
  19. package/bundle/components/FormField.md +44 -41
  20. package/bundle/components/FormGroup.md +192 -52
  21. package/bundle/components/Header.md +491 -211
  22. package/bundle/components/HeaderPage.md +6 -2
  23. package/bundle/components/ImageGallery.md +33 -34
  24. package/bundle/components/ImageGalleryExtended.md +33 -34
  25. package/bundle/components/Island.md +16 -13
  26. package/bundle/components/LightBox.md +14 -12
  27. package/bundle/components/Link.md +211 -96
  28. package/bundle/components/ListActionItem.md +7 -4
  29. package/bundle/components/ListItem.md +11 -8
  30. package/bundle/components/ListItemControlsButton.md +16 -13
  31. package/bundle/components/ListItemControlsButtonDropdown.md +9 -6
  32. package/bundle/components/ListItemSelectable.md +7 -4
  33. package/bundle/components/ListMasterFooter.md +8 -5
  34. package/bundle/components/ListMasterHeader.md +8 -5
  35. package/bundle/components/ListSortableItem.md +11 -8
  36. package/bundle/components/ListTableItem.md +7 -4
  37. package/bundle/components/LoaderMiddle.md +7 -4
  38. package/bundle/components/LoaderScreen.md +11 -8
  39. package/bundle/components/LoaderSmall.md +7 -4
  40. package/bundle/components/Marker.md +184 -69
  41. package/bundle/components/MarkerStatus.md +206 -88
  42. package/bundle/components/MaskedField.md +2 -4
  43. package/bundle/components/MasterTable.md +602 -0
  44. package/bundle/components/ModalWindow.md +7 -4
  45. package/bundle/components/MultiselectField.md +2183 -132
  46. package/bundle/components/Notification.md +12 -9
  47. package/bundle/components/Overlay.md +9 -4
  48. package/bundle/components/Page.md +2 -2
  49. package/bundle/components/Pagination.md +15 -8
  50. package/bundle/components/Row.md +1 -1
  51. package/bundle/components/SelectExtendedField.md +3 -3
  52. package/bundle/components/SelectField.md +466 -148
  53. package/bundle/components/SliderExtended.md +39 -36
  54. package/bundle/components/SmallInput.md +194 -51
  55. package/bundle/components/Suggest.md +535 -99
  56. package/bundle/components/SwipeableArea.md +428 -79
  57. package/bundle/components/TableBasic.md +19 -11
  58. package/bundle/components/TabsExtended.md +24 -21
  59. package/bundle/components/Tag.md +6 -2
  60. package/bundle/components/Text.md +28 -25
  61. package/bundle/components/TextField.md +3 -4
  62. package/bundle/components/ThemeProvider.md +50 -1
  63. package/bundle/components/Title.md +26 -23
  64. package/bundle/components/Tooltip.md +24 -21
  65. package/bundle/components/TopOverlay.md +7 -4
  66. package/bundle/guides/codestyle.md +3 -0
  67. package/bundle/guides/context.md +84 -12
  68. package/bundle/guides/guidelines.md +321 -0
  69. package/bundle/guides/template.md +22 -12
  70. package/bundle/manifest.json +31 -14
  71. package/bundle/release-notes/1.45.0.mdx +117 -0
  72. package/bundle/release-notes/1.46.0.mdx +7 -0
  73. package/bundle/tokens.json +6362 -0
  74. package/dist/index.js +177 -28
  75. package/dist/index.js.map +1 -1
  76. 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
- - --triplex-next-Tabs-Type1_Background
7
- - --triplex-next-Tabs-Type2_Background
8
- - --triplex-next-Tabs-Type1_Tab_Background_Default
9
- - --triplex-next-Tabs-Type2_Tab_Background_Default
10
- - --triplex-next-Tabs-Type1_Tab_Background_Hover
11
- - --triplex-next-Tabs-Type2_Tab_Background_Hover
12
- - --triplex-next-Tabs-Type1_Tab_Background_Selected
13
- - --triplex-next-Tabs-Type2_Tab_Background_Selected
14
- - --triplex-next-Tabs-Tab_BorderColor_Default
15
- - --triplex-next-Tabs-Tab_BorderColor_Focus
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
- --triplex-next-Tabs-Type1_Background
95
- --triplex-next-Tabs-Type2_Background
96
- --triplex-next-Tabs-Type1_Tab_Background_Default
97
- --triplex-next-Tabs-Type2_Tab_Background_Default
98
- --triplex-next-Tabs-Type1_Tab_Background_Hover
99
- --triplex-next-Tabs-Type2_Tab_Background_Hover
100
- --triplex-next-Tabs-Type1_Tab_Background_Selected
101
- --triplex-next-Tabs-Type2_Tab_Background_Selected
102
- --triplex-next-Tabs-Tab_BorderColor_Default
103
- --triplex-next-Tabs-Tab_BorderColor_Focus
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
- Собственного префикса `--triplex-next-TabsExtended-*` у компонента нет: переименование токенов `Tabs` ломает оба компонента сразу.
109
+ Собственной группы токенов `TabsExtended` нет: переименование токенов группы `Tabs` ломает оба компонента сразу.
107
110
 
108
111
  ---
109
112
 
@@ -2,7 +2,8 @@
2
2
  component: Tag
3
3
  category: Tag
4
4
  related: [TagGroup, TagColor, ButtonIcon, Text]
5
- tokens: [--triplex-next-Tag-Background]
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
- --triplex-next-Tag-Background
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
- - --triplex-next-Typography-Primary_Color
7
- - --triplex-next-Typography-PrimaryInvert_Color
8
- - --triplex-next-Typography-Complementary_Color
9
- - --triplex-next-Typography-ComplementaryInvert_Color
10
- - --triplex-next-Typography-Secondary_Color
11
- - --triplex-next-Typography-SecondaryInvert_Color
12
- - --triplex-next-Typography-Tertiary_Color
13
- - --triplex-next-Typography-TertiaryInvert_Color
14
- - --triplex-next-Typography-Disabled_Color
15
- - --triplex-next-Typography-DisabledInvert_Color
16
- - --triplex-next-Typography-Brand_Color
17
- - --triplex-next-Typography-BrandInvert_Color
18
- - --triplex-next-Typography-Info_Color
19
- - --triplex-next-Typography-InfoInvert_Color
20
- - --triplex-next-Typography-Success_Color
21
- - --triplex-next-Typography-SuccessInvert_Color
22
- - --triplex-next-Typography-Warning_Color
23
- - --triplex-next-Typography-WarningInvert_Color
24
- - --triplex-next-Typography-Error_Color
25
- - --triplex-next-Typography-ErrorInvert_Color
26
- - --triplex-next-Typography-System_Color
27
- - --triplex-next-Typography-SystemInvert_Color
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
- Цвета — только через CSS-переменные группы Typography (общие для всего семейства, см. frontmatter):
77
+ Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
78
+ «Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Typography.ts`.
79
+
80
+ Цвета — только через токены группы `Typography` (общие для всего семейства, см. frontmatter):
78
81
 
79
82
  ```text
80
- --triplex-next-Typography-{Type}_Color
81
- --triplex-next-Typography-{Type}Invert_Color
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
- Собственных CSS-токенов и стилей нет. Внешний вид полностью наследуется от семейства `FormField` (токены `--triplex-next-FormField-*` описаны в стилях `src/components/FormField/styles/`).
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
- - Barrel `index.ts` экспортирует `TextField` и `MaskedField` — состав экспортов не менять. `TextFieldBase` намеренно НЕ экспортируется — приватная база.
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`. На нём построены `TextField` и `MaskedField`. Описан здесь, отдельного AI.md не имеет.
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
- - --triplex-next-Typography-Primary_Color
7
- - --triplex-next-Typography-PrimaryInvert_Color
8
- - --triplex-next-Typography-Complementary_Color
9
- - --triplex-next-Typography-ComplementaryInvert_Color
10
- - --triplex-next-Typography-Secondary_Color
11
- - --triplex-next-Typography-SecondaryInvert_Color
12
- - --triplex-next-Typography-Tertiary_Color
13
- - --triplex-next-Typography-TertiaryInvert_Color
14
- - --triplex-next-Typography-Disabled_Color
15
- - --triplex-next-Typography-DisabledInvert_Color
16
- - --triplex-next-Typography-Brand_Color
17
- - --triplex-next-Typography-BrandInvert_Color
18
- - --triplex-next-Typography-Info_Color
19
- - --triplex-next-Typography-InfoInvert_Color
20
- - --triplex-next-Typography-Success_Color
21
- - --triplex-next-Typography-SuccessInvert_Color
22
- - --triplex-next-Typography-Warning_Color
23
- - --triplex-next-Typography-WarningInvert_Color
24
- - --triplex-next-Typography-Error_Color
25
- - --triplex-next-Typography-ErrorInvert_Color
26
- - --triplex-next-Typography-System_Color
27
- - --triplex-next-Typography-SystemInvert_Color
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
- Цвета — общие CSS-переменные семейства Typography (см. frontmatter): `--triplex-next-Typography-{Type}_Color` и `--triplex-next-Typography-{Type}Invert_Color`.
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
- - --triplex-next-Tooltip-Background
7
- - --triplex-next-Tooltip-Color
8
- - --triplex-next-Tooltip-Link_Desktop_Color_Default
9
- - --triplex-next-Tooltip-Link_Desktop_Color_Hover
10
- - --triplex-next-Tooltip-Link_Desktop_Color_Active
11
- - --triplex-next-Tooltip-Link_Desktop_Shadow_Focus
12
- - --triplex-next-Tooltip-Link_Mobile_Color_Default
13
- - --triplex-next-Tooltip-Link_Mobile_Color_Hover
14
- - --triplex-next-Tooltip-Link_Mobile_Color_Active
15
- - --triplex-next-Tooltip-Link_Mobile_Shadow_Focus
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
- --triplex-next-Tooltip-Background
90
- --triplex-next-Tooltip-Color
91
- --triplex-next-Tooltip-Link_Desktop_Color_Default
92
- --triplex-next-Tooltip-Link_Desktop_Color_Hover
93
- --triplex-next-Tooltip-Link_Desktop_Color_Active
94
- --triplex-next-Tooltip-Link_Desktop_Shadow_Focus
95
- --triplex-next-Tooltip-Link_Mobile_Color_Default
96
- --triplex-next-Tooltip-Link_Mobile_Color_Hover
97
- --triplex-next-Tooltip-Link_Mobile_Color_Active
98
- --triplex-next-Tooltip-Link_Mobile_Shadow_Focus
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` (`--triplex-next-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
- - --triplex-next-TopOverlay-Background
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
- ```css
93
- --triplex-next-TopOverlay-Background
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`), поэтому токен `--triplex-next-Overlay-Panel_Background`
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-файлы.
@@ -70,27 +70,99 @@ src/components/Button/
70
70
 
71
71
  ---
72
72
 
73
- ## Дизайн-токены (CSS-переменные)
73
+ ## Дизайн-токены
74
74
 
75
- Паттерн именования:
76
- ```
77
- --triplex-next-{Component}-{Variant}_{Property}_{State}
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
- --triplex-next-Button-General_Background_Default
83
- --triplex-next-Button-General_Color_Hover
84
- --triplex-next-Button-Secondary_Shadow_Focus
85
- --triplex-next-Button-Danger_Background_Disabled
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
- Токены генерируются в `src/generated/themesCssVariables.css`. Не редактируй этот файл вручную.
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