@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.
- package/README.md +10 -0
- package/bundle/components/BodyPage.md +186 -0
- package/bundle/components/Button.md +90 -85
- package/bundle/components/ButtonDropdown.md +28 -70
- package/bundle/components/ButtonIcon.md +35 -48
- package/bundle/components/Checkbox.md +43 -122
- package/bundle/components/CheckboxXGroup.md +109 -46
- package/bundle/components/CheckboxYGroup.md +77 -49
- package/bundle/components/CollapsibleTree.md +581 -0
- package/bundle/components/CollapsibleTreeExtended.md +418 -0
- package/bundle/components/EmptyView.md +14 -15
- package/bundle/components/FooterPage.md +203 -0
- package/bundle/components/Gap.md +115 -57
- package/bundle/components/HeaderPage.md +226 -0
- package/bundle/components/HelpBox.md +45 -84
- package/bundle/components/ImageGallery.md +423 -0
- package/bundle/components/ImageGalleryExtended.md +606 -0
- package/bundle/components/List.md +194 -186
- package/bundle/components/ListItem.md +251 -0
- package/bundle/components/ListItemControlsButton.md +103 -0
- package/bundle/components/ListItemControlsButtonDropdown.md +107 -0
- package/bundle/components/ListItemSelectable.md +99 -0
- package/bundle/components/ListItemTable.md +390 -0
- package/bundle/components/ListMaster.md +877 -156
- package/bundle/components/ListMasterFooter.md +80 -0
- package/bundle/components/ListMasterHeader.md +86 -0
- package/bundle/components/ListSortable.md +153 -0
- package/bundle/components/ListSortableItem.md +175 -0
- package/bundle/components/ModalWindow.md +427 -237
- package/bundle/components/MonthYearField.md +145 -109
- package/bundle/components/Notification.md +625 -155
- package/bundle/components/Overlay.md +271 -170
- package/bundle/components/Page.md +283 -186
- package/bundle/components/Pagination.md +206 -229
- package/bundle/guides/codestyle.md +38 -11
- package/bundle/guides/commits.md +1 -2
- package/bundle/guides/context.md +34 -30
- package/bundle/guides/stories.md +110 -40
- package/bundle/guides/template.md +3 -7
- package/bundle/guides/tests.md +6 -2
- package/bundle/manifest.json +194 -24
- package/bundle/release-notes/1.26.0.mdx +33 -2
- package/bundle/release-notes/1.27.0.mdx +43 -0
- package/bundle/release-notes/1.28.0.mdx +25 -0
- package/bundle/release-notes/1.29.0.mdx +47 -0
- package/bundle/release-notes/1.30.0.mdx +56 -0
- package/bundle/release-notes/1.31.0.mdx +52 -0
- package/bundle/release-notes/1.32.0.mdx +35 -0
- package/bundle/release-notes/1.33.0.mdx +61 -0
- package/bundle/release-notes/1.34.0.mdx +35 -0
- package/bundle/release-notes/1.35.0.mdx +21 -0
- package/bundle/release-notes/1.35.1.mdx +11 -0
- package/bundle/release-notes/1.36.0.mdx +21 -0
- package/bundle/release-notes/1.37.0.mdx +30 -0
- 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
|
-
Иконка
|
|
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` |
|
|
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
|
-
###
|
|
47
|
+
### Ограничения использования
|
|
65
48
|
|
|
66
|
-
- **Uncontrolled
|
|
67
|
-
-
|
|
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
|
|
140
|
-
| `Default` | `
|
|
141
|
-
| `Sizes` | `
|
|
142
|
-
| `Placement` | `
|
|
143
|
-
| `WithMobileHeader` | `
|
|
144
|
-
| `Controlled` | `
|
|
145
|
-
| `ChangeIconProps` | `
|
|
146
|
-
| `VisualTests` | — | Скриншот-тест с открытым тултипом
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
300
|
+
export const ChangeIconProps = () => (
|
|
340
301
|
<div style={{ padding: 50 }}>
|
|
341
302
|
<HelpBox
|
|
342
303
|
tooltipSize={ETooltipSize.SM}
|