@sberbusiness/triplex-next-mcp-server 0.24.0-beta1

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 (140) hide show
  1. package/README.md +124 -0
  2. package/bundle/.gitkeep +0 -0
  3. package/bundle/components/AbstractTree.md +198 -0
  4. package/bundle/components/AccordionBase.md +227 -0
  5. package/bundle/components/Alert.md +317 -0
  6. package/bundle/components/Amount.md +225 -0
  7. package/bundle/components/AmountField.md +289 -0
  8. package/bundle/components/Avatar.md +209 -0
  9. package/bundle/components/Badge.md +277 -0
  10. package/bundle/components/Body.md +167 -0
  11. package/bundle/components/Button.md +230 -0
  12. package/bundle/components/ButtonDropdown.md +159 -0
  13. package/bundle/components/ButtonIcon.md +122 -0
  14. package/bundle/components/Calendar.md +445 -0
  15. package/bundle/components/Card.md +374 -0
  16. package/bundle/components/CarouselExtended.md +250 -0
  17. package/bundle/components/Checkbox.md +126 -0
  18. package/bundle/components/CheckboxTree.md +280 -0
  19. package/bundle/components/CheckboxTreeExtended.md +321 -0
  20. package/bundle/components/CheckboxXGroup.md +68 -0
  21. package/bundle/components/CheckboxYGroup.md +67 -0
  22. package/bundle/components/Chip.md +404 -0
  23. package/bundle/components/ChipGroup.md +179 -0
  24. package/bundle/components/Col.md +221 -0
  25. package/bundle/components/CollapsableTree.md +255 -0
  26. package/bundle/components/Confirm.md +343 -0
  27. package/bundle/components/DateField.md +371 -0
  28. package/bundle/components/DatePickerExtended.md +342 -0
  29. package/bundle/components/DateRange.md +275 -0
  30. package/bundle/components/DesignTokens.md +385 -0
  31. package/bundle/components/Divider.md +196 -0
  32. package/bundle/components/DocumentNumberEdit.md +280 -0
  33. package/bundle/components/Dropdown.md +433 -0
  34. package/bundle/components/Ellipsis.md +208 -0
  35. package/bundle/components/EmptyView.md +99 -0
  36. package/bundle/components/ExpandAnimation.md +281 -0
  37. package/bundle/components/Footer.md +339 -0
  38. package/bundle/components/FormField.md +326 -0
  39. package/bundle/components/FormGroup.md +99 -0
  40. package/bundle/components/Gap.md +113 -0
  41. package/bundle/components/Header.md +280 -0
  42. package/bundle/components/HelpBox.md +154 -0
  43. package/bundle/components/IconWrapper.md +145 -0
  44. package/bundle/components/Island.md +197 -0
  45. package/bundle/components/IslandAccordion.md +230 -0
  46. package/bundle/components/IslandWidget.md +233 -0
  47. package/bundle/components/KeyDownListener.md +157 -0
  48. package/bundle/components/LightBox.md +322 -0
  49. package/bundle/components/Link.md +161 -0
  50. package/bundle/components/List.md +247 -0
  51. package/bundle/components/ListMaster.md +204 -0
  52. package/bundle/components/Loader.md +161 -0
  53. package/bundle/components/LoaderScreen.md +134 -0
  54. package/bundle/components/Marker.md +127 -0
  55. package/bundle/components/MarkerStatus.md +148 -0
  56. package/bundle/components/MediaWidth.md +169 -0
  57. package/bundle/components/MobileView.md +120 -0
  58. package/bundle/components/ModalWindow.md +308 -0
  59. package/bundle/components/MonthYearField.md +168 -0
  60. package/bundle/components/MultiselectField.md +213 -0
  61. package/bundle/components/Notification.md +233 -0
  62. package/bundle/components/NumberField.md +178 -0
  63. package/bundle/components/OrderedList.md +169 -0
  64. package/bundle/components/Overlay.md +237 -0
  65. package/bundle/components/Page.md +246 -0
  66. package/bundle/components/Pagination.md +298 -0
  67. package/bundle/components/Portal.md +119 -0
  68. package/bundle/components/Radio.md +174 -0
  69. package/bundle/components/Row.md +125 -0
  70. package/bundle/components/SMSField.md +160 -0
  71. package/bundle/components/SegmentedControl.md +235 -0
  72. package/bundle/components/SelectExtendedField.md +322 -0
  73. package/bundle/components/SelectField.md +213 -0
  74. package/bundle/components/Skeleton.md +129 -0
  75. package/bundle/components/Slider.md +157 -0
  76. package/bundle/components/SliderExtended.md +210 -0
  77. package/bundle/components/SliderRange.md +160 -0
  78. package/bundle/components/SmallInput.md +101 -0
  79. package/bundle/components/Spoiler.md +121 -0
  80. package/bundle/components/StatusTracker.md +151 -0
  81. package/bundle/components/Step.md +121 -0
  82. package/bundle/components/Stepper.md +163 -0
  83. package/bundle/components/Suggest.md +160 -0
  84. package/bundle/components/SuggestField.md +157 -0
  85. package/bundle/components/SwipeableArea.md +144 -0
  86. package/bundle/components/Table.md +199 -0
  87. package/bundle/components/Tabs.md +152 -0
  88. package/bundle/components/TabsExtended.md +273 -0
  89. package/bundle/components/TabsLine.md +189 -0
  90. package/bundle/components/Tag.md +135 -0
  91. package/bundle/components/TagColor.md +121 -0
  92. package/bundle/components/TagGroup.md +100 -0
  93. package/bundle/components/TextField.md +152 -0
  94. package/bundle/components/TextareaField.md +124 -0
  95. package/bundle/components/ThemeProvider.md +181 -0
  96. package/bundle/components/Tooltip.md +254 -0
  97. package/bundle/components/TopOverlay.md +145 -0
  98. package/bundle/components/TreeView.md +224 -0
  99. package/bundle/components/Triggers.md +121 -0
  100. package/bundle/guides/codestyle.md +205 -0
  101. package/bundle/guides/commits.md +166 -0
  102. package/bundle/guides/context.md +277 -0
  103. package/bundle/guides/stories.md +618 -0
  104. package/bundle/guides/template.md +154 -0
  105. package/bundle/guides/tests.md +301 -0
  106. package/bundle/icons.json +4156 -0
  107. package/bundle/manifest.json +796 -0
  108. package/bundle/release-notes/1.1.0.mdx +26 -0
  109. package/bundle/release-notes/1.1.1.mdx +14 -0
  110. package/bundle/release-notes/1.10.0.mdx +43 -0
  111. package/bundle/release-notes/1.11.0.mdx +19 -0
  112. package/bundle/release-notes/1.12.0.mdx +21 -0
  113. package/bundle/release-notes/1.13.0.mdx +43 -0
  114. package/bundle/release-notes/1.14.0.mdx +29 -0
  115. package/bundle/release-notes/1.15.0.mdx +56 -0
  116. package/bundle/release-notes/1.16.0.mdx +55 -0
  117. package/bundle/release-notes/1.17.0.mdx +15 -0
  118. package/bundle/release-notes/1.18.0.mdx +24 -0
  119. package/bundle/release-notes/1.19.0.mdx +48 -0
  120. package/bundle/release-notes/1.19.1.mdx +9 -0
  121. package/bundle/release-notes/1.2.0.mdx +80 -0
  122. package/bundle/release-notes/1.20.0.mdx +48 -0
  123. package/bundle/release-notes/1.21.0.mdx +66 -0
  124. package/bundle/release-notes/1.22.0.mdx +75 -0
  125. package/bundle/release-notes/1.23.0.mdx +50 -0
  126. package/bundle/release-notes/1.24.0.mdx +59 -0
  127. package/bundle/release-notes/1.25.0.mdx +52 -0
  128. package/bundle/release-notes/1.26.0.mdx +11 -0
  129. package/bundle/release-notes/1.3.0.mdx +21 -0
  130. package/bundle/release-notes/1.4.0.mdx +37 -0
  131. package/bundle/release-notes/1.5.0.mdx +24 -0
  132. package/bundle/release-notes/1.6.0.mdx +37 -0
  133. package/bundle/release-notes/1.6.1.mdx +11 -0
  134. package/bundle/release-notes/1.7.0.mdx +29 -0
  135. package/bundle/release-notes/1.8.0.mdx +38 -0
  136. package/bundle/release-notes/1.9.0.mdx +28 -0
  137. package/dist/index.d.ts +2 -0
  138. package/dist/index.js +324 -0
  139. package/dist/index.js.map +1 -0
  140. package/package.json +51 -0
@@ -0,0 +1,321 @@
1
+ ---
2
+ component: CheckboxTreeExtended
3
+ category: Inputs
4
+ figma-node: ""
5
+ figma-file: ""
6
+ related: [CheckboxTree, CollapsableTree, Checkbox]
7
+ tokens: []
8
+ stories: stories/CheckboxTreeExtended/CheckboxTreeExtended.stories.tsx
9
+ version: "1.0"
10
+ ---
11
+
12
+ # CheckboxTreeExtended
13
+
14
+ ## Назначение
15
+
16
+ Декларативное дерево чекбоксов, обёртка над `CollapsableTree` с добавлением
17
+ сетки/отступов под чекбоксы, адаптивного размера и render-props паттерна для
18
+ чекбокса в каждой ноде.
19
+
20
+ В отличие от `CheckboxTree` (data-driven), здесь потребитель **сам** строит
21
+ JSX-структуру через `CheckboxTreeExtended.Node` + render-функцию
22
+ `checkbox={...}`, управляет `checked`/`onChange` вручную, может вкладывать
23
+ произвольный контент. Это "низкоуровневая" версия.
24
+
25
+ **Важный нюанс:** в текущем релизе дерево **постоянно раскрыто**
26
+ (`isStaticCheckboxTreeExtended = true`). Сворачивание/разворачивание узлов
27
+ пока не поддерживается, стрелка не рендерится. TODO в коде указывает на
28
+ отложенный фичер.
29
+
30
+ Используй когда: нужна полная кастомизация рендера (заголовки, иконки,
31
+ доп. контент у нод), управляешь state вручную.
32
+ Не используй когда: нужно простое дерево с плоскими данными — бери
33
+ `CheckboxTree`.
34
+
35
+ ---
36
+
37
+ ## Файловая структура
38
+
39
+ ```text
40
+ src/components/CheckboxTreeExtended/
41
+ ├── CheckboxTreeExtended.tsx # React.FC (SFC-интерфейс) + compound Node/Checkbox
42
+ ├── CheckboxTreeExtendedContext.ts # Контекст: {size}
43
+ ├── isStaticCheckboxTreeExtended.ts # const = true, временный feature-flag
44
+ ├── index.ts # Barrel
45
+ ├── styles/CheckboxTreeExtended.module.less
46
+ └── components/
47
+ ├── CheckboxTreeExtendedNode.tsx # FC, обёртка CollapsableTree.Node
48
+ ├── CheckboxTreeExtendedCheckbox.tsx # FC, обёртка Checkbox + фокус-менеджмент
49
+ └── CheckboxTreeExtendedArrow.tsx # class Component, стрелка разворачивания (сейчас скрыта)
50
+ ```
51
+
52
+ Особенности:
53
+ - **`ICheckboxTreeExtendedSFC`** — кастомный интерфейс FC с `Checkbox` и
54
+ `Node` как свойствами. Присваиваются статически после объявления.
55
+ - **`isStaticCheckboxTreeExtended`** — хардкод-константа, временно
56
+ выключающая сворачивание. **Удалить вместе с файлом**, когда фича будет
57
+ реализована. Пока что из-за `true` много веток кода идут по "всегда
58
+ раскрытой" логике.
59
+ - **`useMatchMedia`** — адаптивный размер: на экранах `<= SM_MAX` размер
60
+ форсируется в `MD` независимо от пропса.
61
+
62
+ ---
63
+
64
+ ## Варианты и props
65
+
66
+ ### Root: `ICheckboxTreeExtendedProps extends ICollapsableTreeProps`
67
+
68
+ | Prop | Тип | Default | Описание |
69
+ |---|---|---|---|
70
+ | `size` | `EComponentSize` | `MD` | Размер чекбоксов в дереве (SM/MD/LG). На мобильных (`<= SM_MAX`) перезаписывается на MD. |
71
+ | `className` | `string` | — | Добавочный класс. |
72
+ | `...ICollapsableTreeProps` | — | — | Наследует все пропы CollapsableTree (включая children, navigation). |
73
+
74
+ ### `CheckboxTreeExtended.Node` — `ICheckboxTreeExtendedNodeProps extends Omit<ICollapsableTreeNodeProps, "children" | "renderBody" | "renderHeader">`
75
+
76
+ | Prop | Тип | Обязателен | Описание |
77
+ |---|---|---|---|
78
+ | `id` | `string` | Да | Уникальный id ноды. Используется и в навигации CollapsableTree. |
79
+ | `checkbox` | `(props: ICheckboxTreeExtendedCheckboxProvideProps) => JSX.Element` | Да | Render-функция. Получает `active` (клавиатурный фокус) и `opened` (раскрыта ли). |
80
+ | `children` | `React.ReactNode` | Нет | Дочерние `CheckboxTreeExtended.Node`. Если есть — рендерится стрелка (сейчас выключено). |
81
+ | `opened` | `boolean` | Нет | Контролируемое раскрытие. Игнорируется при `isStaticCheckboxTreeExtended=true`. |
82
+ | `prevNodeId` / `nextNodeId` | `string` | Нет | ID соседних нод того же уровня для arrow-навигации. |
83
+ | `...CollapsableTreeNodeProps` | — | — | Всё остальное (кроме `children`/`renderHeader`/`renderBody`). |
84
+
85
+ ### `CheckboxTreeExtended.Checkbox` — `ICheckboxTreeExtendedCheckboxProps extends ICheckboxProps`
86
+
87
+ Тонкая обёртка над `Checkbox` с дополнениями:
88
+
89
+ | Prop | Тип | Описание |
90
+ |---|---|---|
91
+ | `active` | `boolean` | Клавиатурный фокус на ноде → автоматически `.focus()` на input. |
92
+ | `opened` | `boolean` | Используется в типах, визуально сейчас не задействовано. |
93
+ | `size` | — | **НЕ передаётся через props**. Подтягивается из контекста CheckboxTreeExtendedContext. |
94
+ | `labelAttributes` | `ICheckboxProps["labelAttributes"]` | Расширяется — добавляется `onFocus` для `stopPropagation`. |
95
+ | `...ICheckboxProps` | — | Все остальные пропы базового Checkbox (checked, bulk, onChange, labelAttributes etc.). |
96
+
97
+ ### `ICheckboxTreeExtendedCheckboxProvideProps`
98
+
99
+ Что приходит в `checkbox`-render-функцию:
100
+
101
+ ```ts
102
+ interface ICheckboxTreeExtendedCheckboxProvideProps {
103
+ active?: boolean; // нода активна (keyboard nav)
104
+ opened?: boolean; // нода раскрыта (сейчас всегда true)
105
+ }
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Ключевые особенности реализации
111
+
112
+ ### `useMatchMedia` для адаптивного size
113
+
114
+ ```ts
115
+ const adaptive = useMatchMedia(
116
+ `(max-width: ${EScreenWidth.SM_MAX})`,
117
+ window.innerWidth <= parseInt(EScreenWidth.SM_MAX),
118
+ );
119
+
120
+ <CheckboxTreeExtendedContext.Provider value={{ size: adaptive ? EComponentSize.MD : size }}>
121
+ ```
122
+
123
+ На мобильных контекст форсирует MD — игнорирует `size`, переданный в пропы.
124
+ Это UX-решение: маленькие чекбоксы на тач-экране неудобны. **Не убирать**
125
+ без дизайн-ревью.
126
+
127
+ `useMatchMedia` — hook из `src/components/MediaWidth/useMatchMedia`. Второй
128
+ аргумент — initial value для SSR.
129
+
130
+ ### Контекст для size
131
+
132
+ Size не передаётся через пропы на `Node` и `Checkbox` — они читают его из
133
+ контекста `CheckboxTreeExtendedContext`. Преимущество: менять в одном
134
+ месте без prop-drilling. Недостаток: `CheckboxTreeExtended.Checkbox` не
135
+ работает вне `CheckboxTreeExtended` (получит initial `MD`).
136
+
137
+ ### `isStaticCheckboxTreeExtended = true` — глобальный флаг
138
+
139
+ Задействован в **двух местах**:
140
+
141
+ 1. `CheckboxTreeExtendedNode`:
142
+ - `opened={isStaticCheckboxTreeExtended ? true : opened}` — всегда раскрыто
143
+ - Стрелка не рендерится
144
+ - `checkbox` render-функция получает `active: activeNode, opened: true` вместо `active: !children && activeNode, opened`
145
+
146
+ 2. `CheckboxTreeExtendedCheckbox`:
147
+ - `!isStaticCheckboxTreeExtended && event.stopPropagation()` — не гасит
148
+ focus bubbling в статичном режиме (ARR-у arrow активна, она сама управляет).
149
+
150
+ **TODO из кода: удалить файл + константу, когда сворачивание будет готово.**
151
+ До этого любой PR с "давайте сделаем сворачивание" должен **убрать оба места
152
+ использования**, не просто поменять на `false`.
153
+
154
+ ### `handleHeaderMouseDown` — предотвращение фокуса на контейнер
155
+
156
+ ```ts
157
+ if (event.target === event.currentTarget) {
158
+ event.preventDefault();
159
+ }
160
+ ```
161
+
162
+ Когда клик по области заголовка **сбоку от чекбокса** (а не по самому
163
+ чекбоксу), браузер иначе дал бы фокус контейнеру. Это сбивало бы ARIA
164
+ (фокус должен быть на input). `preventDefault` блокирует это. Проверка
165
+ `target === currentTarget` — фокус блокируется только для прямых кликов в
166
+ контейнер, не для вложенных.
167
+
168
+ ### `useEffect` — auto-focus при `active: true`
169
+
170
+ ```ts
171
+ useEffect(() => {
172
+ if (!active) return;
173
+ if (!document.activeElement?.contains(checkboxNode.current as Node)) {
174
+ checkboxNode.current?.focus();
175
+ }
176
+ }, [active]);
177
+ ```
178
+
179
+ Когда дерево получает `active: true` на ноде (через arrow-навигацию
180
+ CollapsableTree), автоматически фокусируется input. Условие
181
+ `!document.activeElement?.contains(...)` — защита от зацикливания focus,
182
+ если уже внутри.
183
+
184
+ **Нюанс:** `setCheckboxNode` — не forwardRef, а прямой callback-ref. Если
185
+ нужен ref на input снаружи — нельзя передать через `ref={}` на
186
+ `CheckboxTreeExtended.Checkbox` (его не форвардит).
187
+
188
+ ### `handleLabelFocus` — stopPropagation
189
+
190
+ ```ts
191
+ !isStaticCheckboxTreeExtended && event.stopPropagation();
192
+ ```
193
+
194
+ Focus на label должен НЕ подниматься до родительской ноды в static-режиме
195
+ (там фокус handle'ится иначе), но должен пузыриться в collapsable-режиме.
196
+ Эта ветка условия активна, только когда включат сворачивание.
197
+
198
+ ### `CheckboxTreeExtendedArrow` — class component
199
+
200
+ Class, а не FC — использует `componentDidUpdate` для auto-focus на стрелке
201
+ при `active: true` (аналог `useEffect` в checkbox). Имеет `tabIndex={-1}` —
202
+ фокус не приходит tab'ом, только программно через active.
203
+
204
+ Клавиатура:
205
+ - `ArrowRight` → toggle(true) (раскрыть)
206
+ - `ArrowLeft` → toggle(false) (свернуть)
207
+ - `Enter`/`Space` → toggle(!opened)
208
+
209
+ Сейчас не рендерится из-за `isStaticCheckboxTreeExtended`, но код готов.
210
+
211
+ ### `createSizeToClassNameMap` для Node header
212
+
213
+ ```ts
214
+ const sizeToClassNameMap = createSizeToClassNameMap(styles);
215
+ ```
216
+
217
+ Применяется к `.checkboxTreeExtendedNodeHeader` → класс `.sm/.md/.lg`, от
218
+ которого зависит `margin-bottom` и мобильный padding.
219
+
220
+ ### CSS `:has(.sm)` для глубины отступа
221
+
222
+ ```less
223
+ .checkboxTreeExtendedNode:has(.sm) { margin-left: 16px; }
224
+ .checkboxTreeExtendedNode:has(.md),
225
+ .checkboxTreeExtendedNode:has(.lg) { margin-left: 24px; }
226
+ ```
227
+
228
+ `:has()` — современный CSS-селектор (Chrome 105+, Safari 15.4+, Firefox 121+).
229
+ В IE и старых браузерах не работает — там отступы будут 0. Поддержка
230
+ браузеров у библиотеки это допускает.
231
+
232
+ ---
233
+
234
+ ## Инварианты
235
+
236
+ - **`isStaticCheckboxTreeExtended = true`** — временная константа. При
237
+ включении сворачивания удалять файл и убирать ветки из Node/Checkbox.
238
+ - **`size` приходит через контекст, НЕ через пропы Node/Checkbox** — не
239
+ пробрасывать второй раз.
240
+ - **`useMatchMedia` → MD на мобильных** — не удалять, UX-требование.
241
+ - **`ICheckboxTreeExtendedSFC`** — кастомный тип FC со статическими
242
+ `.Checkbox`, `.Node`. Без него TS не позволит прямое присваивание.
243
+ - **`event.target === event.currentTarget` + `preventDefault` в
244
+ handleHeaderMouseDown** — не удалять, отвечает за правильный фокус
245
+ чекбокса.
246
+ - **Callback-ref в CheckboxTreeExtendedCheckbox** — не менять на forwardRef
247
+ без понимания: потребители передают свой onChange/checked напрямую, ref
248
+ на input наружу не проброшен намеренно.
249
+ - **`CheckboxTreeExtendedArrow` — class, не FC** — осознанно: нужен
250
+ `componentDidUpdate` для focus-эффекта. Не переписывать на FC без
251
+ понимания лайфцикла CollapsableTree.
252
+ - **`isStaticCheckboxTreeExtended ? true : opened`** в Node — не
253
+ реверсировать: в static-режиме `opened` игнорируется.
254
+ - **`labelAttributes.onFocus` расширяется handle'ом** — если потребитель
255
+ передаёт свой `onFocus`, он вызывается **после** internal handle.
256
+ - **`prevNodeId`/`nextNodeId` — для CollapsableTree arrow nav** — если не
257
+ передать, клавиатурная навигация Up/Down работать не будет.
258
+
259
+ ---
260
+
261
+ ## Accessibility
262
+
263
+ - Наследует a11y от `CollapsableTree` (role="tree", role="treeitem",
264
+ aria-expanded).
265
+ - Чекбокс внутри — стандартный (`<input type="checkbox">`), получает
266
+ `aria-checked` и `aria-checked="mixed"` для bulk.
267
+ - **Клавиатура (CollapsableTree)**:
268
+ - Arrow Up/Down — навигация между нодами через prev/nextNodeId.
269
+ - Focus на input при активации ноды.
270
+ - **Клавиатура (CheckboxTreeExtendedArrow)** — зарезервирована, но не
271
+ активна в static-режиме.
272
+ - **Mobile**: padding 16px вокруг дерева, увеличенная область клика
273
+ на label (padding-top/bottom 16px) — тач-таргеты.
274
+ - Структура: `.checkboxTreeExtendedNodeHeader` — flex-контейнер с
275
+ чекбоксом и (будущей) стрелкой.
276
+
277
+ ---
278
+
279
+ ## Дизайн-токены
280
+
281
+ Собственных нет. Чекбокс внутри использует `--triplex-next-Checkbox-*`
282
+ (включая `--triplex-next-Checkbox-BorderColor_Focus` для стрелки).
283
+
284
+ Отступы/размеры — хардкод в LESS (16px/24px mobile padding, 8/12px header
285
+ margin). Кандидат на токенизацию.
286
+
287
+ ---
288
+
289
+ ## Связанные компоненты
290
+
291
+ - `CheckboxTree` (`src/components/CheckboxTree`) — data-driven обёртка.
292
+ Большинство потребителей берут её, а не extended.
293
+ - `CollapsableTree` (`src/components/CollapsableTree`) — базовое дерево с
294
+ сворачиванием и клавиатурной навигацией. CheckboxTreeExtended — обёртка
295
+ над ним.
296
+ - `Checkbox` (`src/components/Checkbox`) — базовый чекбокс.
297
+ - `useMatchMedia` (`src/components/MediaWidth/useMatchMedia`) —
298
+ responsive-хук.
299
+ - `EScreenWidth` (`src/helpers/breakpoints`) — брейкпойнты.
300
+ - `EComponentSize` — общий enum SM/MD/LG.
301
+
302
+ ---
303
+
304
+ ## Stories
305
+
306
+ `stories/CheckboxTreeExtended/CheckboxTreeExtended.stories.tsx`
307
+ Файлы примеров: `stories/CheckboxTreeExtended/examples/`
308
+
309
+ | Story | Example file | Что демонстрирует |
310
+ |---|---|---|
311
+ | `Playground` | `PlaygroundExample.tsx` | Интерактивный контроль `size` + ручное управление checked |
312
+ | `Default` | `DefaultExample.tsx` | Базовое дерево 2 уровня |
313
+ | `Sizes` | `SizesExample.tsx` | Все размеры |
314
+
315
+ ---
316
+
317
+ ## История изменений
318
+
319
+ | Дата | Изменение |
320
+ |---|---|
321
+ | 2026-04-18 | Создан документ |
@@ -0,0 +1,68 @@
1
+ ---
2
+ component: CheckboxXGroup
3
+ category: Inputs
4
+ figma-node: ""
5
+ figma-file: ""
6
+ related: [Checkbox]
7
+ tokens: []
8
+ stories: stories/Checkbox/Checkbox.stories.tsx
9
+ version: "1.0"
10
+ ---
11
+
12
+ # CheckboxXGroup
13
+
14
+ ## Назначение
15
+ Компонент-группа для компоновки чекбоксов с направлением по оси `X`.
16
+ Используется как контейнер для нескольких `Checkbox`, когда нужно разложить их в строку с переносами.
17
+
18
+ ---
19
+
20
+ ## Варианты и props
21
+ ### Опциональные props
22
+ | Prop | Тип | По умолчанию | Описание |
23
+ |---|---|---|---|
24
+ | `indent` | `TIndentSize` | `12` | Отступы/зазоры между чекбоксами в группе. Возможные значения: `12, 16, 20, 24, 28, 32`. |
25
+ | `children` | `React.ReactNode` | — | Внутри обычно рендерятся `Checkbox`. |
26
+ | `...divAttributes` | `React.HTMLAttributes<HTMLDivElement>` | — | Все стандартные HTML-атрибуты для корневого элемента. |
27
+
28
+ ---
29
+
30
+ ## Ключевые особенности реализации
31
+ - Корневой элемент: `<div role="group">`.
32
+ - Разметка: `inline-flex` и `flex-flow: row wrap`.
33
+ - `indent` управляет применением LESS-класса `indent-{n}` и задает отрицательные/положительные маргины для выравнивания сетки.
34
+
35
+ ---
36
+
37
+ ## Accessibility
38
+ - `role="group"` описывает группу взаимосвязанных контролов.
39
+ - Семантика чекбоксов остается нативной на уровне `Checkbox` внутри группы.
40
+
41
+ ---
42
+
43
+ ## Инварианты
44
+ - `forwardRef` обязателен и должен указывать на корневой `<div>`.
45
+ - Корневой DOM-элемент компонента — `<div>`, роль зафиксирована как `role="group"`.
46
+
47
+ ---
48
+
49
+ ## Связанные компоненты
50
+ - `Checkbox` — базовый чекбокс, обычно используется внутри `CheckboxXGroup`.
51
+
52
+ ---
53
+
54
+ ## Stories
55
+ `stories/Checkbox/Checkbox.stories.tsx`
56
+ Файлы примеров: `stories/Checkbox/examples/`
57
+
58
+ | Story | Example file | Что демонстрирует |
59
+ |---|---|---|
60
+ | `XGroup` | `XGroupExample.tsx` | Группа по оси X |
61
+
62
+ ---
63
+
64
+ ## История изменений
65
+ | Дата | Изменение |
66
+ |---|---|
67
+ | 2026-04-16 | Приведение `CheckboxXGroup` к AI-ready: добавлен `forwardRef`, типизирован `children`, созданы AI-документ и инварианты. |
68
+
@@ -0,0 +1,67 @@
1
+ ---
2
+ component: CheckboxYGroup
3
+ category: Inputs
4
+ figma-node: ""
5
+ figma-file: ""
6
+ related: [Checkbox, CheckboxXGroup]
7
+ tokens: []
8
+ stories: stories/Checkbox/Checkbox.stories.tsx
9
+ version: "1.0"
10
+ ---
11
+
12
+ # CheckboxYGroup
13
+
14
+ ## Назначение
15
+ Компонент-группа для компоновки чекбоксов с направлением по оси `Y`.
16
+ Используется как контейнер для нескольких `Checkbox`, когда нужно разложить их вертикально.
17
+
18
+ ---
19
+
20
+ ## Варианты и props
21
+ ### Опциональные props
22
+ | Prop | Тип | По умолчанию | Описание |
23
+ |---|---|---|---|
24
+ | `children` | `React.ReactNode` | — | Внутри обычно рендерятся `Checkbox` (или компоненты, использующие `Checkbox`). |
25
+ | `...divAttributes` | `React.HTMLAttributes<HTMLDivElement>` | — | Все стандартные HTML-атрибуты для корневого элемента. |
26
+
27
+ ---
28
+
29
+ ## Ключевые особенности реализации
30
+ - Корневой элемент: `<div role="group">`.
31
+ - Разметка: `inline-flex` и `flex-flow: column wrap`.
32
+
33
+ ---
34
+
35
+ ## Accessibility
36
+ - `role="group"` описывает группу взаимосвязанных контролов.
37
+ - Семантика чекбоксов остается нативной на уровне `Checkbox` внутри группы.
38
+
39
+ ---
40
+
41
+ ## Инварианты
42
+ - `forwardRef` обязателен и должен указывать на корневой `<div>`.
43
+ - Корневой DOM-элемент компонента — `<div>`, роль зафиксирована как `role="group"`.
44
+
45
+ ---
46
+
47
+ ## Связанные компоненты
48
+ - `Checkbox` — базовый чекбокс, обычно используется внутри `CheckboxYGroup`.
49
+ - `CheckboxXGroup` — аналогичная группа, но с направлением по оси `X`.
50
+
51
+ ---
52
+
53
+ ## Stories
54
+ `stories/Checkbox/Checkbox.stories.tsx`
55
+ Файлы примеров: `stories/Checkbox/examples/`
56
+
57
+ | Story | Example file | Что демонстрирует |
58
+ |---|---|---|
59
+ | `YGroup` | `YGroupExample.tsx` | Группа по оси Y |
60
+
61
+ ---
62
+
63
+ ## История изменений
64
+ | Дата | Изменение |
65
+ |---|---|
66
+ | 2026-04-16 | Приведение `CheckboxYGroup` к AI-ready: добавлен `forwardRef`, типизирован `children`, созданы AI-документ и инварианты. |
67
+