@sberbusiness/triplex-next-mcp-server 1.48.0-beta → 1.50.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 (77) hide show
  1. package/bundle/components/Amount.md +2 -1
  2. package/bundle/components/Badge.md +2 -1
  3. package/bundle/components/BodyPage.md +2 -1
  4. package/bundle/components/Button.md +5 -1
  5. package/bundle/components/ButtonDropdownExtended.md +3 -1
  6. package/bundle/components/ButtonIcon.md +3 -1
  7. package/bundle/components/Calendar.md +3 -1
  8. package/bundle/components/CardAction.md +1 -0
  9. package/bundle/components/CheckboxXGroup.md +2 -1
  10. package/bundle/components/Chip.md +2 -1
  11. package/bundle/components/ChipMonthYearPicker.md +2 -1
  12. package/bundle/components/ChipMultiselect.md +4 -1
  13. package/bundle/components/ChipOptions.md +2 -1
  14. package/bundle/components/ChipSort.md +4 -1
  15. package/bundle/components/CollapsibleTree.md +2 -1
  16. package/bundle/components/ComposedKeyDownListener.md +4 -3
  17. package/bundle/components/DateField.md +7 -1
  18. package/bundle/components/Divider.md +85 -138
  19. package/bundle/components/DocumentNumberEdit.md +173 -214
  20. package/bundle/components/Dropdown.md +11 -1
  21. package/bundle/components/Ellipsis.md +131 -147
  22. package/bundle/components/FooterPage.md +3 -1
  23. package/bundle/components/FormField.md +2 -1
  24. package/bundle/components/Gap.md +1 -1
  25. package/bundle/components/Header.md +1 -0
  26. package/bundle/components/HeaderPage.md +3 -1
  27. package/bundle/components/HelpBox.md +2 -1
  28. package/bundle/components/IconWrapper.md +10 -6
  29. package/bundle/components/ImageGallery.md +2 -1
  30. package/bundle/components/ImageGalleryExtended.md +2 -1
  31. package/bundle/components/IslandAccordion.md +6 -1
  32. package/bundle/components/KeyDownListener.md +3 -2
  33. package/bundle/components/LightBox.md +7 -1
  34. package/bundle/components/List.md +2 -1
  35. package/bundle/components/ListActionItem.md +2 -1
  36. package/bundle/components/ListItem.md +3 -1
  37. package/bundle/components/ListItemControlsButton.md +2 -1
  38. package/bundle/components/ListItemSelectable.md +2 -1
  39. package/bundle/components/ListMasterFooter.md +2 -1
  40. package/bundle/components/ListMasterHeader.md +2 -1
  41. package/bundle/components/ListSortable.md +2 -1
  42. package/bundle/components/ListSortableItem.md +2 -1
  43. package/bundle/components/ListTableItem.md +4 -1
  44. package/bundle/components/LoaderMiddle.md +5 -1
  45. package/bundle/components/LoaderScreen.md +7 -1
  46. package/bundle/components/LoaderSmall.md +10 -4
  47. package/bundle/components/MaskedField.md +3 -1
  48. package/bundle/components/MediaWidth.md +2 -1
  49. package/bundle/components/MobileView.md +2 -1
  50. package/bundle/components/ModalWindow.md +4 -1
  51. package/bundle/components/MonthYearField.md +4 -1
  52. package/bundle/components/Notification.md +1 -0
  53. package/bundle/components/Overlay.md +7 -2
  54. package/bundle/components/Pagination.md +1 -7
  55. package/bundle/components/Radio.md +238 -115
  56. package/bundle/components/RadioXGroup.md +259 -0
  57. package/bundle/components/RadioYGroup.md +266 -0
  58. package/bundle/components/SegmentedControl.md +505 -158
  59. package/bundle/components/SelectExtendedField.md +2 -1
  60. package/bundle/components/SelectField.md +4 -1
  61. package/bundle/components/Skeleton.md +140 -69
  62. package/bundle/components/Spoiler.md +245 -63
  63. package/bundle/components/Step.md +257 -68
  64. package/bundle/components/SuggestField.md +30 -18
  65. package/bundle/components/Tabs.md +2 -1
  66. package/bundle/components/TabsLine.md +2 -1
  67. package/bundle/components/TextField.md +8 -4
  68. package/bundle/components/TextareaField.md +2 -1
  69. package/bundle/components/ThemeProvider.md +2 -1
  70. package/bundle/components/Tooltip.md +6 -3
  71. package/bundle/guides/context.md +4 -1
  72. package/bundle/manifest.json +32 -10
  73. package/bundle/release-notes/1.49.0.mdx +78 -0
  74. package/bundle/release-notes/1.50.0.mdx +35 -0
  75. package/bundle/release-notes/1.51.0.mdx +7 -0
  76. package/bundle/tokens.json +161 -11
  77. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListActionItem
3
3
  category: List
4
- related: [ListItem, ListItemContent, ListSortableItem]
4
+ related: [ListItem]
5
5
  tokens:
6
6
  - ListItem.Background_Hover
7
7
  - ListItem.BorderColor_Focus
@@ -158,3 +158,4 @@ ListItem.BorderColor_Focus // цвет focus-обводки (:focus-visible)
158
158
  |---|---|
159
159
  | 2026-07-17 | Добавлена story `WithActionItems` в `List.stories.tsx` — список из нескольких `ListActionItem`. |
160
160
  | 2026-07-16 | Создан компонент `ListActionItem` — самодостаточная интерактивная строка (hover, focus по Tab, `onClick` + Enter/Space). Сам рендерит `ListItem` + `ListItemContent`; интерактивность и весь фон живут на одном `ListItemContent`. Пропсы разделены: собственные — на `<li>`, интерактивные — через `listItemContentProps`. |
161
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemContent`); из `related` убраны несимметричные имена (`ListSortableItem`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListItem
3
3
  category: List
4
- related: [List, ListItemContent, ListActionItem, ListItemSelectable, ListTableItem, ListSortableItem]
4
+ related: [List, ListActionItem, ListItemSelectable, ListTableItem, ListSortableItem]
5
5
  tokens:
6
6
  - ListItem.Background
7
7
  - ListItem.Background_Selected
@@ -73,6 +73,7 @@ ListItem.BorderColor_Focus // цвет focus-обводки на desktop (List
73
73
  - `ListItemLoading` — элемент-спиннер для пагинации (используется как последний элемент).
74
74
  - `ListItemControls`, `ListItemControlsButton`, `ListItemControlsButtonDropdown` — кнопки действий, обычно внутри `SwipeableArea.rightSwipeableArea`.
75
75
  - `ListItemTailLeft` / `ListItemTailRight` — декоративные хвосты для `SwipeableArea`.
76
+ - `ListSortableItem` — самодостаточный элемент перетаскиваемого списка: тоже рендерит `ListItem` внутри себя, но добавляет target и контролы перетаскивания.
76
77
  - `ListTableItem` — комбинированная высокоуровневая обёртка.
77
78
 
78
79
  ---
@@ -99,6 +100,7 @@ ListItem.BorderColor_Focus // цвет focus-обводки на desktop (List
99
100
  | 2026-04-29 | Создан документ |
100
101
  | 2026-05-21 | `ListItemContext` расширен полями `selectable` / `setSelectable`. Исправлен цвет токена `Background_Selected` в тёмной теме (`ColorDarkNeutral.10` → `ColorDarkNeutral.60`). |
101
102
  | 2026-07-16 | Добавлен самодостаточный компонент `ListActionItem` (сам рендерит `ListItem` + `ListItemContent`; hover, focus по Tab, `onClick` + Enter/Space). Координация фона через контекст не понадобилась — `ListItemContext` без изменений. Другие компоненты семейства его не используют. |
103
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemContent`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
102
104
 
103
105
  ---
104
106
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListItemControlsButton
3
3
  category: List
4
- related: [ListItemControls, ListItemControlsButtonDropdown, IconWrapper]
4
+ related: [ListItemControlsButtonDropdown, IconWrapper]
5
5
  tokens:
6
6
  - ListItemControlsButton.Background_Default
7
7
  - ListItemControlsButton.Background_Hover
@@ -104,3 +104,4 @@ ListItemControlsButton.Color_Active
104
104
  | Дата | Изменение |
105
105
  |---|---|
106
106
  | 2026-04-29 | Создан документ |
107
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemControls`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListItemSelectable
3
3
  category: List
4
- related: [ListItem, ListItemContent, Checkbox]
4
+ related: [ListItem, Checkbox]
5
5
  tokens:
6
6
  - ListItem.Background
7
7
  - ListItem.Background_Selected
@@ -100,3 +100,4 @@ ListItem.Background_Selected // фон, когда selected=true
100
100
  |---|---|
101
101
  | 2026-04-29 | Создан документ |
102
102
  | 2026-05-21 | Добавлен опциональный prop `disabled` (пробрасывается в `Checkbox`). Компонент пишет в `ListItemContext` флаг `selectable = true` при монтировании. |
103
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemContent`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListMasterFooter
3
3
  category: List
4
- related: [ListMaster, ListMasterFooterDescription, ListMasterFooterControls]
4
+ related: [ListMaster]
5
5
  tokens:
6
6
  - ListMaster.Footer_Background
7
7
  - ListMaster.Footer_Shadow
@@ -81,3 +81,4 @@ ListMaster.Footer_Shadow // тень сверху
81
81
  | Дата | Изменение |
82
82
  |---|---|
83
83
  | 2026-04-29 | Создан документ. Уточнён JSDoc по дефолтному значению `sticky`. Добавлены unit-тесты. |
84
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListMasterFooterDescription`, `ListMasterFooterControls`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListMasterHeader
3
3
  category: List
4
- related: [ListMaster, SelectionControls]
4
+ related: [ListMaster]
5
5
  tokens:
6
6
  - ListMaster.Header_Background
7
7
  - ListMaster.Header_Shadow
@@ -87,3 +87,4 @@ ListMaster.Header_Shadow // тень снизу
87
87
  | Дата | Изменение |
88
88
  |---|---|
89
89
  | 2026-04-29 | Создан документ. Уточнён JSDoc по `useEffect`-логике компенсации скролла. Добавлены unit-тесты. |
90
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`SelectionControls`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListSortable
3
3
  category: List
4
- related: [List, ListSortableItem, ListSortableItemTarget, ListSortableItemControls]
4
+ related: [List, ListSortableItem]
5
5
  tokens: []
6
6
  stories: stories/List/List.stories.tsx
7
7
  version: "1.0"
@@ -86,6 +86,7 @@ callback `onItemsChange`, в который пробрасывает резул
86
86
  | Дата | Изменение |
87
87
  |---|---|
88
88
  | 2026-04-29 | Создан документ |
89
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListSortableItemTarget`, `ListSortableItemControls`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
89
90
 
90
91
  ---
91
92
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListSortableItem
3
3
  category: List
4
- related: [ListSortable, ListSortableItemTarget, ListSortableItemControls, ListItem]
4
+ related: [ListSortable, ListItem]
5
5
  tokens:
6
6
  - ListItem.Background
7
7
  - ListItem.Background_Hover
@@ -111,6 +111,7 @@ ListItem.Shadow_Dragging // тень во время drag
111
111
  | Дата | Изменение |
112
112
  |---|---|
113
113
  | 2026-04-29 | Создан документ |
114
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListSortableItemTarget`, `ListSortableItemControls`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
114
115
 
115
116
  ---
116
117
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ListTableItem
3
3
  category: List
4
- related: [ListItem, ListItemSelectable, ListItemControls, ListItemControlsButton, SwipeableArea]
4
+ related: [ListItem, ListItemSelectable, TableBasic, SwipeableArea]
5
5
  tokens:
6
6
  - ListItem.Background
7
7
  - ListItem.Background_Selected
@@ -80,7 +80,9 @@ ListItem.Background_Selected // фон выбранной строки (чере
80
80
  - `ListItemSelectable` — добавляется автоматически, если переданы `selected` + `onSelect`.
81
81
  - `ListItemControls` — обёртка для `controlButtons`, подключается как `rightSwipeableArea`.
82
82
  - `ListItemTailRight` — декоративный «хвост» в правой части (всегда отрисовывается).
83
+ - `ListItemControlsButton` — кнопка действия внутри `ListItemControls`; из таких кнопок собирается `controlButtons`.
83
84
  - `SwipeableArea` — внешняя зависимость, обеспечивает swipe-жесты.
85
+ - `TableBasic` — альтернатива для табличного списка: настоящая таблица с колонками, когда строка не карточка со своей вёрсткой, свайпом и контролами.
84
86
 
85
87
  ---
86
88
 
@@ -104,6 +106,7 @@ ListItem.Background_Selected // фон выбранной строки (чере
104
106
  |---|---|
105
107
  | 2026-04-29 | Создан документ |
106
108
  | 2026-07-16 | Компонент переименован `ListItemTable` → `ListTableItem`. Пропсы `IListItemTableProps`/`IListItemTableSelectableProps` → `IListTableItemProps`/`IListTableItemSelectableProps`, CSS-класс `.listItemTable` → `.listTableItem`, файлы `ListTableItem.*`. **Breaking change.** |
109
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemControls`) и `ListItemControlsButton` — `ListTableItem` принимает `controlButtons` как `React.ReactNode` и рендерит `ListItemControls`, а саму кнопку не импортирует; добавлены обратные ссылки (`TableBasic`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
107
110
 
108
111
  ---
109
112
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: LoaderMiddle
3
3
  category: Loaders
4
- related: [LoaderSmall, LoaderScreen, TableBasic]
4
+ related: [Skeleton, LoaderSmall, LoaderScreen, TableBasic]
5
5
  tokens:
6
6
  - Loader.Middle_Background_Default
7
7
  - Loader.Element_Background_Brand
@@ -106,6 +106,9 @@ Loader.Element_Background_Brand
106
106
  того же barrel `src/components/Loader/index.ts`.
107
107
  - `LoaderScreen` (`src/components/LoaderScreen/LoaderScreen.tsx`) — оверлей-подложка с лоадером по
108
108
  центру, подписью и кнопками; при `type="middle"` рендерит `LoaderMiddle` без обёрток.
109
+ - `Skeleton` (`src/components/Skeleton/`) — альтернатива для той же задачи (первая загрузка
110
+ блока) с другим компромиссом: показывает каркас будущей раскладки, поэтому берётся, когда
111
+ раскладка известна заранее. `LoaderMiddle` — когда неизвестна.
109
112
  - `TableBasic` (`src/components/Table/TableBasic/TableBasic.tsx`) — показывает `LoaderMiddle` в
110
113
  футере таблицы при догрузке данных на пустом состоянии.
111
114
 
@@ -134,6 +137,7 @@ Loader.Element_Background_Brand
134
137
  | Дата | Изменение |
135
138
  |---|---|
136
139
  | 2026-08-05 | Создан документ. AI-рефакторинг: JSDoc на компоненте, порядок импортов приведён к codestyle, в LESS объединены дублирующиеся базовые стили `.dot` и `.line`, unit-тесты расширены с 1 до 2 кейсов (роль корневого элемента, количество точек и линии). В stories `controls: { disable: true }` перенесён на верхний уровень `parameters` (внутри `docs` не применялся). Публичный API, DOM и визуальное поведение не изменены. |
140
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): добавлена обратная ссылка `Skeleton` — `Skeleton-ai.md` называет `LoaderMiddle` альтернативой (категория 2), а такие пары по `docs/ai/CONTEXT.md` симметричны; в TRI-76 связь была проставлена только с одной стороны. Публичный API и поведение не затронуты. |
137
141
 
138
142
  ---
139
143
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: LoaderScreen
3
3
  category: Loaders
4
- related: [LoaderSmall, LoaderMiddle, Gap, Text, ModalWindowContent, LightBoxContent, LightBoxSideOverlay, List, TableBasic, MultiselectField]
4
+ related: [LoaderSmall, LoaderMiddle, Gap, Text, List, TableBasic]
5
5
  tokens:
6
6
  - LoaderScreen.Small_Backdrop_Default
7
7
  - LoaderScreen.Middle_Backdrop_Default
@@ -161,6 +161,11 @@ breaking change для темизации), но опираться на нег
161
161
  - `TableBasic` — лоадер поверх тела таблицы.
162
162
  - `MultiselectField` — `LoaderScreen type="small"` внутри выпадающего списка.
163
163
 
164
+ `MultiselectField` в `related` не входит: обычный контракт по рендеру, ссылка стоит с его
165
+ стороны. `List` и `TableBasic` остаются — они подпадают под исключение «потребитель,
166
+ опирающийся на хрупкую деталь»: оба понижают `z-index` лоадера через вложенный селектор,
167
+ и держится это на специфичности правил `.loaderScreen` (см. «Ограничения раскладки»).
168
+
164
169
  ---
165
170
 
166
171
  ## Stories
@@ -186,6 +191,7 @@ breaking change для темизации), но опираться на нег
186
191
  | Дата | Изменение |
187
192
  |---|---|
188
193
  | 2026-08-06 | Создан документ. AI-рефакторинг: порядок импортов по `codestyle.md`, JSDoc на компоненте, props и `ILoaderScreenMiddleProps` (включая значение по умолчанию для `size`), подложка вынесена в `TYPE_TO_BACKDROP_CLASS_NAME_MAP`, `className` в `clsx` перенесён в конец. Unit-тесты расширены: все значения `EComponentSize`, игнорирование `size` при `type="middle"`, класс подложки по типу, отсутствие `description` / `controls`, мердж `className`, spread rest-props, `forwardRef`. Публичный API, DOM и стили не изменены. |
194
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ModalWindowContent`, `LightBoxContent`, `LightBoxSideOverlay`) и потребитель `MultiselectField` — контракт по рендеру, ссылка стоит с его стороны. `List` и `TableBasic` оставлены: они понижают `z-index` лоадера вложенным селектором и опираются на специфичность правил `.loaderScreen` — исключение «потребитель, опирающийся на хрупкую деталь». Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
189
195
 
190
196
  ---
191
197
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: LoaderSmall
3
3
  category: Loaders
4
- related: [LoaderMiddle, LoaderScreen, Button, Dropdown, ListItemLoading, SuggestField, SelectExtendedField]
4
+ related: [LoaderMiddle, LoaderScreen, Button]
5
5
  tokens:
6
6
  - Loader.Element_Background_Brand
7
7
  - Loader.Element_Background_Neutral
@@ -128,13 +128,18 @@ Loader: `Element_Background_Brand` использует также `LoaderMiddle
128
128
  - `LoaderScreen` (`src/components/LoaderScreen/LoaderScreen.tsx`) — оверлей с лоадером,
129
129
  подписью и кнопками; при `type="small"` рендерит `LoaderSmall` с темой `BRAND`.
130
130
  - `Button` (`src/components/Button/Button.tsx`) — рендерит `LoaderSmall` **всегда**, а вне
131
- состояния `loading` прячет обёртку классом (`Button.tsx:156`), поэтому `role="status"`
132
- доступен и у обычной кнопки — не пиши тест вида `queryByRole("status")` → `null`.
131
+ состояния `loading` прячет обёртку классом (`Button.tsx:156`). Класс задаёт
132
+ `visibility: hidden` (`Button.module.less:136-138`), то есть в браузере узел выпадает
133
+ из дерева доступности, но остаётся в DOM. Unit-тесты идут в jsdom, который LESS не
134
+ применяет, поэтому там `role="status"` находится и у обычной кнопки — не пиши тест
135
+ вида `queryByRole("status")` → `null`.
133
136
  Тему выбирает по теме кнопки (`SECONDARY` / `SECONDARY_LIGHT` → `BRAND`,
134
137
  остальные → `NEUTRAL`), размер — по размеру кнопки.
135
138
  - `Dropdown` (`DropdownList`, `DropdownMobileList`, `DropdownMobileLoader`), `SuggestField`,
136
139
  `ChipSuggest`, `SelectExtendedField`, `ListItemLoading` — показывают `LoaderSmall` с темой
137
- `BRAND` во время подгрузки данных.
140
+ `BRAND` во время подгрузки данных. В `related` не входят: это контракт по рендеру, ссылка
141
+ стоит с их стороны. `Button` — исключение «потребитель, опирающийся на хрупкую деталь»
142
+ (см. выше про `role="status"`), поэтому он в `related` остаётся с обеих сторон.
138
143
 
139
144
  ---
140
145
 
@@ -166,6 +171,7 @@ Loader: `Element_Background_Brand` использует также `LoaderMiddle
166
171
  | Дата | Изменение |
167
172
  |---|---|
168
173
  | 2026-08-06 | Создан документ. AI-рефакторинг: JSDoc на компоненте, props и значениях `ELoaderSmallTheme`, документирован неиспользуемый `ELoaderSmallSize`, порядок импортов приведён к codestyle, константы-маппинги переименованы в `THEME_TO_CLASS_NAME_MAP` / `SIZE_TO_CLASS_NAME_MAP`, в стилях объединено дублирующееся объявление анимации точек — сама анимация задана один раз на `.dot`, а у `.dot1` / `.dot2` / `.dot3` осталась только `animation-delay` (правило `.dot1` с нулевой задержкой обязательно: без него класс исчезнет из CSS-модуля и из разметки), unit-тесты расширены с 3 до 6 кейсов. В stories `controls: { disable: true }` перенесён на верхний уровень `parameters` — внутри `docs` он не применялся. Публичный API, DOM и визуальное поведение не изменены. |
174
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ListItemLoading`); из `related` убраны потребители `Dropdown`, `SuggestField`, `SelectExtendedField` — ссылка на контракт по рендеру стоит с их стороны; `Button` оставлен как исключение «потребитель, опирающийся на хрупкую деталь». Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
169
175
 
170
176
  ---
171
177
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: MaskedField
3
3
  category: TextFields
4
- related: [TextField, FormField, FormFieldMaskedInput, FormGroup, DateField, MonthYearField]
4
+ related: [TextField, FormField, FormGroup, DateField]
5
5
  tokens: []
6
6
  stories: stories/MaskedField/MaskedField.stories.tsx
7
7
  version: "1.0"
@@ -87,6 +87,7 @@ version: "1.0"
87
87
  - `TextFieldBase` — базовая раскладка `FormGroup`/`FormField` + слоты `prefix`/`children`/`label`/`postfix` и блок `description`/`counter`.
88
88
  - `FormFieldMaskedInput` — сам элемент ввода с маской и статическим свойством `presets` (`masks`, `placeholderMasks`). Используется напрямую, когда нужна нестандартная композиция поля.
89
89
  - `FormFieldClear` — кнопка очистки, передаётся в `postfix`.
90
+ - `TextField` — то же поле без маски: отличается только элементом ввода (`FormFieldInput` вместо `FormFieldMaskedInput`).
90
91
  - `FormGroup` / `FormField` — контейнеры раскладки поля и описания.
91
92
  - `DateField`, `MonthYearField`, `AmountField`, `SuggestField`, `TextareaField` — специализированные поля той же группы `TextFields`.
92
93
 
@@ -119,6 +120,7 @@ version: "1.0"
119
120
  | 2026-08-11 | Тип `maskedInputProps.ref` исправлен на `React.RefObject<HTMLDivElement>` — соответствует фактическому ref-таргету (правки по ревью PR #515) |
120
121
  | 2026-08-12 | Исправления в `FormFieldMaskedInput` по ревью PR #515: убрана мутация prop `value` в `getValue()`, `defaultValue` больше не уходит в `<input>` (предупреждение React о controlled/uncontrolled) и исключён из `IFormFieldMaskedInputProps` |
121
122
  | 2026-09-09 | Исправлено: значение с кодом страны раскладывалось по маске телефона со сдвигом и теряло последнюю цифру. Нормализация номера вынесена в `normalizePhoneText` и применяется и к внешнему `value`, и к слою с маской |
123
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`FormFieldMaskedInput`); из `related` убраны несимметричные имена (`MonthYearField`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
122
124
 
123
125
  ---
124
126
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: MediaWidth
3
3
  category: MediaWidth
4
- related: [MediaMinWidth, MediaMaxWidth, MediaBetweenWidth, useMatchMedia, MobileView, WindowResizeListener]
4
+ related: [MobileView, WindowResizeListener]
5
5
  tokens: []
6
6
  stories: stories/MediaWidth/MediaWidth.stories.tsx
7
7
  version: "1.0"
@@ -227,6 +227,7 @@ version: "1.0"
227
227
  |---|---|
228
228
  | 2026-08-18 | TRI-104: в `related` и «Связанные компоненты» добавлен `WindowResizeListener` — обратная сторона симметричной связи-альтернативы. Код и публичный API не затронуты. |
229
229
  | 2026-08-11 | Создан документ. AI-рефакторинг (TRI-58): `displayName` у `MediaWidth`, исправлены опечатки и дополнен JSDoc props и компонента, unit-тесты расширены с 7 до 19 кейсов (проверяются строки медиа-запросов, выбор реализации, `null`-ветки, переподписка и отписка). Публичный API не изменён (props, `IMediaProps`, barrel-экспорты; `forwardRef` по-прежнему осознанно отсутствует). |
230
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`MediaMinWidth`, `MediaMaxWidth`, `MediaBetweenWidth`, `useMatchMedia`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
230
231
 
231
232
  ---
232
233
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: MobileView
3
3
  category: MobileView
4
- related: [MediaWidth, MediaMaxWidth, useMatchMedia, useMobileView]
4
+ related: [MediaWidth]
5
5
  tokens: []
6
6
  stories: stories/MobileView/MobileView.stories.tsx
7
7
  version: "1.0"
@@ -173,6 +173,7 @@ viewport `xs` (575px) рендерится мобильный вариант, н
173
173
  | Дата | Изменение |
174
174
  |---|---|
175
175
  | 2026-08-10 | Создан документ. AI-рефакторинг (TRI-59): `useMobileView.tsx` → `useMobileView.ts` (в файле нет JSX), явный тип возврата у хука, `displayName` у `MobileView`, дополнен JSDoc, добавлены unit-тесты (15 кейсов) и stories по modern pattern. Публичный API не изменён (props, сигнатура хука, barrel-экспорты; `forwardRef` по-прежнему осознанно отсутствует). |
176
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`MediaMaxWidth`, `useMatchMedia`, `useMobileView`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
176
177
 
177
178
  ---
178
179
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: ModalWindow
3
3
  category: ModalWindow
4
- related: [ModalWindowContent, ModalWindowHeader, ModalWindowBody, ModalWindowFooter, ModalWindowClose, ModalWindowViewManager, Portal, FocusTrap, Page, HeaderPage, FooterPage, Island, LoaderScreen]
4
+ related: [LightBox, Portal, Page, HeaderPage, FooterPage, Island, LoaderScreen]
5
5
  tokens:
6
6
  - ModalWindow.Backdrop_Background
7
7
  - ModalWindow.Background
@@ -107,6 +107,8 @@ ModalWindow.Background
107
107
  - **`ModalWindowBody`** — тело. Тривиальная обёртка над `Island` с фиксированными `type=TYPE_1` и `size=MD`. Тип `IModalWindowBodyProps extends Omit<IIslandProps, "loading" | "loaderScreenProps">`. Состояние загрузки у `Island` намеренно отрезано: тело скроллируется (`overflow: auto`), а `LoaderScreen` позиционируется абсолютно и уехал бы вместе с контентом. Загрузку модального окна задавай на `ModalWindowContent`.
108
108
  - **`ModalWindowFooter`** — футер. Тривиальная обёртка над `FooterPage` с фиксированным `type=FIRST`. Экспонирует статическое поле `Description = FooterPage.Description`.
109
109
  - **`ModalWindowClose`** — кнопка закрытия. Обёртка над `Button` (`theme=SECONDARY`, `size=MD`, иконка `CrossStrokeSrvIcon20`) внутри `TriggerClickOnKeyDownEvent` с `EVENT_KEY_CODES.ESCAPE`. **Текст `title` не имеет дефолта внутри компонента** — библиотека мультиязычная, локализованную подсказку (например, `title="Закрыть"`) передаёт потребитель через props. Тип `IModalWindowCloseProps` (Omit `size`/`theme`/`icon` от `IButtonSecondaryProps`).
110
+ - **`LightBox`** — альтернатива для полноэкранного просмотра: тот же механизм оверлея, но контент занимает весь экран, а не центрированное окно.
111
+ - **`FocusTrapExtended`** (`src/components/FocusTrapExtended`) — focus trap окна: `ModalWindow` рендерит его и настраивает через `focusTrapProps` (`IFocusTrapExtendedProps`). Своего AI.md и строки в `docs/ai/ROADMAP.md` не имеет.
110
112
  - **`ModalWindowViewManager`** — невидимый компонент-сенсор. Создаёт DOM-ноду `<div id="modalWindowViewManagerNodeId">` (если её нет в `body`) и рендерит туда через `Portal` resize-сенсор + `<style>`-инжект CSS-переменных `--modalWindow-screen-*` в `:root`. Подключается автоматически из `ModalWindow`; экспортируется отдельно для случая, когда лайаут хочет позиционировать ноду вручную (например, рисовать модалку только в области рабочей зоны без шапки).
111
113
 
112
114
  ---
@@ -138,6 +140,7 @@ ModalWindow.Background
138
140
  | 2026-06-30 | Fix: модалка не отображалась под React 18 `StrictMode`. На искусственном unmount/mount-цикле cleanup в `useEffect` открепляет портальный `mountNode`, а инициализатор `useState` повторно не вызывается — узел оставался вне DOM. Теперь `useEffect` при (повторном) mount возвращает узел в wrapper, если тот откреплён. Wrapper вынесен в `getOrCreateWrapperNode`. Добавлен регрессионный тест на реальном `Portal` (`ModalWindow.strictMode.test.tsx`). |
139
141
  | 2026-08-07 | `IModalWindowBodyProps` сузился до `Omit<IIslandProps, "isLoading" \| "loaderScreenProps">`: в `Island` появилось состояние загрузки, но в скроллируемом теле модалки абсолютный `LoaderScreen` уезжает вместе с контентом. Публичный API не изменён — props исключены до их первого релиза; путь для загрузки модального окна прежний, `ModalWindowContent`. |
140
142
  | 2026-08-11 | Prop загрузки в `Island` переименован `isLoading` → `loading`, вслед за ним `Omit` в `IModalWindowBodyProps` — теперь `Omit<IIslandProps, "loading" \| "loaderScreenProps">`. Публичный API `ModalWindow` не изменён: у `ModalWindowContent` prop по-прежнему `isLoading`. |
143
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`ModalWindowContent`, `ModalWindowHeader`, `ModalWindowBody`, `ModalWindowFooter`, `ModalWindowClose`, `ModalWindowViewManager`, `FocusTrap`); добавлены обратные ссылки (`LightBox`). Пояснения к убранным `ModalWindow*` сохранены прозой в «Связанные компоненты», а `FocusTrap` там заменён на фактически рендерящийся `FocusTrapExtended`; публичный API и поведение не затронуты. |
141
144
 
142
145
  ---
143
146
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: MonthYearField
3
3
  category: Date components
4
- related: [DatePickerExtended, MonthYearRange, ChipMonthYearPicker, TextField, Calendar]
4
+ related: [MonthYearRange, ChipMonthYearPicker, DateField, DatePickerExtended, TextField, Calendar]
5
5
  tokens: []
6
6
  stories: stories/MonthYearField/MonthYearField.stories.tsx
7
7
  version: "1.0"
@@ -81,6 +81,8 @@ version: "1.0"
81
81
  - `MonthYearRange` — выбор диапазона месяцев; использует `MonthYearField` как поля «от» и «до».
82
82
  - `ChipMonthYearPicker` — тот же выбор месяца в виде чипса-фильтра: наследует `IMonthYearFieldProps` и утилиты `MonthYearPickerUtils`, но вместо поля формы рендерит `Chip`.
83
83
  - `TextField` — внутреннее поле-триггер.
84
+ - `Calendar` — календарь внутри дропдауна в режиме `MONTH_YEAR`; его props приходят в публичный API через `DatePickerExtended`.
85
+ - `DateField` — альтернатива для выбора полной даты; устроен по той же схеме, но поле редактируемое и с маской.
84
86
  - `MonthYearFieldTarget` (внутренний, не в barrel) — рендерит `TextField` с иконкой календаря и кнопкой очистки, обрабатывает клик/клавиатуру для открытия дропдауна. Описан здесь, отдельного AI.md не имеет.
85
87
  - `MonthYearFieldContext` (внутренний, не в barrel) — прокидывает `onChange` в target; тривиальный контекст без своей логики.
86
88
  - `MonthYearPickerUtils` (`utils.ts`, внутренний) — чистые функции парсинга/валидации даты (`getPickerValues`, `getCalendarDate`, `isAvailableDate`). Покрыты `__tests__/utils.test.tsx`.
@@ -111,6 +113,7 @@ version: "1.0"
111
113
  | 2026-06-16 | Создан документ. AI-рефакторинг (JSDoc-фиксы), unit-тесты для `utils.ts`, story `VisualTests` и включение скриншот-тестов |
112
114
  | 2026-06-16 | Добавлена story `VisualTestsOpen` — скриншот раскрытого dropdown с календарём (через `play`) |
113
115
  | 2026-09-07 | В «Связанные компоненты» добавлен `ChipMonthYearPicker` — чипс-вариант того же выбора месяца |
116
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): добавлены обратные ссылки (`DateField`). Публичный API и поведение не затронуты. |
114
117
 
115
118
  ---
116
119
 
@@ -152,6 +152,7 @@ Notification.TimeColor (цвет времени)
152
152
  | Дата | Изменение |
153
153
  |---|---|
154
154
  | 2026-06-16 | Создан AI-документ. `Notification`, `NotificationGrouped`, `NotificationBody` переведены на `forwardRef` (паттерн `Object.assign`); удалены типы `INotificationSFC`/`INotificationBodySFC`; тип `Notification.Time.time` расширен с `React.ReactText` до `React.ReactNode`. Stories мигрированы на modern pattern. |
155
+ | 2026-09-28 | Токен `Notification.Shadow` ссылается на `Shadow.07` (светлая) и `DarkShadow.07` (тёмная) вместо литералов; в тёмной теме прозрачность 0.25 вместо 0.35. |
155
156
 
156
157
  ---
157
158
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: Overlay
3
3
  category: Overlay
4
- related: [OverlayBase, OverlayMask, OverlayPanel, LightBox, TopOverlay, ModalWindow, DropdownMobile]
4
+ related: [LightBox, TopOverlay]
5
5
  tokens:
6
6
  - Overlay.Background
7
7
  - Overlay.Panel_Background
@@ -184,7 +184,11 @@ unit-тестами (`toHaveBeenCalledTimes(1)`).
184
184
  - `OverlayMask` (`Overlay.Mask`) — кликабельный фон.
185
185
  - `OverlayPanel` (`Overlay.Panel`) — выезжающая панель.
186
186
  - `LightBox`, `TopOverlay` — построены поверх механики оверлея.
187
- - `ModalWindow` — альтернатива для центрированных модальных окон.
187
+ - `DropdownMobile` — мобильный оверлей `Dropdown`, построен на `OverlayBase`. Своего AI.md
188
+ не имеет, описан в `Dropdown-ai.md`.
189
+ - `ModalWindow` — готовое центрированное модальное окно с шапкой, телом и футером, если
190
+ нужен не низкоуровневый оверлей. На `Overlay` не построен — это отвод в другой класс
191
+ задач, поэтому в `related` не входит.
188
192
 
189
193
  ---
190
194
 
@@ -212,6 +216,7 @@ Visual baseline для `components-overlay--visual-tests` генерируетс
212
216
  |---|---|
213
217
  | 2026-08-27 | `OverlayBase` вызывает `onOpen` при монтировании с `opened={true}` — раньше первый рендер гасил все колбэки, и оверлей, смонтированный открытым, не сообщал об этом потребителю (release notes 1.44.0). |
214
218
  | 2026-06-17 | Создан документ. `Overlay` переведён на `forwardRef` (ref → корневой `div`, аддитивно, release notes 1.34.0). Дедуплицирован флаг `closing` (единый источник — `OverlayBase`). Codestyle/JSDoc cleanup в 4 файлах. Добавлены 4 unit-тест-файла. Исправлен двойной вызов `onClosing`/`onOpening` за переход — теперь ровно один раз (закреплено `toHaveBeenCalledTimes(1)`). |
219
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`OverlayBase`, `OverlayMask`, `OverlayPanel`, `DropdownMobile`); из `related` убраны несимметричные имена (`ModalWindow`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
215
220
 
216
221
  ---
217
222
 
@@ -3,16 +3,9 @@ component: Pagination
3
3
  category: Navigation
4
4
  related:
5
5
  - PaginationExtended
6
- - PaginationNavigation
7
- - PaginationNavigationButton
8
6
  - PaginationNavigationExtended
9
- - PaginationNavigationExtendedItem
10
- - PaginationPageButton
11
- - PaginationPageEllipsis
12
- - PaginationSelect
13
7
  - SelectField
14
8
  - ButtonIcon
15
- - ButtonBase
16
9
  - MasterTable
17
10
  tokens:
18
11
  - Pagination.PageButton_Background_Hover
@@ -165,6 +158,7 @@ Pagination.PageButton_BorderColor_Focus
165
158
  | 2026-08-26 | `PaginationSelect` прокидывает в `SelectField` все свойства, которые не разбирает сам: `data`-атрибуты, `id`, `aria`-атрибуты, `targetProps`, `dropdownProps`, `mobileTitle` и т.д. Публичный API не изменился. |
166
159
  | 2026-08-12 | В состоянии загрузки `MasterTable` элементы пагинации становятся `disabled` — читается из `MasterTableContext.loading`. Публичный API не изменился. Заодно `PaginationSelect` перестал молча терять переданный `status`. |
167
160
  | 2026-08-27 | Навигация больше не скрывается при `totalPages <= 1`: отрисовывается одна страница с заблокированными стрелками, высота панели пагинации не схлопывается. Публичный API не изменился. |
161
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны имена без строки в `docs/ai/ROADMAP.md` (`PaginationNavigation`, `PaginationNavigationButton`, `PaginationNavigationExtendedItem`, `PaginationPageButton`, `PaginationPageEllipsis`, `PaginationSelect`, `ButtonBase`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
168
162
 
169
163
  ---
170
164