@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.
- package/bundle/components/Amount.md +2 -1
- package/bundle/components/Badge.md +2 -1
- package/bundle/components/BodyPage.md +2 -1
- package/bundle/components/Button.md +5 -1
- package/bundle/components/ButtonDropdownExtended.md +3 -1
- package/bundle/components/ButtonIcon.md +3 -1
- package/bundle/components/Calendar.md +3 -1
- package/bundle/components/CardAction.md +1 -0
- package/bundle/components/CheckboxXGroup.md +2 -1
- package/bundle/components/Chip.md +2 -1
- package/bundle/components/ChipMonthYearPicker.md +2 -1
- package/bundle/components/ChipMultiselect.md +4 -1
- package/bundle/components/ChipOptions.md +2 -1
- package/bundle/components/ChipSort.md +4 -1
- package/bundle/components/CollapsibleTree.md +2 -1
- package/bundle/components/ComposedKeyDownListener.md +4 -3
- package/bundle/components/DateField.md +7 -1
- package/bundle/components/Divider.md +85 -138
- package/bundle/components/DocumentNumberEdit.md +173 -214
- package/bundle/components/Dropdown.md +11 -1
- package/bundle/components/Ellipsis.md +131 -147
- package/bundle/components/FooterPage.md +3 -1
- package/bundle/components/FormField.md +2 -1
- package/bundle/components/Gap.md +1 -1
- package/bundle/components/Header.md +1 -0
- package/bundle/components/HeaderPage.md +3 -1
- package/bundle/components/HelpBox.md +2 -1
- package/bundle/components/IconWrapper.md +10 -6
- package/bundle/components/ImageGallery.md +2 -1
- package/bundle/components/ImageGalleryExtended.md +2 -1
- package/bundle/components/IslandAccordion.md +6 -1
- package/bundle/components/KeyDownListener.md +3 -2
- package/bundle/components/LightBox.md +7 -1
- package/bundle/components/List.md +2 -1
- package/bundle/components/ListActionItem.md +2 -1
- package/bundle/components/ListItem.md +3 -1
- package/bundle/components/ListItemControlsButton.md +2 -1
- package/bundle/components/ListItemSelectable.md +2 -1
- package/bundle/components/ListMasterFooter.md +2 -1
- package/bundle/components/ListMasterHeader.md +2 -1
- package/bundle/components/ListSortable.md +2 -1
- package/bundle/components/ListSortableItem.md +2 -1
- package/bundle/components/ListTableItem.md +4 -1
- package/bundle/components/LoaderMiddle.md +5 -1
- package/bundle/components/LoaderScreen.md +7 -1
- package/bundle/components/LoaderSmall.md +10 -4
- package/bundle/components/MaskedField.md +3 -1
- package/bundle/components/MediaWidth.md +2 -1
- package/bundle/components/MobileView.md +2 -1
- package/bundle/components/ModalWindow.md +4 -1
- package/bundle/components/MonthYearField.md +4 -1
- package/bundle/components/Notification.md +1 -0
- package/bundle/components/Overlay.md +7 -2
- package/bundle/components/Pagination.md +1 -7
- package/bundle/components/Radio.md +238 -115
- package/bundle/components/RadioXGroup.md +259 -0
- package/bundle/components/RadioYGroup.md +266 -0
- package/bundle/components/SegmentedControl.md +505 -158
- package/bundle/components/SelectExtendedField.md +2 -1
- package/bundle/components/SelectField.md +4 -1
- package/bundle/components/Skeleton.md +140 -69
- package/bundle/components/Spoiler.md +245 -63
- package/bundle/components/Step.md +257 -68
- package/bundle/components/SuggestField.md +30 -18
- package/bundle/components/Tabs.md +2 -1
- package/bundle/components/TabsLine.md +2 -1
- package/bundle/components/TextField.md +8 -4
- package/bundle/components/TextareaField.md +2 -1
- package/bundle/components/ThemeProvider.md +2 -1
- package/bundle/components/Tooltip.md +6 -3
- package/bundle/guides/context.md +4 -1
- package/bundle/manifest.json +32 -10
- package/bundle/release-notes/1.49.0.mdx +78 -0
- package/bundle/release-notes/1.50.0.mdx +35 -0
- package/bundle/release-notes/1.51.0.mdx +7 -0
- package/bundle/tokens.json +161 -11
- package/package.json +1 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
component: Divider
|
|
3
3
|
category: Layout
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
tokens: [Divider_Background]
|
|
4
|
+
related: []
|
|
5
|
+
tokens:
|
|
6
|
+
- Divider.Background
|
|
8
7
|
stories: stories/Divider/Divider.stories.tsx
|
|
9
8
|
version: "1.0"
|
|
10
9
|
---
|
|
@@ -13,179 +12,91 @@ version: "1.0"
|
|
|
13
12
|
|
|
14
13
|
## Назначение
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
фоном (`--triplex-next-Divider-Background`) и опциональными top/bottom
|
|
18
|
-
отступами из фиксированной шкалы 4/8/12/16/20/24/28/32 px.
|
|
15
|
+
Визуальный разделитель контента: горизонтальная линия толщиной 1px на всю ширину родителя. Рендерит `<hr>` с собственным цветом из дизайн-токена и опциональными вертикальными отступами из шкалы дизайн-системы.
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
формы и т. п.
|
|
17
|
+
Используй когда: нужно отделить друг от друга смысловые блоки контента видимой линией — пункты списка, секции формы, строки в футере таблицы.
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Файловая структура
|
|
30
|
-
|
|
31
|
-
```text
|
|
32
|
-
src/components/Divider/
|
|
33
|
-
├── Divider.tsx # FC, НЕ forwardRef
|
|
34
|
-
├── index.ts # Barrel
|
|
35
|
-
├── styles/Divider.module.less # background + each-loop для margin-top/bottom
|
|
36
|
-
└── __tests__/Divider.test.tsx
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Особенности:
|
|
40
|
-
- **НЕ `forwardRef`** — FC без ref-форвардинга. Известный debt. Не
|
|
41
|
-
добавлять точечно.
|
|
42
|
-
- **Рендерит семантичный `<hr>`** (не `<div>`). Это важно для a11y —
|
|
43
|
-
screen reader'ы объявят как разделитель.
|
|
44
|
-
- **Нет `data-tx`** — не ставит атрибут версии.
|
|
45
|
-
- **Тесты есть** — `Divider.test.tsx` проверяет классы по размерам.
|
|
19
|
+
Не используй когда:
|
|
20
|
+
- Нужен только отступ без линии — используй `Gap`.
|
|
21
|
+
- Нужна вертикальная линия-разделитель: компонент рендерит только горизонтальную линию, вертикальной темы у него нет.
|
|
22
|
+
- Нужна линия как часть границы блока — задай `border` у самого блока, не вставляй `Divider` рядом.
|
|
46
23
|
|
|
47
24
|
---
|
|
48
25
|
|
|
49
26
|
## Варианты и props
|
|
50
27
|
|
|
51
|
-
###
|
|
52
|
-
|
|
53
|
-
| Prop | Тип | Default | Описание |
|
|
54
|
-
|---|---|---|---|
|
|
55
|
-
| `marginTopSize` | `TDividerMarginSize` (4 \| 8 \| 12 \| 16 \| 20 \| 24 \| 28 \| 32) | — | Отступ сверху в px. Если не задан — 0. |
|
|
56
|
-
| `marginBottomSize` | `TDividerMarginSize` | — | Отступ снизу в px. Если не задан — 0. |
|
|
57
|
-
| `className` | `string` | — | Через `clsx`. |
|
|
58
|
-
| `...HTMLHRAttributes` | — | — | Стандартные атрибуты `<hr>`. |
|
|
28
|
+
### Обязательные props
|
|
59
29
|
|
|
60
|
-
|
|
30
|
+
Обязательных props нет — `<Divider />` без props рендерит линию без отступов.
|
|
61
31
|
|
|
62
|
-
|
|
63
|
-
кастомные значения. Если нужно 0 — не передавать пропс. Если нужно 40 —
|
|
64
|
-
не поддерживается, разделитель не ставится туда, где нужен нестандартный
|
|
65
|
-
gap.
|
|
32
|
+
### Опциональные props
|
|
66
33
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
34
|
+
| Prop | Тип | По умолчанию | Описание |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| `marginTopSize` | `TDividerMarginSize` | — | Отступ сверху в пикселях. Без prop'а `margin-top` остаётся `0`. |
|
|
37
|
+
| `marginBottomSize` | `TDividerMarginSize` | — | Отступ снизу в пикселях. Без prop'а `margin-bottom` остаётся `0`. |
|
|
70
38
|
|
|
71
|
-
|
|
39
|
+
Компонент расширяет `Omit<React.HTMLAttributes<HTMLHRElement>, "children">`, поэтому принимает все стандартные атрибуты `<hr>` (`className`, `style`, `aria-*`, `data-*`), кроме `children`; `...rest` и `ref` уходят на корневой `<hr>`.
|
|
72
40
|
|
|
73
|
-
|
|
74
|
-
@size: 4, 8, 12, 16, 20, 24, 28, 32;
|
|
75
|
-
each(@size, {
|
|
76
|
-
.marginTopSize-@{value} { margin-top: ~'@{value}px'; }
|
|
77
|
-
.marginBottomSize-@{value} { margin-bottom: ~'@{value}px'; }
|
|
78
|
-
});
|
|
79
|
-
```
|
|
41
|
+
### Ограничения
|
|
80
42
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
что пропс в списке, LESS обеспечивает наличие класса. Если
|
|
86
|
-
рассинхронизировать — получишь `styles[undefined]`.
|
|
87
|
-
|
|
88
|
-
### Сборка `className` через `clsx`
|
|
89
|
-
|
|
90
|
-
```ts
|
|
91
|
-
const classNames = clsx(
|
|
92
|
-
styles.divider,
|
|
93
|
-
marginTopSize && styles[`marginTopSize-${marginTopSize}`],
|
|
94
|
-
marginBottomSize && styles[`marginBottomSize-${marginBottomSize}`],
|
|
95
|
-
className,
|
|
96
|
-
);
|
|
97
|
-
```
|
|
43
|
+
- `TDividerMarginSize` — дискретная шкала `4 | 8 | 12 | 16 | 20 | 24 | 28 | 32`. Произвольное число тип не пропустит: если дизайн требует другой отступ, задай его у родительского блока, а не расширяй шкалу.
|
|
44
|
+
- Отступы задаются только по вертикали. Горизонтальные отступы и ширину линии определяет родитель.
|
|
45
|
+
- Базовый класс сбрасывает браузерный `margin` у `<hr>` в `0`, поэтому вертикальный отступ появляется **только** через `marginTopSize` / `marginBottomSize` (или через собственный `className` потребителя).
|
|
46
|
+
- `<hr>` — void-элемент, поэтому `children` исключён из `IDividerProps` на уровне типа (как у `Gap`): `<Divider>…</Divider>` не соберётся. Оборачивать контент в `Divider` нельзя.
|
|
98
47
|
|
|
99
|
-
|
|
100
|
-
`border: none`. Без `border: none` браузерный `<hr>` имеет свою
|
|
101
|
-
border/margin.
|
|
48
|
+
---
|
|
102
49
|
|
|
103
|
-
|
|
104
|
-
замыкание `&&`). 0 не поддерживается, но undefined — да.
|
|
50
|
+
## Дизайн-токены
|
|
105
51
|
|
|
106
|
-
|
|
52
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
53
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Divider.ts`.
|
|
107
54
|
|
|
108
|
-
```
|
|
109
|
-
.
|
|
110
|
-
height: 1px;
|
|
111
|
-
margin: 0;
|
|
112
|
-
background: var(--triplex-next-Divider-Background);
|
|
113
|
-
border: none;
|
|
114
|
-
}
|
|
55
|
+
```text
|
|
56
|
+
Divider.Background
|
|
115
57
|
```
|
|
116
58
|
|
|
117
|
-
|
|
118
|
-
`DesignTokens/components/Divider.ts`). В тёмной теме меняется
|
|
119
|
-
автоматически через ThemeProvider.
|
|
120
|
-
|
|
121
|
-
### Override через `style` / `className`
|
|
122
|
-
|
|
123
|
-
Потребитель может:
|
|
124
|
-
1. Передать `className` — мержится через clsx.
|
|
125
|
-
2. Передать `style={{margin: ...}}` — перебьёт встроенные margin-классы.
|
|
126
|
-
3. Переопределить `--triplex-next-Divider-Background` в scope.
|
|
127
|
-
|
|
128
|
-
### `hr` — не `div`
|
|
129
|
-
|
|
130
|
-
Семантичность: screen reader'ы читают `<hr>` как разделитель
|
|
131
|
-
(`role="separator"` по умолчанию).
|
|
59
|
+
Токен задаёт цвет линии (`background` у элемента высотой 1px, `border` снят). Значения по умолчанию: `ColorNeutral.20` в светлой теме, `ColorDarkNeutral.80` в тёмной.
|
|
132
60
|
|
|
133
61
|
---
|
|
134
62
|
|
|
135
63
|
## Инварианты
|
|
136
64
|
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
-
|
|
141
|
-
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
- **`--triplex-next-Divider-Background` токен** — единственный способ
|
|
145
|
-
поменять цвет. Не хардкодить hex.
|
|
146
|
-
- **НЕТ forwardRef** — известный debt.
|
|
147
|
-
- **НЕТ `data-tx`** — наследованный пропуск.
|
|
65
|
+
- **`forwardRef`** — обязателен, не убирать. `ref` пробрасывается на корневой `<hr>`.
|
|
66
|
+
- **Корневой элемент — `<hr>`.** Замена на `<div>` сломала бы неявную роль `separator` и запросы `getByRole("separator")` в тестах потребителей.
|
|
67
|
+
- **`TDividerMarginSize`** — публичный union type, экспортируется из barrel. Изменение перечня значений — breaking change.
|
|
68
|
+
- **Имена `Divider`, `IDividerProps`, `TDividerMarginSize`** и экспорт из `src/components/Divider/index.ts` — часть публичного API.
|
|
69
|
+
- **`displayName = "Divider"`** — виден в React DevTools и snapshot-тестах.
|
|
70
|
+
- **Токен `Divider.Background`** — единственный цвет компонента; переименование ломает темизацию у потребителей.
|
|
71
|
+
- **CSS-классы `divider`, `marginTopSize-{N}`, `marginBottomSize-{N}`** в `styles/Divider.module.less`: базовый класс `divider` объявлен обычным правилом, а `marginTopSize-{N}` / `marginBottomSize-{N}` генерируются LESS-циклом `each` по списку `@size`. Все они проверяются в unit-тестах — переименование требует синхронного обновления тестов.
|
|
148
72
|
|
|
149
73
|
---
|
|
150
74
|
|
|
151
75
|
## Accessibility
|
|
152
76
|
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
|
|
157
|
-
- **Если нужен "assistive"-разделитель внутри списка** — оборачивать
|
|
158
|
-
в `<li role="separator">`. Divider сам этого не делает.
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Дизайн-токены
|
|
163
|
-
|
|
164
|
-
- `--triplex-next-Divider-Background` — цвет линии.
|
|
165
|
-
|
|
166
|
-
Определение в `src/components/DesignTokens/components/Divider.ts`.
|
|
77
|
+
- `<hr>` имеет неявную роль `separator` с `aria-orientation="horizontal"` — screen reader объявляет разделитель секций. Дополнительных ARIA-атрибутов компонент не выставляет.
|
|
78
|
+
- Компонент не интерактивный и не попадает в таб-порядок: focus management и keyboard navigation не применимы.
|
|
79
|
+
- Если линия чисто декоративная и дублирует уже озвученную структуру, потребитель может передать `aria-hidden="true"` через spread.
|
|
80
|
+
- Библиотека мультиязычная, поэтому текстовых подписей (`aria-label`) компонент не хардкодит — при необходимости их передаёт потребитель.
|
|
167
81
|
|
|
168
82
|
---
|
|
169
83
|
|
|
170
84
|
## Связанные компоненты
|
|
171
85
|
|
|
172
|
-
- `Gap` (`src/components/Gap
|
|
173
|
-
- `Row`/`Col` — grid-система (Divider часто между Row'ами).
|
|
174
|
-
- `Card`, `Island`, `Page` — типичные контейнеры с разделителями
|
|
175
|
-
внутри.
|
|
86
|
+
- `Gap` (`src/components/Gap/`) — вертикальный отступ без видимой линии, та же идея дискретной шкалы размеров. Частая путаница: нужен пробел — `Gap`, нужна линия — `Divider`.
|
|
176
87
|
|
|
177
88
|
---
|
|
178
89
|
|
|
179
90
|
## Stories
|
|
180
91
|
|
|
181
|
-
`stories/Divider/Divider.stories.tsx`
|
|
182
|
-
|
|
92
|
+
Основные истории: `stories/Divider/Divider.stories.tsx`
|
|
93
|
+
Файлы примеров: `stories/Divider/examples/`
|
|
183
94
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
95
|
+
| Story | Example file | Что демонстрирует |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| `Playground` | `PlaygroundExample.tsx` | Интерактивный контроль `marginTopSize` и `marginBottomSize` через select |
|
|
98
|
+
| `Default` | `DefaultExample.tsx` | Разделение абзацев текста линией с отступами 24/16 |
|
|
99
|
+
| `VisualTests` | `VisualTestsExample.tsx` | Все 8 значений шкалы отступов для скриншот-регрессии |
|
|
189
100
|
|
|
190
101
|
---
|
|
191
102
|
|
|
@@ -193,4 +104,40 @@ border/margin.
|
|
|
193
104
|
|
|
194
105
|
| Дата | Изменение |
|
|
195
106
|
|---|---|
|
|
196
|
-
| 2026-
|
|
107
|
+
| 2026-09-28 | Создан документ. AI-рефакторинг: компонент переведён с `React.FC` на `React.forwardRef` (`ref` идёт на `<hr>`), уточнены JSDoc на `Divider`, `IDividerProps` и `TDividerMarginSize`, unit-тесты расширены на все значения шкалы отступов и проброс `ref`. |
|
|
108
|
+
| 2026-09-29 | Breaking: `children` исключён из `IDividerProps` (`Omit<React.HTMLAttributes<HTMLHRElement>, "children">`), передача потомков в `<hr>` теперь ловится компилятором. |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Примеры использования
|
|
113
|
+
|
|
114
|
+
### Default
|
|
115
|
+
|
|
116
|
+
`stories/Divider/examples/DefaultExample.tsx`
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
import React from "react";
|
|
120
|
+
import { Divider, EFontType, ETextSize, Text } from "@sberbusiness/triplex-next";
|
|
121
|
+
|
|
122
|
+
export const DefaultExample = () => (
|
|
123
|
+
<div style={{ maxWidth: 600 }}>
|
|
124
|
+
<Text size={ETextSize.B3} type={EFontType.PRIMARY}>
|
|
125
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
|
|
126
|
+
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex
|
|
127
|
+
ea commodo consequat.
|
|
128
|
+
</Text>
|
|
129
|
+
<Divider marginTopSize={24} marginBottomSize={16} />
|
|
130
|
+
<Text size={ETextSize.B3} type={EFontType.PRIMARY}>
|
|
131
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
|
132
|
+
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
|
|
133
|
+
laborum.
|
|
134
|
+
</Text>
|
|
135
|
+
<Divider marginTopSize={24} marginBottomSize={16} />
|
|
136
|
+
<Text size={ETextSize.B3} type={EFontType.PRIMARY}>
|
|
137
|
+
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem
|
|
138
|
+
aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
|
|
139
|
+
</Text>
|
|
140
|
+
</div>
|
|
141
|
+
);
|
|
142
|
+
```
|
|
143
|
+
|