@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.
Files changed (77) hide show
  1. package/bundle/components/Amount.md +2 -1
  2. package/bundle/components/Badge.md +2 -1
  3. package/bundle/components/BodyPage.md +2 -1
  4. package/bundle/components/Button.md +5 -1
  5. package/bundle/components/ButtonDropdownExtended.md +3 -1
  6. package/bundle/components/ButtonIcon.md +3 -1
  7. package/bundle/components/Calendar.md +3 -1
  8. package/bundle/components/CardAction.md +1 -0
  9. package/bundle/components/CheckboxXGroup.md +2 -1
  10. package/bundle/components/Chip.md +2 -1
  11. package/bundle/components/ChipMonthYearPicker.md +2 -1
  12. package/bundle/components/ChipMultiselect.md +4 -1
  13. package/bundle/components/ChipOptions.md +2 -1
  14. package/bundle/components/ChipSort.md +4 -1
  15. package/bundle/components/CollapsibleTree.md +2 -1
  16. package/bundle/components/ComposedKeyDownListener.md +4 -3
  17. package/bundle/components/DateField.md +7 -1
  18. package/bundle/components/Divider.md +85 -138
  19. package/bundle/components/DocumentNumberEdit.md +173 -214
  20. package/bundle/components/Dropdown.md +11 -1
  21. package/bundle/components/Ellipsis.md +131 -147
  22. package/bundle/components/FooterPage.md +3 -1
  23. package/bundle/components/FormField.md +2 -1
  24. package/bundle/components/Gap.md +1 -1
  25. package/bundle/components/Header.md +1 -0
  26. package/bundle/components/HeaderPage.md +3 -1
  27. package/bundle/components/HelpBox.md +2 -1
  28. package/bundle/components/IconWrapper.md +10 -6
  29. package/bundle/components/ImageGallery.md +2 -1
  30. package/bundle/components/ImageGalleryExtended.md +2 -1
  31. package/bundle/components/IslandAccordion.md +6 -1
  32. package/bundle/components/KeyDownListener.md +3 -2
  33. package/bundle/components/LightBox.md +7 -1
  34. package/bundle/components/List.md +2 -1
  35. package/bundle/components/ListActionItem.md +2 -1
  36. package/bundle/components/ListItem.md +3 -1
  37. package/bundle/components/ListItemControlsButton.md +2 -1
  38. package/bundle/components/ListItemSelectable.md +2 -1
  39. package/bundle/components/ListMasterFooter.md +2 -1
  40. package/bundle/components/ListMasterHeader.md +2 -1
  41. package/bundle/components/ListSortable.md +2 -1
  42. package/bundle/components/ListSortableItem.md +2 -1
  43. package/bundle/components/ListTableItem.md +4 -1
  44. package/bundle/components/LoaderMiddle.md +5 -1
  45. package/bundle/components/LoaderScreen.md +7 -1
  46. package/bundle/components/LoaderSmall.md +10 -4
  47. package/bundle/components/MaskedField.md +3 -1
  48. package/bundle/components/MediaWidth.md +2 -1
  49. package/bundle/components/MobileView.md +2 -1
  50. package/bundle/components/ModalWindow.md +4 -1
  51. package/bundle/components/MonthYearField.md +4 -1
  52. package/bundle/components/Notification.md +1 -0
  53. package/bundle/components/Overlay.md +7 -2
  54. package/bundle/components/Pagination.md +1 -7
  55. package/bundle/components/Radio.md +238 -115
  56. package/bundle/components/RadioXGroup.md +259 -0
  57. package/bundle/components/RadioYGroup.md +266 -0
  58. package/bundle/components/SegmentedControl.md +505 -158
  59. package/bundle/components/SelectExtendedField.md +2 -1
  60. package/bundle/components/SelectField.md +4 -1
  61. package/bundle/components/Skeleton.md +140 -69
  62. package/bundle/components/Spoiler.md +245 -63
  63. package/bundle/components/Step.md +257 -68
  64. package/bundle/components/SuggestField.md +30 -18
  65. package/bundle/components/Tabs.md +2 -1
  66. package/bundle/components/TabsLine.md +2 -1
  67. package/bundle/components/TextField.md +8 -4
  68. package/bundle/components/TextareaField.md +2 -1
  69. package/bundle/components/ThemeProvider.md +2 -1
  70. package/bundle/components/Tooltip.md +6 -3
  71. package/bundle/guides/context.md +4 -1
  72. package/bundle/manifest.json +32 -10
  73. package/bundle/release-notes/1.49.0.mdx +78 -0
  74. package/bundle/release-notes/1.50.0.mdx +35 -0
  75. package/bundle/release-notes/1.51.0.mdx +7 -0
  76. package/bundle/tokens.json +161 -11
  77. package/package.json +1 -1
@@ -1,10 +1,9 @@
1
1
  ---
2
2
  component: Divider
3
3
  category: Layout
4
- figma-node: ""
5
- figma-file: ""
6
- related: [Gap, Row, Col]
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
- Горизонтальная линия-разделитель (`<hr>`) высотой 1px с токенизированным
17
- фоном (`--triplex-next-Divider-Background`) и опциональными top/bottom
18
- отступами из фиксированной шкалы 4/8/12/16/20/24/28/32 px.
15
+ Визуальный разделитель контента: горизонтальная линия толщиной 1px на всю ширину родителя. Рендерит `<hr>` с собственным цветом из дизайн-токена и опциональными вертикальными отступами из шкалы дизайн-системы.
19
16
 
20
- Используется для визуального разделения секций внутри Card, Island,
21
- формы и т. п.
17
+ Используй когда: нужно отделить друг от друга смысловые блоки контента видимой линией — пункты списка, секции формы, строки в футере таблицы.
22
18
 
23
- Используй когда: нужна тонкая разделительная линия между блоками.
24
- Не используй когда: нужен вертикальный разделитель (`Divider` только
25
- горизонтальный); нужны только отступы без линии — бери `Gap`.
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
- ### `IDividerProps extends React.HTMLAttributes<HTMLHRElement>`
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
- ### `TDividerMarginSize = 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32`
30
+ Обязательных props нет — `<Divider />` без props рендерит линию без отступов.
61
31
 
62
- Литерально-числовой union. **Не `number`** — типизация закрывает
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
- ### CSS-классы по размеру через LESS `each` + shape
39
+ Компонент расширяет `Omit<React.HTMLAttributes<HTMLHRElement>, "children">`, поэтому принимает все стандартные атрибуты `<hr>` (`className`, `style`, `aria-*`, `data-*`), кроме `children`; `...rest` и `ref` уходят на корневой `<hr>`.
72
40
 
73
- ```less
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
- **LESS `each`** + **escape-строка** `~'@{value}px'` генерирует по два
82
- класса на каждый размер (16 классов всего). Если нужен новый размер —
83
- добавить в `@size` список и в `TDividerMarginSize` TS-литерал.
84
- **TS-литерал — единственная связь между LESS и TS**: TS проверяет
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
- **Дефолт `styles.divider`** задаёт фон + height 1px + `margin: 0` +
100
- `border: none`. Без `border: none` браузерный `<hr>` имеет свою
101
- border/margin.
48
+ ---
102
49
 
103
- **Если `marginTopSize` undefined/0 — класс не добавляется** (короткое
104
- замыкание `&&`). 0 не поддерживается, но undefined — да.
50
+ ## Дизайн-токены
105
51
 
106
- ### Токен `--triplex-next-Divider-Background`
52
+ Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
53
+ «Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Divider.ts`.
107
54
 
108
- ```less
109
- .divider {
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
- Цвет разделителя задаётся одним токеном (см. компонент Divider в
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
- - **Рендерит `<hr>`**, не `<div>`. Не менять — пострадает семантика.
138
- - **`TDividerMarginSize` фиксирован 4/8/12/16/20/24/28/32** — не
139
- расширять без выравнивания с дизайн-системой и LESS-списком.
140
- - **LESS `@size` и TS-литерал должны совпадать** — иначе классы
141
- не сгенерируются для нового размера.
142
- - **`border: none; margin: 0;`** в base-классе — без них браузерный
143
- `<hr>` ломает дизайн.
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
- - **`<hr>`** — встроенная семантика разделителя (`role="separator"`).
154
- Screen reader'ы читают как "separator" / "разделитель".
155
- - **Не интерактивный** — tabindex не ставится, клавиатурой не
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
- Примеры: `stories/Divider/examples/`
92
+ Основные истории: `stories/Divider/Divider.stories.tsx`
93
+ Файлы примеров: `stories/Divider/examples/`
183
94
 
184
- Типовые stories:
185
- - `Default` — разделитель без отступов
186
- - `WithMargins` — разделитель с margin-top/bottom
187
- - `AllSizes` — таблица всех поддерживаемых размеров
188
- - `Playground` — интерактив
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-04-18 | Создан документ |
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
+