@sberbusiness/triplex-next-mcp-server 0.24.0-beta2 → 0.36.0-beta0

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 (55) hide show
  1. package/README.md +10 -0
  2. package/bundle/components/BodyPage.md +186 -0
  3. package/bundle/components/Button.md +90 -85
  4. package/bundle/components/ButtonDropdown.md +28 -70
  5. package/bundle/components/ButtonIcon.md +35 -48
  6. package/bundle/components/Checkbox.md +43 -122
  7. package/bundle/components/CheckboxXGroup.md +109 -46
  8. package/bundle/components/CheckboxYGroup.md +77 -49
  9. package/bundle/components/CollapsibleTree.md +581 -0
  10. package/bundle/components/CollapsibleTreeExtended.md +418 -0
  11. package/bundle/components/EmptyView.md +14 -15
  12. package/bundle/components/FooterPage.md +203 -0
  13. package/bundle/components/Gap.md +115 -57
  14. package/bundle/components/HeaderPage.md +226 -0
  15. package/bundle/components/HelpBox.md +45 -84
  16. package/bundle/components/ImageGallery.md +423 -0
  17. package/bundle/components/ImageGalleryExtended.md +606 -0
  18. package/bundle/components/List.md +194 -186
  19. package/bundle/components/ListItem.md +251 -0
  20. package/bundle/components/ListItemControlsButton.md +103 -0
  21. package/bundle/components/ListItemControlsButtonDropdown.md +107 -0
  22. package/bundle/components/ListItemSelectable.md +99 -0
  23. package/bundle/components/ListItemTable.md +390 -0
  24. package/bundle/components/ListMaster.md +877 -156
  25. package/bundle/components/ListMasterFooter.md +80 -0
  26. package/bundle/components/ListMasterHeader.md +86 -0
  27. package/bundle/components/ListSortable.md +153 -0
  28. package/bundle/components/ListSortableItem.md +175 -0
  29. package/bundle/components/ModalWindow.md +427 -237
  30. package/bundle/components/MonthYearField.md +145 -109
  31. package/bundle/components/Notification.md +625 -155
  32. package/bundle/components/Overlay.md +271 -170
  33. package/bundle/components/Page.md +283 -186
  34. package/bundle/components/Pagination.md +206 -229
  35. package/bundle/guides/codestyle.md +38 -11
  36. package/bundle/guides/commits.md +1 -2
  37. package/bundle/guides/context.md +34 -30
  38. package/bundle/guides/stories.md +110 -40
  39. package/bundle/guides/template.md +3 -7
  40. package/bundle/guides/tests.md +6 -2
  41. package/bundle/manifest.json +194 -24
  42. package/bundle/release-notes/1.26.0.mdx +33 -2
  43. package/bundle/release-notes/1.27.0.mdx +43 -0
  44. package/bundle/release-notes/1.28.0.mdx +25 -0
  45. package/bundle/release-notes/1.29.0.mdx +47 -0
  46. package/bundle/release-notes/1.30.0.mdx +56 -0
  47. package/bundle/release-notes/1.31.0.mdx +52 -0
  48. package/bundle/release-notes/1.32.0.mdx +35 -0
  49. package/bundle/release-notes/1.33.0.mdx +61 -0
  50. package/bundle/release-notes/1.34.0.mdx +35 -0
  51. package/bundle/release-notes/1.35.0.mdx +21 -0
  52. package/bundle/release-notes/1.35.1.mdx +11 -0
  53. package/bundle/release-notes/1.36.0.mdx +21 -0
  54. package/bundle/release-notes/1.37.0.mdx +30 -0
  55. package/package.json +1 -1
@@ -1,8 +1,6 @@
1
1
  ---
2
2
  component: HelpBox
3
3
  category: HelpBox
4
- figma-node: ""
5
- figma-file: ""
6
4
  related: [Tooltip, ButtonIcon, MobileView, FocusTrap]
7
5
  tokens: []
8
6
  stories: stories/HelpBox/HelpBox.stories.tsx
@@ -13,25 +11,10 @@ version: "1.0"
13
11
 
14
12
  ## Назначение
15
13
 
16
- Иконка "?" (`QuestioncircleFilledSrvIcon16`) с всплывающей подсказкой (Tooltip).
17
- Объединяет ButtonIcon-триггер, Tooltip и FocusTrap в одном компоненте.
14
+ Иконка «?» (`QuestioncircleFilledSrvIcon16`) с всплывающей подсказкой (`Tooltip`). Объединяет `ButtonIcon`-триггер, `Tooltip` и `FocusTrap` в одном компоненте.
18
15
 
19
16
  Используй когда: нужна контекстная подсказка рядом с элементом интерфейса.
20
- Не используй когда: нужен полноценный попап с формой или сложным контентом — используй Dropdown или Modal.
21
-
22
- ---
23
-
24
- ## Файловая структура
25
-
26
- ```text
27
- src/components/HelpBox/
28
- ├── HelpBox.tsx # Основной компонент
29
- ├── index.ts # Barrel export
30
- ├── styles/
31
- │ └── HelpBox.module.less # Минимальные стили (position, vertical-align)
32
- └── __tests__/
33
- └── HelpBox.test.tsx # Unit-тесты
34
- ```
17
+ Не используй когда: нужен полноценный попап с формой или сложным контентом — используй `Dropdown` или `Modal`.
35
18
 
36
19
  ---
37
20
 
@@ -48,7 +31,7 @@ src/components/HelpBox/
48
31
 
49
32
  | Prop | Тип | По умолчанию | Описание |
50
33
  |---|---|---|---|
51
- | `isOpen` | `boolean` | `undefined` | Управляемое состояние открытия тултипа |
34
+ | `isOpen` | `boolean` | — | Управляемое состояние открытия тултипа |
52
35
  | `toggle` | `(open: boolean) => void` | — | Callback при открытии/закрытии |
53
36
  | `onShow` | `(node: HTMLDivElement) => void` | — | Callback при появлении тултипа в DOM |
54
37
  | `preferPlace` | `ETooltipPreferPlace` | — | Предпочтительное расположение: `ABOVE`, `BELOW`, `LEFT`, `RIGHT` |
@@ -61,46 +44,11 @@ src/components/HelpBox/
61
44
  | `className` | `string` | — | CSS-класс, пробрасывается на кнопку-триггер |
62
45
  | `...rest` | `React.HTMLAttributes<HTMLButtonElement>` | — | Все стандартные атрибуты `<button>`, включая `aria-label`, пробрасываются на кнопку-триггер |
63
46
 
64
- ### Controlled / Uncontrolled
47
+ ### Ограничения использования
65
48
 
66
- - **Uncontrolled** (по умолчанию): `isOpen` не передан — компонент сам управляет `openState`.
67
- - **Controlled**: передай `isOpen` + `toggle` — компонент не меняет внутреннее состояние.
68
-
69
- ---
70
-
71
- ## Ключевые особенности реализации
72
-
73
- ### Композиция внутренних компонентов
74
-
75
- HelpBox — обёртка над несколькими внутренними компонентами:
76
- - `ButtonIcon` (shape=CIRCLE) — кнопка-триггер с иконкой `QuestioncircleFilledSrvIcon16`
77
- - `Tooltip` (toggleType="hover", role="dialog") — всплывающая подсказка
78
- - `FocusTrap` (только desktop, через `MobileView`) — ловушка фокуса при открытом тултипе
79
- - `TooltipMobileHeader` — заголовок мобильной версии (рендерится только при наличии `mobileHeaderContent`)
80
-
81
- ### FocusTrap
82
-
83
- Ловушка фокуса активируется только на desktop (через `MobileView` fallback). При открытии:
84
- - `initialFocus` — элемент Tooltip (по ID)
85
- - `clickOutsideDeactivates: true` — клик за пределами закрывает
86
- - `preventScroll: true`
87
-
88
- Потребитель может расширить настройки через `focusTrapProps.focusTrapOptions`.
89
-
90
- ### Ref forwarding
91
-
92
- `forwardRef` пробрасывает ref на внутренний `ButtonIcon` (кнопку-триггер). Внутренний `buttonRef` используется для позиционирования Tooltip через `targetRef`.
93
-
94
- ---
95
-
96
- ## Accessibility
97
-
98
- - Кнопка-триггер — нативный `<button>` через `ButtonIcon`, shape `CIRCLE`.
99
- - **`aria-label` триггера** — не захардкожен. Потребитель **обязан** передать `aria-label` через `...rest` (например, `aria-label="Подсказка"`). Библиотека мультиязычная, текст не хардкодится.
100
- - **`aria-label` кнопки закрытия** — передаётся через `tooltipXButtonProps={{ "aria-label": "Закрыть" }}`. Потребитель **обязан** указать значение на своём языке.
101
- - Tooltip открывается с `role="dialog"`, `tabIndex={-1}`.
102
- - FocusTrap удерживает фокус внутри открытого тултипа на desktop.
103
- - `tooltipAriaAttributes` позволяет добавить aria-атрибуты к контейнеру Tooltip.
49
+ - **Controlled / Uncontrolled**: если `isOpen` не передан — компонент сам управляет `openState`. При передаче `isOpen` обязательно передавать `toggle`, иначе компонент не сможет переключать состояние.
50
+ - `forwardRef` пробрасывает `ref` на внутренний `ButtonIcon` (кнопку-триггер). Внутренний `buttonRef` используется для позиционирования Tooltip через `targetRef`.
51
+ - HelpBox — обёртка над несколькими внутренними компонентами: `ButtonIcon` (`shape=CIRCLE`), `Tooltip` (`toggleType="hover"`, `role="dialog"`), `FocusTrap` (только desktop) и опциональный `TooltipMobileHeader` (рендерится только при наличии `mobileHeaderContent`).
104
52
 
105
53
  ---
106
54
 
@@ -120,30 +68,41 @@ HelpBox — обёртка над несколькими внутренними
120
68
 
121
69
  ---
122
70
 
71
+ ## Accessibility
72
+
73
+ - Кнопка-триггер — нативный `<button>` через `ButtonIcon`, `shape=CIRCLE`.
74
+ - **`aria-label` триггера** — не захардкожен. Потребитель **обязан** передать `aria-label` через `...rest` (например, `aria-label="Подсказка"`). Библиотека мультиязычная, текст не хардкодится.
75
+ - **`aria-label` кнопки закрытия** — передаётся через `tooltipXButtonProps={{ "aria-label": "Закрыть" }}`. Потребитель **обязан** указать значение на своём языке.
76
+ - Tooltip открывается с `role="dialog"`, `tabIndex={-1}`.
77
+ - FocusTrap удерживает фокус внутри открытого тултипа на desktop. При активации: `initialFocus` — элемент Tooltip (по ID), `clickOutsideDeactivates: true` — клик за пределами закрывает, `preventScroll: true`. Потребитель может расширить настройки через `focusTrapProps.focusTrapOptions`.
78
+ - `tooltipAriaAttributes` позволяет добавить aria-атрибуты к контейнеру Tooltip.
79
+
80
+ ---
81
+
123
82
  ## Связанные компоненты
124
83
 
125
- - `Tooltip` (`src/components/Tooltip/`) — всплывающая подсказка, основной визуальный элемент
126
- - `ButtonIcon` (`src/components/Button/ButtonIcon.tsx`) — кнопка-триггер
127
- - `MobileView` (`src/components/MobileView/`) — переключение desktop/mobile поведения
128
- - `FocusTrap` (npm: `focus-trap-react`) — ловушка фокуса для desktop
84
+ - `Tooltip` (`src/components/Tooltip/`) — всплывающая подсказка, основной визуальный элемент.
85
+ - `ButtonIcon` (`src/components/Button/ButtonIcon.tsx`) — кнопка-триггер.
86
+ - `MobileView` (`src/components/MobileView/`) — переключение desktop/mobile поведения.
87
+ - `FocusTrap` (npm: `focus-trap-react`) — ловушка фокуса для desktop.
129
88
 
130
89
  ---
131
90
 
132
91
  ## Stories
133
92
 
134
- `stories/HelpBox/HelpBox.stories.tsx`
93
+ Основные истории: `stories/HelpBox/HelpBox.stories.tsx`
135
94
  Файлы примеров: `stories/HelpBox/examples/`
136
95
 
137
96
  | Story | Example file | Что демонстрирует |
138
97
  |---|---|---|
139
- | `Playground` | — | Интерактивный контроль всех props (inline в `*.stories.tsx`) |
140
- | `Default` | `DefaultExample.tsx` | Минимальное использование |
141
- | `Sizes` | `SizesExample.tsx` | Размеры тултипа SM / LG |
142
- | `Placement` | `PlacementExample.tsx` | Расположение: above, below, left, right |
143
- | `WithMobileHeader` | `WithMobileHeaderExample.tsx` | Мобильный заголовок |
144
- | `Controlled` | `ControlledExample.tsx` | Управляемое состояние (isOpen + toggle) |
145
- | `ChangeIconProps` | `ChangeIconPropsExample.tsx` | Кастомизация иконки через iconProps |
146
- | `VisualTests` | — | Скриншот-тест с открытым тултипом (inline в `*.stories.tsx`) |
98
+ | `Playground` | — | Интерактивный контроль всех props |
99
+ | `Default` | `Default.tsx` | Минимальное использование |
100
+ | `Sizes` | `Sizes.tsx` | Размеры тултипа `SM` / `LG` |
101
+ | `Placement` | `Placement.tsx` | Расположение: above, below, left, right |
102
+ | `WithMobileHeader` | `WithMobileHeader.tsx` | Мобильный заголовок |
103
+ | `Controlled` | `Controlled.tsx` | Управляемое состояние (`isOpen` + `toggle`) |
104
+ | `ChangeIconProps` | `ChangeIconProps.tsx` | Кастомизация иконки через `iconProps` |
105
+ | `VisualTests` | — | Скриншот-тест с открытым тултипом |
147
106
 
148
107
  ---
149
108
 
@@ -152,6 +111,8 @@ HelpBox — обёртка над несколькими внутренними
152
111
  | Дата | Изменение |
153
112
  |---|---|
154
113
  | 2026-04-08 | Создан документ. Добавлен `forwardRef`. |
114
+ | 2026-04-27 | Приведён в соответствие с `docs/ai/template-ai.md`: убраны секции «Файловая структура» и «Ключевые особенности реализации», их содержимое перенесено в `Ограничения использования` и `Accessibility`, переставлены секции, добавлена колонка `Example file`. |
115
+ | 2026-07-08 | Актуализирована колонка `Example file`: имена файлов примеров приведены к фактическим (без постфикса `Example`). |
155
116
 
156
117
  ---
157
118
 
@@ -159,13 +120,13 @@ HelpBox — обёртка над несколькими внутренними
159
120
 
160
121
  ### Default
161
122
 
162
- `stories/HelpBox/examples/DefaultExample.tsx`
123
+ `stories/HelpBox/examples/Default.tsx`
163
124
 
164
125
  ```tsx
165
126
  import React from "react";
166
127
  import { HelpBox, ETooltipSize } from "@sberbusiness/triplex-next";
167
128
 
168
- export const DefaultExample = () => (
129
+ export const Default = () => (
169
130
  <div style={{ padding: 50 }}>
170
131
  <HelpBox tooltipSize={ETooltipSize.SM} aria-label="Подсказка" tooltipXButtonProps={{ "aria-label": "Закрыть" }}>
171
132
  Подсказка по элементу интерфейса
@@ -176,13 +137,13 @@ export const DefaultExample = () => (
176
137
 
177
138
  ### Sizes
178
139
 
179
- `stories/HelpBox/examples/SizesExample.tsx`
140
+ `stories/HelpBox/examples/Sizes.tsx`
180
141
 
181
142
  ```tsx
182
143
  import React from "react";
183
144
  import { HelpBox, ETooltipSize, ETooltipPreferPlace } from "@sberbusiness/triplex-next";
184
145
 
185
- export const SizesExample = () => (
146
+ export const Sizes = () => (
186
147
  <div style={{ padding: 50, display: "flex", gap: 100 }}>
187
148
  <div>
188
149
  <div style={{ marginBottom: "8px", fontSize: "16px", fontWeight: "700" }}>SM</div>
@@ -212,13 +173,13 @@ export const SizesExample = () => (
212
173
 
213
174
  ### Placement
214
175
 
215
- `stories/HelpBox/examples/PlacementExample.tsx`
176
+ `stories/HelpBox/examples/Placement.tsx`
216
177
 
217
178
  ```tsx
218
179
  import React from "react";
219
180
  import { HelpBox, ETooltipSize, ETooltipPreferPlace } from "@sberbusiness/triplex-next";
220
181
 
221
- export const PlacementExample = () => (
182
+ export const Placement = () => (
222
183
  <div style={{ padding: 50, display: "grid", gridTemplateColumns: "repeat(2, minmax(120px, 1fr))", gap: 32 }}>
223
184
  <div style={{ display: "flex", alignItems: "center", gap: 12 }}>
224
185
  <span style={{ width: 150 }}>above</span>
@@ -270,13 +231,13 @@ export const PlacementExample = () => (
270
231
 
271
232
  ### WithMobileHeader
272
233
 
273
- `stories/HelpBox/examples/WithMobileHeaderExample.tsx`
234
+ `stories/HelpBox/examples/WithMobileHeader.tsx`
274
235
 
275
236
  ```tsx
276
237
  import React from "react";
277
238
  import { HelpBox, ETooltipSize } from "@sberbusiness/triplex-next";
278
239
 
279
- export const WithMobileHeaderExample = () => (
240
+ export const WithMobileHeader = () => (
280
241
  <div style={{ padding: 50 }}>
281
242
  <HelpBox
282
243
  tooltipSize={ETooltipSize.SM}
@@ -292,13 +253,13 @@ export const WithMobileHeaderExample = () => (
292
253
 
293
254
  ### Controlled
294
255
 
295
- `stories/HelpBox/examples/ControlledExample.tsx`
256
+ `stories/HelpBox/examples/Controlled.tsx`
296
257
 
297
258
  ```tsx
298
259
  import React, { useState } from "react";
299
260
  import { HelpBox, ETooltipSize, ETooltipPreferPlace } from "@sberbusiness/triplex-next";
300
261
 
301
- export const ControlledExample = () => {
262
+ export const Controlled = () => {
302
263
  const [open, setOpen] = useState(false);
303
264
 
304
265
  const handleToggle = (nextOpen: boolean) => setOpen(nextOpen);
@@ -330,13 +291,13 @@ export const ControlledExample = () => {
330
291
 
331
292
  ### ChangeIconProps
332
293
 
333
- `stories/HelpBox/examples/ChangeIconPropsExample.tsx`
294
+ `stories/HelpBox/examples/ChangeIconProps.tsx`
334
295
 
335
296
  ```tsx
336
297
  import React from "react";
337
298
  import { HelpBox, ETooltipSize } from "@sberbusiness/triplex-next";
338
299
 
339
- export const ChangeIconPropsExample = () => (
300
+ export const ChangeIconProps = () => (
340
301
  <div style={{ padding: 50 }}>
341
302
  <HelpBox
342
303
  tooltipSize={ETooltipSize.SM}