@sberbusiness/triplex-next-mcp-server 0.36.0-beta0 → 1.41.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 (46) hide show
  1. package/bundle/components/AlertContext.md +268 -0
  2. package/bundle/components/Button.md +5 -2
  3. package/bundle/components/ButtonDropdown.md +9 -1
  4. package/bundle/components/ButtonDropdownExtended.md +422 -0
  5. package/bundle/components/ButtonIcon.md +7 -1
  6. package/bundle/components/Calendar.md +183 -368
  7. package/bundle/components/Caption.md +291 -0
  8. package/bundle/components/Chip.md +310 -314
  9. package/bundle/components/CodeText.md +197 -0
  10. package/bundle/components/Col.md +311 -162
  11. package/bundle/components/CollapsibleTree.md +6 -3
  12. package/bundle/components/CollapsibleTreeExtended.md +6 -2
  13. package/bundle/components/Dropdown.md +748 -346
  14. package/bundle/components/FormField.md +468 -232
  15. package/bundle/components/IconWrapper.md +142 -89
  16. package/bundle/components/Island.md +221 -129
  17. package/bundle/components/KeyDownListener.md +215 -102
  18. package/bundle/components/LightBox.md +2252 -233
  19. package/bundle/components/List.md +26 -1
  20. package/bundle/components/ListActionItem.md +157 -0
  21. package/bundle/components/ListItem.md +34 -9
  22. package/bundle/components/ListItemSelectable.md +2 -2
  23. package/bundle/components/ListMaster.md +4 -5
  24. package/bundle/components/ListTableItem.md +391 -0
  25. package/bundle/components/LoaderMiddle.md +265 -0
  26. package/bundle/components/LoaderScreen.md +178 -81
  27. package/bundle/components/Notification.md +21 -21
  28. package/bundle/components/Page.md +1 -0
  29. package/bundle/components/Portal.md +131 -67
  30. package/bundle/components/Row.md +171 -69
  31. package/bundle/components/Text.md +320 -0
  32. package/bundle/components/TextField.md +364 -97
  33. package/bundle/components/ThemeProvider.md +305 -117
  34. package/bundle/components/Title.md +296 -0
  35. package/bundle/components/Tooltip.md +421 -181
  36. package/bundle/guides/commits.md +126 -24
  37. package/bundle/guides/context.md +1 -1
  38. package/bundle/guides/tests.md +42 -0
  39. package/bundle/manifest.json +109 -23
  40. package/bundle/release-notes/1.37.0.mdx +42 -1
  41. package/bundle/release-notes/1.38.0.mdx +36 -0
  42. package/bundle/release-notes/1.39.0.mdx +66 -0
  43. package/bundle/release-notes/1.40.0.mdx +27 -0
  44. package/bundle/release-notes/1.41.0.mdx +83 -0
  45. package/bundle/release-notes/1.42.0.mdx +7 -0
  46. package/package.json +1 -1
@@ -2,22 +2,41 @@
2
2
 
3
3
  ---
4
4
 
5
+ ## Задачи и тикеты
6
+
7
+ Задачи ведутся в Linear, команда `TRI` (https://linear.app/triplex-next).
8
+ Номер задачи `TRI-XXX` — обязательный префикс веток и коммитов: по нему
9
+ GitHub-интеграция Linear линкует PR и двигает статусы задачи
10
+ (ветка → In Progress, PR → In Review, merge → Done).
11
+
12
+ **Legacy:** исторические ветки и коммиты используют префикс `TRIPLEX-XXX`.
13
+ Существующие не переименовываем; всё новое — только `TRI-XXX`.
14
+
15
+ ---
16
+
5
17
  ## Именование веток
6
18
 
7
- **Формат:** `TRIPLEX-XXX-короткое-описание`
19
+ **Формат:** `TRI-XXX-короткое-описание`
8
20
 
9
21
  - Строчные буквы, слова через дефис.
10
- - Всегда начинается с номера тикета.
22
+ - Всегда начинается с номера задачи Linear.
11
23
 
12
24
  ```text
13
- TRIPLEX-844-ai-ready-design-system
14
- TRIPLEX-901-add-badge-component
15
- TRIPLEX-912-fix-button-focus-style
25
+ TRI-12-add-badge-component
26
+ TRI-15-fix-button-focus-style
27
+ TRI-21-alert-ai-ready
16
28
  ```
17
29
 
18
30
  **Исключения:**
19
- - Релизная ветка: `prepare-release-XX` (например, `prepare-release-2`)
20
- - Перелитие main → release-0: выполняется мейнтейнерами, формат произвольный
31
+ - Релизная ветка: `prerelease-X.Y.Z` (например, `prerelease-1.40.0`) — в неё
32
+ собираются фиксы релиза и бамп версии, PR идёт в `main`
33
+ - Перелитие main → release-0: выполняется человеком без отдельной ветки,
34
+ прямым мержем
35
+
36
+ Исключение касается только **имени ветки**. Коммиты внутри неё подчиняются
37
+ общему правилу `TRI-XXX`: на релиз заводится задача Linear, её номер идёт
38
+ префиксом (`TRI-XXX Подготовка релиза 1.40.0`). Legacy-префикс `TRIPLEX-0`
39
+ для новых релизов не используется.
21
40
 
22
41
  ---
23
42
 
@@ -28,29 +47,41 @@ TRIPLEX-912-fix-button-focus-style
28
47
  | `main` | React 18 | `1.xx` | Основная ветка разработки |
29
48
  | `release-0` | React 17 | `0.xx` | Поддержка React 17, синхронизируется с main |
30
49
 
31
- **Правило:** все фича-ветки создаются от `main`. Изменения попадают в `release-0` через перелитие — вручную мейнтейнерами. Агент не должен создавать ветки от `release-0` и не должен мерджить в неё напрямую.
50
+ **Правило:** все фича-ветки создаются от `main`. Изменения попадают в `release-0` через перелитие. Агент не должен создавать ветки от `release-0` и не должен мерджить в неё напрямую.
51
+
52
+ **Перелитие делает человек, не агент.** Мерж `main` → `release-0` идёт
53
+ напрямую, без PR, с разрешением конфликтов React 17-адаптаций — это ручной
54
+ шаг мейнтейнера в конце спринта. Правила разрешения конфликтов и регламент
55
+ подготовки описаны в `.agents/skills/release-react17/SKILL.md` и
56
+ `docs/human/release.md`. Прямой push в `release-0` проверяется CI:
57
+ `ci.yml` триггерится на `push: branches: [release-0]`.
58
+
59
+ **Единственное исключение для агента** — релизный коммит `release-react17`
60
+ (бамп версии + release notes): он тоже пушится в `release-0` напрямую, без
61
+ PR. Прогон CI на него стартует, но дождаться его нельзя — GitHub Release
62
+ создаётся сразу после push. Поэтому исключение компенсируется обязательными
63
+ локальными гейтами (`tsc`, `test-unit`, `build`).
32
64
 
33
65
  ---
34
66
 
35
67
  ## Формат коммитов
36
68
 
37
- **Формат:** `TRIPLEX-XXX Краткое описание`
69
+ **Формат:** `TRI-XXX Краткое описание`
38
70
 
39
71
  ```text
40
- TRIPLEX-844 Добавить AI-Ready документацию для компонентов
41
- TRIPLEX-901 Добавить компонент Badge с темами и размерами
42
- TRIPLEX-912 Исправить стиль фокуса для Button в теме Link
72
+ TRI-12 Добавить компонент Badge с темами и размерами
73
+ TRI-15 Исправить стиль фокуса для Button в теме Link
43
74
  ```
44
75
 
45
76
  Если нужно уточнение — добавляй через двоеточие:
46
77
 
47
78
  ```text
48
- TRIPLEX-844 AI-Ready Design System: фундамент и пилот Button
49
- TRIPLEX-901 Badge: добавить тему DANGER и размер SM
79
+ TRI-12 Badge: добавить тему DANGER и размер SM
80
+ TRI-21 Alert: AI refactoring + unit-тесты
50
81
  ```
51
82
 
52
83
  **Правила:**
53
- - Все коммиты в ветке начинаются с одного номера тикета.
84
+ - Все коммиты в ветке начинаются с одного номера задачи.
54
85
  - Первая строка — не длиннее 72 символов.
55
86
  - Тело коммита опционально (для сложных изменений).
56
87
  - Язык: русский или английский — не смешивать в одном коммите.
@@ -99,30 +130,101 @@ npx prettier --write src/components/Button/Button.tsx
99
130
 
100
131
  ## Когда коммитить и пушить
101
132
 
102
- **Агент не создаёт коммиты самостоятельно.** После завершения задачи — остановиться и показать результат разработчику. Коммит делается только по явной просьбе.
103
-
104
- **Агент не пушит ветку самостоятельно.** Пуш — только по явной просьбе разработчика.
133
+ **Вне задачи Linear агент не создаёт коммиты и не пушит самостоятельно.**
134
+ После завершения работы — остановиться и показать результат разработчику.
135
+ Коммит и пуш — только по явной просьбе.
136
+
137
+ **Исключение — работа по задаче Linear.** Если работа ведётся в ветке задачи
138
+ `TRI-XXX-...` (взятой через skill `take-task`), агент после завершения работ
139
+ и зелёного ревью (`change-reviewer`) **без подтверждения**:
140
+
141
+ 1. делает коммит по конвенциям этого файла (skill `commit-component`);
142
+ 2. пушит ветку;
143
+ 3. создаёт PR (см. «PR-воркфлоу»);
144
+ 4. если менялись stories или визуал компонентов — обновляет baseline-скриншоты
145
+ через skill `update-visual-baselines` (CI-workflow «Update Visual
146
+ Snapshots» + чистка orphan-скриншотов);
147
+ 5. запускает skill `finish-task` — комментарий-резюме публикуется в задачу
148
+ без подтверждения, проверяется линковка PR;
149
+ 6. запускает агента `pr-reviewer` — независимое ревью PR «с чистого листа»
150
+ с комментариями в GitHub (только COMMENT, вердикт и мерж за человеком).
151
+
152
+ Гейты остаются обязательными и в автоматическом режиме — при любом из них
153
+ остановиться и спросить разработчика:
154
+
155
+ - упавшие проверки (tsc / vitest / eslint);
156
+ - изменение публичного поведения без записи в release notes;
157
+ - блокеры от `change-reviewer`;
158
+ - подозрительные/посторонние файлы в `git status`.
105
159
 
106
160
  ---
107
161
 
108
- ## PR-воркфлоу
162
+ ## GitHub-операции от аккаунта бота
109
163
 
110
- **Агент пушит ветку — разработчик создаёт PR.**
164
+ Автоматические GitHub-операции (создание PR, комментарии в PR, запуск
165
+ workflow, авторство коммитов автофинала) выполняются от отдельного
166
+ machine-аккаунта, если у разработчика задан его токен:
111
167
 
112
168
  ```bash
113
- git push -u origin TRIPLEX-XXX-feature-name
169
+ # fine-grained PAT бота: contents:write, pull-requests:write, actions:write
170
+ export TRIPLEX_BOT_GH_TOKEN=... # в ~/.zshenv (не ~/.zshrc — агент работает
171
+ # в неинтерактивном shell), НЕ в репозитории
114
172
  ```
115
173
 
116
- После пуша разработчик сам открывает PR через GitHub UI или `gh pr create`.
174
+ **Паттерн для агентов** — в начале Bash-вызова с командами `gh`:
175
+
176
+ ```bash
177
+ if [ -n "$TRIPLEX_BOT_GH_TOKEN" ]; then export GH_TOKEN="$TRIPLEX_BOT_GH_TOKEN"; fi
178
+ gh pr create ... # выполнится от бота; без токена — от разработчика (fallback)
179
+ ```
117
180
 
118
- **Исключение:** если разработчик явно просит агента создать PR, используй:
181
+ **Авторство коммитов автофинала** (identity бота выводится из токена,
182
+ дополнительные переменные не нужны):
119
183
 
120
184
  ```bash
185
+ if [ -n "$TRIPLEX_BOT_GH_TOKEN" ]; then
186
+ BOT_LOGIN=$(GH_TOKEN="$TRIPLEX_BOT_GH_TOKEN" gh api user -q .login)
187
+ BOT_EMAIL=$(GH_TOKEN="$TRIPLEX_BOT_GH_TOKEN" gh api user -q '"\(.id)+\(.login)@users.noreply.github.com"')
188
+ git -c user.name="$BOT_LOGIN" -c user.email="$BOT_EMAIL" commit -m "..."
189
+ else
190
+ git commit -m "..."
191
+ fi
192
+ ```
193
+
194
+ Правила:
195
+
196
+ - Токен нигде не печатать, не логировать и не коммитить; в репозитории
197
+ он не хранится ни в каком виде.
198
+ - `git push` остаётся по SSH разработчика — авторство коммита и аккаунт
199
+ пушащего могут различаться, это нормально.
200
+ - Проверка «кто я» перед автофиналом: `gh api user -q .login`
201
+ (с учётом паттерна выше) — чтобы в отчёте было видно, от чьего имени
202
+ созданы PR/комментарии.
203
+ - Действия в Linear выполняются от сессии разработчика — бот на них
204
+ не распространяется.
205
+
206
+ ---
207
+
208
+ ## PR-воркфлоу
209
+
210
+ **Работа по задаче Linear:** после коммита агент сам пушит ветку и создаёт PR:
211
+
212
+ ```bash
213
+ git push -u origin TRI-XXX-feature-name
121
214
  gh pr create \
122
- --title "TRIPLEX-XXX Краткое описание" \
215
+ --title "TRI-XXX Краткое описание" \
123
216
  --body "## Что сделано\n- ...\n\n## Как проверить\n- ..."
124
217
  ```
125
218
 
219
+ После создания PR финал продолжается автоматически: skill
220
+ `update-visual-baselines` (если менялись stories/визуал) и skill
221
+ `finish-task` — комментарий-резюме в задаче Linear и проверка линковки PR
222
+ (GitHub-интеграция Linear подхватит PR по `TRI-XXX` в имени ветки).
223
+
224
+ **Вне задачи Linear:** агент пушит ветку и создаёт PR только по явной просьбе
225
+ разработчика; по умолчанию PR открывает разработчик через GitHub UI или
226
+ `gh pr create`.
227
+
126
228
  ---
127
229
 
128
230
  ## Release notes
@@ -267,7 +267,7 @@ AI-агента.
267
267
 
268
268
  | Создаём AI.md | Описываем в родителе |
269
269
  |---|---|
270
- | `List`, `ListItem`, `ListItemTable`, `ListItemSelectable`, `ListItemControlsButton`, `ListItemControlsButtonDropdown`, `ListSortable`, `ListSortableItem` | `ListItemControls`, `ListItemContent`, `ListEmptyState`, `ListItemLoading`, `ListItemTailLeft`, `ListItemTailRight`, `ListSortableItemTarget`, `ListSortableItemControls` |
270
+ | `List`, `ListItem`, `ListActionItem`, `ListTableItem`, `ListItemSelectable`, `ListItemControlsButton`, `ListItemControlsButtonDropdown`, `ListSortable`, `ListSortableItem` | `ListItemControls`, `ListItemContent`, `ListEmptyState`, `ListItemLoading`, `ListItemTailLeft`, `ListItemTailRight`, `ListSortableItemTarget`, `ListSortableItemControls` |
271
271
 
272
272
  В ROADMAP-таблице каждый AI.md-достойный компонент идёт отдельной строкой —
273
273
  так считается прогресс покрытия и видны субкомпоненты с собственным API.
@@ -38,6 +38,48 @@ src/components/{ComponentName}/__tests__/{ComponentName}.test.tsx
38
38
 
39
39
  Один файл на компонент. Если компонент имеет субкомпоненты (ButtonIcon, ButtonDropdown), тесты субкомпонентов — в отдельных файлах той же локальной папки тестов.
40
40
 
41
+ ### Импорты `vitest` — только в `*.test.ts` / `*.test.tsx` ⚠️
42
+
43
+ **Правило:** `import ... from "vitest"` (а также `@testing-library/*`, `storybook/test`)
44
+ допустим **исключительно** в файлах с постфиксом `.test.ts` / `.test.tsx`,
45
+ в `vitest.setup.ts` и в `test-utils/`. Нигде больше.
46
+
47
+ Причина — сборка. `vite.config.ts` строит entry-точку из **каждого** файла
48
+ `src/**/*.{ts,tsx}`, кроме исключённых глобом. Любой файл внутри `src/`, который
49
+ импортирует `vitest` и не подпадает под исключения, попадает в бандл, а вместе с
50
+ ним vitest уезжает в общий чанк `vendor` — тот самый, который тянут почти все
51
+ компоненты. Потребитель падает на старте:
52
+
53
+ ```text
54
+ Uncaught Error: Vitest failed to access its internal state.
55
+ ```
56
+
57
+ Именно это произошло в 1.39.0 из-за файла `src/components/Carousel/__tests__/utils.ts`
58
+ (хелпер без постфикса `.test`). Чанк `vendor` вырос с 640 KB до 1.28 MB.
59
+
60
+ **Общие тестовые хелперы** (моки `ResizeObserver`, фейковые `Touch`, подмена
61
+ размеров элементов и т.п.) кладём в `test-utils/` в корне репозитория — вне `src/`,
62
+ поэтому сборка их физически не видит:
63
+
64
+ ```typescript
65
+ // ✅ src/components/Carousel/__tests__/CarouselRoot.test.tsx
66
+ import { getResizeCallback, mockElementSize } from "../../../../test-utils/dom";
67
+
68
+ // ❌ src/components/Carousel/__tests__/utils.ts — станет entry-точкой сборки
69
+ import { vi } from "vitest";
70
+ ```
71
+
72
+ Не называй хелпер `utils.ts` рядом с `utils.test.tsx`: `__tests__/utils.test.tsx` —
73
+ это **тесты для `../utils.ts`** компонента, а не тесты хелпера. Хелперы нельзя
74
+ класть и в сам `*.test.tsx`-файл: при импорте из другого теста его `describe`
75
+ зарегистрируется повторно и тесты прогонятся несколько раз.
76
+
77
+ Страховка на уровне сборки: `npm run build` запускает `scripts/checkBundleSize.js`
78
+ и падает, если в `dist` превышен один из двух лимитов — **700 KB на отдельный
79
+ JS-файл** (ловит распухший `vendor`: всё из `node_modules` сливается в него
80
+ единственным чанком) или **2000 KB суммарно по всем JS-файлам** (ловит утечку
81
+ кода мимо `node_modules` и медленный рост множества мелких файлов).
82
+
41
83
  ### Импорты
42
84
 
43
85
  ```typescript
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "triplexVersion": "1.36.0",
4
- "generatedAt": "2026-07-08T10:09:38.925Z",
3
+ "triplexVersion": "1.41.0",
4
+ "generatedAt": "2026-08-07T11:02:25.745Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "AbstractTree",
@@ -21,6 +21,12 @@
21
21
  "file": "components/Alert.md",
22
22
  "ai_ready": true
23
23
  },
24
+ {
25
+ "name": "AlertContext",
26
+ "path": "src/components/Alert/AlertContext-ai.md",
27
+ "file": "components/AlertContext.md",
28
+ "ai_ready": true
29
+ },
24
30
  {
25
31
  "name": "Amount",
26
32
  "path": "src/components/Amount/Amount-AI.md",
@@ -69,6 +75,12 @@
69
75
  "file": "components/ButtonDropdown.md",
70
76
  "ai_ready": true
71
77
  },
78
+ {
79
+ "name": "ButtonDropdownExtended",
80
+ "path": "src/components/Button/ButtonDropdownExtended-ai.md",
81
+ "file": "components/ButtonDropdownExtended.md",
82
+ "ai_ready": true
83
+ },
72
84
  {
73
85
  "name": "ButtonIcon",
74
86
  "path": "src/components/Button/ButtonIcon-ai.md",
@@ -77,16 +89,29 @@
77
89
  },
78
90
  {
79
91
  "name": "Calendar",
80
- "path": "src/components/Calendar/Calendar-AI.md",
92
+ "path": "src/components/Calendar/Calendar-ai.md",
81
93
  "file": "components/Calendar.md",
82
94
  "ai_ready": true
83
95
  },
96
+ {
97
+ "name": "Caption",
98
+ "path": "src/components/Typography/Caption-ai.md",
99
+ "file": "components/Caption.md",
100
+ "ai_ready": true
101
+ },
84
102
  {
85
103
  "name": "Card",
86
104
  "path": "src/components/Card/Card-AI.md",
87
105
  "file": "components/Card.md",
88
106
  "ai_ready": true
89
107
  },
108
+ {
109
+ "name": "Carousel",
110
+ "path": "src/components/Carousel",
111
+ "file": null,
112
+ "ai_ready": false,
113
+ "storiesPath": "stories/Carousel/Carousel.stories.tsx"
114
+ },
90
115
  {
91
116
  "name": "CarouselExtended",
92
117
  "path": "src/components/CarouselExtended/CarouselExtended-AI.md",
@@ -125,7 +150,7 @@
125
150
  },
126
151
  {
127
152
  "name": "Chip",
128
- "path": "src/components/Chip/Chip-AI.md",
153
+ "path": "src/components/Chip/Chip-ai.md",
129
154
  "file": "components/Chip.md",
130
155
  "ai_ready": true
131
156
  },
@@ -135,9 +160,15 @@
135
160
  "file": "components/ChipGroup.md",
136
161
  "ai_ready": true
137
162
  },
163
+ {
164
+ "name": "CodeText",
165
+ "path": "src/components/Typography/CodeText-ai.md",
166
+ "file": "components/CodeText.md",
167
+ "ai_ready": true
168
+ },
138
169
  {
139
170
  "name": "Col",
140
- "path": "src/components/Col/Col-AI.md",
171
+ "path": "src/components/Col/Col-ai.md",
141
172
  "file": "components/Col.md",
142
173
  "ai_ready": true
143
174
  },
@@ -197,7 +228,7 @@
197
228
  },
198
229
  {
199
230
  "name": "Dropdown",
200
- "path": "src/components/Dropdown/Dropdown-AI.md",
231
+ "path": "src/components/Dropdown/Dropdown-ai.md",
201
232
  "file": "components/Dropdown.md",
202
233
  "ai_ready": true
203
234
  },
@@ -240,7 +271,7 @@
240
271
  },
241
272
  {
242
273
  "name": "FormField",
243
- "path": "src/components/FormField/FormField-AI.md",
274
+ "path": "src/components/FormField/FormField-ai.md",
244
275
  "file": "components/FormField.md",
245
276
  "ai_ready": true
246
277
  },
@@ -276,7 +307,7 @@
276
307
  },
277
308
  {
278
309
  "name": "IconWrapper",
279
- "path": "src/components/IconWrapper/IconWrapper-AI.md",
310
+ "path": "src/components/IconWrapper/IconWrapper-ai.md",
280
311
  "file": "components/IconWrapper.md",
281
312
  "ai_ready": true
282
313
  },
@@ -294,7 +325,7 @@
294
325
  },
295
326
  {
296
327
  "name": "Island",
297
- "path": "src/components/Island/Island-AI.md",
328
+ "path": "src/components/Island/Island-ai.md",
298
329
  "file": "components/Island.md",
299
330
  "ai_ready": true
300
331
  },
@@ -312,13 +343,13 @@
312
343
  },
313
344
  {
314
345
  "name": "KeyDownListener",
315
- "path": "src/components/KeyDownListener/KeyDownListener-AI.md",
346
+ "path": "src/components/KeyDownListener/KeyDownListener-ai.md",
316
347
  "file": "components/KeyDownListener.md",
317
348
  "ai_ready": true
318
349
  },
319
350
  {
320
351
  "name": "LightBox",
321
- "path": "src/components/LightBox/LightBox-AI.md",
352
+ "path": "src/components/LightBox/LightBox-ai.md",
322
353
  "file": "components/LightBox.md",
323
354
  "ai_ready": true
324
355
  },
@@ -334,6 +365,12 @@
334
365
  "file": "components/List.md",
335
366
  "ai_ready": true
336
367
  },
368
+ {
369
+ "name": "ListActionItem",
370
+ "path": "src/components/List/ListActionItem-ai.md",
371
+ "file": "components/ListActionItem.md",
372
+ "ai_ready": true
373
+ },
337
374
  {
338
375
  "name": "ListItem",
339
376
  "path": "src/components/List/ListItem-ai.md",
@@ -358,12 +395,6 @@
358
395
  "file": "components/ListItemSelectable.md",
359
396
  "ai_ready": true
360
397
  },
361
- {
362
- "name": "ListItemTable",
363
- "path": "src/components/List/ListItemTable-ai.md",
364
- "file": "components/ListItemTable.md",
365
- "ai_ready": true
366
- },
367
398
  {
368
399
  "name": "ListMaster",
369
400
  "path": "src/components/ListMaster/ListMaster-ai.md",
@@ -394,15 +425,27 @@
394
425
  "file": "components/ListSortableItem.md",
395
426
  "ai_ready": true
396
427
  },
428
+ {
429
+ "name": "ListTableItem",
430
+ "path": "src/components/List/ListTableItem-ai.md",
431
+ "file": "components/ListTableItem.md",
432
+ "ai_ready": true
433
+ },
397
434
  {
398
435
  "name": "Loader",
399
436
  "path": "src/components/Loader/Loader-AI.md",
400
437
  "file": "components/Loader.md",
401
438
  "ai_ready": true
402
439
  },
440
+ {
441
+ "name": "LoaderMiddle",
442
+ "path": "src/components/Loader/LoaderMiddle-ai.md",
443
+ "file": "components/LoaderMiddle.md",
444
+ "ai_ready": true
445
+ },
403
446
  {
404
447
  "name": "LoaderScreen",
405
- "path": "src/components/LoaderScreen/LoaderScreen-AI.md",
448
+ "path": "src/components/LoaderScreen/LoaderScreen-ai.md",
406
449
  "file": "components/LoaderScreen.md",
407
450
  "ai_ready": true
408
451
  },
@@ -493,7 +536,7 @@
493
536
  },
494
537
  {
495
538
  "name": "Portal",
496
- "path": "src/components/Portal/Portal-AI.md",
539
+ "path": "src/components/Portal/Portal-ai.md",
497
540
  "file": "components/Portal.md",
498
541
  "ai_ready": true
499
542
  },
@@ -505,7 +548,7 @@
505
548
  },
506
549
  {
507
550
  "name": "Row",
508
- "path": "src/components/Row/Row-AI.md",
551
+ "path": "src/components/Row/Row-ai.md",
509
552
  "file": "components/Row.md",
510
553
  "ai_ready": true
511
554
  },
@@ -647,6 +690,12 @@
647
690
  "file": "components/TagGroup.md",
648
691
  "ai_ready": true
649
692
  },
693
+ {
694
+ "name": "Text",
695
+ "path": "src/components/Typography/Text-ai.md",
696
+ "file": "components/Text.md",
697
+ "ai_ready": true
698
+ },
650
699
  {
651
700
  "name": "TextareaField",
652
701
  "path": "src/components/TextareaField/TextareaField-AI.md",
@@ -655,19 +704,25 @@
655
704
  },
656
705
  {
657
706
  "name": "TextField",
658
- "path": "src/components/TextField/TextField-AI.md",
707
+ "path": "src/components/TextField/TextField-ai.md",
659
708
  "file": "components/TextField.md",
660
709
  "ai_ready": true
661
710
  },
662
711
  {
663
712
  "name": "ThemeProvider",
664
- "path": "src/components/ThemeProvider/ThemeProvider-AI.md",
713
+ "path": "src/components/ThemeProvider/ThemeProvider-ai.md",
665
714
  "file": "components/ThemeProvider.md",
666
715
  "ai_ready": true
667
716
  },
717
+ {
718
+ "name": "Title",
719
+ "path": "src/components/Typography/Title-ai.md",
720
+ "file": "components/Title.md",
721
+ "ai_ready": true
722
+ },
668
723
  {
669
724
  "name": "Tooltip",
670
- "path": "src/components/Tooltip/Tooltip-AI.md",
725
+ "path": "src/components/Tooltip/Tooltip-ai.md",
671
726
  "file": "components/Tooltip.md",
672
727
  "ai_ready": true
673
728
  },
@@ -717,6 +772,12 @@
717
772
  "ai_ready": false,
718
773
  "storiesPath": null
719
774
  },
775
+ {
776
+ "name": "ListItemTable",
777
+ "path": "src/components/List/ListItemTable-ai.md",
778
+ "file": "components/ListItemTable.md",
779
+ "ai_ready": true
780
+ },
720
781
  {
721
782
  "name": "CollapsableTree",
722
783
  "path": "src/components/CollapsableTree/CollapsableTree-AI.md",
@@ -927,11 +988,36 @@
927
988
  "file": "release-notes/1.37.0.mdx",
928
989
  "path": "stories/release-notes/v1/1.37.0.mdx"
929
990
  },
991
+ {
992
+ "version": "1.38.0",
993
+ "file": "release-notes/1.38.0.mdx",
994
+ "path": "stories/release-notes/v1/1.38.0.mdx"
995
+ },
996
+ {
997
+ "version": "1.39.0",
998
+ "file": "release-notes/1.39.0.mdx",
999
+ "path": "stories/release-notes/v1/1.39.0.mdx"
1000
+ },
930
1001
  {
931
1002
  "version": "1.4.0",
932
1003
  "file": "release-notes/1.4.0.mdx",
933
1004
  "path": "stories/release-notes/v1/1.4.0.mdx"
934
1005
  },
1006
+ {
1007
+ "version": "1.40.0",
1008
+ "file": "release-notes/1.40.0.mdx",
1009
+ "path": "stories/release-notes/v1/1.40.0.mdx"
1010
+ },
1011
+ {
1012
+ "version": "1.41.0",
1013
+ "file": "release-notes/1.41.0.mdx",
1014
+ "path": "stories/release-notes/v1/1.41.0.mdx"
1015
+ },
1016
+ {
1017
+ "version": "1.42.0",
1018
+ "file": "release-notes/1.42.0.mdx",
1019
+ "path": "stories/release-notes/v1/1.42.0.mdx"
1020
+ },
935
1021
  {
936
1022
  "version": "1.5.0",
937
1023
  "file": "release-notes/1.5.0.mdx",
@@ -4,8 +4,19 @@ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
4
4
 
5
5
  <Title>v1.37.0</Title>
6
6
 
7
+ <Heading>Ломающие изменения</Heading>
8
+
9
+ **FormFieldMaskedInput**
10
+
11
+ - Удалено свойство `error`.
12
+ - Теперь `className` пробрасывается в корневой элемент, вместо дублирования на двух внутренних узлах.
13
+
7
14
  <Heading>Изменения</Heading>
8
15
 
16
+ **ButtonDropdown**
17
+
18
+ - Добавлено свойство `dropdownAttributes` — позволяет передавать HTML-атрибуты и data-атрибуты в `Dropdown`.
19
+
9
20
  **CollapsibleTree**
10
21
 
11
22
  - Добавлено свойство `disabled` для узла-ветки (`ICollapsibleTreeNodeBranch`) — узел не раскрывается, шеврон отображается приглушённым цветом. Для приглушённого текста передайте `type={EFontType.DISABLED}` в `CollapsibleTreeNodeLabel`.
@@ -15,12 +26,42 @@ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
15
26
 
16
27
  **DateRange**
17
28
 
18
- - Исправлены размеры иконки разделителя.
29
+ - Исправлены размеры разделителя.
30
+
31
+ **DateField / MonthYearField**
32
+
33
+ - Теперь `Dropdown` октрывается по нажатию мыши, а не клику.
34
+ - Исправлено отображение плейсхолдера-маски `FormFieldMaskedInput` в заголовке `Dropdown`.
35
+
36
+ **FormFieldInput**
37
+
38
+ - Исправлено вертикальное выравнивание текста в размере `SM`.
39
+
40
+ **FormFieldMaskedInput**
41
+
42
+ - Исправлен баг с визуальным утолщением шрифта при наличии значения в поле ввода.
43
+
44
+ **HeaderPage**
45
+
46
+ - Исправлено расположение `Page.Header.Tabs.Controls`
19
47
 
20
48
  **Link**
21
49
 
22
50
  - При `target="_blank"` автоматически добавляется `rel="noopener"` (защита от reverse tabnabbing). Явно переданный потребителем `rel` сохраняется.
23
51
 
52
+ **SelectField**
53
+
54
+ - Добавлено свойство `dropdownProps` — позволяет передавать свойства и data-атрибуты в `Dropdown`.
55
+ - Исправлено свойство `dropdownListItemClassName` — ранее оно не передавалось в элементы выпадающего списка и игнорировалось.
56
+
57
+ **TableBasic**
58
+
59
+ - Максимальная высота `TableBasicSettingsBody` изменена с `372px` на `302px`.
60
+
61
+ **TextField / MaskedField**
62
+
63
+ - Компонент переписан на `forwardRef`.
64
+
24
65
  **ThemeProvider**
25
66
 
26
67
  - Предупреждение о неподдержке динамической темы при SSR выводится через `console.warn` вместо `console.log`.