@sberbusiness/triplex-next-mcp-server 0.24.0-beta2 → 1.40.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 (73) hide show
  1. package/README.md +10 -0
  2. package/bundle/components/AlertContext.md +268 -0
  3. package/bundle/components/BodyPage.md +186 -0
  4. package/bundle/components/Button.md +93 -85
  5. package/bundle/components/ButtonDropdown.md +36 -70
  6. package/bundle/components/ButtonDropdownExtended.md +422 -0
  7. package/bundle/components/ButtonIcon.md +41 -48
  8. package/bundle/components/Caption.md +291 -0
  9. package/bundle/components/Checkbox.md +43 -122
  10. package/bundle/components/CheckboxXGroup.md +109 -46
  11. package/bundle/components/CheckboxYGroup.md +77 -49
  12. package/bundle/components/CodeText.md +197 -0
  13. package/bundle/components/Col.md +311 -162
  14. package/bundle/components/CollapsibleTree.md +584 -0
  15. package/bundle/components/CollapsibleTreeExtended.md +422 -0
  16. package/bundle/components/Dropdown.md +748 -346
  17. package/bundle/components/EmptyView.md +14 -15
  18. package/bundle/components/FooterPage.md +203 -0
  19. package/bundle/components/Gap.md +115 -57
  20. package/bundle/components/HeaderPage.md +226 -0
  21. package/bundle/components/HelpBox.md +45 -84
  22. package/bundle/components/ImageGallery.md +423 -0
  23. package/bundle/components/ImageGalleryExtended.md +606 -0
  24. package/bundle/components/LightBox.md +2252 -233
  25. package/bundle/components/List.md +216 -183
  26. package/bundle/components/ListActionItem.md +157 -0
  27. package/bundle/components/ListItem.md +276 -0
  28. package/bundle/components/ListItemControlsButton.md +103 -0
  29. package/bundle/components/ListItemControlsButtonDropdown.md +107 -0
  30. package/bundle/components/ListItemSelectable.md +99 -0
  31. package/bundle/components/ListItemTable.md +390 -0
  32. package/bundle/components/ListMaster.md +876 -156
  33. package/bundle/components/ListMasterFooter.md +80 -0
  34. package/bundle/components/ListMasterHeader.md +86 -0
  35. package/bundle/components/ListSortable.md +153 -0
  36. package/bundle/components/ListSortableItem.md +175 -0
  37. package/bundle/components/ListTableItem.md +391 -0
  38. package/bundle/components/ModalWindow.md +427 -237
  39. package/bundle/components/MonthYearField.md +145 -109
  40. package/bundle/components/Notification.md +625 -155
  41. package/bundle/components/Overlay.md +271 -170
  42. package/bundle/components/Page.md +284 -186
  43. package/bundle/components/Pagination.md +206 -229
  44. package/bundle/components/Portal.md +131 -67
  45. package/bundle/components/Row.md +171 -69
  46. package/bundle/components/Text.md +320 -0
  47. package/bundle/components/TextField.md +364 -97
  48. package/bundle/components/Title.md +296 -0
  49. package/bundle/guides/codestyle.md +38 -11
  50. package/bundle/guides/commits.md +119 -26
  51. package/bundle/guides/context.md +34 -30
  52. package/bundle/guides/stories.md +110 -40
  53. package/bundle/guides/template.md +3 -7
  54. package/bundle/guides/tests.md +48 -2
  55. package/bundle/manifest.json +275 -30
  56. package/bundle/release-notes/1.26.0.mdx +33 -2
  57. package/bundle/release-notes/1.27.0.mdx +43 -0
  58. package/bundle/release-notes/1.28.0.mdx +25 -0
  59. package/bundle/release-notes/1.29.0.mdx +47 -0
  60. package/bundle/release-notes/1.30.0.mdx +56 -0
  61. package/bundle/release-notes/1.31.0.mdx +52 -0
  62. package/bundle/release-notes/1.32.0.mdx +35 -0
  63. package/bundle/release-notes/1.33.0.mdx +61 -0
  64. package/bundle/release-notes/1.34.0.mdx +35 -0
  65. package/bundle/release-notes/1.35.0.mdx +21 -0
  66. package/bundle/release-notes/1.35.1.mdx +11 -0
  67. package/bundle/release-notes/1.36.0.mdx +21 -0
  68. package/bundle/release-notes/1.37.0.mdx +71 -0
  69. package/bundle/release-notes/1.38.0.mdx +36 -0
  70. package/bundle/release-notes/1.39.0.mdx +66 -0
  71. package/bundle/release-notes/1.40.0.mdx +27 -0
  72. package/bundle/release-notes/1.41.0.mdx +7 -0
  73. package/package.json +1 -1
@@ -1,9 +1,7 @@
1
1
  ---
2
2
  component: Col
3
3
  category: Layout
4
- figma-node: ""
5
- figma-file: ""
6
- related: [Row, Page, Gap]
4
+ related: [Row, Gap]
7
5
  tokens: []
8
6
  stories: stories/Col/Col.stories.tsx
9
7
  version: "1.0"
@@ -13,209 +11,360 @@ version: "1.0"
13
11
 
14
12
  ## Назначение
15
13
 
16
- Ячейка responsive-grid, реализованная в духе Bootstrap 4 (12-колоночная
17
- сетка). Управляет шириной колонки, offset'ом и видимостью через
18
- breakpoint-префиксы (base / sm / md / lg / xl). Всегда используется
19
- внутри `Row` (который создаёт flex-контейнер с отрицательными margin'ами
20
- для компенсации padding'ов Col).
14
+ Колонка адаптивной 12-колоночной сетки (по модели Bootstrap 4). Задаёт ширину,
15
+ отступ слева и видимость содержимого на разных диапазонах экранов. Используется
16
+ только внутри `Row` — горизонтальный отступ между колонками (gutter) получает из
17
+ `RowContext`.
21
18
 
22
- `Col` — FC-обёртка над `<div>` с композицией CSS-классов по пропсам.
23
- Сами CSS-классы генерируются LESS-миксином `createCol` для всех
24
- breakpoint-префиксов.
19
+ Используй когда: нужно разместить контент в адаптивной сетке — распределить
20
+ блоки по ширине страницы, менять раскладку по breakpoint'ам, скрывать колонки
21
+ на отдельных диапазонах экранов.
25
22
 
26
- Используй когда: нужна responsive-сетка страницы/формы с точным контролем
27
- ширины колонок на разных разрешениях.
28
- Не используй когда: простой flex/grid вручную проще — брать Col только
29
- ради одной колонки не нужно; для фиксированных отступов между блоками —
30
- бери `Gap`.
31
-
32
- ---
33
-
34
- ## Файловая структура
35
-
36
- ```text
37
- src/components/Col/
38
- ├── Col.tsx # React.FC, нет forwardRef
39
- ├── index.ts # Barrel
40
- ├── styles/Col.module.less # LESS миксин createCol(), генерирует классы
41
- └── __tests__/
42
- ```
43
-
44
- Особенности:
45
- - **Нет forwardRef** — FC без ref-форвардинга. Это известный AI-ready debt.
46
- Не добавлять точечно.
47
- - **LESS-миксин `createCol(@resolutionType)`** — генерирует 12 column-классов
48
- и 12 offset-классов для каждого breakpoint'а. Добавление нового breakpoint —
49
- одна строка в LESS.
50
- - **Bootstrap-подобный API**: `col-1..12`, `col-sm-1..12`, `col-md-*`, `col-lg-*`, `col-xl-*`,
51
- `offset-*`, `d-none`, `d-block`.
23
+ Не используй когда:
24
+ - Колонка находится вне `Row` — без контекста применится дефолтный gutter, а
25
+ flex-раскладка родителя не гарантируется.
26
+ - Нужен вертикальный отступ между блоками — используй `Gap`.
27
+ - Нужна произвольная (не кратная 1/12) ширина — управляй стилями контейнера
28
+ напрямую.
52
29
 
53
30
  ---
54
31
 
55
32
  ## Варианты и props
56
33
 
57
- ### `IColProps extends React.HTMLAttributes<HTMLDivElement>`
58
-
59
- **Base (применяется на всех разрешениях):**
34
+ Обязательных props нет — `<Col>` без props занимает всю ширину (`size` по
35
+ умолчанию `12`).
60
36
 
61
- | Prop | Тип | Default | Описание |
62
- |---|---|---|---|
63
- | `size` | `TColumnSize` (1..12) | `12` | Ширина колонки в 12-ти колоночной сетке. |
64
- | `offset` | `TOffsetSize` (0..11) | — | Отступ слева в колонках. |
65
- | `hidden` | `boolean` | — | `display: none !important`. |
66
- | `block` | `boolean` | — | `display: block !important`. |
67
-
68
- **Responsive (каждый breakpoint-префикс дублирует все 4):**
37
+ ### Группы props
69
38
 
70
- | Breakpoint | Size prop | Offset prop | Hidden prop | Block prop | Media |
71
- |---|---|---|---|---|---|
72
- | sm | `sizeSm` | `offsetSm` | `hiddenSm` | `blockSm` | `(min-width: @screen-sm)` |
73
- | md | `sizeMd` | `offsetMd` | `hiddenMd` | `blockMd` | `(min-width: @screen-md)` |
74
- | lg | `sizeLg` | `offsetLg` | `hiddenLg` | `blockLg` | `(min-width: @screen-lg)` |
75
- | xl | `sizeXl` | `offsetXl` | `hiddenXl` | `blockXl` | `(min-width: @screen-xl)` |
39
+ Каждая группа существует в пяти вариантах: базовый (все экраны, mobile-first) и
40
+ breakpoint-модификаторы `*Sm`, `*Md`, `*Lg`, `*Xl`, действующие «от breakpoint
41
+ и шире». Более узкий breakpoint перекрывается более широким.
76
42
 
77
- **Стандартные:**
78
-
79
- | Prop | Тип | Описание |
80
- |---|---|---|
81
- | `children` | `ReactNode` | Контент колонки. |
82
- | `className` | `string` | Доп. класс. |
83
- | `...HTMLDivAttributes` | — | Все стандартные. |
43
+ | Группа | Тип | По умолчанию | Описание |
44
+ |---|---|---|---|
45
+ | `size`, `sizeSm/Md/Lg/Xl` | `TColumnSize` (1–12) | `size = 12` | Ширина колонки в долях сетки: `flex-basis`/`max-width` = N/12 |
46
+ | `offset`, `offsetSm/Md/Lg/Xl` | `TOffsetSize` (0–11) | — | Отступ слева (`margin-left`) в долях сетки; `0` — валидное значение, сбрасывает отступ на breakpoint'е |
47
+ | `hidden`, `hiddenSm/Md/Lg/Xl` | `boolean` | — | Скрывает колонку (`display: none !important`) от breakpoint'а и шире |
48
+ | `block`, `blockSm/Md/Lg/Xl` | `boolean` | — | Принудительно показывает колонку (`display: block !important`) от breakpoint'а и шире; в паре с `hidden` даёт диапазонную видимость |
49
+ | `...HTMLDivAttributes` | — | — | Все стандартные атрибуты `<div>`, включая `className` (мерджится с grid-классами через `clsx`) |
84
50
 
85
- ### Types
51
+ ### Breakpoint'ы
86
52
 
87
- - `TColumnSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12`
88
- - `TOffsetSize = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11`
53
+ Значения из `src/helpers/less/breakpoints.less` (media query `min-width`,
54
+ mobile-first):
89
55
 
90
- Offset — до 11 (12 offset занял бы всю строку, колонки бы не было).
56
+ | Суффикс | Диапазон |
57
+ |---|---|
58
+ | — (базовый) | все экраны, от 0 |
59
+ | `Sm` | ≥576px |
60
+ | `Md` | ≥768px |
61
+ | `Lg` | ≥992px |
62
+ | `Xl` | ≥1200px |
63
+
64
+ ### Особенности поведения
65
+
66
+ - Паттерн диапазонной видимости: `hidden` + `blockMd` = колонка скрыта на
67
+ xs/sm и видима с md и шире.
68
+ - `hidden` **переопределяет одноимённый нативный HTML-атрибут** с другой
69
+ семантикой: prop добавляет CSS-класс `d-none`, а не атрибут `hidden` на div.
70
+ Выставить нативный атрибут через Col нельзя — это исторический публичный
71
+ контракт.
72
+ - Gutter (горизонтальный `padding` колонки) задаётся не props, а `Row`:
73
+ `RowContext.gridHorizontalGap` (`EComponentSize.SM` = 8px,
74
+ `EComponentSize.MD` = 12px; дефолт контекста — SM). Col лишь применяет
75
+ соответствующий класс, устанавливающий `--grid-horizontal-gap`.
91
76
 
92
77
  ---
93
78
 
94
- ## Ключевые особенности реализации
95
-
96
- ### `getClassNames` helper
97
-
98
- ```ts
99
- function getClassNames({ block, hidden, offset, prefix, size }) {
100
- const prefixAsPart = prefix ? `${prefix}-` : "";
101
- const prefixVisibility = prefix ? `-${prefix}` : "";
102
- // ...
103
- if (size) classes.push(`col-${prefixAsPart}${size}`);
104
- if (offset !== undefined) classes.push(`offset-${prefixAsPart}${offset}`);
105
- if (block) classes.push(`d-block${prefixVisibility}`);
106
- if (hidden) classes.push(`d-none${prefixVisibility}`);
107
- }
108
- ```
109
-
110
- **Асимметрия префиксов**: `col-sm-6` (префикс в середине), но `d-block-sm`
111
- (префикс в конце). Это Bootstrap-ная конвенция, повторённая один-в-один.
112
- Не менять без миграции пользователей.
113
-
114
- ### Классы собираются в массив → `styles[...]`
115
-
116
- ```ts
117
- const mappedClasses = classNames.map((c) => styles[c]).filter(Boolean);
118
- ```
119
-
120
- Имена классов — это ключи в LESS module объекте. `filter(Boolean)`
121
- защищает от опечаток (если бы класс не существовал → `undefined`).
79
+ ## Дизайн-токены
122
80
 
123
- ### `size = 12` по умолчанию
81
+ Собственных CSS-переменных дизайн-темы (`--triplex-next-*`) компонент не
82
+ использует. Ширины и отступы вычисляются в LESS как доли `100% / 12`; gutter —
83
+ локальная переменная `--grid-horizontal-gap`, значение которой берётся из LESS-
84
+ переменных `@grid-horizontal-gap-SM` (8px) / `@grid-horizontal-gap-MD` (12px)
85
+ в `src/styles/components/grid.less`.
124
86
 
125
- Если size не задан — колонка занимает всю ширину. Это конвенция Bootstrap.
126
- На узких экранах (без sm/md/lg overrides) колонка всегда full-width,
127
- что даёт mobile-first сетку.
87
+ ---
128
88
 
129
- ### `.d-none` / `.d-block` с `!important`
89
+ ## Инварианты
130
90
 
131
- ```less
132
- .d-none { display: none !important; }
133
- .d-block { display: block !important; }
134
- ```
91
+ - **`forwardRef`** — обязателен, не убирать. `ref` пробрасывается на корневой
92
+ `<div>`.
93
+ - **Имена всех 20 responsive-props** (`size*`, `offset*`, `hidden*`, `block*`)
94
+ и типы **`TColumnSize`**, **`TOffsetSize`** — публичное API, экспортируются
95
+ из barrel. Изменение перечня значений — breaking change.
96
+ - **Дефолт `size = 12`** — колонка без props занимает всю ширину.
97
+ - **Корневой элемент `<div>`** и мердж `className` потребителя с
98
+ grid-классами — не менять.
99
+ - **Схема генерации классов** `col-{prefix}-N` / `offset-{prefix}-N` /
100
+ `d-none-{prefix}` / `d-block-{prefix}` в `Col.module.less` — классы
101
+ резолвятся через `styles[c]`-маппинг; переименование селекторов ломает
102
+ раскладку и тесты.
103
+ - **Зависимость от `RowContext`** — источник gutter'а. Не заменять на prop.
104
+ - Breakpoint-значения (576/768/992/1200) — общие для библиотеки
105
+ (`breakpoints.less`), не задавать локальные.
135
106
 
136
- `!important` нужен, потому что `.col-*` уже имеет `display` (через flex
137
- item родителя). Без important не переопределяли бы.
107
+ ---
138
108
 
139
- ### LESS `each` + `range` генерируют классы
109
+ ## Accessibility
140
110
 
141
- ```less
142
- each(range(12), {
143
- .col-@{resolutionType}@{value} { ... flex: 0 0 (@base-col * @value); max-width: (...); }
144
- });
145
- ```
111
+ - Неинтерактивный layout-контейнер: без ARIA-роли, keyboard navigation и
112
+ focus management не применимы.
113
+ - Скрытие через `hidden*` использует `display: none` — контент скрытой колонки
114
+ недоступен и для screen reader'ов (в отличие от visually-hidden паттернов).
115
+ Это ожидаемое поведение адаптивной сетки.
116
+ - Потребитель может передать `role`, `aria-*`, `data-*` через spread.
146
117
 
147
- Один миксин — 12 col- + 12 offset-. Вызывается для каждого breakpoint'а.
148
- **Если добавить XXL** — одна строка `.createCol(xxl-);` в media-query.
118
+ ---
149
119
 
150
- ### `@grid-horizontal-gap` — не токен, а LESS-переменная
120
+ ## Связанные компоненты
151
121
 
152
- В `src/styles/style.less`. Часть grid-системы (не в список токенов
153
- компонента). Должен быть синхронизирован с Row'ом (у которого
154
- отрицательный margin).
122
+ - `Row` (`src/components/Row/`) — обязательный родитель: flex-контейнер строки,
123
+ провайдер `RowContext.gridHorizontalGap`.
124
+ - `Gap` (`src/components/Gap/`) — вертикальный отступ между блоками; используй
125
+ вместо сетки, когда нужен только отступ.
155
126
 
156
127
  ---
157
128
 
158
- ## Инварианты
129
+ ## Stories
130
+
131
+ Основные истории: `stories/Col/Col.stories.tsx`
132
+ Файлы примеров: `stories/Col/examples/`
159
133
 
160
- - **`size` default = 12** — полная ширина, mobile-first поведение. Не менять.
161
- - **`TColumnSize` ограничен 1..12** — не расширять. 12 — bootstrap-константа.
162
- - **`TOffsetSize` ограничен 0..11** — offset=12 бессмыслен.
163
- - **LESS миксин `createCol`** — источник истины для имён классов. Если
164
- переименовывать схему — обновлять **и** миксин, **и** `getClassNames`.
165
- - **Асимметричные префиксы** `col-sm-*` vs `d-block-sm` — Bootstrap
166
- конвенция. Не унифицировать.
167
- - **`!important` на `.d-none` / `.d-block`** — не удалять.
168
- - **`Col` всегда внутри `Row`** — работает flex-сеткой. Col без Row
169
- получает полную ширину и нет gap-компенсации.
170
- - **Нет forwardRef** — документированный debt. Не добавлять точечно.
134
+ | Story | Example file | Что демонстрирует |
135
+ |---|---|---|
136
+ | `Playground` | `PlaygroundExample.tsx` | Интерактивный контроль `size`, `offset`, `hidden`, `block` |
137
+ | `Default` | `DefaultExample.tsx` | Колонка без props — ширина по умолчанию (12/12) |
138
+ | `DifferentSizes` | `DifferentSizesExample.tsx` | Разные значения `size`, включая дефолтный |
139
+ | `ResponsiveSizes` | `ResponsiveSizesExample.tsx` | Адаптивные ширины `sizeSm/Md/Lg/Xl` |
140
+ | `WithOffsets` | `WithOffsetsExample.tsx` | Отступы слева через `offset` |
141
+ | `ResponsiveOffsets` | `ResponsiveOffsetsExample.tsx` | Адаптивные отступы `offsetSm/Md/Lg/Xl` |
142
+ | `HiddenColumns` | `HiddenColumnsExample.tsx` | Скрытие колонок на диапазонах экранов (`hidden*` + `block*`) |
143
+ | `VisualTests` | `VisualTestsExample.tsx` | Скриншот-регрессия основных состояний |
171
144
 
172
145
  ---
173
146
 
174
- ## Accessibility
147
+ ## История изменений
175
148
 
176
- - **Нет ARIA** — div без семантики.
177
- - **`hidden`** через `display: none` полностью убирает элемент из
178
- доступности (screen reader не читает, клавиатура пропускает). Это
179
- ожидаемо для скрытия элементов по breakpoint'у.
180
- - **Порядок DOM = порядок источника**. Если нужно визуально переставить
181
- колонки (order), использовать `order` CSS — Col этого не делает сам.
149
+ | Дата | Изменение |
150
+ |---|---|
151
+ | 2026-07-28 | Создан документ. AI-рефакторинг (TRI-28): добавлен `forwardRef` на корневой `<div>`, JSDoc на `TColumnSize`/`TOffsetSize`/все props `IColProps`, rest-props переименован в `htmlDivAttributes`, расширены unit-тесты (49 кейсов: forwardRef, полный перебор size/offset, falsy-ветки). Публичный API не менялся. |
182
152
 
183
153
  ---
184
154
 
185
- ## Дизайн-токены
155
+ ## Примеры использования
186
156
 
187
- Нет — компонент использует LESS-переменные сетки (`@grid-horizontal-gap`,
188
- `@screen-sm/md/lg/xl`), не CSS-токены.
157
+ ### Default
189
158
 
190
- ---
159
+ `stories/Col/examples/DefaultExample.tsx`
191
160
 
192
- ## Связанные компоненты
161
+ ```tsx
162
+ import React from "react";
163
+ import { Col, Row } from "@sberbusiness/triplex-next";
193
164
 
194
- - `Row` (`src/components/Row`) — обязательный родитель. Создаёт flex-контейнер
195
- с отрицательными margin'ами для Col.
196
- - `Page` (`src/components/Page`) — страничный layout, часто использует
197
- Col/Row внутри для структуры.
198
- - `Gap` (`src/components/Gap`) — для вертикальных отступов между блоками
199
- (Col — горизонтальные колонки).
200
-
201
- ---
165
+ export const DefaultExample = () => (
166
+ <Row style={{ width: "600px" }}>
167
+ <Col>
168
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
169
+ default size (size-12)
170
+ </div>
171
+ </Col>
172
+ </Row>
173
+ );
174
+ ```
202
175
 
203
- ## Stories
176
+ ### DifferentSizes
177
+
178
+ `stories/Col/examples/DifferentSizesExample.tsx`
179
+
180
+ ```tsx
181
+ import React from "react";
182
+ import { Col, Row } from "@sberbusiness/triplex-next";
183
+
184
+ export const DifferentSizesExample = () => (
185
+ <>
186
+ <Row style={{ width: "600px" }}>
187
+ <Col>
188
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
189
+ default size (size-12)
190
+ </div>
191
+ </Col>
192
+ </Row>
193
+
194
+ <Row style={{ width: "600px" }}>
195
+ <Col size={2}>
196
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
197
+ size-2
198
+ </div>
199
+ </Col>
200
+ <Col size={3}>
201
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
202
+ size-3
203
+ </div>
204
+ </Col>
205
+ <Col size={6}>
206
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
207
+ size-6
208
+ </div>
209
+ </Col>
210
+ </Row>
211
+ </>
212
+ );
213
+ ```
204
214
 
205
- `stories/Col/Col.stories.tsx`
206
- Примеры: `stories/Col/examples/`
215
+ ### ResponsiveSizes
216
+
217
+ `stories/Col/examples/ResponsiveSizesExample.tsx`
218
+
219
+ ```tsx
220
+ import React from "react";
221
+ import { Col, Gap, Row } from "@sberbusiness/triplex-next";
222
+
223
+ export const ResponsiveSizesExample = () => (
224
+ <div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
225
+ <Row>
226
+ <Col sizeSm={6} sizeMd={5} sizeLg={4} sizeXl={3}>
227
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
228
+ <div>Размеры колонки на разных экранах: sm - 6, md - 5, lg - 4, xl - 3</div>
229
+ </div>
230
+ <Gap size={16} />
231
+ </Col>
232
+
233
+ <Col sizeSm={7} sizeMd={8} sizeLg={9} sizeXl={10}>
234
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
235
+ <div>Размеры колонки на разных экранах: sm - 7, md - 8, lg - 9, xl - 10</div>
236
+ </div>
237
+ </Col>
238
+ </Row>
239
+ </div>
240
+ );
241
+ ```
207
242
 
208
- Типовые stories:
209
- - `Default` — колонки равной ширины
210
- - `Sizes` — разные size на разных breakpoint'ах
211
- - `Offsets` — с отступами
212
- - `Hidden/Block` — responsive visibility
213
- - `Playground` — интерактив
243
+ ### WithOffsets
244
+
245
+ `stories/Col/examples/WithOffsetsExample.tsx`
246
+
247
+ ```tsx
248
+ import React from "react";
249
+ import { Col, Row } from "@sberbusiness/triplex-next";
250
+
251
+ export const WithOffsetsExample = () => (
252
+ <div style={{ display: "flex", flexDirection: "column" }}>
253
+ <Row style={{ flexWrap: "nowrap" }}>
254
+ <Col size={4}>
255
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
256
+ size-4
257
+ </div>
258
+ </Col>
259
+ <Col size={4} offset={3}>
260
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
261
+ size-4 offset-3
262
+ </div>
263
+ </Col>
264
+ </Row>
265
+
266
+ <Row style={{ flexWrap: "nowrap" }}>
267
+ <Col size={3} offset={3}>
268
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
269
+ size-3 offset-3
270
+ </div>
271
+ </Col>
272
+ <Col size={3} offset={1}>
273
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
274
+ size-3 offset-1
275
+ </div>
276
+ </Col>
277
+ </Row>
278
+
279
+ <Row>
280
+ <Col size={6} offset={2}>
281
+ <div style={{ padding: "16px", textAlign: "center", backgroundColor: "rgb(255, 217, 160)" }}>
282
+ size-6 offset-2
283
+ </div>
284
+ </Col>
285
+ </Row>
286
+ </div>
287
+ );
288
+ ```
214
289
 
215
- ---
290
+ ### ResponsiveOffsets
291
+
292
+ `stories/Col/examples/ResponsiveOffsetsExample.tsx`
293
+
294
+ ```tsx
295
+ import React from "react";
296
+ import { Col, Row } from "@sberbusiness/triplex-next";
297
+
298
+ export const ResponsiveOffsetsExample = () => (
299
+ <div style={{ display: "flex", flexDirection: "column" }}>
300
+ <Row>
301
+ <Col sizeMd={6} offsetMd={3}>
302
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
303
+ <div>sizeMd=6</div>
304
+ <div>offsetMd=3</div>
305
+ </div>
306
+ </Col>
307
+ </Row>
308
+
309
+ <Row>
310
+ <Col sizeSm={6} offsetSm={4}>
311
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
312
+ <div>sizeSm=6</div>
313
+ <div>offsetSm=4</div>
314
+ </div>
315
+ </Col>
316
+ </Row>
317
+ </div>
318
+ );
319
+ ```
216
320
 
217
- ## История изменений
321
+ ### HiddenColumns
322
+
323
+ `stories/Col/examples/HiddenColumnsExample.tsx`
324
+
325
+ ```tsx
326
+ import React from "react";
327
+ import { Col, Gap, Row } from "@sberbusiness/triplex-next";
328
+
329
+ export const HiddenColumnsExample = () => (
330
+ <div style={{ display: "flex", flexDirection: "column" }}>
331
+ <Row>
332
+ <Col>
333
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
334
+ Свойство hidden не установлено
335
+ </div>
336
+ </Col>
337
+ </Row>
338
+
339
+ <Row>
340
+ <Col hiddenSm>
341
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
342
+ Свойство hidden установлено для экрана sm
343
+ </div>
344
+ <Gap size={16} />
345
+ </Col>
346
+
347
+ <Col hiddenMd>
348
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
349
+ Свойство hidden установлено для экрана md
350
+ </div>
351
+ <Gap size={16} />
352
+ </Col>
353
+
354
+ <Col hiddenLg>
355
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
356
+ Свойство hidden установлено для экрана lg
357
+ </div>
358
+ <Gap size={16} />
359
+ </Col>
360
+
361
+ <Col hiddenXl>
362
+ <div style={{ padding: "16px", backgroundColor: "rgb(255, 217, 160)", textAlign: "center" }}>
363
+ Свойство hidden установлено для экрана xl
364
+ </div>
365
+ </Col>
366
+ </Row>
367
+ </div>
368
+ );
369
+ ```
218
370
 
219
- | Дата | Изменение |
220
- |---|---|
221
- | 2026-04-18 | Создан документ |