@sberbusiness/triplex-next-mcp-server 1.45.0-beta → 1.48.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 (60) hide show
  1. package/README.md +7 -7
  2. package/bundle/components/AmountField.md +222 -323
  3. package/bundle/components/Avatar.md +138 -146
  4. package/bundle/components/CardAction.md +615 -0
  5. package/bundle/components/CardStatic.md +402 -0
  6. package/bundle/components/CheckboxTree.md +157 -215
  7. package/bundle/components/CheckboxTreeExtended.md +7 -7
  8. package/bundle/components/Chip.md +7 -6
  9. package/bundle/components/ChipGroup.md +1 -1
  10. package/bundle/components/ChipMonthYearPicker.md +344 -0
  11. package/bundle/components/ChipMultiselect.md +1251 -0
  12. package/bundle/components/ChipOptions.md +329 -0
  13. package/bundle/components/ChipSort.md +333 -0
  14. package/bundle/components/ChipSuggest.md +588 -0
  15. package/bundle/components/CollapsibleTree.md +8 -4
  16. package/bundle/components/CollapsibleTreeExtended.md +8 -6
  17. package/bundle/components/Confirm.md +346 -281
  18. package/bundle/components/DateField.md +222 -303
  19. package/bundle/components/DatePickerExtended.md +3 -1
  20. package/bundle/components/DateRange.md +351 -210
  21. package/bundle/components/FooterPage.md +1 -0
  22. package/bundle/components/FormField.md +14 -5
  23. package/bundle/components/FormGroup.md +3 -2
  24. package/bundle/components/HelpBox.md +7 -1
  25. package/bundle/components/IslandAccordion.md +443 -152
  26. package/bundle/components/IslandWidget.md +622 -157
  27. package/bundle/components/LightBox.md +8 -0
  28. package/bundle/components/ListMaster.md +2 -2
  29. package/bundle/components/ListTableItem.md +6 -6
  30. package/bundle/components/MaskedField.md +2 -1
  31. package/bundle/components/MonthYearField.md +18 -5
  32. package/bundle/components/Slider.md +389 -97
  33. package/bundle/components/SliderRange.md +486 -105
  34. package/bundle/components/StatusTracker.md +386 -94
  35. package/bundle/components/Stepper.md +355 -102
  36. package/bundle/components/StepperExtended.md +633 -0
  37. package/bundle/components/SuggestField.md +1049 -96
  38. package/bundle/components/SwipeableArea.md +7 -7
  39. package/bundle/components/Tabs.md +265 -92
  40. package/bundle/components/TabsExtended.md +18 -18
  41. package/bundle/components/TabsLine.md +301 -127
  42. package/bundle/components/TagColor.md +187 -66
  43. package/bundle/components/TagGroup.md +184 -48
  44. package/bundle/components/TextareaField.md +278 -70
  45. package/bundle/components/TopOverlay.md +17 -1
  46. package/bundle/components/TreeView.md +16 -7
  47. package/bundle/components/TriggerClickOnKeyDownEvent.md +277 -0
  48. package/bundle/components/UploadZone.md +318 -0
  49. package/bundle/guides/codestyle.md +16 -1
  50. package/bundle/guides/commits.md +47 -1
  51. package/bundle/guides/tests.md +23 -2
  52. package/bundle/manifest.json +92 -24
  53. package/bundle/release-notes/1.46.0.mdx +59 -0
  54. package/bundle/release-notes/1.47.0.mdx +122 -0
  55. package/bundle/release-notes/1.48.0.mdx +68 -0
  56. package/bundle/release-notes/1.49.0.mdx +7 -0
  57. package/bundle/tokens.json +3 -3
  58. package/dist/index.js +220 -6
  59. package/dist/index.js.map +1 -1
  60. package/package.json +1 -1
@@ -101,6 +101,13 @@ LightBox.SideOverlay_Background
101
101
  css-переменную `--lightBox-scroll-width`, которую вычитают из ширины оверлеев. Ширины размеров
102
102
  (`664/864/1064/1264`) заданы LESS-константами `@lightBox-content-max-width-*`.
103
103
 
104
+ Боковые отступы контента лайтбокса (`@lightBoxContentPaddingX`, 80px — место под кнопки
105
+ вперёд/назад, на экранах до 1024px включительно 0) публикуются css-переменной
106
+ `--lightBox-content-padding-x` на `.lightBoxContent`. По ней потомки выравниваются с колонкой
107
+ страницы — так это делает обёртка `TopOverlay`. Переменная объявлена именно на `.lightBoxContent`,
108
+ поэтому вне его поддерева (например в `LightBox.SideOverlay` — он сиблинг `LightBox.Content`,
109
+ а не его потомок) она не видна, и читающие её стили получают фолбэк 0.
110
+
104
111
  ---
105
112
 
106
113
  ## Инварианты
@@ -202,6 +209,7 @@ css-переменную `--lightBox-scroll-width`, которую вычита
202
209
 
203
210
  | Дата | Изменение |
204
211
  |---|---|
212
+ | 2026-09-21 | Боковые отступы `.lightBoxContent` вынесены в css-переменную `--lightBox-content-padding-x` (константа `@lightBoxContentPaddingX`). Нужна, чтобы `TopOverlay` выравнивался по колонке контента |
205
213
  | 2026-07-22 | Создан документ (Phase 1 AI-Ready). В том же изменении — AI-рефакторинг: JSDoc на props, общий `LightBoxArrow` для Prev/Next, хук `useLightBoxSidebarVisibility` для сайдбаров, устранение eslint-подавлений; публичный API не менялся |
206
214
  | 2026-07-22 | Добавлен `export` к props-интерфейсам `ILightBoxControlsProps`, `ILightBoxCloseProps`, `ILightBoxPrevProps`, `ILightBoxNextProps`, `ILightBoxSideOverlayLoaderProps` (аддитивно, для консистентности с остальными интерфейсами компонента) |
207
215
  | 2026-07-22 | Багфиксы по ревью PR #474: клавиатурные триггеры контролов целятся в видимую кнопку (стрелки не работали на desktop, Esc — на mobile); таймер-хак блокировки скролла заменён счётчиком смонтированных лайтбоксов; `LightBoxViewManager` снимает классы mount-ноды при размонтировании последнего менеджера |
@@ -628,13 +628,13 @@ export const Default = () => {
628
628
  controlButtons={
629
629
  <>
630
630
  <ListItemControlsButton
631
- icon={<AttachmentStrokeSrvIcon20 paletteIndex={5} />}
631
+ icon={<AttachmentStrokeSrvIcon20 paletteIndex={0} />}
632
632
  >
633
633
  Скачать
634
634
  </ListItemControlsButton>
635
635
 
636
636
  <ListItemControlsButtonDropdown
637
- icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={5} />}
637
+ icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={0} />}
638
638
  options={itemActions}
639
639
  >
640
640
  Действия
@@ -156,11 +156,11 @@ export const Default = () => {
156
156
  onClickItem={() => {}}
157
157
  controlButtons={
158
158
  <>
159
- <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={5} />}>
159
+ <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={0} />}>
160
160
  Скачать
161
161
  </ListItemControlsButton>
162
162
  <ListItemControlsButtonDropdown
163
- icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={5} />}
163
+ icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={0} />}
164
164
  options={options}
165
165
  >
166
166
  Действия
@@ -245,11 +245,11 @@ export const Selectable = () => {
245
245
  onClickItem={() => console.log("Клик по карточке.")}
246
246
  controlButtons={
247
247
  <>
248
- <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={5} />}>
248
+ <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={0} />}>
249
249
  Скачать
250
250
  </ListItemControlsButton>
251
251
  <ListItemControlsButtonDropdown
252
- icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={5} />}
252
+ icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={0} />}
253
253
  options={options}
254
254
  >
255
255
  Действия
@@ -354,11 +354,11 @@ export const WithSwipeEmulation = () => {
354
354
  onClickItem={() => console.log("Клик по карточке.")}
355
355
  controlButtons={
356
356
  <>
357
- <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={5} />}>
357
+ <ListItemControlsButton icon={<AttachmentStrokeSrvIcon20 paletteIndex={0} />}>
358
358
  Скачать
359
359
  </ListItemControlsButton>
360
360
  <ListItemControlsButtonDropdown
361
- icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={5} />}
361
+ icon={<DotshorizontalStrokeSrvIcon20 paletteIndex={0} />}
362
362
  options={options}
363
363
  >
364
364
  Действия
@@ -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"
@@ -61,7 +61,6 @@ version: "1.0"
61
61
  - `forwardRef` на компоненте — не убирать. Ref пробрасывается в `DatePickerExtended` (корневой DOM-элемент — элемент `DatePickerExtended`).
62
62
  - Публичный API (`IMonthYearFieldProps`: `value`, `onChange`, `onClear`, `targetProps`, `placeholder` + унаследованные `size`/`status`/`label` и props `DatePickerExtended`) — изменение имён/типов/значений — breaking change.
63
63
  - Поле read-only по контракту — не делать его редактируемым без обсуждения (компонент не имеет логики валидации клавиатурного ввода).
64
- - Отображаемый формат `"MMM YYYY"` зафиксирован в `inputMonthYearFormat`; менять его — визуальный breaking change для потребителей.
65
64
  - Sync-эффект в `MonthYearField.tsx` (`useEffect` по `[value, format, limitRange]` с `eslint-disable react-hooks/exhaustive-deps`) — намеренная синхронизация derived-стейта `pickerValues` с внешним `value`. Не переписывать без анализа поведения: сравнение идёт по `inputString`, чтобы не сбрасывать стейт при эквивалентных значениях.
66
65
  - Внутренние символы `MonthYearPickerUtils` (`utils.ts`), `MonthYearFieldContext`, `MonthYearFieldTarget` не экспортируются через barrel — это приватные детали реализации.
67
66
 
@@ -80,6 +79,7 @@ version: "1.0"
80
79
 
81
80
  - `DatePickerExtended` — родительский компонент выпадающего календаря; `MonthYearField` конфигурирует его в режим `MONTH_YEAR` через render-props.
82
81
  - `MonthYearRange` — выбор диапазона месяцев; использует `MonthYearField` как поля «от» и «до».
82
+ - `ChipMonthYearPicker` — тот же выбор месяца в виде чипса-фильтра: наследует `IMonthYearFieldProps` и утилиты `MonthYearPickerUtils`, но вместо поля формы рендерит `Chip`.
83
83
  - `TextField` — внутреннее поле-триггер.
84
84
  - `MonthYearFieldTarget` (внутренний, не в barrel) — рендерит `TextField` с иконкой календаря и кнопкой очистки, обрабатывает клик/клавиатуру для открытия дропдауна. Описан здесь, отдельного AI.md не имеет.
85
85
  - `MonthYearFieldContext` (внутренний, не в barrel) — прокидывает `onChange` в target; тривиальный контекст без своей логики.
@@ -110,6 +110,7 @@ version: "1.0"
110
110
  |---|---|
111
111
  | 2026-06-16 | Создан документ. AI-рефакторинг (JSDoc-фиксы), unit-тесты для `utils.ts`, story `VisualTests` и включение скриншот-тестов |
112
112
  | 2026-06-16 | Добавлена story `VisualTestsOpen` — скриншот раскрытого dropdown с календарём (через `play`) |
113
+ | 2026-09-07 | В «Связанные компоненты» добавлен `ChipMonthYearPicker` — чипс-вариант того же выбора месяца |
113
114
 
114
115
  ---
115
116
 
@@ -128,7 +129,7 @@ export const DefaultExample = () => {
128
129
 
129
130
  return (
130
131
  <div style={{ maxWidth: 300 }}>
131
- <MonthYearField value={value} placeholder="мм.гггг" label="Label" onChange={setValue} />
132
+ <MonthYearField value={value} placeholder="Select to proceed" label="Label" onChange={setValue} />
132
133
  </div>
133
134
  );
134
135
  };
@@ -152,7 +153,13 @@ const SizeItem = ({ size }: ISizeItemProps) => {
152
153
  return (
153
154
  <div style={{ maxWidth: 300 }}>
154
155
  <div style={{ marginBottom: 8, fontSize: 16, fontWeight: 700 }}>{size.toUpperCase()}</div>
155
- <MonthYearField size={size} value={value} label="Label" placeholder="мм.гггг" onChange={setValue} />
156
+ <MonthYearField
157
+ size={size}
158
+ value={value}
159
+ label="Label"
160
+ placeholder="Select to proceed"
161
+ onChange={setValue}
162
+ />
156
163
  </div>
157
164
  );
158
165
  };
@@ -186,7 +193,13 @@ const StatusItem = ({ status }: IStatusItemProps) => {
186
193
  return (
187
194
  <div style={{ maxWidth: 300 }}>
188
195
  <div style={{ marginBottom: 8, fontSize: 16, fontWeight: 700 }}>{status.toUpperCase()}</div>
189
- <MonthYearField status={status} value={value} label="Label" placeholder="мм.гггг" onChange={setValue} />
196
+ <MonthYearField
197
+ status={status}
198
+ value={value}
199
+ label="Label"
200
+ placeholder="Select to proceed"
201
+ onChange={setValue}
202
+ />
190
203
  </div>
191
204
  );
192
205
  };