@sberbusiness/triplex-next-mcp-server 0.36.0-beta0 → 1.41.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/AlertContext.md +268 -0
- package/bundle/components/Button.md +5 -2
- package/bundle/components/ButtonDropdown.md +9 -1
- package/bundle/components/ButtonDropdownExtended.md +422 -0
- package/bundle/components/ButtonIcon.md +7 -1
- package/bundle/components/Calendar.md +183 -368
- package/bundle/components/Caption.md +291 -0
- package/bundle/components/Chip.md +310 -314
- package/bundle/components/CodeText.md +197 -0
- package/bundle/components/Col.md +311 -162
- package/bundle/components/CollapsibleTree.md +6 -3
- package/bundle/components/CollapsibleTreeExtended.md +6 -2
- package/bundle/components/Dropdown.md +748 -346
- package/bundle/components/FormField.md +468 -232
- package/bundle/components/IconWrapper.md +142 -89
- package/bundle/components/Island.md +221 -129
- package/bundle/components/KeyDownListener.md +215 -102
- package/bundle/components/LightBox.md +2252 -233
- package/bundle/components/List.md +26 -1
- package/bundle/components/ListActionItem.md +157 -0
- package/bundle/components/ListItem.md +34 -9
- package/bundle/components/ListItemSelectable.md +2 -2
- package/bundle/components/ListMaster.md +4 -5
- package/bundle/components/ListTableItem.md +391 -0
- package/bundle/components/LoaderMiddle.md +265 -0
- package/bundle/components/LoaderScreen.md +178 -81
- package/bundle/components/Notification.md +21 -21
- package/bundle/components/Page.md +1 -0
- package/bundle/components/Portal.md +131 -67
- package/bundle/components/Row.md +171 -69
- package/bundle/components/Text.md +320 -0
- package/bundle/components/TextField.md +364 -97
- package/bundle/components/ThemeProvider.md +305 -117
- package/bundle/components/Title.md +296 -0
- package/bundle/components/Tooltip.md +421 -181
- package/bundle/guides/commits.md +126 -24
- package/bundle/guides/context.md +1 -1
- package/bundle/guides/tests.md +42 -0
- package/bundle/manifest.json +109 -23
- package/bundle/release-notes/1.37.0.mdx +42 -1
- package/bundle/release-notes/1.38.0.mdx +36 -0
- package/bundle/release-notes/1.39.0.mdx +66 -0
- package/bundle/release-notes/1.40.0.mdx +27 -0
- package/bundle/release-notes/1.41.0.mdx +83 -0
- package/bundle/release-notes/1.42.0.mdx +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: Caption
|
|
3
|
+
category: Typography
|
|
4
|
+
related: [Text, Title, CodeText]
|
|
5
|
+
tokens:
|
|
6
|
+
- --triplex-next-Typography-Primary_Color
|
|
7
|
+
- --triplex-next-Typography-PrimaryInvert_Color
|
|
8
|
+
- --triplex-next-Typography-Complementary_Color
|
|
9
|
+
- --triplex-next-Typography-ComplementaryInvert_Color
|
|
10
|
+
- --triplex-next-Typography-Secondary_Color
|
|
11
|
+
- --triplex-next-Typography-SecondaryInvert_Color
|
|
12
|
+
- --triplex-next-Typography-Tertiary_Color
|
|
13
|
+
- --triplex-next-Typography-TertiaryInvert_Color
|
|
14
|
+
- --triplex-next-Typography-Disabled_Color
|
|
15
|
+
- --triplex-next-Typography-DisabledInvert_Color
|
|
16
|
+
- --triplex-next-Typography-Brand_Color
|
|
17
|
+
- --triplex-next-Typography-BrandInvert_Color
|
|
18
|
+
- --triplex-next-Typography-Info_Color
|
|
19
|
+
- --triplex-next-Typography-InfoInvert_Color
|
|
20
|
+
- --triplex-next-Typography-Success_Color
|
|
21
|
+
- --triplex-next-Typography-SuccessInvert_Color
|
|
22
|
+
- --triplex-next-Typography-Warning_Color
|
|
23
|
+
- --triplex-next-Typography-WarningInvert_Color
|
|
24
|
+
- --triplex-next-Typography-Error_Color
|
|
25
|
+
- --triplex-next-Typography-ErrorInvert_Color
|
|
26
|
+
- --triplex-next-Typography-System_Color
|
|
27
|
+
- --triplex-next-Typography-SystemInvert_Color
|
|
28
|
+
stories: stories/Typography/Caption.stories.tsx
|
|
29
|
+
version: "1.0"
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Caption
|
|
33
|
+
|
|
34
|
+
## Назначение
|
|
35
|
+
|
|
36
|
+
Подпись (типографика). Рендерит инлайновый `<span>` (тег настраивается через `tag`) для крайних значений типографической шкалы: очень мелкие подписи `C1` (10px) и `C2` (8px) либо крупный акцентный показатель `D1` (32px, шрифт SBSansDisplay).
|
|
37
|
+
|
|
38
|
+
Используй когда: нужна сверхмелкая техническая подпись (сноска, копирайт, метка) или крупная цифра/показатель, не являющаяся заголовком (сумма на дашборде, KPI).
|
|
39
|
+
|
|
40
|
+
Не используй когда:
|
|
41
|
+
- Нужен обычный текст 12–18px — используй `Text` (B1–B4).
|
|
42
|
+
- Крупный текст является заголовком секции — используй `Title` (семантические `h1`–`h3`).
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Варианты и props
|
|
47
|
+
|
|
48
|
+
### Обязательные props
|
|
49
|
+
|
|
50
|
+
| Prop | Тип | Описание |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `size` | `ECaptionSize` | Размер: `C1` (10/12px), `C2` (8/10px), `D1` (32/40px). В скобках — font-size/line-height. |
|
|
53
|
+
|
|
54
|
+
### Опциональные props
|
|
55
|
+
|
|
56
|
+
| Prop | Тип | По умолчанию | Описание |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| `weight` | `EFontWeightCaption` | `REGULAR` | Начертание: `REGULAR` или `SEMIBOLD` (600). Для `C1`/`C2` — семейство SBSansText*, для `D1` — SBSansDisplay*. |
|
|
59
|
+
| `type` | `EFontType` | `PRIMARY` | Цвет текста из общей палитры типографики (11 базовых + 11 `*_INVERT`). |
|
|
60
|
+
| `underline` | `boolean` | — | Подчёркивание. Совместим со `strikethrough` (оба сразу — `underline line-through`). |
|
|
61
|
+
| `strikethrough` | `boolean` | — | Зачёркивание. |
|
|
62
|
+
| `tag` | `string` | `"span"` | HTML-тег корневого элемента. |
|
|
63
|
+
|
|
64
|
+
Компонент типизирован как `TCaptionProps<T extends keyof JSX.IntrinsicElements>` и принимает все атрибуты соответствующего HTML-элемента через spread.
|
|
65
|
+
|
|
66
|
+
### Ограничения
|
|
67
|
+
|
|
68
|
+
- Внешний тип `forwardRef<HTMLElement, TCaptionProps<keyof JSX.IntrinsicElements>>` «растворяет» дженерик: TypeScript не сужает атрибуты под конкретный `tag`. Известное ограничение публичного API, не исправлять без обсуждения (breaking).
|
|
69
|
+
- `EFontWeightCaption` дублирует значения `EFontWeightText` — это два независимых публичных enum, объединять нельзя (breaking).
|
|
70
|
+
- `EFontType.BRAND` дополнительно задаёт `user-select: none` (особенность стилей `Typography.module.less`).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Дизайн-токены
|
|
75
|
+
|
|
76
|
+
Цвета — общие CSS-переменные семейства Typography (см. frontmatter): `--triplex-next-Typography-{Type}_Color` и `--triplex-next-Typography-{Type}Invert_Color`.
|
|
77
|
+
|
|
78
|
+
Размеры шрифта и line-height — фиксированные пиксельные значения в `styles/Caption.module.less` (токенов для них нет).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Инварианты
|
|
83
|
+
|
|
84
|
+
- **`forwardRef`** — обязателен, `ref` пробрасывается на корневой элемент.
|
|
85
|
+
- **Значения enum** `ECaptionSize`, `EFontWeightCaption`, `EFontType` — публичный API из barrel. Изменение — breaking change.
|
|
86
|
+
- **`TCaptionProps`**, **`ITypographyProps`** — публичные типы.
|
|
87
|
+
- **`displayName = "Caption"`** — не убирать.
|
|
88
|
+
- `D1` переключает семейство шрифта на SBSansDisplay* — контракт стилей: крупный показатель визуально согласован с заголовками.
|
|
89
|
+
- Классы собираются только через `clsx`.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Accessibility
|
|
94
|
+
|
|
95
|
+
- Компонент не интерактивный: focus management и keyboard navigation не применимы.
|
|
96
|
+
- Семантика определяется через `tag` (по умолчанию нейтральный `<span>`).
|
|
97
|
+
- Размеры `C1`/`C2` (10/8px) ниже комфортного порога читаемости — используй только для второстепенной информации, не для основного контента.
|
|
98
|
+
- Цвет (`type`) не передаёт семантику для screen reader'ов.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Связанные компоненты
|
|
103
|
+
|
|
104
|
+
- `Text` — основной текст интерфейса (B1–B4).
|
|
105
|
+
- `Title` — заголовки `h1`–`h3`.
|
|
106
|
+
- `CodeText` — моноширинный текст.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Stories
|
|
111
|
+
|
|
112
|
+
Основные истории: `stories/Typography/Caption.stories.tsx`
|
|
113
|
+
Файлы примеров: `stories/Typography/examples/Caption/`
|
|
114
|
+
|
|
115
|
+
| Story | Example file | Что демонстрирует |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| `Playground` | `Playground.tsx` | Интерактивный контроль props `size`, `weight`, `type`, `tag`, `underline`, `strikethrough` |
|
|
118
|
+
| `Default` | `Default.tsx` | Минимальное использование |
|
|
119
|
+
| `Sizes` | `Sizes.tsx` | Размеры C1 / C2 / D1 |
|
|
120
|
+
| `Weights` | `Weights.tsx` | Начертания REGULAR / SEMIBOLD |
|
|
121
|
+
| `Types` | `Types.tsx` | Все значения `EFontType`: базовые + инвертированные на тёмной подложке |
|
|
122
|
+
| `Decorations` | `Decorations.tsx` | `underline`, `strikethrough` и их комбинация |
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## История изменений
|
|
127
|
+
|
|
128
|
+
| Дата | Изменение |
|
|
129
|
+
|---|---|
|
|
130
|
+
| 2026-07-20 | Создан документ. AI-рефакторинг: decoration-логика вынесена во внутренний хелпер `getTextDecorationClassName` (`utils.ts`), комментарии переведены в JSDoc, unit-тесты расширены (все значения `ECaptionSize`/`EFontWeightCaption`, дефолты). Stories переведены на modern pattern (`examples/Caption/`). |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Примеры использования
|
|
135
|
+
|
|
136
|
+
### Default
|
|
137
|
+
|
|
138
|
+
`stories/Typography/examples/Caption/Default.tsx`
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
import React from "react";
|
|
142
|
+
import { Caption, ECaptionSize } from "@sberbusiness/triplex-next";
|
|
143
|
+
|
|
144
|
+
export const Default = () => <Caption size={ECaptionSize.C1}>Вспомогательная подпись</Caption>;
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Sizes
|
|
148
|
+
|
|
149
|
+
`stories/Typography/examples/Caption/Sizes.tsx`
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
import React from "react";
|
|
153
|
+
import { Caption, ECaptionSize } from "@sberbusiness/triplex-next";
|
|
154
|
+
|
|
155
|
+
export const Sizes = () => (
|
|
156
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
157
|
+
<Caption size={ECaptionSize.C1}>C1 - Подпись малого размера (10px)</Caption>
|
|
158
|
+
<Caption size={ECaptionSize.C2}>C2 - Подпись очень малого размера (8px)</Caption>
|
|
159
|
+
<Caption size={ECaptionSize.D1}>D1 - Подпись большого размера (32px)</Caption>
|
|
160
|
+
</div>
|
|
161
|
+
);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Weights
|
|
165
|
+
|
|
166
|
+
`stories/Typography/examples/Caption/Weights.tsx`
|
|
167
|
+
|
|
168
|
+
```tsx
|
|
169
|
+
import React from "react";
|
|
170
|
+
import { Caption, ECaptionSize, EFontWeightCaption } from "@sberbusiness/triplex-next";
|
|
171
|
+
|
|
172
|
+
export const Weights = () => (
|
|
173
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
174
|
+
<Caption size={ECaptionSize.C1} weight={EFontWeightCaption.REGULAR}>
|
|
175
|
+
Regular - Обычный вес подписи
|
|
176
|
+
</Caption>
|
|
177
|
+
<Caption size={ECaptionSize.C1} weight={EFontWeightCaption.SEMIBOLD}>
|
|
178
|
+
Semibold - Полужирная подпись
|
|
179
|
+
</Caption>
|
|
180
|
+
</div>
|
|
181
|
+
);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Types
|
|
185
|
+
|
|
186
|
+
`stories/Typography/examples/Caption/Types.tsx`
|
|
187
|
+
|
|
188
|
+
```tsx
|
|
189
|
+
import React from "react";
|
|
190
|
+
import { Caption, ECaptionSize, EFontType } from "@sberbusiness/triplex-next";
|
|
191
|
+
|
|
192
|
+
export const Types = () => (
|
|
193
|
+
<div style={{ display: "flex", gap: "16px" }}>
|
|
194
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
195
|
+
<Caption size={ECaptionSize.C1} type={EFontType.PRIMARY}>
|
|
196
|
+
Primary
|
|
197
|
+
</Caption>
|
|
198
|
+
<Caption size={ECaptionSize.C1} type={EFontType.COMPLEMENTARY}>
|
|
199
|
+
Complementary
|
|
200
|
+
</Caption>
|
|
201
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SECONDARY}>
|
|
202
|
+
Secondary
|
|
203
|
+
</Caption>
|
|
204
|
+
<Caption size={ECaptionSize.C1} type={EFontType.TERTIARY}>
|
|
205
|
+
Tertiary
|
|
206
|
+
</Caption>
|
|
207
|
+
<Caption size={ECaptionSize.C1} type={EFontType.BRAND}>
|
|
208
|
+
Brand
|
|
209
|
+
</Caption>
|
|
210
|
+
<Caption size={ECaptionSize.C1} type={EFontType.INFO}>
|
|
211
|
+
Info
|
|
212
|
+
</Caption>
|
|
213
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SUCCESS}>
|
|
214
|
+
Success
|
|
215
|
+
</Caption>
|
|
216
|
+
<Caption size={ECaptionSize.C1} type={EFontType.WARNING}>
|
|
217
|
+
Warning
|
|
218
|
+
</Caption>
|
|
219
|
+
<Caption size={ECaptionSize.C1} type={EFontType.ERROR}>
|
|
220
|
+
Error
|
|
221
|
+
</Caption>
|
|
222
|
+
<Caption size={ECaptionSize.C1} type={EFontType.DISABLED}>
|
|
223
|
+
Disabled
|
|
224
|
+
</Caption>
|
|
225
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SYSTEM}>
|
|
226
|
+
System
|
|
227
|
+
</Caption>
|
|
228
|
+
</div>
|
|
229
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px", backgroundColor: "#1F1F22" }}>
|
|
230
|
+
<Caption size={ECaptionSize.C1} type={EFontType.PRIMARY_INVERT}>
|
|
231
|
+
Primary Invert
|
|
232
|
+
</Caption>
|
|
233
|
+
<Caption size={ECaptionSize.C1} type={EFontType.COMPLEMENTARY_INVERT}>
|
|
234
|
+
Complementary Invert
|
|
235
|
+
</Caption>
|
|
236
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SECONDARY_INVERT}>
|
|
237
|
+
Secondary Invert
|
|
238
|
+
</Caption>
|
|
239
|
+
<Caption size={ECaptionSize.C1} type={EFontType.TERTIARY_INVERT}>
|
|
240
|
+
Tertiary Invert
|
|
241
|
+
</Caption>
|
|
242
|
+
<Caption size={ECaptionSize.C1} type={EFontType.BRAND_INVERT}>
|
|
243
|
+
Brand Invert
|
|
244
|
+
</Caption>
|
|
245
|
+
<Caption size={ECaptionSize.C1} type={EFontType.INFO_INVERT}>
|
|
246
|
+
Info Invert
|
|
247
|
+
</Caption>
|
|
248
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SUCCESS_INVERT}>
|
|
249
|
+
Success Invert
|
|
250
|
+
</Caption>
|
|
251
|
+
<Caption size={ECaptionSize.C1} type={EFontType.WARNING_INVERT}>
|
|
252
|
+
Warning Invert
|
|
253
|
+
</Caption>
|
|
254
|
+
<Caption size={ECaptionSize.C1} type={EFontType.ERROR_INVERT}>
|
|
255
|
+
Error Invert
|
|
256
|
+
</Caption>
|
|
257
|
+
<Caption size={ECaptionSize.C1} type={EFontType.DISABLED_INVERT}>
|
|
258
|
+
Disabled Invert
|
|
259
|
+
</Caption>
|
|
260
|
+
<Caption size={ECaptionSize.C1} type={EFontType.SYSTEM_INVERT}>
|
|
261
|
+
System Invert
|
|
262
|
+
</Caption>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
);
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Decorations
|
|
269
|
+
|
|
270
|
+
`stories/Typography/examples/Caption/Decorations.tsx`
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
import React from "react";
|
|
274
|
+
import { Caption, ECaptionSize } from "@sberbusiness/triplex-next";
|
|
275
|
+
|
|
276
|
+
export const Decorations = () => (
|
|
277
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
278
|
+
<Caption size={ECaptionSize.C1}>Подпись без декораций</Caption>
|
|
279
|
+
<Caption size={ECaptionSize.C1} underline>
|
|
280
|
+
Подпись с подчеркиванием
|
|
281
|
+
</Caption>
|
|
282
|
+
<Caption size={ECaptionSize.C1} strikethrough>
|
|
283
|
+
Подпись с зачеркиванием
|
|
284
|
+
</Caption>
|
|
285
|
+
<Caption size={ECaptionSize.C1} underline strikethrough>
|
|
286
|
+
Подпись с подчеркиванием и зачеркиванием
|
|
287
|
+
</Caption>
|
|
288
|
+
</div>
|
|
289
|
+
);
|
|
290
|
+
```
|
|
291
|
+
|