@sberbusiness/triplex-next-mcp-server 1.45.0-beta → 1.46.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,7 +49,7 @@ version: "1.0"
49
49
  - **Значение всегда контролируемое.** `maskedInputProps.value` пропускается через `conformToMask`, поэтому в `onChange` приходит уже отформатированное значение (`"12.12."` после ввода четырёх цифр даты). Хранить в state можно как форматированное, так и «сырое» значение — маска применяется к обоим.
50
50
  - **`onChange` вызывается только при реальном изменении** отформатированного значения: повторное событие с тем же значением игнорируется.
51
51
  - **Подсказка маски** (`placeholderMask` или заполнение символом `placeholderChar`) рисуется отдельным `aria-hidden` слоем поверх поля и показывается, только когда поле в фокусе или заполнено. Если задан обычный `placeholder`, у пустого поля показывается он, а не маска.
52
- - **Пресеты масок для телефона и SWIFT обрабатываются особо:** телефон нормализует вставку номера с `7`/`8`/`+7` в начале, SWIFT-код приводится к верхнему регистру.
52
+ - **Пресеты масок для телефона и SWIFT обрабатываются особо:** телефон нормализует номер с `7`/`8`/`+7` в начале — и переданный в `value`, и введённый или вставленный в поле; SWIFT-код приводится к верхнему регистру.
53
53
  - Ограничение длины задаёт сама маска — `maxLength` не нужен; `counter`, если он нужен, считает потребитель.
54
54
  - Кнопка очистки не встроена — передаётся потребителем как `postfix={<FormFieldClear onClick={...} />}`.
55
55
 
@@ -118,6 +118,7 @@ version: "1.0"
118
118
  | 2026-08-07 | Создан документ (TRI-56). AI-рефакторинг MaskedField, unit-тесты, миграция stories на modern pattern |
119
119
  | 2026-08-11 | Тип `maskedInputProps.ref` исправлен на `React.RefObject<HTMLDivElement>` — соответствует фактическому ref-таргету (правки по ревью PR #515) |
120
120
  | 2026-08-12 | Исправления в `FormFieldMaskedInput` по ревью PR #515: убрана мутация prop `value` в `getValue()`, `defaultValue` больше не уходит в `<input>` (предупреждение React о controlled/uncontrolled) и исключён из `IFormFieldMaskedInputProps` |
121
+ | 2026-09-09 | Исправлено: значение с кодом страны раскладывалось по маске телефона со сдвигом и теряло последнюю цифру. Нормализация номера вынесена в `normalizePhoneText` и применяется и к внешнему `value`, и к слою с маской |
121
122
 
122
123
  ---
123
124
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: MonthYearField
3
3
  category: Date components
4
- related: [DatePickerExtended, MonthYearRange, TextField, Calendar]
4
+ related: [DatePickerExtended, MonthYearRange, ChipMonthYearPicker, TextField, Calendar]
5
5
  tokens: []
6
6
  stories: stories/MonthYearField/MonthYearField.stories.tsx
7
7
  version: "1.0"
@@ -80,6 +80,7 @@ version: "1.0"
80
80
 
81
81
  - `DatePickerExtended` — родительский компонент выпадающего календаря; `MonthYearField` конфигурирует его в режим `MONTH_YEAR` через render-props.
82
82
  - `MonthYearRange` — выбор диапазона месяцев; использует `MonthYearField` как поля «от» и «до».
83
+ - `ChipMonthYearPicker` — тот же выбор месяца в виде чипса-фильтра: наследует `IMonthYearFieldProps` и утилиты `MonthYearPickerUtils`, но вместо поля формы рендерит `Chip`.
83
84
  - `TextField` — внутреннее поле-триггер.
84
85
  - `MonthYearFieldTarget` (внутренний, не в barrel) — рендерит `TextField` с иконкой календаря и кнопкой очистки, обрабатывает клик/клавиатуру для открытия дропдауна. Описан здесь, отдельного AI.md не имеет.
85
86
  - `MonthYearFieldContext` (внутренний, не в barrel) — прокидывает `onChange` в target; тривиальный контекст без своей логики.
@@ -110,6 +111,7 @@ version: "1.0"
110
111
  |---|---|
111
112
  | 2026-06-16 | Создан документ. AI-рефакторинг (JSDoc-фиксы), unit-тесты для `utils.ts`, story `VisualTests` и включение скриншот-тестов |
112
113
  | 2026-06-16 | Добавлена story `VisualTestsOpen` — скриншот раскрытого dropdown с календарём (через `play`) |
114
+ | 2026-09-07 | В «Связанные компоненты» добавлен `ChipMonthYearPicker` — чипс-вариант того же выбора месяца |
113
115
 
114
116
  ---
115
117
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "triplexVersion": "1.45.0",
4
- "generatedAt": "2026-09-04T13:44:34.562Z",
3
+ "triplexVersion": "1.46.0",
4
+ "generatedAt": "2026-09-11T14:38:29.457Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "AbstractTree",
@@ -111,6 +111,12 @@
111
111
  "file": "components/Card.md",
112
112
  "ai_ready": true
113
113
  },
114
+ {
115
+ "name": "CardAction",
116
+ "path": "src/components/Card/CardAction-ai.md",
117
+ "file": "components/CardAction.md",
118
+ "ai_ready": true
119
+ },
114
120
  {
115
121
  "name": "Carousel",
116
122
  "path": "src/components/Carousel",
@@ -166,6 +172,36 @@
166
172
  "file": "components/ChipGroup.md",
167
173
  "ai_ready": true
168
174
  },
175
+ {
176
+ "name": "ChipMonthYearPicker",
177
+ "path": "src/components/Chip/ChipMonthYearPicker-ai.md",
178
+ "file": "components/ChipMonthYearPicker.md",
179
+ "ai_ready": true
180
+ },
181
+ {
182
+ "name": "ChipMultiselect",
183
+ "path": "src/components/Chip/ChipMultiselect-ai.md",
184
+ "file": "components/ChipMultiselect.md",
185
+ "ai_ready": true
186
+ },
187
+ {
188
+ "name": "ChipOptions",
189
+ "path": "src/components/Chip/ChipOptions-ai.md",
190
+ "file": "components/ChipOptions.md",
191
+ "ai_ready": true
192
+ },
193
+ {
194
+ "name": "ChipSort",
195
+ "path": "src/components/Chip/ChipSort-ai.md",
196
+ "file": "components/ChipSort.md",
197
+ "ai_ready": true
198
+ },
199
+ {
200
+ "name": "ChipSuggest",
201
+ "path": "src/components/Chip/ChipSuggest-ai.md",
202
+ "file": "components/ChipSuggest.md",
203
+ "ai_ready": true
204
+ },
169
205
  {
170
206
  "name": "CodeText",
171
207
  "path": "src/components/Typography/CodeText-ai.md",
@@ -204,7 +240,7 @@
204
240
  },
205
241
  {
206
242
  "name": "DateField",
207
- "path": "src/components/DateField/DateField-AI.md",
243
+ "path": "src/components/DateField/DateField-ai.md",
208
244
  "file": "components/DateField.md",
209
245
  "ai_ready": true
210
246
  },
@@ -343,13 +379,13 @@
343
379
  },
344
380
  {
345
381
  "name": "IslandAccordion",
346
- "path": "src/components/IslandAccordion/IslandAccordion-AI.md",
382
+ "path": "src/components/IslandAccordion/IslandAccordion-ai.md",
347
383
  "file": "components/IslandAccordion.md",
348
384
  "ai_ready": true
349
385
  },
350
386
  {
351
387
  "name": "IslandWidget",
352
- "path": "src/components/IslandWidget/IslandWidget-AI.md",
388
+ "path": "src/components/IslandWidget/IslandWidget-ai.md",
353
389
  "file": "components/IslandWidget.md",
354
390
  "ai_ready": true
355
391
  },
@@ -1094,6 +1130,11 @@
1094
1130
  "file": "release-notes/1.46.0.mdx",
1095
1131
  "path": "stories/release-notes/v1/1.46.0.mdx"
1096
1132
  },
1133
+ {
1134
+ "version": "1.47.0",
1135
+ "file": "release-notes/1.47.0.mdx",
1136
+ "path": "stories/release-notes/v1/1.47.0.mdx"
1137
+ },
1097
1138
  {
1098
1139
  "version": "1.5.0",
1099
1140
  "file": "release-notes/1.5.0.mdx",
@@ -4,4 +4,63 @@ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
4
4
 
5
5
  <Title>v1.46.0</Title>
6
6
 
7
+ <Heading>Новые компоненты</Heading>
8
+
9
+ **ChipMonthYearPicker**
10
+
11
+ - Компонент выбора месяца и года с видом `Chip`.
12
+
7
13
  <Heading>Изменения</Heading>
14
+
15
+ **CardAction**
16
+
17
+ - Исправлен аргумент `onToggle` в неконтролируемом режиме: колбэк получает актуальное состояние выбора. Раньше при нескольких переключениях в одном пакете обновлений React (например, два вызова `handleToggle` подряд через `ref`) все вызовы `onToggle` получали одно и то же значение, не совпадающее с итоговым состоянием карточки. Одиночное переключение по клику, `Enter` или `Space` работает как прежде.
18
+ - Проведён AI-рефакторинг: других изменений для потребителя нет.
19
+
20
+ **ChipMultiselect**
21
+
22
+ - Проведён AI-рефакторинг: изменений для потребителя нет.
23
+
24
+ **ChipOptions**
25
+
26
+ - Добавлен prop `clearButtonProps` — props кнопки сброса выбора (`aria-label`, `disabled`, `className`, `data-*`). Размер кнопки по-прежнему задаётся `size` чипса и в тип не входит. Переданные `onClick` и `onKeyDown` не заменяют собственные обработчики компонента, а вызываются после них.
27
+ - `Enter` и `Space`, нажатые на кнопке сброса, больше не всплывают до чипса: `Space` теперь активирует кнопку, а внешний `onKeyDown` чипса не срабатывает заодно со сбросом.
28
+ - Проведён AI-рефакторинг: других изменений для потребителя нет.
29
+
30
+ **ChipSort**
31
+
32
+ - Проведён AI-рефакторинг: изменений для потребителя нет.
33
+
34
+ **ChipSuggest**
35
+
36
+ - Проведён AI-рефакторинг: `ChipSuggest` больше не оборачивает переданный `ref` в новую функцию на каждый рендер, поэтому стабильный callback-`ref` перестал переприкрепляться (элемент, на который указывает `ref`, прежний). Других изменений для потребителя нет.
37
+
38
+ **DateField**
39
+
40
+ - Проведён AI-рефакторинг, добавлен `displayName` у внутреннего управляющего элемента поля.
41
+
42
+ **HelpBox**
43
+
44
+ - Проведён AI-рефакторинг: `HelpBox` больше не оборачивает переданный `ref` в новую функцию на каждый рендер, поэтому стабильный callback-`ref` перестал переприкрепляться. Автогенерируемый `id` подсказки теперь имеет вид `HelpBox-<n>` вместо `:r<n>:`. Других изменений для потребителя нет.
45
+ - Исправлен баг, когда компонент при открытии наведением мыши перехватывал фокус у полей ввода, внутри которых находился.
46
+
47
+ **IslandAccordion**
48
+
49
+ - Проведён AI-рефакторинг: при `num={0}` со `status` в заголовке больше не появляется текст «0» (кружок шага, как и прежде, не рендерится). Автогенерируемые `id` заголовка и раскрывающейся области теперь имеют вид `IslandAccordionItem-<n>-header` и `IslandAccordionItem-<n>-body`. Смена `opened` применяется в том же рендере, без промежуточного кадра со старым состоянием. Других изменений для потребителя нет.
50
+
51
+ **IslandWidget**
52
+
53
+ - Исправлено: размонтирование раскрытого `IslandWidget.ExtraFooter` больше не оставляет на виджете тень и отступ под уже убранный подвал. Раньше состояние сбрасывалось только сменой `open` на `false`, поэтому условный рендеринг подвала оставлял виджет в состоянии «подвал раскрыт».
54
+ - Исправлено: если в одном `IslandWidget.Wrapper` раскрыто несколько `ExtraFooter`, закрытие или удаление одного из них больше не снимает тень с виджета, пока раскрыт хотя бы один.
55
+ - Исправлено: при `disableAdaptiveCollapsing` клик по шапке в адаптиве больше не переключает внутреннее состояние раскрытия вхолостую — обработчик не навешивается, когда сворачивание отключено. Вид виджета в этом режиме прежний.
56
+ - С тени `ExtraFooter` снята пометка `!important` — теперь её можно переопределить своими стилями. Сама тень выглядит как прежде.
57
+ - Проведён AI-рефакторинг: `className`, переданный в `IslandWidget.Footer.Content` и `IslandWidget.Footer.Controls`, больше не затирается базовым классом компонента, а дополняет его. Атрибут `data-tx` теперь проставляется после остальных props и потребителем не переопределяется.
58
+ - Экспортированы интерфейсы `IIslandWidgetHeaderDescriptionProps` и `IIslandWidgetHeaderContentProps` — стало возможно типизировать обёртки над `IslandWidget.Header.Description` и `IslandWidget.Header.Content`.
59
+
60
+ **MaskedField**
61
+
62
+ - Исправлен баг, когда номер телефона, переданный в `value` с кодом страны, отображался со сдвигом на одну цифру.
63
+
64
+ **TextareaField**
65
+
66
+ - `height` заменен на `min-height`.
@@ -0,0 +1,7 @@
1
+ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
2
+
3
+ <Meta title="release-notes/v1/1.47.0" />
4
+
5
+ <Title>v1.47.0</Title>
6
+
7
+ <Heading>Изменения</Heading>
@@ -6357,6 +6357,6 @@
6357
6357
  },
6358
6358
  "internal": {
6359
6359
  "cssVarPattern": "--triplex-next-{Группа}-{Токен}-{версия}",
6360
- "versionSuffix": "1-45-0"
6360
+ "versionSuffix": "1-46-0"
6361
6361
  }
6362
6362
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sberbusiness/triplex-next-mcp-server",
3
- "version": "1.45.0-beta",
3
+ "version": "1.46.0-beta",
4
4
  "description": "MCP-сервер для дизайн-системы Triplex. Предоставляет AI-агентам документацию компонентов, дизайн-токены и примеры использования.",
5
5
  "author": "СберБизнес",
6
6
  "license": "MIT",